Skip to content

Commit 95728a7

Browse files
author
Per Goncalves da Silva
committed
update codegen script
Signed-off-by: Per Goncalves da Silva <[email protected]>
1 parent 813560d commit 95728a7

File tree

3 files changed

+174
-37
lines changed

3 files changed

+174
-37
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ verify-mockgen: mockgen
206206
verify-manifests: manifests
207207
$(MAKE) diff
208208

209-
verify: verify-codegen verify-mockgen verify-manifests
209+
verify: vendor verify-codegen verify-mockgen verify-manifests
210210

211211
# before running release, bump the version in OLM_VERSION and push to master,
212212
# then tag those builds in quay with the version in OLM_VERSION
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDefinitions,Owned
2+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDefinitions,Required
3+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDescription,ActionDescriptor
4+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDescription,Resources
5+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDescription,SpecDescriptors
6+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDescription,StatusDescriptors
7+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ActionDescriptor,XDescriptors
8+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CRDDescription,ActionDescriptor
9+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CRDDescription,Resources
10+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CRDDescription,SpecDescriptors
11+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CRDDescription,StatusDescriptors
12+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CleanupStatus,PendingDeletion
13+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,Icon
14+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,InstallModes
15+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,Keywords
16+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,Links
17+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,Maintainers
18+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,NativeAPIs
19+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,RelatedImages
20+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,Skips
21+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,WebhookDefinitions
22+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionStatus,Conditions
23+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionStatus,RequirementStatus
24+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CustomResourceDefinitions,Owned
25+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,CustomResourceDefinitions,Required
26+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,RequirementStatus,Dependents
27+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,ResourceList,Instances
28+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,SpecDescriptor,XDescriptors
29+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,StatusDescriptor,XDescriptors
30+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,StrategyDeploymentPermissions,Rules
31+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,StrategyDetailsDeployment,ClusterPermissions
32+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,StrategyDetailsDeployment,DeploymentSpecs
33+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,StrategyDetailsDeployment,Permissions
34+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,WebhookDescription,AdmissionReviewVersions
35+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,WebhookDescription,ConversionCRDs
36+
API rule violation: list_type_missing,github.com/operator-framework/api/pkg/operators/v1alpha1,WebhookDescription,Rules
37+
API rule violation: list_type_missing,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,CSVDescription,NativeAPIs
38+
API rule violation: list_type_missing,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,CSVDescription,RelatedImages
39+
API rule violation: list_type_missing,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,PackageChannel,Entries
40+
API rule violation: list_type_missing,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,PackageManifestList,Items
41+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,APIServiceDescription,ActionDescriptor
42+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,ActionDescriptor,XDescriptors
43+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,CRDDescription,ActionDescriptor
44+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,APIServiceDefinitions
45+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,CustomResourceDefinitions
46+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,InstallStrategy
47+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,ClusterServiceVersionSpec,WebhookDefinitions
48+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,Icon,Data
49+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,Icon,MediaType
50+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,NamedInstallStrategy,StrategyName
51+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,NamedInstallStrategy,StrategySpec
52+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,SpecDescriptor,XDescriptors
53+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,StatusDescriptor,XDescriptors
54+
API rule violation: names_match,github.com/operator-framework/api/pkg/operators/v1alpha1,StrategyDetailsDeployment,DeploymentSpecs
55+
API rule violation: names_match,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,CSVDescription,APIServiceDefinitions
56+
API rule violation: names_match,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,CSVDescription,CustomResourceDefinitions
57+
API rule violation: names_match,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,CSVDescription,LongDescription
58+
API rule violation: names_match,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,CSVDescription,NativeAPIs
59+
API rule violation: names_match,github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators/v1,Icon,Base64Data
60+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,APIResourceList,APIResources
61+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,Duration,Duration
62+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,InternalEvent,Object
63+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,InternalEvent,Type
64+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,MicroTime,Time
65+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,StatusCause,Type
66+
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,Time,Time
67+
API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,ContentEncoding
68+
API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,ContentType

scripts/update_codegen.sh

