Skip to content

Commit 4f03ca8

Browse files
authored
Merge pull request #1503 from splunk/CSPL-3704_smartstore_secret_deletion
CSPL-3704 #1474 Secret Management: SOK deletes automatically smartstore secrets created
2 parents 4d604e2 + c351ba0 commit 4f03ca8

File tree

10 files changed

+39
-19
lines changed

10 files changed

+39
-19
lines changed

.github/workflows/int-test-gcp-workflow.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ on:
55
branches:
66
- develop
77
- main
8-
98
jobs:
109
build-operator-image:
1110
runs-on: ubuntu-latest

pkg/splunk/enterprise/clustermanager.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ func ApplyClusterManager(ctx context.Context, client splcommon.ControllerClient,
128128
return result, err
129129
}
130130

131+
// Smart Store secrets get created manually and should not be managed by the Operator
132+
if &cr.Spec.SmartStore != nil {
133+
_ = DeleteOwnerReferencesForS3SecretObjects(ctx, client, cr, &cr.Spec.SmartStore)
134+
}
135+
131136
// check if deletion has been requested
132137
if cr.ObjectMeta.DeletionTimestamp != nil {
133138
if cr.Spec.MonitoringConsoleRef.Name != "" {
@@ -154,7 +159,8 @@ func ApplyClusterManager(ctx context.Context, client splcommon.ControllerClient,
154159
return result, err
155160
}
156161

157-
DeleteOwnerReferencesForResources(ctx, client, cr, &cr.Spec.SmartStore, SplunkClusterManager)
162+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkClusterManager)
163+
158164
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
159165

160166
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after

pkg/splunk/enterprise/clustermaster.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ func ApplyClusterMaster(ctx context.Context, client splcommon.ControllerClient,
125125
return result, err
126126
}
127127

128+
// Smart Store secrets get created manually and should not be managed by the Operator
129+
if &cr.Spec.SmartStore != nil {
130+
_ = DeleteOwnerReferencesForS3SecretObjects(ctx, client, cr, &cr.Spec.SmartStore)
131+
}
132+
128133
// check if deletion has been requested
129134
if cr.ObjectMeta.DeletionTimestamp != nil {
130135
if cr.Spec.MonitoringConsoleRef.Name != "" {
@@ -144,9 +149,10 @@ func ApplyClusterMaster(ctx context.Context, client splcommon.ControllerClient,
144149
return result, err
145150
}
146151
}
147-
DeleteOwnerReferencesForResources(ctx, client, cr, &cr.Spec.SmartStore, SplunkClusterMaster)
148-
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
149152

153+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkClusterMaster)
154+
155+
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
150156
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after
151157
cr.Status.Phase = enterpriseApi.PhaseTerminating
152158
} else {

pkg/splunk/enterprise/indexercluster.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ func ApplyIndexerClusterManager(ctx context.Context, client splcommon.Controller
127127

128128
// check if deletion has been requested
129129
if cr.ObjectMeta.DeletionTimestamp != nil {
130-
DeleteOwnerReferencesForResources(ctx, client, cr, nil, SplunkIndexer)
130+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkIndexer)
131+
131132
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
132133
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after
133134
cr.Status.Phase = enterpriseApi.PhaseTerminating
@@ -381,7 +382,8 @@ func ApplyIndexerCluster(ctx context.Context, client splcommon.ControllerClient,
381382

382383
// check if deletion has been requested
383384
if cr.ObjectMeta.DeletionTimestamp != nil {
384-
DeleteOwnerReferencesForResources(ctx, client, cr, nil, SplunkIndexer)
385+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkIndexer)
386+
385387
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
386388
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after
387389
cr.Status.Phase = enterpriseApi.PhaseTerminating

pkg/splunk/enterprise/licensemanager.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func ApplyLicenseManager(ctx context.Context, client splcommon.ControllerClient,
9898
return result, err
9999
}
100100
}
101+
101102
// If this is the last of its kind getting deleted,
102103
// remove the entry for this CR type from configMap or else
103104
// just decrement the refCount for this CR type.
@@ -108,9 +109,9 @@ func ApplyLicenseManager(ctx context.Context, client splcommon.ControllerClient,
108109
}
109110
}
110111

111-
DeleteOwnerReferencesForResources(ctx, client, cr, nil, SplunkLicenseManager)
112-
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
112+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkLicenseManager)
113113

114+
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
114115
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after
115116
cr.Status.Phase = enterpriseApi.PhaseTerminating
116117
} else {

pkg/splunk/enterprise/licensemaster.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func ApplyLicenseMaster(ctx context.Context, client splcommon.ControllerClient,
9898
return result, err
9999
}
100100
}
101+
101102
// If this is the last of its kind getting deleted,
102103
// remove the entry for this CR type from configMap or else
103104
// just decrement the refCount for this CR type.
@@ -108,9 +109,9 @@ func ApplyLicenseMaster(ctx context.Context, client splcommon.ControllerClient,
108109
}
109110
}
110111

