Skip to content

Commit

Permalink
Add code to generate openapi specs
Browse files Browse the repository at this point in the history
Some of the modern Kubernetes clients use clients generated from a
swagger.json

kubernetes-client/javascript uses kubernetes-client/gen which uses
OpenApiTools/openapi-generator and kubernetes/kubernetes/api/openapi-spec/swagger.json

There are open/closed/rotten/ignored issues all over the place about
making these easier to use with CRDs.

Wrongly closed issue on kubernetes-client/javascript: kubernetes-client/javascript#341
Open issue on kubernetes-client/gen: kubernetes-client/gen#121

It seems like kubernetes/kube-openapi is one of the repos working on
solving the main part of this problem, generating the Go code to make
it easy to generate a swagger.json

I found the following Argo code via the following issue:

kubernetes/kube-openapi#13

https://github.com/argoproj/argo/blob/master/hack/gen-openapi-spec/main.go
https://github.com/argoproj/argo/blob/master/pkg/apis/workflow/v1alpha1/openapi_generated.go#L14:6
https://github.com/kubernetes/kube-openapi/blob/master/cmd/openapi-gen/openapi-gen.go

So I'm working on adding similar stuff to Shipper.

gen-openapi-spec uses the generated openapi_generated.go module that is
generated via the openapi-gen command.

The following commit adds the code to generate openapi_generated.go

Signed-off-by: William Stewart <zoidbergwill@gmail.com>
  • Loading branch information
zoidyzoidzoid committed Dec 4, 2019
1 parent 6f11dcf commit 95d39c3
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
26 changes: 26 additions & 0 deletions hack/update-openapigen.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash

set -o errexit
set -o nounset
set -o pipefail

# PROJECT_ROOT=$(cd $(dirname "$0")/.. ; pwd)
# CODEGEN_PKG=${PROJECT_ROOT}/vendor/k8s.io/kube-openapi
# VERSION="v1alpha1"
#
# go run ${CODEGEN_PKG}/cmd/openapi-gen/openapi-gen.go \
# --go-header-file ${PROJECT_ROOT}/hack/custom-boilerplate.go.txt \
# --input-dirs github.com/bookingcom/shipper/pkg/apis/workflow/${VERSION} \
# --output-package github.com/argoproj/argo/pkg/apis/workflow/${VERSION} \
# --report-filename pkg/apis/api-rules/violation_exceptions.list \
# $@
# PROJECT_ROOT=$(cd $(dirname "$0")/.. ; pwd)
# CODEGEN_PKG=${PROJECT_ROOT}/vendor/k8s.io/kube-openapi
VERSION="v1alpha1"

go run $GOPATH/src/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go \
--input-dirs github.com/bookingcom/shipper/pkg/apis/shipper/${VERSION} \
--output-package github.com/bookingcom/shipper/pkg/apis/shipper/${VERSION} \
--report-filename pkg/apis/api-rules/violation_exceptions.list
$@

32 changes: 32 additions & 0 deletions pkg/apis/api-rules/violation_exceptions.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ApplicationList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ApplicationStatus,Conditions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ApplicationStatus,History
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,CapacityTargetList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,CapacityTargetSpec,Clusters
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,CapacityTargetStatus,Clusters
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterCapacityReport,Breakdown
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterCapacityReportBreakdown,Containers
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterCapacityReportContainerBreakdown,States
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterCapacityStatus,Conditions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterCapacityStatus,Reports
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterCapacityStatus,SadPods
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterInstallationStatus,Conditions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterRequirements,Capabilities
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterRequirements,Regions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterSpec,Capabilities
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ClusterTrafficStatus,Conditions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,InstallationTargetList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,InstallationTargetSpec,Clusters
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,InstallationTargetStatus,Clusters
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,PodStatus,Containers
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,PodStatus,InitContainers
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ReleaseList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ReleaseStatus,Conditions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,ReleaseStrategyStatus,Conditions
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,RolloutBlockList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,RolloutStrategy,Steps
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,TrafficTargetList,Items
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,TrafficTargetSpec,Clusters
API rule violation: list_type_missing,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,TrafficTargetStatus,Clusters
API rule violation: names_match,github.com/bookingcom/shipper/pkg/apis/shipper/v1alpha1,Chart,RepoURL
1 change: 1 addition & 0 deletions pkg/apis/shipper/v1alpha1/doc.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// +k8s:deepcopy-gen=package,register
// +k8s:openapi-gen=true

// Package v1alpha1 is the v1alpha1 version of the API.
// +groupName=shipper.booking.com
Expand Down

0 comments on commit 95d39c3

Please sign in to comment.