Skip to content

Commit deeaca0

Browse files
Deydra71millevy
andcommitted
AppCred fixes
Fix propagation of ApplicatioNCredentialSecret into correct OCtavia Auth spec field. Fix reconcile on AC config changes (such as roles, expiry...). Fix deleting AC CRs when app creds are disabled (globally and for the service). Enhance kuttl test scenario to check the AC CR deletion. Signed-off-by: Veronika Fisarova <vfisarov@redhat.com> Co-authored-by: Milana Levy <millevy@redhat.com>
1 parent 5de8798 commit deeaca0

File tree

19 files changed

+96
-48
lines changed

19 files changed

+96
-48
lines changed

internal/openstack/applicationcredential.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ func EnsureApplicationCredentialForService(
125125

126126
// Check if AC CR exists and is ready
127127
if acExists {
128+
// We want to run reconcileApplicationCredential to update the AC CR if it exists and is ready and AC config fields changed
129+
err = reconcileApplicationCredential(ctx, helper, instance, acName, serviceUser, secretName, passwordSelector, merged)
130+
if err != nil {
131+
return "", ctrl.Result{}, err
132+
}
128133
if acCR.IsReady() {
129134
Log.Info("Application Credential is ready", "service", serviceName, "acName", acName, "secretName", acCR.Status.SecretName)
130135
return acCR.Status.SecretName, ctrl.Result{}, nil

internal/openstack/barbican.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ func ReconcileBarbican(ctx context.Context, instance *corev1beta1.OpenStackContr
7373
barbicanSecret = instance.Spec.Secret
7474
}
7575

76-
// Only call if AC enabled or currently configured
77-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Barbican.ApplicationCredential) ||
76+
// Reconcile AC if configured (enabled or disabled) or secret previously set
77+
if instance.Spec.Barbican.ApplicationCredential != nil ||
7878
instance.Spec.Barbican.Template.Auth.ApplicationCredentialSecret != "" {
7979

8080
acSecretName, acResult, err := EnsureApplicationCredentialForService(

internal/openstack/cinder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ func ReconcileCinder(ctx context.Context, instance *corev1beta1.OpenStackControl
9696
cinderSecret = instance.Spec.Secret
9797
}
9898

99-
// Only call if AC enabled or currently configured
100-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Cinder.ApplicationCredential) ||
99+
// Reconcile AC if configured (enabled or disabled) or secret previously set
100+
if instance.Spec.Cinder.ApplicationCredential != nil ||
101101
instance.Spec.Cinder.Template.Auth.ApplicationCredentialSecret != "" {
102102

103103
acSecretName, acResult, err := EnsureApplicationCredentialForService(

internal/openstack/designate.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ func ReconcileDesignate(ctx context.Context, instance *corev1beta1.OpenStackCont
8585
designateSecret = instance.Spec.Secret
8686
}
8787

88-
// Only call if AC enabled or currently configured
89-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Designate.ApplicationCredential) ||
88+
// Reconcile AC if configured (enabled or disabled) or secret previously set
89+
if instance.Spec.Designate.ApplicationCredential != nil ||
9090
instance.Spec.Designate.Template.DesignateAPI.Auth.ApplicationCredentialSecret != "" {
9191

9292
acSecretName, acResult, err := EnsureApplicationCredentialForService(

internal/openstack/glance.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,8 @@ func ReconcileGlance(ctx context.Context, instance *corev1beta1.OpenStackControl
128128
}
129129
}
130130

131-
// Only call if AC enabled or currently configured
132-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Glance.ApplicationCredential) || hasACConfigured {
133-
131+
// Reconcile AC if configured (enabled or disabled) or secret previously set
132+
if instance.Spec.Glance.ApplicationCredential != nil || hasACConfigured {
134133
acSecretName, acResult, err := EnsureApplicationCredentialForService(
135134
ctx,
136135
helper,

internal/openstack/heat.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ func ReconcileHeat(ctx context.Context, instance *corev1beta1.OpenStackControlPl
120120
heatSecret = instance.Spec.Secret
121121
}
122122

123-
// Only call if AC enabled or currently configured
124-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Heat.ApplicationCredential) ||
123+
// Reconcile AC if configured (enabled or disabled) or secret previously set
124+
if instance.Spec.Heat.ApplicationCredential != nil ||
125125
instance.Spec.Heat.Template.Auth.ApplicationCredentialSecret != "" {
126126

127127
heatACSecretName, acResult, err := EnsureApplicationCredentialForService(

internal/openstack/ironic.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ func ReconcileIronic(ctx context.Context, instance *corev1beta1.OpenStackControl
124124
ironicSecret = instance.Spec.Secret
125125
}
126126

127-
// Only call if AC enabled or currently configured
128-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Ironic.ApplicationCredential) ||
127+
// Reconcile AC if configured (enabled or disabled) or secret previously set
128+
if instance.Spec.Ironic.ApplicationCredential != nil ||
129129
instance.Spec.Ironic.Template.Auth.ApplicationCredentialSecret != "" ||
130130
instance.Spec.Ironic.Template.IronicInspector.Auth.ApplicationCredentialSecret != "" {
131131

@@ -145,7 +145,6 @@ func ReconcileIronic(ctx context.Context, instance *corev1beta1.OpenStackControl
145145
return ctrl.Result{}, err
146146
}
147147

148-
// If AC is not ready, return immediately without updating the service CR
149148
if (acResult != ctrl.Result{}) {
150149
return acResult, nil
151150
}
@@ -162,7 +161,7 @@ func ReconcileIronic(ctx context.Context, instance *corev1beta1.OpenStackControl
162161
instance,
163162
"ironic-inspector",
164163
ironicReady,
165-
ironicSecret, // Inspector shares the same secret as ironic
164+
ironicSecret,
166165
instance.Spec.Ironic.Template.IronicInspector.PasswordSelectors.Service,
167166
instance.Spec.Ironic.Template.IronicInspector.ServiceUser,
168167
instance.Spec.Ironic.ApplicationCredential,
@@ -171,7 +170,6 @@ func ReconcileIronic(ctx context.Context, instance *corev1beta1.OpenStackControl
171170
return ctrl.Result{}, err
172171
}
173172

174-
// If AC is not ready, return immediately without updating the service CR
175173
if (inspectorACResult != ctrl.Result{}) {
176174
return inspectorACResult, nil
177175
}

internal/openstack/manila.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ func ReconcileManila(ctx context.Context, instance *corev1beta1.OpenStackControl
7575
manilaSecret = instance.Spec.Secret
7676
}
7777

78-
// Only call if AC enabled or currently configured
79-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Manila.ApplicationCredential) ||
78+
// Reconcile AC if configured (enabled or disabled) or secret previously set
79+
if instance.Spec.Manila.ApplicationCredential != nil ||
8080
instance.Spec.Manila.Template.Auth.ApplicationCredentialSecret != "" {
8181

8282
acSecretName, acResult, err := EnsureApplicationCredentialForService(

internal/openstack/neutron.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ func ReconcileNeutron(ctx context.Context, instance *corev1beta1.OpenStackContro
119119
neutronSecret = instance.Spec.Secret
120120
}
121121

122-
// Only call if AC enabled or currently configured
123-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Neutron.ApplicationCredential) ||
122+
// Reconcile AC if configured (enabled or disabled) or secret previously set
123+
if instance.Spec.Neutron.ApplicationCredential != nil ||
124124
instance.Spec.Neutron.Template.Auth.ApplicationCredentialSecret != "" {
125125

126126
acSecretName, acResult, err := EnsureApplicationCredentialForService(

internal/openstack/nova.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ func ReconcileNova(ctx context.Context, instance *corev1beta1.OpenStackControlPl
191191
novaSecret = instance.Spec.Secret
192192
}
193193

194-
// Only call if AC enabled or currently configured
195-
if isACEnabled(instance.Spec.ApplicationCredential, instance.Spec.Nova.ApplicationCredential) ||
194+
// Reconcile AC if configured (enabled or disabled) or secret previously set
195+
if instance.Spec.Nova.ApplicationCredential != nil ||
196196
instance.Spec.Nova.Template.Auth.ApplicationCredentialSecret != "" {
197197

198198
acSecretName, acResult, err := EnsureApplicationCredentialForService(

0 commit comments

Comments
 (0)