Skip to content

Commit 988245f

Browse files
Add DeletePolicy to IBMPowerVSImage Spec (#566)
Signed-off-by: Prajyot-Parab <[email protected]>
1 parent 14fcd03 commit 988245f

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

api/v1beta1/ibmpowervsimage_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ type IBMPowerVSImageSpec struct {
5353
// +kubebuilder:validation:Enum=tier1;tier3
5454
// +optional
5555
StorageType string `json:"storageType,omitempty"`
56+
57+
// DeletePolicy defines the policy used to identify images to be preserved beyond the lifecycle of associated cluster.
58+
// +kubebuilder:default=delete
59+
// +kubebuilder:validation:Enum=delete;retain
60+
// +optional
61+
DeletePolicy string `json:"deletePolicy,omitempty"`
5662
}
5763

5864
// IBMPowerVSImageStatus defines the observed state of IBMPowerVSImage

api/v1beta1/types.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ var (
5050
PowerVSImageStateImporting = PowerVSImageState("importing")
5151
)
5252

53+
// DeletePolicy defines the policy used to identify images to be preserved.
54+
type DeletePolicy string
55+
56+
var (
57+
// DeletePolicyRetain is the string representing an image to be retained.
58+
DeletePolicyRetain = DeletePolicy("retain")
59+
)
60+
5361
// NetworkInterface holds the network interface information like subnet id.
5462
type NetworkInterface struct {
5563
// Subnet ID of the network interface

config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsimages.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ spec:
5252
to.
5353
minLength: 1
5454
type: string
55+
deletePolicy:
56+
default: delete
57+
description: DeletePolicy defines the policy used to identify images
58+
to be preserved beyond the lifecycle of associated cluster.
59+
enum:
60+
- delete
61+
- retain
62+
type: string
5563
object:
5664
description: Cloud Object Storage image filename
5765
type: string

controllers/ibmpowervsimage_controller.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,11 +217,13 @@ func (r *IBMPowerVSImageReconciler) reconcileDelete(scope *scope.PowerVSImageSco
217217
}
218218
return ctrl.Result{}, nil
219219
}
220-
if err := scope.DeleteImage(); err != nil {
221-
scope.Info("error deleting IBMPowerVSImage")
222-
return ctrl.Result{}, errors.Wrapf(err, "error deleting IBMPowerVSImage %s/%s", scope.IBMPowerVSImage.Namespace, scope.IBMPowerVSImage.Name)
223-
}
224220

221+
if scope.IBMPowerVSImage.Spec.DeletePolicy != string(v1beta1.DeletePolicyRetain) {
222+
if err := scope.DeleteImage(); err != nil {
223+
scope.Info("error deleting IBMPowerVSImage")
224+
return ctrl.Result{}, errors.Wrapf(err, "error deleting IBMPowerVSImage %s/%s", scope.IBMPowerVSImage.Namespace, scope.IBMPowerVSImage.Name)
225+
}
226+
}
225227
return ctrl.Result{}, nil
226228
}
227229

0 commit comments

Comments
 (0)