Skip to content

Commit fbc5728

Browse files
Merge pull request #326 from dprince/core_api
Add TelemetrySpecCore struct
2 parents 99d6ab1 + 9293182 commit fbc5728

File tree

5 files changed

+248
-46
lines changed

5 files changed

+248
-46
lines changed

api/v1beta1/autoscaling_types.go

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,23 @@ const (
4040

4141
// Aodh defines the aodh component spec
4242
type Aodh struct {
43+
AodhCore `json:",inline"`
44+
45+
// +kubebuilder:validation:Required
46+
APIImage string `json:"apiImage"`
47+
48+
// +kubebuilder:validation:Required
49+
EvaluatorImage string `json:"evaluatorImage"`
50+
51+
// +kubebuilder:validation:Required
52+
NotifierImage string `json:"notifierImage"`
53+
54+
// +kubebuilder:validation:Required
55+
ListenerImage string `json:"listenerImage"`
56+
}
57+
58+
// Aodh defines the aodh component spec
59+
type AodhCore struct {
4360
// RabbitMQ instance name
4461
// Needed to request a transportURL that is created and used in Aodh
4562
// +kubebuilder:default=rabbitmq
@@ -98,18 +115,6 @@ type Aodh struct {
98115
// Memcached instance name.
99116
MemcachedInstance string `json:"memcachedInstance"`
100117

101-
// +kubebuilder:validation:Required
102-
APIImage string `json:"apiImage"`
103-
104-
// +kubebuilder:validation:Required
105-
EvaluatorImage string `json:"evaluatorImage"`
106-
107-
// +kubebuilder:validation:Required
108-
NotifierImage string `json:"notifierImage"`
109-
110-
// +kubebuilder:validation:Required
111-
ListenerImage string `json:"listenerImage"`
112-
113118
// +kubebuilder:validation:Optional
114119
// +operator-sdk:csv:customresourcedefinitions:type=spec
115120
// TLS - Parameters related to the TLS
@@ -124,6 +129,22 @@ type APIOverrideSpec struct {
124129

125130
// AutoscalingSpec defines the desired state of Autoscaling
126131
type AutoscalingSpec struct {
132+
AutoscalingSpecBase `json:",inline"`
133+
134+
// Aodh spec
135+
Aodh Aodh `json:"aodh,omitempty"`
136+
}
137+
138+
// AutoscalingSpecCore defines the desired state of Autoscaling (this version is used by the OpenStackControlplane no image parameters)
139+
type AutoscalingSpecCore struct {
140+
AutoscalingSpecBase `json:",inline"`
141+
142+
// Aodh spec
143+
Aodh AodhCore `json:"aodh,omitempty"`
144+
}
145+
146+
// AutoscalingSpecBase -
147+
type AutoscalingSpecBase struct {
127148
// Host of user deployed prometheus
128149
// +kubebuilder:validation:Optional
129150
PrometheusHost string `json:"prometheusHost,omitempty"`
@@ -134,9 +155,6 @@ type AutoscalingSpec struct {
134155
// +kubebuilder:validation:Optional
135156
PrometheusPort int32 `json:"prometheusPort,omitempty"`
136157

137-
// Aodh spec
138-
Aodh Aodh `json:"aodh,omitempty"`
139-
140158
// Heat instance name.
141159
// +kubebuilder:default=heat
142160
HeatInstance string `json:"heatInstance"`

api/v1beta1/ceilometer_types.go

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,26 @@ const (
3838

3939
// CeilometerSpec defines the desired state of Ceilometer
4040
type CeilometerSpec struct {
41+
CeilometerSpecCore `json:",inline"`
42+
43+
// +kubebuilder:validation:Required
44+
CentralImage string `json:"centralImage"`
45+
46+
// +kubebuilder:validation:Required
47+
NotificationImage string `json:"notificationImage"`
48+
49+
// +kubebuilder:validation:Required
50+
SgCoreImage string `json:"sgCoreImage"`
51+
52+
// +kubebuilder:validation:Required
53+
ComputeImage string `json:"computeImage"`
54+
55+
// +kubebuilder:validation:Required
56+
IpmiImage string `json:"ipmiImage"`
57+
}
58+
59+
// CeilometerSpecCore defines the desired state of Ceilometer. This version is used by the OpenStackControlplane (no image parameters)
60+
type CeilometerSpecCore struct {
4161
// RabbitMQ instance name
4262
// Needed to request a transportURL that is created and used in Telemetry
4363
// +kubebuilder:default=rabbitmq
@@ -69,21 +89,6 @@ type CeilometerSpec struct {
6989

7090
// NetworkAttachmentDefinitions list of network attachment definitions the service pod gets attached to
7191
NetworkAttachmentDefinitions []string `json:"networkAttachmentDefinitions,omitempty"`
72-
73-
// +kubebuilder:validation:Required
74-
CentralImage string `json:"centralImage"`
75-
76-
// +kubebuilder:validation:Required
77-
NotificationImage string `json:"notificationImage"`
78-
79-
// +kubebuilder:validation:Required
80-
SgCoreImage string `json:"sgCoreImage"`
81-
82-
// +kubebuilder:validation:Required
83-
ComputeImage string `json:"computeImage"`
84-
85-
// +kubebuilder:validation:Required
86-
IpmiImage string `json:"ipmiImage"`
8792
}
8893

8994
// CeilometerStatus defines the observed state of Ceilometer

api/v1beta1/telemetry_types.go

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,32 @@ type PasswordsSelector struct {
4545

4646
// TelemetrySpec defines the desired state of Telemetry
4747
type TelemetrySpec struct {
48+
TelemetrySpecBase `json:",inline"`
49+
4850
// +kubebuilder:validation:Optional
4951
// Autoscaling - Parameters related to the autoscaling service
5052
Autoscaling AutoscalingSection `json:"autoscaling,omitempty"`
5153

5254
// +kubebuilder:validation:Optional
5355
// Ceilometer - Parameters related to the ceilometer service
5456
Ceilometer CeilometerSection `json:"ceilometer,omitempty"`
57+
}
58+
59+
// TelemetrySpecCore defines the desired state of Telemetry. This version has no image parameters and is used by OpenStackControlplane
60+
type TelemetrySpecCore struct {
61+
TelemetrySpecBase `json:",inline"`
5562

63+
// +kubebuilder:validation:Optional
64+
// Autoscaling - Parameters related to the autoscaling service
65+
Autoscaling AutoscalingSectionCore `json:"autoscaling,omitempty"`
66+
67+
// +kubebuilder:validation:Optional
68+
// Ceilometer - Parameters related to the ceilometer service
69+
Ceilometer CeilometerSectionCore `json:"ceilometer,omitempty"`
70+
}
71+
72+
// TelemetrySpecBase -
73+
type TelemetrySpecBase struct {
5674
// +kubebuilder:validation:Optional
5775
// MetricStorage - Parameters related to the metricStorage
5876
MetricStorage MetricStorageSection `json:"metricStorage,omitempty"`
@@ -76,6 +94,20 @@ type CeilometerSection struct {
7694
CeilometerSpec `json:",inline"`
7795
}
7896

97+
// CeilometerSectionCore defines the desired state of the ceilometer service
98+
type CeilometerSectionCore struct {
99+
// +kubebuilder:validation:Optional
100+
// +kubebuilder:default=true
101+
// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors={"urn:alm:descriptor:com.tectonic.ui:booleanSwitch"}
102+
// Enabled - Whether OpenStack Ceilometer service should be deployed and managed
103+
Enabled bool `json:"enabled"`
104+
105+
// +kubebuilder:validation:Optional
106+
//+operator-sdk:csv:customresourcedefinitions:type=spec
107+
// Template - Overrides to use when creating the OpenStack Ceilometer service
108+
CeilometerSpecCore `json:",inline"`
109+
}
110+
79111
// AutoscalingSection defines the desired state of the autoscaling service
80112
type AutoscalingSection struct {
81113
// +kubebuilder:validation:Optional
@@ -90,6 +122,20 @@ type AutoscalingSection struct {
90122
AutoscalingSpec `json:",inline"`
91123
}
92124

125+
// AutoscalingSectionCore defines the desired state of the autoscaling service
126+
type AutoscalingSectionCore struct {
127+
// +kubebuilder:validation:Optional
128+
// +kubebuilder:default=false
129+
// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors={"urn:alm:descriptor:com.tectonic.ui:booleanSwitch"}
130+
// Enabled - Whether OpenStack autoscaling service should be deployed and managed
131+
Enabled bool `json:"enabled"`
132+
133+
// +kubebuilder:validation:Optional
134+
//+operator-sdk:csv:customresourcedefinitions:type=spec
135+
// Template - Overrides to use when creating the OpenStack autoscaling service
136+
AutoscalingSpecCore `json:",inline"`
137+
}
138+
93139
// MetricStorageSection defines the desired state of the MetricStorage
94140
type MetricStorageSection struct {
95141
// +kubebuilder:validation:Optional
@@ -161,19 +207,17 @@ func init() {
161207
func SetupDefaultsTelemetry() {
162208
// Acquire environmental defaults and initialize Telemetry defaults with them
163209
telemetryDefaults := TelemetryDefaults{
164-
CentralContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_CENTRAL_IMAGE_URL_DEFAULT", CeilometerCentralContainerImage),
165-
ComputeContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_COMPUTE_IMAGE_URL_DEFAULT", CeilometerComputeContainerImage),
166-
IpmiContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_IPMI_IMAGE_URL_DEFAULT", CeilometerIpmiContainerImage),
167-
NotificationContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_NOTIFICATION_IMAGE_URL_DEFAULT", CeilometerNotificationContainerImage),
168-
SgCoreContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_SGCORE_IMAGE_URL_DEFAULT", CeilometerSgCoreContainerImage),
210+
CentralContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_CENTRAL_IMAGE_URL_DEFAULT", CeilometerCentralContainerImage),
211+
ComputeContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_COMPUTE_IMAGE_URL_DEFAULT", CeilometerComputeContainerImage),
212+
IpmiContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_IPMI_IMAGE_URL_DEFAULT", CeilometerIpmiContainerImage),
213+
NotificationContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_NOTIFICATION_IMAGE_URL_DEFAULT", CeilometerNotificationContainerImage),
214+
SgCoreContainerImageURL: util.GetEnvVar("RELATED_IMAGE_CEILOMETER_SGCORE_IMAGE_URL_DEFAULT", CeilometerSgCoreContainerImage),
169215

170216
// Autoscaling
171217
AodhAPIContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_API_IMAGE_URL_DEFAULT", AodhAPIContainerImage),
172218
AodhEvaluatorContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_EVALUATOR_IMAGE_URL_DEFAULT", AodhEvaluatorContainerImage),
173219
AodhNotifierContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_NOTIFIER_IMAGE_URL_DEFAULT", AodhNotifierContainerImage),
174220
AodhListenerContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_LISTENER_IMAGE_URL_DEFAULT", AodhListenerContainerImage),
175-
AodhInitContainerImageURL: util.GetEnvVar("RELATED_IMAGE_AODH_API_IMAGE_URL_DEFAULT", AodhAPIContainerImage),
176-
177221
}
178222

179223
SetupTelemetryDefaults(telemetryDefaults)

api/v1beta1/telemetry_webhook.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ type TelemetryDefaults struct {
3838
AodhEvaluatorContainerImageURL string
3939
AodhNotifierContainerImageURL string
4040
AodhListenerContainerImageURL string
41-
AodhInitContainerImageURL string
4241
}
4342

4443
var telemetryDefaults TelemetryDefaults
@@ -101,6 +100,11 @@ func (spec *TelemetrySpec) Default() {
101100
}
102101
}
103102

103+
// Default - set defaults for this Telemetry spec core
104+
func (spec *TelemetrySpecCore) Default() {
105+
// nothing here yet
106+
}
107+
104108
// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation.
105109
//+kubebuilder:webhook:path=/validate-telemetry-openstack-org-v1beta1-telemetry,mutating=false,failurePolicy=fail,sideEffects=None,groups=telemetry.openstack.org,resources=telemetries,verbs=create;update,versions=v1beta1,name=vtelemetry.kb.io,admissionReviewVersions=v1
106110

0 commit comments

Comments
 (0)