Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: feat: Add schema validation to CRDs #624

Closed
wants to merge 2 commits into from

Conversation

tumido
Copy link
Contributor

@tumido tumido commented Apr 27, 2020

I've tried to implement OpenAPI spec for CRDs using controller-gen, but it seems that the field validation is not fully/properly implemented. Not sure how else this problem can be approached. Feel free to dismiss this PR if you don't like this approach...

  • Added new dependency (controller-gen)
  • Added hack/update-crd.sh script

I'm getting these errors:

Sensor:

home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/common/s3.go:32:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:209:2: encountered struct field "Duration" without JSON tag in type "Backoff"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:214:2: encountered struct field "Factor" without JSON tag in type "Backoff"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:218:2: encountered struct field "Jitter" without JSON tag in type "Backoff"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:224:2: encountered struct field "Steps" without JSON tag in type "Backoff"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:229:2: encountered struct field "Cap" without JSON tag in type "Backoff"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:256:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:211:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:131:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:315:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:318:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:789:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:333:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:346:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:357:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:369:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:417:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:422:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:493:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:496:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:436:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:455:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:470:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:473:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:505:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:539:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:544:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:269:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:631:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:134:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:198:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1/types.go:145:2: ListType must be either "map", "set" or "atomic"
Error: not all generators ran successfully
run `controller-gen crd:crdVersions=v1 paths=github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1 output:stdout -w` to see all available markers, or `controller-gen crd:crdVersions=v1 paths=github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1 output:stdout -h` for usage
exit status 1

Gateway:

/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/gateway/v1alpha1/types.go:83:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/gateway/v1alpha1/types.go:87:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/gateway/v1alpha1/types.go:72:2: must apply listType to an array
Error: not all generators ran successfully
run `controller-gen crd:crdVersions=v1 paths=github.com/argoproj/argo-events/pkg/apis/gateway/v1alpha1 output:stdout -w` to see all available markers, or `controller-gen crd:crdVersions=v1 paths=github.com/argoproj/argo-events/pkg/apis/gateway/v1alpha1 output:stdout -h` for usage
exit status 1

EventSource:

/home/tcoufal/.go/src/github.com/argoproj/argo-events/common/retry.go:29:11: unsupported type "float64"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/common/retry.go:30:11: unsupported type "float64"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/common/s3.go:32:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1/types.go:110:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1/types.go:342:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1/types.go:408:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1/types.go:456:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1/types.go:503:2: ListType must be either "map", "set" or "atomic"
/home/tcoufal/.go/src/github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1/types.go:552:2: ListType must be either "map", "set" or "atomic"
Error: not all generators ran successfully
run `controller-gen crd:crdVersions=v1 paths=github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1 output:stdout -w` to see all available markers, or `controller-gen crd:crdVersions=v1 paths=github.com/argoproj/argo-events/pkg/apis/eventsources/v1alpha1 output:stdout -h` for usage
exit status 1

Help welcomed.

@yoichiwo7
Copy link

@tumido
Hi.
You'll need to fix the CRD type files but it may not be easy. (Especially when you need to change the existing CRD related field types)

@VaibhavPage
Copy link
Contributor

Closing PR as we won't be adding any validations to CRD anytime soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants