Skip to content

Commit

Permalink
Merge pull request #196 from vyzigold/add_autoscaling_aodh_squash
Browse files Browse the repository at this point in the history
Add aodh to autoscaling
  • Loading branch information
openshift-ci[bot] authored Oct 4, 2023
2 parents cf7134b + 3fca2d8 commit 7144cbe
Show file tree
Hide file tree
Showing 42 changed files with 3,667 additions and 212 deletions.
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ repos:
- id: destroyed-symlinks
- id: check-yaml
args: [-m]
exclude: ^templates/autoscaling/config/prometheus.yaml
- id: check-json
- id: detect-private-key
- id: end-of-file-fixer
Expand Down
298 changes: 298 additions & 0 deletions api/bases/telemetry.openstack.org_autoscalings.yaml

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions api/bases/telemetry.openstack.org_ceilometers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,16 @@ spec:
description: PasswordSelectors - Selectors to identify the service
from the Secret
properties:
aodhService:
default: AodhPassword
description: AodhService - Selector to get the aodh service password
from the Secret
type: string
database:
default: AodhDatabasePassword
description: Database - Selector to get the aodh database user
password from the Secret
type: string
service:
default: CeilometerPassword
description: Service - Selector to get the ceilometer service
Expand Down
295 changes: 295 additions & 0 deletions api/bases/telemetry.openstack.org_telemetries.yaml

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions api/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ require (
github.com/google/gnostic v0.6.9 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
github.com/google/pprof v0.0.0-20230323073829-e72429f035bd // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/josharian/intern v1.0.0 // indirect
Expand All @@ -47,7 +47,7 @@ require (
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.11.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
go.uber.org/multierr v1.10.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/net v0.15.0 // indirect
golang.org/x/oauth2 v0.10.0 // indirect
Expand Down
13 changes: 4 additions & 9 deletions api/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
Expand Down Expand Up @@ -91,13 +88,12 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk=
github.com/google/pprof v0.0.0-20230323073829-e72429f035bd/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
Expand Down Expand Up @@ -174,8 +170,8 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
Expand Down Expand Up @@ -218,7 +214,6 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand Down
133 changes: 133 additions & 0 deletions api/v1beta1/autoscaling_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,22 @@ package v1beta1
import (
condition "github.com/openstack-k8s-operators/lib-common/modules/common/condition"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/openstack-k8s-operators/lib-common/modules/common/util"
"github.com/openstack-k8s-operators/lib-common/modules/common/service"
)

const (
// AodhAPIContainerImage - default fall-back image for Aodh API
AodhAPIContainerImage = "quay.io/podified-antelope-centos9/openstack-aodh-api:current-podified"
// AodhEvaluatorContainerImage - default fall-back image for Aodh Evaluator
AodhEvaluatorContainerImage = "quay.io/podified-antelope-centos9/openstack-aodh-evaluator:current-podified"
// AodhNotifierContainerImage - default fall-back image for Aodh Notifier
AodhNotifierContainerImage = "quay.io/podified-antelope-centos9/openstack-aodh-notifier:current-podified"
// AodhListenerContainerImage - default fall-back image for Aodh Listener
AodhListenerContainerImage = "quay.io/podified-antelope-centos9/openstack-aodh-listener:current-podified"
// DbSyncHash hash
DbSyncHash = "dbsync"
)

// Prometheus defines which prometheus to use for Autoscaling
Expand All @@ -36,11 +52,97 @@ type Prometheus struct {
Port int32 `json:"port,omitempty"`
}

// Aodh defines the aodh component spec
type Aodh struct {
// RabbitMQ instance name
// Needed to request a transportURL that is created and used in Aodh
// +kubebuilder:default=rabbitmq
RabbitMqClusterName string `json:"rabbitMqClusterName,omitempty"`

// +kubebuilder:validation:Required
// MariaDB instance name
// Right now required by the maridb-operator to get the credentials from the instance to create the DB
// Might not be required in future
DatabaseInstance string `json:"databaseInstance"`

// Database user name
// Needed to connect to a database used by aodh
// +kubebuilder:default=aodh
DatabaseUser string `json:"databaseUser,omitempty"`

// PasswordSelectors - Selectors to identify the service from the Secret
// +kubebuilder:default:={aodhService: AodhPassword, database: AodhDatabasePassword}
PasswordSelectors PasswordsSelector `json:"passwordSelector,omitempty"`

// ServiceUser - optional username used for this service to register in keystone
// +kubebuilder:validation:Optional
// +kubebuilder:default=aodh
ServiceUser string `json:"serviceUser"`

// Secret containing OpenStack password information for aodh
// +kubebuilder:validation:Required
Secret string `json:"secret"`

// CustomServiceConfig - customize the service config using this parameter to change service defaults,
// or overwrite rendered information using raw OpenStack config format. The content gets added to
// to /etc/<service>/<service>.conf.d directory as custom.conf file.
// +kubebuilder:default:="# add your customization here"
CustomServiceConfig string `json:"customServiceConfig,omitempty"`

// ConfigOverwrite - interface to overwrite default config files like e.g. logging.conf or policy.json.
// But can also be used to add additional files. Those get added to the service config dir in /etc/<service> .
// TODO: -> implement
// +kubebuilder:validation:Optional
DefaultConfigOverwrite map[string]string `json:"defaultConfigOverwrite,omitempty"`

// NetworkAttachmentDefinitions list of network attachment definitions the service pod gets attached to
// +kubebuilder:validation:Optional
NetworkAttachmentDefinitions []string `json:"networkAttachmentDefinitions,omitempty"`

// Override, provides the ability to override the generated manifest of several child resources.
Override APIOverrideSpec `json:"override,omitempty"`

// +kubebuilder:validation:Optional
// +kubebuilder:default=false
// PreserveJobs - do not delete jobs after they finished e.g. to check logs
PreserveJobs bool `json:"preserveJobs"`

// +kubebuilder:validation:Required
// +kubebuilder:default=memcached
// Memcached instance name.
MemcachedInstance string `json:"memcachedInstance"`

// +kubebuilder:validation:Required
APIImage string `json:"apiImage"`

// +kubebuilder:validation:Required
EvaluatorImage string `json:"evaluatorImage"`

// +kubebuilder:validation:Required
NotifierImage string `json:"notifierImage"`

// +kubebuilder:validation:Required
ListenerImage string `json:"listenerImage"`
}

// APIOverrideSpec to override the generated manifest of several child resources.
type APIOverrideSpec struct {
// Override configuration for the Service created to serve traffic to the cluster.
Service *service.RoutedOverrideSpec `json:"service,omitempty"`
}

// AutoscalingSpec defines the desired state of Autoscaling
type AutoscalingSpec struct {
// Specification of which prometheus to use for autoscaling
Prometheus Prometheus `json:"prometheus,omitempty"`

// Aodh spec
Aodh Aodh `json:"aodh,omitempty"`

// Heat instance name.
// +kubebuilder:default=heat
HeatInstance string `json:"heatInstance"`

// Allows enabling and disabling the autoscaling feature
// +kubebuilder:default=false
Enabled bool `json:"enabled,omitempty"`
Expand All @@ -56,6 +158,24 @@ type AutoscalingStatus struct {

// Conditions
Conditions condition.Conditions `json:"conditions,omitempty" optional:"true"`

// Networks in addtion to the cluster network, the service is attached to
Networks []string `json:"networks,omitempty"`

// TransportURLSecret - Secret containing RabbitMQ transportURL
TransportURLSecret string `json:"transportURLSecret,omitempty"`

// DatabaseHostname - Hostname for the database
DatabaseHostname string `json:"databaseHostname,omitempty"`

// PrometheusHost - Hostname for prometheus used for autoscaling
PrometheusHost string `json:"prometheusHostname,omitempty"`

// PrometheusPort - Port for prometheus used for autoscaling
PrometheusPort int32 `json:"prometheusPort,omitempty"`

// API endpoint
APIEndpoints map[string]string `json:"apiEndpoint,omitempty"`
}

//+kubebuilder:object:root=true
Expand Down Expand Up @@ -102,3 +222,16 @@ func (instance Autoscaling) RbacNamespace() string {
func (instance Autoscaling) RbacResourceName() string {
return "telemetry-" + instance.Name
}

// SetupDefaultsAutoscaling - initializes any CRD field defaults based on environment variables (the defaulting mechanism itself is implemented via webhooks)
func SetupDefaultsAutoscaling() {
// Acquire environmental defaults and initialize Telemetry defaults with them
autoscalingDefaults := AutoscalingDefaults{
AodhAPIContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_API_IMAGE_URL_DEFAULT", AodhAPIContainerImage),
AodhEvaluatorContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_EVALUATOR_IMAGE_URL_DEFAULT", AodhEvaluatorContainerImage),
AodhNotifierContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_NOTIFIER_IMAGE_URL_DEFAULT", AodhNotifierContainerImage),
AodhListenerContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_LISTENER_IMAGE_URL_DEFAULT", AodhListenerContainerImage),
}

SetupAutoscalingDefaults(autoscalingDefaults)
}
106 changes: 106 additions & 0 deletions api/v1beta1/autoscaling_webhook.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/*
Copyright 2023.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1beta1

import (
"k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook"
)

// AutoscalingDefaults -
type AutoscalingDefaults struct {
AodhAPIContainerImageURL string
AodhEvaluatorContainerImageURL string
AodhNotifierContainerImageURL string
AodhListenerContainerImageURL string
}

var autoscalingDefaults AutoscalingDefaults

// log is for logging in this package.
var autoscalinglog = logf.Log.WithName("autoscaling-resource")

// SetupAutoscalingDefaults - initialize Autoscaling spec defaults for use with either internal or external webhooks
func SetupAutoscalingDefaults(defaults AutoscalingDefaults) {
autoscalingDefaults = defaults
autoscalinglog.Info("Autoscaling defaults initialized", "defaults", defaults)
}

// SetupWebhookWithManager - setups webhook with the adequate manager
func (r *Autoscaling) SetupWebhookWithManager(mgr ctrl.Manager) error {
return ctrl.NewWebhookManagedBy(mgr).
For(r).
Complete()
}

//+kubebuilder:webhook:path=/mutate-telemetry-openstack-org-v1beta1-autoscaling,mutating=true,failurePolicy=fail,sideEffects=None,groups=telemetry.openstack.org,resources=autoscalings,verbs=create;update,versions=v1beta1,name=mautoscaling.kb.io,admissionReviewVersions=v1

var _ webhook.Defaulter = &Autoscaling{}

// Default implements webhook.Defaulter so a webhook will be registered for the type
func (r *Autoscaling) Default() {
autoscalinglog.Info("default", "name", r.Name)

r.Spec.Default()
}

// Default - set defaults for this Autoscaling spec
func (spec *AutoscalingSpec) Default() {
if spec.Aodh.APIImage == "" {
spec.Aodh.APIImage = autoscalingDefaults.AodhAPIContainerImageURL
}
if spec.Aodh.EvaluatorImage == "" {
spec.Aodh.EvaluatorImage = autoscalingDefaults.AodhEvaluatorContainerImageURL
}
if spec.Aodh.NotifierImage == "" {
spec.Aodh.NotifierImage = autoscalingDefaults.AodhNotifierContainerImageURL
}
if spec.Aodh.ListenerImage == "" {
spec.Aodh.ListenerImage = autoscalingDefaults.AodhListenerContainerImageURL
}
}

// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation.
//+kubebuilder:webhook:path=/validate-telemetry-openstack-org-v1beta1-autoscaling,mutating=false,failurePolicy=fail,sideEffects=None,groups=telemetry.openstack.org,resources=autoscalings,verbs=create;update,versions=v1beta1,name=vautoscaling.kb.io,admissionReviewVersions=v1

var _ webhook.Validator = &Autoscaling{}

// ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *Autoscaling) ValidateCreate() error {
autoscalinglog.Info("validate create", "name", r.Name)

// TODO(user): fill in your validation logic upon object creation.
return nil
}

// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *Autoscaling) ValidateUpdate(old runtime.Object) error {
autoscalinglog.Info("validate update", "name", r.Name)

// TODO(user): fill in your validation logic upon object update.
return nil
}

// ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *Autoscaling) ValidateDelete() error {
autoscalinglog.Info("validate delete", "name", r.Name)

// TODO(user): fill in your validation logic upon object deletion.
return nil
}
30 changes: 30 additions & 0 deletions api/v1beta1/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ const (

// AutoscalingReadyCondition Status=True condition which indicates if the Autoscaling is configured and operational
AutoscalingReadyCondition condition.Type = "AutoscalingReady"

// HeatReadyCondition Status=True condition which indicates if the Heat is configured and operational
HeatReadyCondition condition.Type = "HeatReady"

// PrometheusReadyCondition Status=True condition which indicates if the Prometheus is configured and operational
PrometheusReadyCondition condition.Type = "PrometheusReady"
)

// Telemetry Reasons used by API objects.
Expand All @@ -50,4 +56,28 @@ const (

// AutoscalingReadyErrorMessage
AutoscalingReadyErrorMessage = "Autoscaling error occured %s"

// AutoscalingReadyErrorMessage
AutoscalingReadyDisabledMessage = "Autoscaling disabled"

// HeatReadyInitMessage
HeatReadyInitMessage = "Heat not started"

// HeatReadyErrorMessage
HeatReadyErrorMessage = "Heat error occured %s"

// HeatReadyNotFoundMessage
HeatReadyNotFoundMessage = "Heat has not been found"

// HeatReadyUnreadyMessage
HeatReadyUnreadyMessage = "Heat isn't ready yet"

// PrometheusReadyInitMessage
PrometheusReadyInitMessage = "Prometheus not started"

// PrometheusReadyErrorMessage
PrometheusReadyErrorMessage = "Prometheus error occured %s"

// PrometheusReadyConfigurationMissingMessage
PrometheusReadyConfigurationMissingMessage = "deployPrometheus is false and either port or host isn't set"
)
Loading

0 comments on commit 7144cbe

Please sign in to comment.