koki / short

Manageable Kubernetes manifests through a composable, reusable syntax
https://docs.koki.io/short
Apache License 2.0
122 stars 14 forks source link

extraneous fields errors for several yml files #202

Open jayunit100 opened 6 years ago

jayunit100 commented 6 years ago

Latest release, I'm seeing

➜  install git:(installer-prometh) ✗ cat openshift/openshift-perceiver.yaml| ./short_linux_amd64 --verbose-errors  -
Error: converting stdin: extraneous fields (typos?) at paths: $.metadata

This is happening for every yaml file in https://github.com/blackducksoftware/perceptor/constrib/ for example: https://github.com/blackducksoftware/perceptor/blob/master/contrib/install/openshift/openshift-perceiver.yaml

jayunit100 commented 6 years ago

Stateless reproducer:

➜   curl https://raw.githubusercontent.com/blackducksoftware/perceptor/master/contrib/install/openshift/openshift-perceiver.yaml | ./short_linux_amd64 -

Results in :

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1719  100  1719    0     0   9504      0 --:--:-- --:--:-- --:--:--  9550
Use flag '--verbose-errors' for more detailed error info.
Error: converting stdin: extraneous fields (typos?) at paths: $.metadata
wlan0 commented 6 years ago

I believe this is because the input is a List Resource. Will test it and get back to you shortly.

wlan0 commented 6 years ago

Hmmm, Looking into this more - looks like List type (untyped) in Kubernetes does not have ObjectMeta field. (https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/internalversion/types.go#L64)

metadata support for List types are limited.

If you're using a typed List such as PodList, metadata is of type ListMeta, which doesn't take in name. It only takes in

resourceVersion
continue

Here's the PodList type definition - https://github.com/kubernetes/api/blob/master/core/v1/types.go#L3115

Here's the ListMeta type definition - https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/types.go#L60:6

This leads to my next question, does the resource definition work on OpenShift? or on any other Kubernetes cluster? (without going through the short conversion)

jayunit100 commented 6 years ago

ahhh yeah ok !