Skip to content

Commit 432a727

Browse files
authored
Merge pull request #3104 from camilamacedo86/fix-deploy
🐛 (deployimage/v1-alpha): fix error to scaffold go/v4-alpha projects
2 parents 3044376 + 24846f3 commit 432a727

File tree

4 files changed

+51
-19
lines changed

4 files changed

+51
-19
lines changed

pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/api.go

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ import (
2929
"sigs.k8s.io/kubebuilder/v3/pkg/plugin/util"
3030
"sigs.k8s.io/kubebuilder/v3/pkg/plugins"
3131
kustomizev1scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v1/scaffolds"
32+
kustomizev2scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v2-alpha/scaffolds"
3233
"sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/api"
3334
"sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/config/samples"
3435
"sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/controllers"
3536
golangv3scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v3/scaffolds"
37+
golangv4scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v4/scaffolds"
3638
)
3739

3840
var _ plugins.Scaffolder = &apiScaffolder{}
@@ -75,7 +77,15 @@ func (s *apiScaffolder) InjectFS(fs machinery.Filesystem) {
7577
func (s *apiScaffolder) Scaffold() error {
7678
fmt.Println("Writing scaffold for you to edit...")
7779

78-
if err := s.scaffoldCreateAPIFromPlugins(); err != nil {
80+
//nolint:staticcheck
81+
isGoV3 := false
82+
for _, pluginKey := range s.config.GetPluginChain() {
83+
if strings.Contains(pluginKey, "go.kubebuilder.io/v3") {
84+
isGoV3 = true
85+
}
86+
}
87+
88+
if err := s.scaffoldCreateAPIFromPlugins(isGoV3); err != nil {
7989
return err
8090
}
8191

@@ -157,12 +167,12 @@ func (s *apiScaffolder) addEnvVarIntoManager() error {
157167

158168
// scaffoldCreateAPIFromPlugins will reuse the code from the kustomize and base golang
159169
// plugins to do the default scaffolds which an API is created
160-
func (s *apiScaffolder) scaffoldCreateAPIFromPlugins() error {
161-
if err := s.scaffoldCreateAPIFromGolang(); err != nil {
170+
func (s *apiScaffolder) scaffoldCreateAPIFromPlugins(isLegacyLayout bool) error {
171+
if err := s.scaffoldCreateAPIFromGolang(isLegacyLayout); err != nil {
162172
return fmt.Errorf("error scaffolding golang files for the new API: %v", err)
163173
}
164174

165-
if err := s.scaffoldCreateAPIFromKustomize(); err != nil {
175+
if err := s.scaffoldCreateAPIFromKustomize(isLegacyLayout); err != nil {
166176
return fmt.Errorf("error scaffolding kustomize manifests for the new API: %v", err)
167177
}
168178
return nil
@@ -266,32 +276,49 @@ func (s *apiScaffolder) updateControllerCode(controller controllers.Controller)
266276
return nil
267277
}
268278

269-
func (s *apiScaffolder) scaffoldCreateAPIFromKustomize() error {
279+
func (s *apiScaffolder) scaffoldCreateAPIFromKustomize(isGoV3 bool) error {
270280
// Now we need call the kustomize/v1 plugin to do its scaffolds when we create a new API
271281
// todo: when we have the go/v4-alpha plugin we will also need to check what is the plugin used
272282
// in the Project layout to know if we should use kustomize/v1 OR kustomize/v2-alpha
273-
kustomizeV1Scaffolder := kustomizev1scaffolds.NewAPIScaffolder(
274-
s.config,
275-
s.resource,
276-
true,
277-
)
278-
kustomizeV1Scaffolder.InjectFS(s.fs)
283+
var kustomizeScaffolder plugins.Scaffolder
284+
285+
if isGoV3 {
286+
kustomizeScaffolder = kustomizev1scaffolds.NewAPIScaffolder(
287+
s.config,
288+
s.resource,
289+
true,
290+
)
291+
} else {
292+
kustomizeScaffolder = kustomizev2scaffolds.NewAPIScaffolder(
293+
s.config,
294+
s.resource,
295+
true,
296+
)
297+
}
279298

280-
if err := kustomizeV1Scaffolder.Scaffold(); err != nil {
299+
kustomizeScaffolder.InjectFS(s.fs)
300+
301+
if err := kustomizeScaffolder.Scaffold(); err != nil {
281302
return fmt.Errorf("error scaffolding kustomize files for the APIs: %v", err)
282303
}
304+
283305
return nil
284306
}
285307

286-
func (s *apiScaffolder) scaffoldCreateAPIFromGolang() error {
308+
func (s *apiScaffolder) scaffoldCreateAPIFromGolang(isGoV3 bool) error {
287309
// Now we need call the kustomize/v1 plugin to do its scaffolds when we create a new API
288310
// todo: when we have the go/v4-alpha plugin we will also need to check what is the plugin used
289311
// in the Project layout to know if we should use kustomize/v1 OR kustomize/v2-alpha
290-
291-
golangV3Scaffolder := golangv3scaffolds.NewAPIScaffolder(s.config,
312+
if isGoV3 {
313+
golangV3Scaffolder := golangv3scaffolds.NewAPIScaffolder(s.config,
314+
s.resource, true)
315+
golangV3Scaffolder.InjectFS(s.fs)
316+
return golangV3Scaffolder.Scaffold()
317+
}
318+
golangV4Scaffolder := golangv4scaffolds.NewAPIScaffolder(s.config,
292319
s.resource, true)
293-
golangV3Scaffolder.InjectFS(s.fs)
294-
return golangV3Scaffolder.Scaffold()
320+
golangV4Scaffolder.InjectFS(s.fs)
321+
return golangV4Scaffolder.Scaffold()
295322
}
296323

297324
const containerTemplate = `Containers: []corev1.Container{{

testdata/project-v4-with-deploy-image/config/crd/patches/cainjection_in_busyboxes.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME)
6+
cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
77
name: busyboxes.example.com.testproject.org

testdata/project-v4-with-deploy-image/config/crd/patches/cainjection_in_memcacheds.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME)
6+
cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
77
name: memcacheds.example.com.testproject.org
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Append samples of your project ##
2+
resources:
3+
- example.com_v1alpha1_memcached.yaml
4+
- example.com_v1alpha1_busybox.yaml
5+
#+kubebuilder:scaffold:manifestskustomizesamples

0 commit comments

Comments
 (0)