diff --git a/apis/database/v4/oraclerestart_types.go b/apis/database/v4/oraclerestart_types.go index b0ae127d..59410ae9 100644 --- a/apis/database/v4/oraclerestart_types.go +++ b/apis/database/v4/oraclerestart_types.go @@ -182,7 +182,7 @@ type OracleRestartDbPwdSecretDetails struct { // OracleRestart Ssh secret Details type OracleRestartSshSecretDetails struct { - Name string `json:"name"` // Name of the secret. + Name string `json:"name,omitempty"` // Name of the secret. KeyMountLocation string `json:"keyMountLocation,omitempty"` PrivKeySecretName string `json:"privKeySecretName,omitempty"` PubKeySecretName string `json:"pubKeySecretName,omitempty"` diff --git a/apis/database/v4/oraclerestart_webhook.go b/apis/database/v4/oraclerestart_webhook.go index 51e6a7a0..c4f67bbc 100644 --- a/apis/database/v4/oraclerestart_webhook.go +++ b/apis/database/v4/oraclerestart_webhook.go @@ -120,7 +120,7 @@ func (r *OracleRestart) Default(ctx context.Context, obj runtime.Object) error { cr.Spec.ConfigParams.CrsAsmDiskDg = "DATA" } if cr.Spec.ConfigParams.CrsAsmDiskDgRedundancy == "" { - cr.Spec.ConfigParams.CrsAsmDiskDgRedundancy = "external" + cr.Spec.ConfigParams.CrsAsmDiskDgRedundancy = "EXTERNAL" } } @@ -171,7 +171,7 @@ func (r *OracleRestart) ValidateCreate(ctx context.Context, obj runtime.Object) "image cannot be set to empty")) } - validationErrs = append(validationErrs, cr.validateSshSecret()...) + // validationErrs = append(validationErrs, cr.validateSshSecret()...) validationErrs = append(validationErrs, cr.validateDbSecret()...) validationErrs = append(validationErrs, cr.validateTdeSecret()...) validationErrs = append(validationErrs, cr.validateServiceSpecs()...) @@ -465,31 +465,31 @@ func (r *OracleRestart) ValidateDelete(ctx context.Context, obj runtime.Object) //========== User Functions to check the fields ========== -func (r *OracleRestart) validateSshSecret() field.ErrorList { - var validationErrs field.ErrorList - sshPath := field.NewPath("spec").Child("SshKeySecret") - - if r.Spec.SshKeySecret == nil { - validationErrs = append(validationErrs, - field.Required(sshPath, "SshKeySecret must be specified")) - return validationErrs - } - - if r.Spec.SshKeySecret.Name == "" { - validationErrs = append(validationErrs, - field.Required(sshPath.Child("Name"), "SshKeySecret.Name cannot be empty")) - } - if r.Spec.SshKeySecret.PrivKeySecretName == "" { - validationErrs = append(validationErrs, - field.Required(sshPath.Child("PrivKeySecretName"), "PrivKeySecretName cannot be empty")) - } - if r.Spec.SshKeySecret.PubKeySecretName == "" { - validationErrs = append(validationErrs, - field.Required(sshPath.Child("PubKeySecretName"), "PubKeySecretName cannot be empty")) - } - - return validationErrs -} +// func (r *OracleRestart) validateSshSecret() field.ErrorList { +// var validationErrs field.ErrorList +// sshPath := field.NewPath("spec").Child("SshKeySecret") + +// if r.Spec.SshKeySecret == nil { +// validationErrs = append(validationErrs, +// field.Required(sshPath, "SshKeySecret must be specified")) +// return validationErrs +// } + +// if r.Spec.SshKeySecret.Name == "" { +// validationErrs = append(validationErrs, +// field.Required(sshPath.Child("Name"), "SshKeySecret.Name cannot be empty")) +// } +// if r.Spec.SshKeySecret.PrivKeySecretName == "" { +// validationErrs = append(validationErrs, +// field.Required(sshPath.Child("PrivKeySecretName"), "PrivKeySecretName cannot be empty")) +// } +// if r.Spec.SshKeySecret.PubKeySecretName == "" { +// validationErrs = append(validationErrs, +// field.Required(sshPath.Child("PubKeySecretName"), "PubKeySecretName cannot be empty")) +// } + +// return validationErrs +// } func (r *OracleRestart) validateDbSecret() field.ErrorList { var validationErrs field.ErrorList dbPath := field.NewPath("spec").Child("DbSecret") diff --git a/commons/oraclerestart/oraclerestartcommon.go b/commons/oraclerestart/oraclerestartcommon.go index 434f1ce9..c0420b4f 100644 --- a/commons/oraclerestart/oraclerestartcommon.go +++ b/commons/oraclerestart/oraclerestartcommon.go @@ -188,16 +188,12 @@ func GetRacPodName(racName string) string { return podName } -func getlabelsForRac(instance *oraclerestart.OracleRestart) map[string]string { - return buildLabelsForOracleRestart(instance, "OracleRestart") -} - func GetAsmPvcName(name string, diskPath string, instance *oraclerestart.OracleRestart) string { // pvcName := "asm-pvc-disk-" + strconv.Itoa(index) + "-" + name + "-" + dgType + "-" + "pvc" dgType := CheckDiskInAsmDeviceList(instance, diskPath) diskName := diskPath[strings.LastIndex(diskPath, "/")+1:] - pvcName := "asm-pvc-" + strings.ToLower(dgType) + "-" + diskName + "-" + name + "-" + instance.Spec.InstDetails.Name + "-0" + pvcName := "asm-pvc-" + strings.ToLower(dgType) + "-" + diskName + "-" + instance.Name return pvcName } @@ -1395,3 +1391,20 @@ func CheckStorageClass(instance *oraclerestart.OracleRestart) string { } return "SC" } + +func checkHugePagesConfigured(instance *oraclerestart.OracleRestart) bool { + + if instance.Spec.Resources != nil { + if len(instance.Spec.Resources.Limits) > 0 { + _, ok := instance.Spec.Resources.Limits["hugepages-2Mi"] + if ok { + return true + } + _, ok = instance.Spec.Resources.Requests["hugepages-2Mi"] + if ok { + return true + } + } + } + return false +} diff --git a/commons/oraclerestart/oraclerestartprov.go b/commons/oraclerestart/oraclerestartprov.go index 81e8fb48..239fe7d4 100644 --- a/commons/oraclerestart/oraclerestartprov.go +++ b/commons/oraclerestart/oraclerestartprov.go @@ -158,9 +158,6 @@ func buildStatefulSpecForOracleRestart( if len(instance.Spec.SwStorageClass) != 0 && len(instance.Spec.InstDetails.HostSwLocation) == 0 { sfsetspec.VolumeClaimTemplates = append(sfsetspec.VolumeClaimTemplates, SwVolumeClaimTemplatesForOracleRestart(instance, OracleRestartSpex)) } - // Add annotations to the Pod template - // sfsetspec.Template.Annotations = generateNetworkDetails(instance, OracleRestartSpex, kClient) - return sfsetspec } @@ -273,14 +270,6 @@ func getAsmNodeAffinity(instance *oraclerestart.OracleRestart, disk *oracleresta func buildVolumeSpecForOracleRestart(instance *oraclerestart.OracleRestart, OracleRestartSpex oraclerestart.OracleRestartInstDetailSpec) []corev1.Volume { var result []corev1.Volume result = []corev1.Volume{ - { - Name: OracleRestartSpex.Name + "-ssh-secretmap-vol", - VolumeSource: corev1.VolumeSource{ - Secret: &corev1.SecretVolumeSource{ - SecretName: instance.Spec.SshKeySecret.Name, - }, - }, - }, { Name: OracleRestartSpex.Name + "-oradshm-vol", VolumeSource: corev1.VolumeSource{ @@ -289,6 +278,20 @@ func buildVolumeSpecForOracleRestart(instance *oraclerestart.OracleRestart, Orac }, } + // Only add the SSH secret volume if SshKeySecret is not nil and Name is not empty/whitespace + if instance.Spec.SshKeySecret != nil && strings.TrimSpace(instance.Spec.SshKeySecret.Name) != "" { + result = append([]corev1.Volume{ + { + Name: OracleRestartSpex.Name + "-ssh-secretmap-vol", + VolumeSource: corev1.VolumeSource{ + Secret: &corev1.SecretVolumeSource{ + SecretName: instance.Spec.SshKeySecret.Name, + }, + }, + }, + }, result...) + } + if len(instance.Spec.ScriptsLocation) != 0 { result = append(result, corev1.Volume{Name: OracleRestartSpex.Name + "-oradata-scripts-vol", VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{}}}) } @@ -383,27 +386,38 @@ func buildVolumeSpecForOracleRestart(instance *oraclerestart.OracleRestart, Orac } } + if checkHugePagesConfigured(instance) { + result = append(result, corev1.Volume{ + Name: OracleRestartSpex.Name + "-oradata-hugepages-vol", + VolumeSource: corev1.VolumeSource{ + EmptyDir: &corev1.EmptyDirVolumeSource{ + Medium: corev1.StorageMediumHugePages, + }, + }, + }) + } + if len(OracleRestartSpex.PvcName) != 0 { for source := range OracleRestartSpex.PvcName { result = append(result, corev1.Volume{Name: OracleRestartSpex.Name + "-ora-vol-" + source, VolumeSource: corev1.VolumeSource{PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ClaimName: source}}}) } } - + seen := make(map[string]struct{}) if instance.Spec.AsmStorageDetails != nil { - // Iterate over the DisksBySize slice for _, diskBySize := range instance.Spec.AsmStorageDetails.DisksBySize { - // For each DiskBySize, append PVCs for the disks in DiskNames for _, diskName := range diskBySize.DiskNames { - // Construct PVC name based on index and instance name pvcName := GetAsmPvcName(instance.Name, diskName, instance) - result = append(result, corev1.Volume{ - Name: pvcName, - VolumeSource: corev1.VolumeSource{ - PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ - ClaimName: pvcName, + if _, exists := seen[pvcName]; !exists { + seen[pvcName] = struct{}{} + result = append(result, corev1.Volume{ + Name: pvcName, + VolumeSource: corev1.VolumeSource{ + PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ + ClaimName: pvcName, + }, }, - }, - }) + }) + } } } } @@ -435,7 +449,7 @@ func buildContainerSpecForOracleRestart(instance *oraclerestart.OracleRestart, O Command: []string{ "/usr/sbin/init", }, - VolumeDevices: getAsmVolumeDevices(instance, OracleRestartSpex), + VolumeDevices: getAsmVolumeDevices(instance), Resources: corev1.ResourceRequirements{ Requests: make(map[corev1.ResourceName]resource.Quantity), }, @@ -468,21 +482,24 @@ func buildContainerSpecForOracleRestart(instance *oraclerestart.OracleRestart, O return result } -func getAsmVolumeDevices(instance *oraclerestart.OracleRestart, OracleRestartSpex oraclerestart.OracleRestartInstDetailSpec) []corev1.VolumeDevice { +func getAsmVolumeDevices(instance *oraclerestart.OracleRestart) []corev1.VolumeDevice { var result []corev1.VolumeDevice + seen := make(map[string]struct{}) if instance.Spec.AsmStorageDetails != nil { - // Iterate over the DisksBySize slice for _, diskBySize := range instance.Spec.AsmStorageDetails.DisksBySize { - // For each disk in DiskNames, create a VolumeDevice for _, diskName := range diskBySize.DiskNames { - // Create PVC name and append VolumeDevice to the result pvcName := GetAsmPvcName(instance.Name, diskName, instance) - result = append(result, corev1.VolumeDevice{Name: pvcName, DevicePath: diskName}) + if _, exists := seen[pvcName]; !exists { + seen[pvcName] = struct{}{} + result = append(result, corev1.VolumeDevice{ + Name: pvcName, + DevicePath: diskName, + }) + } } } } - return result } @@ -534,7 +551,13 @@ func buildInitContainerSpecForOracleRestart(instance *oraclerestart.OracleRestar func buildVolumeMountSpecForOracleRestart(instance *oraclerestart.OracleRestart, OracleRestartSpex oraclerestart.OracleRestartInstDetailSpec) []corev1.VolumeMount { var result []corev1.VolumeMount - result = append(result, corev1.VolumeMount{Name: OracleRestartSpex.Name + "-ssh-secretmap-vol", MountPath: instance.Spec.SshKeySecret.KeyMountLocation, ReadOnly: true}) + if instance.Spec.SshKeySecret != nil && strings.TrimSpace(instance.Spec.SshKeySecret.KeyMountLocation) != "" { + result = append(result, corev1.VolumeMount{ + Name: OracleRestartSpex.Name + "-ssh-secretmap-vol", + MountPath: instance.Spec.SshKeySecret.KeyMountLocation, + ReadOnly: true, + }) + } if instance.Spec.DbSecret != nil { if instance.Spec.DbSecret.KeySecretName != "" { result = append(result, corev1.VolumeMount{Name: OracleRestartSpex.Name + "-dbsecret-key-vol", MountPath: instance.Spec.DbSecret.KeyFileMountLocation, ReadOnly: true}) @@ -616,6 +639,13 @@ func buildVolumeMountSpecForOracleRestart(instance *oraclerestart.OracleRestart, } } + if checkHugePagesConfigured(instance) { + result = append(result, corev1.VolumeMount{ + Name: OracleRestartSpex.Name + "-oradata-hugepages-vol", + MountPath: "/hugepages", + }) + } + if len(OracleRestartSpex.PvcName) != 0 { for source, target := range OracleRestartSpex.PvcName { result = append(result, corev1.VolumeMount{Name: OracleRestartSpex.Name + "-ora-vol-" + source, MountPath: target}) diff --git a/config/crd/bases/database.oracle.com_oraclerestarts.yaml b/config/crd/bases/database.oracle.com_oraclerestarts.yaml index 5db2113c..d0836fde 100644 --- a/config/crd/bases/database.oracle.com_oraclerestarts.yaml +++ b/config/crd/bases/database.oracle.com_oraclerestarts.yaml @@ -675,8 +675,6 @@ spec: type: string pubKeySecretName: type: string - required: - - name type: object swDgStorageClass: type: string @@ -1395,8 +1393,6 @@ spec: type: string pubKeySecretName: type: string - required: - - name type: object state: type: string diff --git a/controllers/database/oraclerestart_controller.go b/controllers/database/oraclerestart_controller.go index b42f8302..05b9ef29 100644 --- a/controllers/database/oraclerestart_controller.go +++ b/controllers/database/oraclerestart_controller.go @@ -44,6 +44,7 @@ import ( "encoding/json" "errors" "fmt" + "os" "reflect" "strconv" "strings" @@ -189,13 +190,17 @@ func (r *OracleRestartReconciler) Reconcile(ctx context.Context, req ctrl.Reques } // debugging - err = checkOracleRestartState(oracleRestart) - if err != nil { - result = resultQ - r.Log.Info("Oracle Restart object is in restricted state, returning back") - return result, nilErr - } + webhooksEnabled := os.Getenv("ENABLE_WEBHOOKS") != "false" + if webhooksEnabled { + + err = checkOracleRestartState(oracleRestart) + if err != nil { + result = resultQ + r.Log.Info("Oracle Restart object is in restricted state, returning back") + return result, nilErr + } + } // First Validate err = r.validateSpex(oracleRestart, oldSpec, ctx) if err != nil { @@ -386,9 +391,7 @@ func (r *OracleRestartReconciler) Reconcile(ctx context.Context, req ctrl.Reques cmName := oracleRestart.Spec.InstDetails.Name + oracleRestart.Name + "-cmap" cm := oraclerestartcommon.ConfigMapSpecs(oracleRestart, configMapData, cmName) result, configmapEnvKeyChanged, err := r.createConfigMap(ctx, *oracleRestart, cm) - if err != nil { - // handle error - } + if err != nil { result = resultNq return result, err @@ -498,31 +501,6 @@ func (r *OracleRestartReconciler) Reconcile(ctx context.Context, req ctrl.Reques } } - if oracleRestart.Spec.EnableOns == "enable" || oracleRestart.Spec.EnableOns == "disable" { - OraRestartSpex := oracleRestart.Spec.InstDetails - orestartSfSet, err := oraclerestartcommon.CheckSfset(OraRestartSpex.Name, oracleRestart, r.Client) - if err != nil { - r.updateOracleRestartInstStatus(oracleRestart, ctx, req, OraRestartSpex, string(oraclerestartdb.StatefulSetNotFound), r.Client, false) - return ctrl.Result{}, err - } - - podList, err := oraclerestartcommon.GetPodList(orestartSfSet.Name, oracleRestart, r.Client, oracleRestart.Spec.InstDetails) - if err != nil { - r.Log.Error(err, "Failed to list pods") - return ctrl.Result{}, err - } - // default is to start - onsOp := "start" - if oracleRestart.Spec.EnableOns == "disable" { - onsOp = "stop" - } - - err = r.updateONS(ctx, podList, oracleRestart, onsOp) - if err != nil { - return ctrl.Result{}, err - } - } - err = r.expandStorageClassSWVolume(ctx, oracleRestart, oldSpec) if err != nil { return ctrl.Result{}, err @@ -535,6 +513,56 @@ func (r *OracleRestartReconciler) Reconcile(ctx context.Context, req ctrl.Reques oracleRestart.Spec.IsFailed = true return resultQ, err } + OraRestartSpex := oracleRestart.Spec.InstDetails + orestartSfSet, err := oraclerestartcommon.CheckSfset(OraRestartSpex.Name, oracleRestart, r.Client) + + if err != nil { + //msg := "Unable to find Oracle Restart statefulset " + oraclerestartcommon.GetFmtStr(OraRestartSpex.Name) + "." + //oraclerestartcommon.LogMessages("INFO", msg, nil, instance, r.Log) + r.updateOracleRestartInstStatus(oracleRestart, ctx, req, OraRestartSpex, string(oraclerestartdb.StatefulSetNotFound), r.Client, false) + return ctrl.Result{}, err + } + + podList, err := oraclerestartcommon.GetPodList(orestartSfSet.Name, oracleRestart, r.Client, OraRestartSpex) + if err != nil { + msg := "Unable to find any pod in statefulset " + oraclerestartcommon.GetFmtStr(orestartSfSet.Name) + "." + oraclerestartcommon.LogMessages("INFO", msg, nil, oracleRestart, r.Log) + r.updateOracleRestartInstStatus(oracleRestart, ctx, req, OraRestartSpex, string(oraclerestartdb.PodNotFound), r.Client, false) + return ctrl.Result{}, err + } + isPodExist, _, notReadyPod := oraclerestartcommon.PodListValidation(podList, orestartSfSet.Name, oracleRestart, r.Client) + // Check if the pod is ready + if isPodExist { + msg := "" + if notReadyPod == nil { + if oracleRestart.Spec.EnableOns == "enable" || oracleRestart.Spec.EnableOns == "disable" { + OraRestartSpex := oracleRestart.Spec.InstDetails + orestartSfSet, err := oraclerestartcommon.CheckSfset(OraRestartSpex.Name, oracleRestart, r.Client) + if err != nil { + r.updateOracleRestartInstStatus(oracleRestart, ctx, req, OraRestartSpex, string(oraclerestartdb.StatefulSetNotFound), r.Client, false) + return ctrl.Result{}, err + } + + podList, err := oraclerestartcommon.GetPodList(orestartSfSet.Name, oracleRestart, r.Client, oracleRestart.Spec.InstDetails) + if err != nil { + r.Log.Error(err, "Failed to list pods") + return ctrl.Result{}, err + } + // default is to start + onsOp := "start" + if oracleRestart.Spec.EnableOns == "disable" { + onsOp = "stop" + } + + err = r.updateONS(ctx, podList, oracleRestart, onsOp) + if err != nil { + return ctrl.Result{}, err + } + } + r.Log.Info(msg) + } + } + r.Log.Info("Reconcile completed. Requeuing....") // uncomment this only to debugging null pointer exception // r.updateReconcileStatus(OracleRestart, ctx, req, &result, &err, &blocked, &completed) @@ -772,14 +800,14 @@ func (r *OracleRestartReconciler) validateSpex(oracleRestart *oraclerestartdb.Or } // ======== Config Params Checks - // Checking Secret for ssh key - privKeyFlag, pubKeyFlag := oraclerestartcommon.GetSSHkey(oracleRestart, oracleRestart.Spec.SshKeySecret.Name, r.Client) - if !privKeyFlag { - return errors.New("private key name is not set to " + oracleRestart.Spec.SshKeySecret.PrivKeySecretName + " in SshKeySecret") - } - if !pubKeyFlag { - return errors.New("public key name is not set to " + oracleRestart.Spec.SshKeySecret.PubKeySecretName + " in SshKeySecret") - } + // // Checking Secret for ssh key + // privKeyFlag, pubKeyFlag := oraclerestartcommon.GetSSHkey(oracleRestart, oracleRestart.Spec.SshKeySecret.Name, r.Client) + // if !privKeyFlag { + // return errors.New("private key name is not set to " + oracleRestart.Spec.SshKeySecret.PrivKeySecretName + " in SshKeySecret") + // } + // if !pubKeyFlag { + // return errors.New("public key name is not set to " + oracleRestart.Spec.SshKeySecret.PubKeySecretName + " in SshKeySecret") + // } // Checking Gi Responsefile if oracleRestart.Spec.ConfigParams.GridResponseFile.ConfigMapName != "" { @@ -1161,7 +1189,7 @@ func (r *OracleRestartReconciler) setDefaults(oracleRestart *oraclerestartdb.Ora } if oracleRestart.Spec.ConfigParams.CrsAsmDiskDgRedundancy == "" { - oracleRestart.Spec.ConfigParams.CrsAsmDiskDgRedundancy = "external" + oracleRestart.Spec.ConfigParams.CrsAsmDiskDgRedundancy = "EXTERNAL" } } @@ -1911,10 +1939,17 @@ func (r *OracleRestartReconciler) generateConfigMap(instance *oraclerestartdb.Or } } - if instance.Spec.SshKeySecret.Name != " " { - //SecretMap check is done in ValidateSpex - data = append(data, "SSH_PRIVATE_KEY="+instance.Spec.SshKeySecret.KeyMountLocation+"/"+instance.Spec.SshKeySecret.PrivKeySecretName) - data = append(data, "SSH_PUBLIC_KEY="+instance.Spec.SshKeySecret.KeyMountLocation+"/"+instance.Spec.SshKeySecret.PubKeySecretName) + // Check for nil SshKeySecret and ensure Name is not empty/whitespace + if instance.Spec.SshKeySecret != nil && strings.TrimSpace(instance.Spec.SshKeySecret.Name) != "" { + if instance.Spec.SshKeySecret.KeyMountLocation != "" && instance.Spec.SshKeySecret.PrivKeySecretName != "" { + data = append(data, "SSH_PRIVATE_KEY="+ + instance.Spec.SshKeySecret.KeyMountLocation+"/"+instance.Spec.SshKeySecret.PrivKeySecretName) + } + // PubKeySecretName may be optional; only append if present + if instance.Spec.SshKeySecret.KeyMountLocation != "" && instance.Spec.SshKeySecret.PubKeySecretName != "" { + data = append(data, "SSH_PUBLIC_KEY="+ + instance.Spec.SshKeySecret.KeyMountLocation+"/"+instance.Spec.SshKeySecret.PubKeySecretName) + } } if instance.Spec.DbSecret != nil { @@ -2153,7 +2188,7 @@ func (r *OracleRestartReconciler) generateConfigMap(instance *oraclerestartdb.Or } if instance.Spec.ConfigParams.CrsAsmDiskDgRedundancy != "" { - data = append(data, "CRS_ASMDG_REDUNDANCY="+"redundancy="+instance.Spec.ConfigParams.CrsAsmDiskDgRedundancy) + data = append(data, "CRS_ASMDG_REDUNDANCY="+instance.Spec.ConfigParams.CrsAsmDiskDgRedundancy) } } @@ -2610,9 +2645,6 @@ func (r *OracleRestartReconciler) createOrReplaceSfs( Namespace: oracleRestart.Namespace, }, found) - jsn, _ := json.Marshal(dep) - oraclerestartcommon.LogMessages("DEBUG", string(jsn), nil, &oracleRestart, r.Log) - if err != nil && apierrors.IsNotFound(err) { // CREATE r.updateOracleRestartInstStatus(&oracleRestart, ctx, req, oracleRestart.Spec.InstDetails, diff --git a/oracle-database-operator.yaml b/oracle-database-operator.yaml index 97ebd5af..6c8ccf72 100644 --- a/oracle-database-operator.yaml +++ b/oracle-database-operator.yaml @@ -11277,8 +11277,6 @@ spec: type: string pubKeySecretName: type: string - required: - - name type: object swDgStorageClass: type: string @@ -11997,8 +11995,6 @@ spec: type: string pubKeySecretName: type: string - required: - - name type: object state: type: string @@ -14882,32 +14878,6 @@ rules: - secrets/status verbs: - get -- apiGroups: - - "" - resources: - - configmaps/status - - daemonsets/status - - deployments/status - - services/status - - statefulsets/status - verbs: - - get - - patch - - update -- apiGroups: - - "" - resources: - - persistentvolumes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - secrets/status - verbs: - - get - apiGroups: - '''''' resources: @@ -15377,6 +15347,7 @@ webhooks: sideEffects: None - admissionReviewVersions: - v1 + - v1beta1 clientConfig: service: name: oracle-database-operator-webhook-service @@ -15732,6 +15703,7 @@ webhooks: sideEffects: None - admissionReviewVersions: - v1 + - v1beta1 clientConfig: service: name: oracle-database-operator-webhook-service