Skip to content
Snippets Groups Projects
Commit 0070a4c6 authored by Vineet Reddy Rajula's avatar Vineet Reddy Rajula
Browse files

Add default to ReleaseSpec if empty

parent 84a9b1c9
No related branches found
No related tags found
1 merge request!107Default for releaseSpec field
Pipeline #3044687 passed
...@@ -60,8 +60,7 @@ type Version struct { ...@@ -60,8 +60,7 @@ type Version struct {
// typically of the format `RELEASE.<timestamp>`. // typically of the format `RELEASE.<timestamp>`.
// CERN Drupal image tags take the form `<version.name>-<version.releaseSpec>`, // CERN Drupal image tags take the form `<version.name>-<version.releaseSpec>`,
// for example `v8.9-1-RELEASE.2021.05.25T16-00-33Z` // for example `v8.9-1-RELEASE.2021.05.25T16-00-33Z`
// +kubebuilder:validation:Required // +optional
// +kubebuilder:validation:MinLength=1
ReleaseSpec string `json:"releaseSpec"` ReleaseSpec string `json:"releaseSpec"`
} }
......
...@@ -27,6 +27,7 @@ spec: ...@@ -27,6 +27,7 @@ spec:
- --nginx-image={{.Values.drupalsiteOperator.nginxImage}} - --nginx-image={{.Values.drupalsiteOperator.nginxImage}}
- --zap-stacktrace-level={{.Values.drupalsiteOperator.logStacktraceLevel}} - --zap-stacktrace-level={{.Values.drupalsiteOperator.logStacktraceLevel}}
- --zap-log-level={{.Values.drupalsiteOperator.logLevel}} - --zap-log-level={{.Values.drupalsiteOperator.logLevel}}
- --default-release-spec={{.Values.drupalsiteOperator.defaultReleaseSpec}}
command: command:
- /manager - /manager
image: {{ .Values.image | quote }} image: {{ .Values.image | quote }}
......
...@@ -22,3 +22,4 @@ drupalsiteOperator: ...@@ -22,3 +22,4 @@ drupalsiteOperator:
logLevel: "3" logLevel: "3"
# Zap Level at and above which stacktraces are captured (one of 'info', 'error') # Zap Level at and above which stacktraces are captured (one of 'info', 'error')
logStacktraceLevel: "error" logStacktraceLevel: "error"
defaultReleaseSpec: "RELEASE-2021.09.13T09-24-02Z"
...@@ -111,11 +111,9 @@ spec: ...@@ -111,11 +111,9 @@ spec:
version, typically of the format `RELEASE.<timestamp>`. CERN version, typically of the format `RELEASE.<timestamp>`. CERN
Drupal image tags take the form `<version.name>-<version.releaseSpec>`, Drupal image tags take the form `<version.name>-<version.releaseSpec>`,
for example `v8.9-1-RELEASE.2021.05.25T16-00-33Z` for example `v8.9-1-RELEASE.2021.05.25T16-00-33Z`
minLength: 1
type: string type: string
required: required:
- name - name
- releaseSpec
type: object type: object
required: required:
- siteUrl - siteUrl
......
...@@ -67,6 +67,8 @@ var ( ...@@ -67,6 +67,8 @@ var (
SMTPHost string SMTPHost string
// VeleroNamespace refers to the namespace of the velero server to create backups // VeleroNamespace refers to the namespace of the velero server to create backups
VeleroNamespace string VeleroNamespace string
// ReleaseSpec refers to the releaseSpec of the drupalSite to be defaulted incase it is empty
DefaultReleaseSpec string
) )
// DrupalSiteReconciler reconciles a DrupalSite object // DrupalSiteReconciler reconciles a DrupalSite object
...@@ -493,6 +495,11 @@ func (r *DrupalSiteReconciler) ensureSpecFinalizer(ctx context.Context, drp *web ...@@ -493,6 +495,11 @@ func (r *DrupalSiteReconciler) ensureSpecFinalizer(ctx context.Context, drp *web
return false, newApplicationError(err, ErrClientK8s) return false, newApplicationError(err, ErrClientK8s)
} }
} }
// Initialize 'spec.version.releaseSpec' if empty
if len(drp.Spec.Version.ReleaseSpec) == 0 {
drp.Spec.Version.ReleaseSpec = DefaultReleaseSpec
update = true || update
}
return update, nil return update, nil
} }
......
...@@ -1136,7 +1136,7 @@ var _ = Describe("DrupalSite controller", func() { ...@@ -1136,7 +1136,7 @@ var _ = Describe("DrupalSite controller", func() {
}) })
Describe("Creating a drupalSite object", func() { Describe("Creating a drupalSite object", func() {
Context("Without 'configuration' field", func() { Context("Without 'configuration' & 'releaseSpec' field", func() {
It("Default values should be used and the site should be created", func() { It("Default values should be used and the site should be created", func() {
key = types.NamespacedName{ key = types.NamespacedName{
Name: Name + "-defaults", Name: Name + "-defaults",
...@@ -1153,8 +1153,7 @@ var _ = Describe("DrupalSite controller", func() { ...@@ -1153,8 +1153,7 @@ var _ = Describe("DrupalSite controller", func() {
}, },
Spec: drupalwebservicesv1alpha1.DrupalSiteSpec{ Spec: drupalwebservicesv1alpha1.DrupalSiteSpec{
Version: drupalwebservicesv1alpha1.Version{ Version: drupalwebservicesv1alpha1.Version{
Name: "v8.9-1", Name: "v8.9-1",
ReleaseSpec: "stable",
}, },
SiteURL: []drupalwebservicesv1alpha1.Url{dummySiteUrl}, SiteURL: []drupalwebservicesv1alpha1.Url{dummySiteUrl},
}, },
...@@ -1190,6 +1189,12 @@ var _ = Describe("DrupalSite controller", func() { ...@@ -1190,6 +1189,12 @@ var _ = Describe("DrupalSite controller", func() {
return string(cr.Spec.Configuration.DiskSize) == "2000Mi" return string(cr.Spec.Configuration.DiskSize) == "2000Mi"
}, timeout, interval).Should(BeTrue()) }, timeout, interval).Should(BeTrue())
By("Expecting the default configuration values to be set")
Eventually(func() bool {
k8sClient.Get(ctx, key, &cr)
return cr.Spec.Version.ReleaseSpec != DefaultReleaseSpec
}, timeout, interval).Should(BeTrue())
trueVar := true trueVar := true
expectedOwnerReference := metav1.OwnerReference{ expectedOwnerReference := metav1.OwnerReference{
APIVersion: "drupal.webservices.cern.ch/v1alpha1", APIVersion: "drupal.webservices.cern.ch/v1alpha1",
...@@ -1332,8 +1337,7 @@ var _ = Describe("DrupalSite controller", func() { ...@@ -1332,8 +1337,7 @@ var _ = Describe("DrupalSite controller", func() {
}, },
Spec: drupalwebservicesv1alpha1.DrupalSiteSpec{ Spec: drupalwebservicesv1alpha1.DrupalSiteSpec{
Version: drupalwebservicesv1alpha1.Version{ Version: drupalwebservicesv1alpha1.Version{
Name: "v8.9-1", Name: "v8.9-1",
ReleaseSpec: "stable",
}, },
Configuration: drupalwebservicesv1alpha1.Configuration{ Configuration: drupalwebservicesv1alpha1.Configuration{
DatabaseClass: drupalwebservicesv1alpha1.DBODStandard, DatabaseClass: drupalwebservicesv1alpha1.DBODStandard,
...@@ -1387,8 +1391,7 @@ var _ = Describe("DrupalSite controller", func() { ...@@ -1387,8 +1391,7 @@ var _ = Describe("DrupalSite controller", func() {
}, },
Spec: drupalwebservicesv1alpha1.DrupalSiteSpec{ Spec: drupalwebservicesv1alpha1.DrupalSiteSpec{
Version: drupalwebservicesv1alpha1.Version{ Version: drupalwebservicesv1alpha1.Version{
Name: "v8.9-1", Name: "v8.9-1",
ReleaseSpec: "stable",
}, },
Configuration: drupalwebservicesv1alpha1.Configuration{ Configuration: drupalwebservicesv1alpha1.Configuration{
QoSClass: "randomval", QoSClass: "randomval",
......
...@@ -78,6 +78,7 @@ var _ = BeforeSuite(func(done Done) { ...@@ -78,6 +78,7 @@ var _ = BeforeSuite(func(done Done) {
VeleroNamespace = "openshift-cern-drupal" VeleroNamespace = "openshift-cern-drupal"
PhpFpmExporterImage = "test-phpfpmexporter" PhpFpmExporterImage = "test-phpfpmexporter"
WebDAVImage = "test-webdav" WebDAVImage = "test-webdav"
DefaultReleaseSpec = "test-spec"
By("bootstrapping test environment") By("bootstrapping test environment")
testEnv = &envtest.Environment{ testEnv = &envtest.Environment{
......
...@@ -77,7 +77,7 @@ func main() { ...@@ -77,7 +77,7 @@ func main() {
flag.StringVar(&controllers.WebDAVImage, "webdav-image", "gitlab-registry.cern.ch/drupal/paas/sabredav/webdav:RELEASE-2021.07.28T17-19-49Z", "The webdav source image name.") flag.StringVar(&controllers.WebDAVImage, "webdav-image", "gitlab-registry.cern.ch/drupal/paas/sabredav/webdav:RELEASE-2021.07.28T17-19-49Z", "The webdav source image name.")
flag.StringVar(&controllers.SMTPHost, "smtp-host", "cernmx.cern.ch", "SMTP host used by Drupal server pods to send emails.") flag.StringVar(&controllers.SMTPHost, "smtp-host", "cernmx.cern.ch", "SMTP host used by Drupal server pods to send emails.")
flag.StringVar(&controllers.VeleroNamespace, "velero-namespace", "openshift-cern-drupal", "The namespace of the Velero server to create backups") flag.StringVar(&controllers.VeleroNamespace, "velero-namespace", "openshift-cern-drupal", "The namespace of the Velero server to create backups")
flag.StringVar(&controllers.DefaultReleaseSpec, "default-release-spec", "RELEASE-2021.09.13T09-24-02Z", "The default releaseSpec value to be passed to the DrupalSites")
opts := zap.Options{ opts := zap.Options{
Development: false, Development: false,
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment