From c489a69a4c9dce916b75a7f7564c6c9cab794b50 Mon Sep 17 00:00:00 2001 From: Maxime Brunet Date: Mon, 12 Jul 2021 16:58:39 -0700 Subject: [PATCH] scripts: Check versions before version CRD versions can have multiple schemas, but they can also share the same. https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#specify-multiple-versions --- scripts/openapi2jsonschema.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/scripts/openapi2jsonschema.py b/scripts/openapi2jsonschema.py index bfaba37..ec97596 100755 --- a/scripts/openapi2jsonschema.py +++ b/scripts/openapi2jsonschema.py @@ -123,16 +123,7 @@ for crdFile in sys.argv[1:]: filename_format = os.getenv("FILENAME_FORMAT", "{kind}_{version}") filename = "" - if "spec" in y and "validation" in y["spec"] and "openAPIV3Schema" in y["spec"]["validation"]: - filename = filename_format.format( - kind=y["spec"]["names"]["kind"], - group=y["spec"]["group"].split(".")[0], - version=y["spec"]["version"], - ).lower() + ".json" - - schema = y["spec"]["validation"]["openAPIV3Schema"] - write_schema_file(schema, filename) - elif "spec" in y and "versions" in y["spec"]: + if "spec" in y and "versions" in y["spec"] and y["spec"]["versions"]: for version in y["spec"]["versions"]: if "schema" in version and "openAPIV3Schema" in version["schema"]: filename = filename_format.format( @@ -143,5 +134,23 @@ for crdFile in sys.argv[1:]: schema = version["schema"]["openAPIV3Schema"] write_schema_file(schema, filename) + elif "validation" in y["spec"] and "openAPIV3Schema" in y["spec"]["validation"]: + filename = filename_format.format( + kind=y["spec"]["names"]["kind"], + group=y["spec"]["group"].split(".")[0], + version=version["name"], + ).lower() + ".json" + + schema = y["spec"]["validation"]["openAPIV3Schema"] + write_schema_file(schema, filename) + elif "spec" in y and "validation" in y["spec"] and "openAPIV3Schema" in y["spec"]["validation"]: + filename = filename_format.format( + kind=y["spec"]["names"]["kind"], + group=y["spec"]["group"].split(".")[0], + version=y["spec"]["version"], + ).lower() + ".json" + + schema = y["spec"]["validation"]["openAPIV3Schema"] + write_schema_file(schema, filename) exit(0)