Skip to content

Commit ce42706

Browse files
Merge pull request #3102 from camilamacedo86/fix-kust
🐛 (kustomize/v2-alpha): use marker to track samples and do not create tracks for core types
2 parents cc703b2 + e615d6a commit ce42706

File tree

6 files changed

+65
-71
lines changed

6 files changed

+65
-71
lines changed

pkg/plugins/common/kustomize/v2-alpha/scaffolds/api.go

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ package scaffolds
1818

1919
import (
2020
"fmt"
21-
"strings"
22-
2321
"sigs.k8s.io/kubebuilder/v3/pkg/config"
2422
"sigs.k8s.io/kubebuilder/v3/pkg/machinery"
2523
"sigs.k8s.io/kubebuilder/v3/pkg/model/resource"
@@ -69,23 +67,10 @@ func (s *apiScaffolder) Scaffold() error {
6967
machinery.WithResource(&s.resource),
7068
)
7169

72-
rs, err := s.config.GetResources()
73-
if err != nil {
74-
return err
75-
}
76-
77-
crdManifests := []string{}
78-
for _, r := range rs {
79-
crdManifests = append(crdManifests, s.generateManifestsPath(r))
80-
}
81-
82-
crdManifests = append(crdManifests, s.generateManifestsPath(s.resource))
83-
8470
// Keep track of these values before the update
8571
if s.resource.HasAPI() {
8672
if err := scaffold.Execute(
8773
&samples.CRDSample{Force: s.force},
88-
&samples.Kustomization{CRDManifests: crdManifests},
8974
&rbac.CRDEditorRole{},
9075
&rbac.CRDViewerRole{},
9176
&patches.EnableWebhookPatch{},
@@ -95,12 +80,14 @@ func (s *apiScaffolder) Scaffold() error {
9580
); err != nil {
9681
return fmt.Errorf("error scaffolding kustomize API manifests: %v", err)
9782
}
83+
84+
// If the gvk is non-empty
85+
if s.resource.Group != "" || s.resource.Version != "" || s.resource.Kind != "" {
86+
if err := scaffold.Execute(&samples.Kustomization{}); err != nil {
87+
return fmt.Errorf("error scaffolding manifests: %v", err)
88+
}
89+
}
9890
}
9991

10092
return nil
10193
}
102-
103-
func (s *apiScaffolder) generateManifestsPath(r resource.Resource) string {
104-
// nolint: lll
105-
return strings.ToLower(r.GVK.Group) + "_" + strings.ToLower(r.GVK.Version) + "_" + strings.ToLower(r.GVK.Kind) + ".yaml"
106-
}

pkg/plugins/common/kustomize/v2-alpha/scaffolds/internal/templates/config/samples/kustomization.go

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,54 +17,58 @@ limitations under the License.
1717
package samples
1818

1919
import (
20-
"bytes"
2120
"fmt"
2221
"path/filepath"
23-
"text/template"
24-
2522
"sigs.k8s.io/kubebuilder/v3/pkg/machinery"
2623
)
2724

28-
var _ machinery.Template = &Kustomization{}
25+
var (
26+
_ machinery.Template = &Kustomization{}
27+
_ machinery.Inserter = &Kustomization{}
28+
)
2929

30-
// Kustomization scaffolds a file that defines the kustomization scheme for the prometheus folder
30+
// Kustomization scaffolds a kustomization.yaml for the manifests overlay folder.
3131
type Kustomization struct {
3232
machinery.TemplateMixin
33-
34-
CRDManifests []string
33+
machinery.ResourceMixin
3534
}
3635

37-
// SetTemplateDefaults implements file.Template
36+
// SetTemplateDefaults implements machinery.Template
3837
func (f *Kustomization) SetTemplateDefaults() error {
3938
if f.Path == "" {
4039
f.Path = filepath.Join("config", "samples", "kustomization.yaml")
4140
}
42-
43-
defaultTemplate, err := f.createTemplate()
44-
if err != nil {
45-
return err
46-
}
47-
48-
f.TemplateBody = defaultTemplate
49-
50-
f.IfExistsAction = machinery.OverwriteFile
41+
f.TemplateBody = fmt.Sprintf(kustomizationTemplate, machinery.NewMarkerFor(f.Path, samplesMarker))
5142

5243
return nil
5344
}
5445

55-
func (f *Kustomization) createTemplate() (string, error) {
56-
t := template.Must(template.New("customResourcesConfig").Parse(kustomizationTemplate))
46+
const (
47+
samplesMarker = "manifestskustomizesamples"
48+
)
5749

58-
outputTmpl := &bytes.Buffer{}
59-
if err := t.Execute(outputTmpl, f.CRDManifests); err != nil {
60-
return "", fmt.Errorf("error when generating sample kustomization manifest: %w", err)
61-
}
50+
// GetMarkers implements file.Inserter
51+
func (f *Kustomization) GetMarkers() []machinery.Marker {
52+
return []machinery.Marker{machinery.NewMarkerFor(f.Path, samplesMarker)}
53+
}
6254

63-
return outputTmpl.String(), nil
55+
const samplesCodeFragment = `- %s
56+
`
6457

58+
// makeCRFileName returns a Custom Resource example file name in the same format
59+
// as kubebuilder's CreateAPI plugin for a gvk.
60+
func (f Kustomization) makeCRFileName() string {
61+
return f.Resource.Replacer().Replace("%[group]_%[version]_%[kind].yaml")
62+
}
63+
64+
// GetCodeFragments implements file.Inserter
65+
func (f *Kustomization) GetCodeFragments() machinery.CodeFragmentsMap {
66+
return machinery.CodeFragmentsMap{
67+
machinery.NewMarkerFor(f.Path, samplesMarker): []string{fmt.Sprintf(samplesCodeFragment, f.makeCRFileName())},
68+
}
6569
}
6670

67-
const kustomizationTemplate = `---
68-
resources:{{ range $i ,$e := . }}
69-
- {{ . }}{{end}}
71+
const kustomizationTemplate = `## Append samples of your project ##
72+
resources:
73+
%s
7074
`
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
---
1+
## Append samples of your project ##
22
resources:
3-
- crew_v1_captain.yaml
4-
- crew_v1_firstmate.yaml
5-
- crew_v1_admiral.yaml
3+
- crew_v1_captain.yaml
4+
- crew_v1_firstmate.yaml
5+
- crew_v1_admiral.yaml
6+
#+kubebuilder:scaffold:manifestskustomizesamples
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
---
1+
## Append samples of your project ##
22
resources:
3-
- crew_v1_captain.yaml
4-
- crew_v1_firstmate.yaml
5-
- crew_v1_admiral.yaml
3+
- crew_v1_captain.yaml
4+
- crew_v1_firstmate.yaml
5+
- crew_v1_admiral.yaml
6+
#+kubebuilder:scaffold:manifestskustomizesamples
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
---
1+
## Append samples of your project ##
22
resources:
3-
- crew_v1_captain.yaml
4-
- ship_v1beta1_frigate.yaml
5-
- ship_v1_destroyer.yaml
6-
- ship_v2alpha1_cruiser.yaml
7-
- sea-creatures_v1beta1_kraken.yaml
8-
- sea-creatures_v1beta2_leviathan.yaml
9-
- foo.policy_v1_healthcheckpolicy.yaml
10-
- apps_v1_deployment.yaml
11-
- foo_v1_bar.yaml
12-
- fiz_v1_bar.yaml
13-
- _v1_lakers.yaml
3+
- crew_v1_captain.yaml
4+
- ship_v1beta1_frigate.yaml
5+
- ship_v1_destroyer.yaml
6+
- ship_v2alpha1_cruiser.yaml
7+
- sea-creatures_v1beta1_kraken.yaml
8+
- sea-creatures_v1beta2_leviathan.yaml
9+
- foo.policy_v1_healthcheckpolicy.yaml
10+
- foo_v1_bar.yaml
11+
- fiz_v1_bar.yaml
12+
- _v1_lakers.yaml
13+
#+kubebuilder:scaffold:manifestskustomizesamples
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
---
1+
## Append samples of your project ##
22
resources:
3-
- crew_v1_captain.yaml
4-
- crew_v1_firstmate.yaml
5-
- crew_v1_admiral.yaml
3+
- crew_v1_captain.yaml
4+
- crew_v1_firstmate.yaml
5+
- crew_v1_admiral.yaml
6+
#+kubebuilder:scaffold:manifestskustomizesamples

0 commit comments

Comments
 (0)