diff --git a/api/bases/core.openstack.org_openstackversions.yaml b/api/bases/core.openstack.org_openstackversions.yaml index 57d6f22b4..41aa3c9b7 100644 --- a/api/bases/core.openstack.org_openstackversions.yaml +++ b/api/bases/core.openstack.org_openstackversions.yaml @@ -256,6 +256,8 @@ spec: type: string glanceWsgi: type: string + ironicInspectInterface: + type: string manilaSharev1: type: string mariadbVersion: @@ -701,6 +703,8 @@ spec: type: string glanceWsgi: type: string + ironicInspectInterface: + type: string manilaSharev1: type: string mariadbVersion: diff --git a/api/core/v1beta1/openstackversion_types.go b/api/core/v1beta1/openstackversion_types.go index d39f20e2b..cc7e61517 100644 --- a/api/core/v1beta1/openstackversion_types.go +++ b/api/core/v1beta1/openstackversion_types.go @@ -227,7 +227,7 @@ type ContainerTemplate struct { DesignateWorkerImage *string `json:"designateWorkerImage,omitempty"` EdpmFrrImage *string `json:"edpmFrrImage,omitempty"` // Deprecated: EdpmIscsidImage is no longer used. iscsid now runs on the host instead of in a container. - EdpmIscsidImage *string `json:"edpmIscsidImage,omitempty"` + EdpmIscsidImage *string `json:"edpmIscsidImage,omitempty"` // Deprecated: EdpmLogrotateCrondImage is no longer used. logrotate-crond has been removed. EdpmLogrotateCrondImage *string `json:"edpmLogrotateCrondImage,omitempty"` // Deprecated: EdpmMultipathdImage is no longer used. multipathd now runs on the host instead of in a container. @@ -300,12 +300,13 @@ type ContainerTemplate struct { // ServiceDefaults - struct that contains defaults for OSP services that can change over time // but are associated with a specific OpenStack release version type ServiceDefaults struct { - GlanceWsgi *string `json:"glanceWsgi,omitempty"` - RabbitmqVersion *string `json:"rabbitmqVersion,omitempty"` - MariadbVersion *string `json:"mariadbVersion,omitempty"` - GlanceLocationAPI *string `json:"glanceLocationAPI,omitempty"` - ManilaSharev1 *string `json:"manilaSharev1,omitempty"` - NeutronWsgi *string `json:"neutronWsgi,omitempty"` + GlanceWsgi *string `json:"glanceWsgi,omitempty"` + RabbitmqVersion *string `json:"rabbitmqVersion,omitempty"` + MariadbVersion *string `json:"mariadbVersion,omitempty"` + GlanceLocationAPI *string `json:"glanceLocationAPI,omitempty"` + ManilaSharev1 *string `json:"manilaSharev1,omitempty"` + NeutronWsgi *string `json:"neutronWsgi,omitempty"` + IronicInspectInterface *string `json:"ironicInspectInterface,omitempty"` } // OpenStackVersionStatus defines the observed state of OpenStackVersion diff --git a/api/core/v1beta1/zz_generated.deepcopy.go b/api/core/v1beta1/zz_generated.deepcopy.go index 7e663217c..12824ef27 100644 --- a/api/core/v1beta1/zz_generated.deepcopy.go +++ b/api/core/v1beta1/zz_generated.deepcopy.go @@ -1788,6 +1788,11 @@ func (in *ServiceDefaults) DeepCopyInto(out *ServiceDefaults) { *out = new(string) **out = **in } + if in.IronicInspectInterface != nil { + in, out := &in.IronicInspectInterface, &out.IronicInspectInterface + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefaults. diff --git a/bindata/crds/crds.yaml b/bindata/crds/crds.yaml index 427716775..2c756491a 100644 --- a/bindata/crds/crds.yaml +++ b/bindata/crds/crds.yaml @@ -22639,6 +22639,8 @@ spec: type: string glanceWsgi: type: string + ironicInspectInterface: + type: string manilaSharev1: type: string mariadbVersion: @@ -23084,6 +23086,8 @@ spec: type: string glanceWsgi: type: string + ironicInspectInterface: + type: string manilaSharev1: type: string mariadbVersion: diff --git a/config/crd/bases/core.openstack.org_openstackversions.yaml b/config/crd/bases/core.openstack.org_openstackversions.yaml index 57d6f22b4..41aa3c9b7 100644 --- a/config/crd/bases/core.openstack.org_openstackversions.yaml +++ b/config/crd/bases/core.openstack.org_openstackversions.yaml @@ -256,6 +256,8 @@ spec: type: string glanceWsgi: type: string + ironicInspectInterface: + type: string manilaSharev1: type: string mariadbVersion: @@ -701,6 +703,8 @@ spec: type: string glanceWsgi: type: string + ironicInspectInterface: + type: string manilaSharev1: type: string mariadbVersion: diff --git a/internal/controller/core/openstackversion_controller.go b/internal/controller/core/openstackversion_controller.go index 4b461a4fd..fe5d84470 100644 --- a/internal/controller/core/openstackversion_controller.go +++ b/internal/controller/core/openstackversion_controller.go @@ -217,7 +217,7 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req if instance.Status.AvailableServiceDefaults == nil { instance.Status.AvailableServiceDefaults = make(map[string]*corev1beta1.ServiceDefaults) } - // store the service defaults for the currently available version + // store the service defaults for each available version instance.Status.AvailableServiceDefaults[envAvailableVersion] = serviceDefaults serviceDefVal, ok := instance.Status.AvailableServiceDefaults[instance.Spec.TargetVersion] diff --git a/internal/openstack/ironic.go b/internal/openstack/ironic.go index dd01a607b..7b43fd7e6 100644 --- a/internal/openstack/ironic.go +++ b/internal/openstack/ironic.go @@ -280,6 +280,17 @@ func ReconcileIronic(ctx context.Context, instance *corev1beta1.OpenStackControl ironic.Spec.Secret = instance.Spec.Secret } + // Propagate inspect interface from ServiceDefaults if set. + // "inspector" for deployments with ironic < v32.0 and + // "agent" for deployments for ironic v32.0+. + if version.Status.ServiceDefaults.IronicInspectInterface != nil && + *version.Status.ServiceDefaults.IronicInspectInterface != "" { + if ironic.Annotations == nil { + ironic.Annotations = map[string]string{} + } + ironic.Annotations[ironicv1.IronicInspectInterfaceAnnotation] = *version.Status.ServiceDefaults.IronicInspectInterface + } + err := controllerutil.SetControllerReference(helper.GetBeforeObject(), ironic, helper.GetScheme()) if err != nil { return err diff --git a/internal/openstack/version.go b/internal/openstack/version.go index b577c3ce2..7d124bbe3 100644 --- a/internal/openstack/version.go +++ b/internal/openstack/version.go @@ -252,6 +252,8 @@ func InitializeOpenStackVersionServiceDefaults(ctx context.Context) *corev1beta1 // "10.11" in the same change that moves // RELATED_IMAGE_MARIADB_IMAGE_URL_DEFAULT to a 10.11 image. + defaults.IronicInspectInterface = ptr.To("inspector") // TODO: Override to agent for RHOSO 19+ in OpenStackVersion + return defaults }