111-
DeleteOwnerReferencesForResources(ctx, client, cr, nil, SplunkLicenseMaster)
112-
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
112+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkLicenseMaster)
113113

114+
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
114115
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after
115116
cr.Status.Phase = enterpriseApi.PhaseTerminating
116117
} else {

pkg/splunk/enterprise/searchheadcluster.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ func ApplySearchHeadCluster(ctx context.Context, client splcommon.ControllerClie
131131
}
132132
}
133133

134-
DeleteOwnerReferencesForResources(ctx, client, cr, nil, SplunkSearchHead)
134+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkSearchHead)
135+
135136
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
136137
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after
137138
cr.Status.Phase = enterpriseApi.PhaseTerminating

pkg/splunk/enterprise/standalone.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ func ApplyStandalone(ctx context.Context, client splcommon.ControllerClient, cr
114114
return result, err
115115
}
116116

117+
// Smart Store secrets get created manually and should not be managed by the Operator
118+
if &cr.Spec.SmartStore != nil {
119+
_ = DeleteOwnerReferencesForS3SecretObjects(ctx, client, cr, &cr.Spec.SmartStore)
120+
}
121+
117122
// check if deletion has been requested
118123
if cr.ObjectMeta.DeletionTimestamp != nil {
119124
if cr.Spec.MonitoringConsoleRef.Name != "" {
@@ -123,6 +128,7 @@ func ApplyStandalone(ctx context.Context, client splcommon.ControllerClient, cr
123128
return result, err
124129
}
125130
}
131+
126132
// If this is the last of its kind getting deleted,
127133
// remove the entry for this CR type from configMap or else
128134
// just decrement the refCount for this CR type.
@@ -132,7 +138,9 @@ func ApplyStandalone(ctx context.Context, client splcommon.ControllerClient, cr
132138
return result, err
133139
}
134140
}
135-
DeleteOwnerReferencesForResources(ctx, client, cr, &cr.Spec.SmartStore, SplunkStandalone)
141+
142+
DeleteOwnerReferencesForResources(ctx, client, cr, SplunkStandalone)
143+
136144
terminating, err := splctrl.CheckForDeletion(ctx, cr, client)
137145

138146
if terminating && err != nil { // don't bother if no error, since it will just be removed immmediately after

pkg/splunk/enterprise/util.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -786,15 +786,11 @@ func setupInitContainer(podTemplateSpec *corev1.PodTemplateSpec, Image string, i
786786

787787
// DeleteOwnerReferencesForResources used to delete any outstanding owner references
788788
// Ideally we should be removing the owner reference wherever the CR is not controller for the resource
789-
func DeleteOwnerReferencesForResources(ctx context.Context, client splcommon.ControllerClient, cr splcommon.MetaObject, smartstore *enterpriseApi.SmartStoreSpec, instanceType InstanceType) error {
789+
func DeleteOwnerReferencesForResources(ctx context.Context, client splcommon.ControllerClient, cr splcommon.MetaObject, instanceType InstanceType) error {
790790
var err error
791791
reqLogger := log.FromContext(ctx)
792792
scopedLog := reqLogger.WithName("DeleteOwnerReferencesForResources").WithValues("kind", cr.GetObjectKind().GroupVersionKind().Kind, "name", cr.GetName(), "namespace", cr.GetNamespace())
793793

794-
if smartstore != nil {
795-
_ = DeleteOwnerReferencesForS3SecretObjects(ctx, client, cr, smartstore)
796-
}
797-
798794
// Delete references to Default secret object
799795
defaultSecretName := splcommon.GetNamespaceScopedSecretName(cr.GetNamespace())
800796
_, err = splutil.RemoveSecretOwnerRef(ctx, client, defaultSecretName, cr)
@@ -838,7 +834,7 @@ func DeleteOwnerReferencesForS3SecretObjects(ctx context.Context, client splcomm
838834

839835
volList := smartstore.VolList
840836
for _, volume := range volList {
841-
if volume.SecretRef != "" {
837+
if volume.SecretRef != "" && volume.SecretRef != splcommon.GetNamespaceScopedSecretName(cr.GetNamespace()) {
842838
_, err = splutil.RemoveSecretOwnerRef(ctx, client, volume.SecretRef, cr)
843839
if err == nil {
844840
scopedLog.Info("Removed references for Secret Object", "secret", volume.SecretRef)

pkg/splunk/enterprise/util_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ func TestRemoveOwenerReferencesForSecretObjectsReferredBySmartstoreVolumes(t *te
566566
}
567567

568568
// Smartstore volume config with non-existing secret objects
569-
err = DeleteOwnerReferencesForResources(ctx, client, &cr, &cr.Spec.SmartStore, SplunkClusterMaster)
569+
err = DeleteOwnerReferencesForResources(ctx, client, &cr, SplunkClusterMaster)
570570
if err == nil {
571571
t.Errorf("Should report an error, when the secret objects doesn't exist")
572572
}

0 commit comments

Comments
 (0)