Update Readme, converter helper script can now reads straight from http

This commit is contained in:
Yann Hamon 2020-10-17 17:21:33 +02:00
parent 5ada0b67e5
commit 07883b8bb4
2 changed files with 16 additions and 1 deletions

View file

@ -118,6 +118,16 @@ in a local folder - for example schemas. Then we specify this folder as an addit
$ ./bin/kubeconform -registry kubernetesjsonschema.dev -registry 'schemas/{{ .ResourceKind }}{{ .KindSuffix }}.json' fixtures/custom-resource.yaml
```
### Generating a JSON schema from an OpenAPI file
Kubeconform uses JSON schemas to validate Kubernetes resources. For Custom Resource, the CustomResourceDefinition
first needs to be converted to JSON Schema. A script is provided to convert these CustomResourceDefinitions
to JSON schema. Here is an example how to use it:
```
$ ./cmd/openapi2jsonschema/main.py https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/config/crd/bases/sagemaker.aws.amazon.com_trainingjobs.yaml > fixtures/registry/trainingjob-sagemaker-v1.json
```
### Credits
* @garethr for the [Kubeval](https://github.com/instrumenta/kubeval) and

View file

@ -4,6 +4,7 @@
import yaml
import json
import sys
import urllib.request
def iteritems(d):
if hasattr(dict, "iteritems"):
@ -90,7 +91,11 @@ if len(sys.argv) == 0:
print("missing file")
exit(1)
with open(sys.argv[1]) as f:
if sys.argv[1].startswith("http"):
f = urllib.request.urlopen(sys.argv[1])
else:
f = open(sys.argv[1])
with f:
y = yaml.load(f, Loader=yaml.SafeLoader)
schema = y["spec"]["validation"]["openAPIV3Schema"]
schema = additional_properties(schema)