Lines changed: 105 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,43 +14,112 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17+
# This script is based off: https://github.com/kubernetes/code-generator/blob/v0.30.0/examples/hack/update-codegen.sh
18+
# It is used to update the generated code for the OLM API and package-server API.
19+
1720
set -o errexit
1821
set -o nounset
1922
set -o pipefail
2023

21-
SCRIPT_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
22-
CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)}
23-
24-
# create a temporary directory to generate code in and ensure we clean it up on exit
25-
OUTPUT_BASE=$(mktemp -d)
26-
# Hack the script to make it executable from within generate-groups.sh
27-
# Because vendored sources do not include permission bits
28-
chmod u+x "${CODEGEN_PKG}/generate-internal-groups.sh"
29-
trap 'rm -rf "${OUTPUT_BASE}"; chmod u-x "${CODEGEN_PKG}/generate-internal-groups.sh"' ERR EXIT
30-
31-
ORG="github.com/operator-framework"
32-
API_MODULE="${ORG}/api"
33-
MODULE="${ORG}/operator-lifecycle-manager"
34-
35-
# generate the code with:
36-
# --output-base because this script should also be able to run inside the vendor dir of
37-
# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir
38-
# instead of the $GOPATH directly. For normal projects this can be dropped.
39-
bash "${CODEGEN_PKG}/generate-groups.sh" "client,lister,informer" \
40-
"${MODULE}/pkg/api/client" \
41-
"${API_MODULE}/pkg" \
42-
"operators:v1alpha1,v1alpha2,v1,v2" \
43-
--output-base "${OUTPUT_BASE}" \
44-
--go-header-file "${SCRIPT_ROOT}/boilerplate.go.txt"
45-
46-
export OPENAPI_EXTRA_PACKAGES="${API_MODULE}/pkg/operators/v1alpha1,${API_MODULE}/pkg/lib/version"
47-
bash "${CODEGEN_PKG}/generate-internal-groups.sh" all \
48-
"${MODULE}/pkg/package-server/client" \
49-
"${MODULE}/pkg/package-server/apis" \
50-
"${MODULE}/pkg/package-server/apis" \
51-
"operators:v1" \
52-
--output-base "${OUTPUT_BASE}" \
53-
--go-header-file "${SCRIPT_ROOT}/boilerplate.go.txt"
54-
55-
# copy the generated resources
56-
cp -R "${OUTPUT_BASE}/${MODULE}/." "${SCRIPT_ROOT}"
24+
# Setting the SCRIPT_ROOT and attempting to locate the vendored code generator directory.
25+
SCRIPT_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
26+
CODEGEN_PKG=$(cd "${SCRIPT_ROOT}" && ls -d ./vendor/k8s.io/code-generator 2>/dev/null)
27+
28+
# Check if the CODEGEN_PKG has been set and points to a directory, else throw an error.
29+
if [[ -z "$CODEGEN_PKG" || ! -d "$CODEGEN_PKG" ]]; then
30+
echo "Error: Required vendored code generator directory does not exist." >&2
31+
exit 1
32+
fi
33+
34+
# Set verbosity of code-generators
35+
export KUBE_VERBOSE=2
36+
37+
# Set module and boilerplate paths
38+
API_MODULE="github.com/operator-framework/api"
39+
OLM_MODULE="github.com/operator-framework/operator-lifecycle-manager"
40+
BOILERPLATE="$SCRIPT_ROOT/boilerplate.go.txt"
41+
42+
# Use vendored code generators
43+
CLIENT_GEN="go run ${CODEGEN_PKG}/cmd/client-gen"
44+
LISTER_GEN="go run ${CODEGEN_PKG}/cmd/lister-gen"
45+
INFORMER_GEN="go run ${CODEGEN_PKG}/cmd/informer-gen"
46+
47+
# Source the kube_codegen.sh script to generate the OLM API client, listers and informers
48+
source "${CODEGEN_PKG}/kube_codegen.sh"
49+
50+
##################################################
51+
# Generate OLM API client, listers and informers #
52+
##################################################
53+
kube::codegen::gen_client \
54+
--with-watch \
55+
--output-dir "${SCRIPT_ROOT}/pkg/api/client" \
56+
--output-pkg "${OLM_MODULE}/pkg/api/client" \
57+
--boilerplate "${BOILERPLATE}" \
58+
"${SCRIPT_ROOT}/vendor/${API_MODULE}/pkg"
59+
60+
##############################################################
61+
# Generate Package Manager API client, listers and informers #
62+
##############################################################
63+
64+
# NOTE: The kube_codegen.sh script does not seem to support generating clients for the package-server internal API.
65+
# Therefore, we will generate the clients for the package-server API manually.
66+
67+
# When generating the openapi, we can optionally update the known api violation report
68+
# New violations will break the codegen process
69+
REPORT_FILENAME="${SCRIPT_ROOT}/scripts/codegen_violation_exceptions.list"
70+
if [[ "${UPDATE_API_KNOWN_VIOLATIONS:-}" == "true" ]]; then
71+
UPDATE_REPORT="--update-report"
72+
fi
73+
74+
# generate openapi
75+
kube::codegen::gen_openapi \
76+
--output-dir "${SCRIPT_ROOT}/pkg/package-server/client/openapi" \
77+
--output-pkg "${OLM_MODULE}/pkg/package-server/client/openapi" \
78+
--extra-pkgs "${API_MODULE}/pkg/operators/v1alpha1" \
79+
--extra-pkgs "${API_MODULE}/pkg/lib/version" \
80+
--boilerplate "${BOILERPLATE}" \
81+
--report-filename "${REPORT_FILENAME}" \
82+
${UPDATE_REPORT:+"${UPDATE_REPORT}"} \
83+
"${SCRIPT_ROOT}/pkg/package-server/apis" # input
84+
85+
# generate clients
86+
# generate pacakge-server operators/v1 client
87+
${CLIENT_GEN} \
88+
-v "${KUBE_VERBOSE}" \
89+
--go-header-file "${BOILERPLATE}" \
90+
--output-dir "${SCRIPT_ROOT}/pkg/package-server/client/clientset" \
91+
--output-pkg "${OLM_MODULE}/pkg/package-server/client/clientset" \
92+
--clientset-name versioned \
93+
--input-base "${SCRIPT_ROOT}/pkg/package-server/apis" \
94+
--input operators/v1
95+
96+
# generate pacakge-server operators internal client
97+
${CLIENT_GEN} \
98+
-v "${KUBE_VERBOSE}" \
99+
--go-header-file "${BOILERPLATE}" \
100+
--output-dir "${SCRIPT_ROOT}/pkg/package-server/client/clientset" \
101+
--output-pkg "${OLM_MODULE}/pkg/package-server/client/clientset" \
102+
--clientset-name internalversion \
103+
--input-base "${SCRIPT_ROOT}/pkg/package-server/apis" \
104+
--input operators
105+
106+
# generate listers for both api clients
107+
${LISTER_GEN} \
108+
-v "${KUBE_VERBOSE}" \
109+
--go-header-file "${BOILERPLATE}" \
110+
--output-dir "${SCRIPT_ROOT}/pkg/package-server/client/listers" \
111+
--output-pkg "${OLM_MODULE}/pkg/package-server/client/listers" \
112+
"${OLM_MODULE}/pkg/package-server/apis/operators" \
113+
"${OLM_MODULE}/pkg/package-server/apis/operators/v1"
114+
115+
# generate informers for both api clients
116+
${INFORMER_GEN} \
117+
-v "${KUBE_VERBOSE}" \
118+
--go-header-file "${BOILERPLATE}" \
119+
--output-dir "${SCRIPT_ROOT}/pkg/package-server/client/informers" \
120+
--output-pkg "${OLM_MODULE}/pkg/package-server/client/informers" \
121+
--versioned-clientset-package "${OLM_MODULE}/pkg/package-server/client/clientset/versioned" \
122+
--internal-clientset-package "${OLM_MODULE}/pkg/package-server/client/clientset/internalversion" \
123+
--listers-package "${OLM_MODULE}/pkg/package-server/client/listers" \
124+
"${OLM_MODULE}/pkg/package-server/apis/operators" \
125+
"${OLM_MODULE}/pkg/package-server/apis/operators/v1"

0 commit comments

Comments
 (0)