From d363b0ffac9a9cb4cb3dc0a5bcbb2b5016dc2569 Mon Sep 17 00:00:00 2001 From: Chun Lin Yang Date: Wed, 11 Dec 2019 16:00:17 +0800 Subject: [PATCH 1/2] Validate version must be the first item of versions Signed-off-by: Chun Lin Yang --- operatorcourier/validate.py | 10 ++++++++++ .../verification/crdversions.invalid.bundle.yaml | 3 +++ .../bundles/verification/crdversions.valid.bundle.yaml | 3 +++ 3 files changed, 16 insertions(+) diff --git a/operatorcourier/validate.py b/operatorcourier/validate.py index 2a4a4fa..4450114 100644 --- a/operatorcourier/validate.py +++ b/operatorcourier/validate.py @@ -160,6 +160,16 @@ def _crd_validation(self, bundle): if "version" not in crd['spec']: self._log_error("crd spec.version or spec.versions not defined") valid = False + if "versions" in crd['spec']: + if "version" in crd['spec']: + if "name" in crd['spec']['versions'][0]: + if crd['spec']['version'] != crd['spec']['versions'][0]['name']: + self._log_error("crd spec.version must be the first element in crd spec.versions") + valid = False + else: + if crd['spec']['version'] != crd['spec']['versions'][0]: + self._log_error("crd spec.version must be the first element in crd spec.versions") + valid = False return valid diff --git a/tests/test_files/bundles/verification/crdversions.invalid.bundle.yaml b/tests/test_files/bundles/verification/crdversions.invalid.bundle.yaml index 1512e96..9960149 100644 --- a/tests/test_files/bundles/verification/crdversions.invalid.bundle.yaml +++ b/tests/test_files/bundles/verification/crdversions.invalid.bundle.yaml @@ -340,6 +340,9 @@ data: - registryNamespace type: object version: v1alpha1 + versions: + - v1beta1 + - v1alpha1 packages: | - channels: - currentCSV: marketplace-operator.v0.0.1 diff --git a/tests/test_files/bundles/verification/crdversions.valid.bundle.yaml b/tests/test_files/bundles/verification/crdversions.valid.bundle.yaml index 92f4c7a..72c6624 100644 --- a/tests/test_files/bundles/verification/crdversions.valid.bundle.yaml +++ b/tests/test_files/bundles/verification/crdversions.valid.bundle.yaml @@ -341,6 +341,9 @@ data: - registryNamespace type: object version: v1alpha1 + versions: + - v1alpha1 + - v1beta1 packages: | - channels: - currentCSV: marketplace-operator.v0.0.1 From 079b7f68b3645ecd002aab752982f3ddf8111b0a Mon Sep 17 00:00:00 2001 From: Chun Lin Yang Date: Tue, 17 Dec 2019 10:17:46 +0800 Subject: [PATCH 2/2] Fix linter error --- operatorcourier/validate.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/operatorcourier/validate.py b/operatorcourier/validate.py index 4450114..044fdf9 100644 --- a/operatorcourier/validate.py +++ b/operatorcourier/validate.py @@ -163,12 +163,16 @@ def _crd_validation(self, bundle): if "versions" in crd['spec']: if "version" in crd['spec']: if "name" in crd['spec']['versions'][0]: - if crd['spec']['version'] != crd['spec']['versions'][0]['name']: - self._log_error("crd spec.version must be the first element in crd spec.versions") + if crd['spec']['version'] != \ + crd['spec']['versions'][0]['name']: + self._log_error("crd spec.version must be " + "the first element in crd spec.versions") valid = False else: - if crd['spec']['version'] != crd['spec']['versions'][0]: - self._log_error("crd spec.version must be the first element in crd spec.versions") + if crd['spec']['version'] != \ + crd['spec']['versions'][0]: + self._log_error("crd spec.version must be " + "the first element in crd spec.versions") valid = False return valid