@@ -31,6 +31,17 @@ function scaffold_test_project {
31
31
rm -rf $testdata_dir /$project /*
32
32
pushd $testdata_dir /$project
33
33
34
+ # Define the sed command based on the OS
35
+ if [[ " $OSTYPE " == " darwin" * ]]; then
36
+ # macOS sed syntax
37
+ sed_storage_version=" sed -i '' '43i\\
38
+ // +kubebuilder:storageversion\\
39
+ // +kubebuilder:conversion:hub'"
40
+ else
41
+ # Linux sed syntax
42
+ sed_storage_version=" sed -i '43i // +kubebuilder:storageversion\n// +kubebuilder:conversion:hub'"
43
+ fi
44
+
34
45
header_text " Generating project ${project} with flags: ${init_flags} "
35
46
go mod init sigs.k8s.io/kubebuilder/testdata/$project # our repo autodetection will traverse up to the kb module if we don't do this
36
47
header_text " Initializing project ..."
@@ -40,9 +51,16 @@ function scaffold_test_project {
40
51
header_text ' Creating APIs ...'
41
52
$kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false
42
53
$kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false --force
43
- $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation
54
+ $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation --make=false
55
+
56
+ # Create API to test conversion from v1 to v2
44
57
$kb create api --group crew --version v1 --kind FirstMate --controller=true --resource=true --make=false
45
- $kb create webhook --group crew --version v1 --kind FirstMate --conversion
58
+ $kb create api --group crew --version v2 --kind FirstMate --controller=false --resource=true --make=false
59
+ $kb create webhook --group crew --version v1 --kind FirstMate --conversion --make=false
60
+ # TODO: Remove it when we have the hub and spoke scaffolded by Kubebuilder
61
+ # Apply the sed command based on project type
62
+ eval " $sed_storage_version api/v1/firstmate_types.go"
63
+
46
64
$kb create api --group crew --version v1 --kind Admiral --plural=admirales --controller=true --resource=true --namespaced=false --make=false
47
65
$kb create webhook --group crew --version v1 --kind Admiral --plural=admirales --defaulting
48
66
# Controller for External types
@@ -59,14 +77,13 @@ function scaffold_test_project {
59
77
60
78
header_text ' Creating APIs ...'
61
79
$kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false
62
- $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation
80
+ $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation --make=false
63
81
64
82
$kb create api --group ship --version v1beta1 --kind Frigate --controller=true --resource=true --make=false
65
- $kb create webhook --group ship --version v1beta1 --kind Frigate --conversion
66
83
$kb create api --group ship --version v1 --kind Destroyer --controller=true --resource=true --namespaced=false --make=false
67
- $kb create webhook --group ship --version v1 --kind Destroyer --defaulting
84
+ $kb create webhook --group ship --version v1 --kind Destroyer --defaulting --make=false
68
85
$kb create api --group ship --version v2alpha1 --kind Cruiser --controller=true --resource=true --namespaced=false --make=false
69
- $kb create webhook --group ship --version v2alpha1 --kind Cruiser --programmatic-validation
86
+ $kb create webhook --group ship --version v2alpha1 --kind Cruiser --programmatic-validation --make=false
70
87
71
88
$kb create api --group sea-creatures --version v1beta1 --kind Kraken --controller=true --resource=true --make=false
72
89
$kb create api --group sea-creatures --version v1beta2 --kind Leviathan --controller=true --resource=true --make=false
@@ -80,15 +97,30 @@ function scaffold_test_project {
80
97
# Webhook for External types
81
98
$kb create webhook --group " cert-manager" --version v1 --kind Issuer --defaulting --external-api-path=github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1 --external-api-domain=io
82
99
# Webhook for Core type
83
- $kb create webhook --group core --version v1 --kind Pod --programmatic-validation
100
+ $kb create webhook --group core --version v1 --kind Pod --programmatic-validation --make=false
84
101
fi
85
102
86
103
if [[ $project =~ multigroup ]] || [[ $project =~ with-plugins ]] ; then
87
104
header_text ' With Optional Plugins ...'
88
105
header_text ' Creating APIs with deploy-image plugin ...'
89
106
$kb create api --group example.com --version v1alpha1 --kind Memcached --image=memcached:1.6.26-alpine3.19 --image-container-command=" memcached,--memory-limit=64,-o,modern,-v" --image-container-port=" 11211" --run-as-user=" 1001" --plugins=" deploy-image/v1-alpha" --make=false
90
107
$kb create api --group example.com --version v1alpha1 --kind Busybox --image=busybox:1.36.1 --plugins=" deploy-image/v1-alpha" --make=false
91
- $kb create webhook --group example.com --version v1alpha1 --kind Memcached --programmatic-validation
108
+ # Create only validation webhook for Memcached
109
+ $kb create webhook --group example.com --version v1alpha1 --kind Memcached --programmatic-validation --make=false
110
+ # Create API to check webhook --conversion from v1 to v2
111
+ $kb create api --group example.com --version v1 --kind Wordpress --controller=true --resource=true --make=false
112
+ $kb create api --group example.com --version v2 --kind Wordpress --controller=false --resource=true --make=false
113
+ $kb create webhook --group example.com --version v1 --kind Wordpress --conversion --make=false
114
+
115
+ # TODO: Remove it when we have the hub and spoke scaffolded by Kubebuilder
116
+ # Apply the sed command based on project type
117
+ if [[ $project =~ multigroup ]]; then
118
+ eval " $sed_storage_version api/example.com/v1/wordpress_types.go"
119
+ fi
120
+ if [[ $project =~ with-plugins ]]; then
121
+ eval " $sed_storage_version api/v1/wordpress_types.go"
122
+ fi
123
+
92
124
header_text ' Editing project with Grafana plugin ...'
93
125
$kb edit --plugins=grafana.kubebuilder.io/v1-alpha
94
126
fi
0 commit comments