From 9f6bc6d460b15dd391060d84eb84648698c8b687 Mon Sep 17 00:00:00 2001 From: Sunil Arora Date: Mon, 16 Jul 2018 13:38:55 -0700 Subject: [PATCH] updated the controller-tools dependency --- cmd/Gopkg.lock | 2 +- .../cmd/controller-scaffold/cmd/project.go | 11 +++++++++- .../pkg/scaffold/controller/controller.go | 13 ++++++++++-- .../pkg/scaffold/project/kustomize.go | 2 +- .../scaffold/project/kustomize_image_patch.go | 2 +- .../pkg/scaffold/project/makefile.go | 20 ++++++++++++++----- .../firstmate/firstmate_controller.go | 4 ++-- .../controller/frigate/frigate_controller.go | 2 +- .../controller/kraken/kraken_controller.go | 2 +- 9 files changed, 43 insertions(+), 15 deletions(-) diff --git a/cmd/Gopkg.lock b/cmd/Gopkg.lock index 4f19b4cc0f..20695fde65 100644 --- a/cmd/Gopkg.lock +++ b/cmd/Gopkg.lock @@ -204,7 +204,7 @@ "pkg/scaffold/resource", "pkg/util" ] - revision = "fd1040b6fb6d39bafa032f973ad9e485922ee85d" + revision = "cf6c0f0d997b161c6e4f54a4fe597e2c74f0d566" [solve-meta] analyzer-name = "dep" diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/cmd/controller-scaffold/cmd/project.go b/cmd/vendor/sigs.k8s.io/controller-tools/cmd/controller-scaffold/cmd/project.go index 55e0480d6f..010b54f575 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/cmd/controller-scaffold/cmd/project.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/cmd/controller-scaffold/cmd/project.go @@ -36,6 +36,7 @@ var mrg *manager.Cmd var dkr *manager.Dockerfile var dep bool var depFlag *flag.Flag +var mkFile *project.Makefile // default controller manager image name var imgName = "controller:latest" @@ -86,7 +87,7 @@ controller-scaffold project --domain k8s.io --license apache2 --owner "The Kuber err = s.Execute(input.Options{ProjectPath: p.Path, BoilerplatePath: b.Path}, gopkg, mrg, - &project.Makefile{Image: imgName}, + mkFile, dkr, &manager.APIs{}, &manager.Controller{}, @@ -136,6 +137,7 @@ func init() { gopkg = &project.GopkgToml{} mrg = &manager.Cmd{} dkr = &manager.Dockerfile{} + mkFile = MakefileForFlags(ProjectCmd.Flags()) } // ProjectForFlags registers flags for Project fields and returns the Project @@ -158,3 +160,10 @@ func BoilerplateForFlags(f *flag.FlagSet) *project.Boilerplate { "Owner to add to the copyright") return b } + +// MakefileForFlags registers flags for Makefile fields and returns the Makefile +func MakefileForFlags(f *flag.FlagSet) *project.Makefile { + m := &project.Makefile{Image: imgName} + f.StringVar(&m.ControllerToolsPath, "controller-tools-path", "", "path to controller tools repo") + return m +} diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/controller/controller.go b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/controller/controller.go index 1d1bc22062..a97bf370d0 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/controller/controller.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/controller/controller.go @@ -21,6 +21,7 @@ import ( "path/filepath" "strings" + "github.com/markbates/inflect" "sigs.k8s.io/controller-tools/pkg/scaffold/input" "sigs.k8s.io/controller-tools/pkg/scaffold/resource" ) @@ -35,6 +36,9 @@ type Controller struct { // ResourcePackage is the package of the Resource ResourcePackage string + // Plural is the plural lowercase of kind + Plural string + // Is the Group + "." + Domain for the Resource GroupDomain string } @@ -68,6 +72,11 @@ func (a *Controller) GetInput() (input.Input, error) { a.GroupDomain = a.Resource.Group + "." + a.Domain } + if a.Plural == "" { + rs := inflect.NewDefaultRuleset() + a.Plural = rs.Pluralize(strings.ToLower(a.Resource.Kind)) + } + if a.Path == "" { a.Path = filepath.Join("pkg", "controller", strings.ToLower(a.Resource.Kind), @@ -174,9 +183,9 @@ type Reconcile{{ .Resource.Kind }} struct { // a Deployment as an example {{ if .Resource.CreateExampleReconcileBody -}} // Automatically generate RBAC rules to allow the Controller to read and write Deployments -// +rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete {{ end -}} -// +kubebuilder:rbac:groups={{.Resource.Group}},resources={{ lower .Resource.Kind }}s,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups={{.GroupDomain}},resources={{ .Plural }},verbs=get;list;watch;create;update;patch;delete func (r *Reconcile{{ .Resource.Kind }}) Reconcile(request reconcile.Request) (reconcile.Result, error) { // Fetch the {{ .Resource.Kind }} instance instance := &{{ .Resource.Group}}{{ .Resource.Version }}.{{ .Resource.Kind }}{} diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize.go b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize.go index 847f3102d1..4ffbba5c26 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize.go @@ -75,5 +75,5 @@ resources: - ../manager/*.yaml patches: -#- manager_image_patch.yaml +- manager_image_patch.yaml ` diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize_image_patch.go b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize_image_patch.go index b03066e429..9962bc23ec 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize_image_patch.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/kustomize_image_patch.go @@ -55,7 +55,7 @@ spec: template: spec: containers: - # Change the value of image field below to your controller image URL + # Change the value of image field below to your controller image URL - image: {{ .ImageURL }} name: manager ` diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/makefile.go b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/makefile.go index f96e60c46a..274a5cefe8 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/makefile.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/pkg/scaffold/project/makefile.go @@ -27,6 +27,9 @@ type Makefile struct { input.Input // Image is controller manager image name Image string + + // path for controller-tools pkg + ControllerToolsPath string } // GetInput implements input.File @@ -34,12 +37,18 @@ func (c *Makefile) GetInput() (input.Input, error) { if c.Path == "" { c.Path = "Makefile" } + if c.ControllerToolsPath == "" { + c.ControllerToolsPath = "vendor/sigs.k8s.io/controller-tools" + } c.TemplateBody = makefileTemplate c.Input.IfExistsAction = input.Error return c.Input, nil } var makefileTemplate = ` +# Image URL to use all building/pushing image targets +IMG ?= controller:latest + all: test manager # Run tests @@ -60,13 +69,12 @@ install: manifests # Deploy controller in the configured Kubernetes cluster in ~/.kube/config deploy: manifests - kubectl apply -f config/rbac kubectl apply -f config/crds - kubectl apply -f config/manager + kustomize build config/default | kubectl apply -f - # Generate manifests e.g. CRD, RBAC etc. manifests: - go build -o /tmp/controller-gen sigs.k8s.io/controller-tools/cmd/controller-gen && /tmp/controller-gen all + go run {{ .ControllerToolsPath }}/cmd/controller-gen/main.go all # Run go fmt against code fmt: @@ -82,9 +90,11 @@ generate: # Build the docker image docker-build: test - docker build . -t {{ .Image }} + docker build . -t ${IMG} + @echo "updating kustomize image patch file for manager resource" + sed -i 's@image: .*@image: '"${IMG}"'@' ./config/default/manager_image_patch.yaml # Push the docker image docker-push: - docker push {{ .Image }} + docker push ${IMG} ` diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/firstmate/firstmate_controller.go b/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/firstmate/firstmate_controller.go index 0e6b10c046..288e9ccc8a 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/firstmate/firstmate_controller.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/firstmate/firstmate_controller.go @@ -94,8 +94,8 @@ type ReconcileFirstMate struct { // TODO(user): Modify this Reconcile function to implement your Controller logic. The scaffolding writes // a Deployment as an example // Automatically generate RBAC rules to allow the Controller to read and write Deployments -// +rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=crew,resources=firstmates,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=crew.k8s.io,resources=firstmates,verbs=get;list;watch;create;update;patch;delete func (r *ReconcileFirstMate) Reconcile(request reconcile.Request) (reconcile.Result, error) { // Fetch the FirstMate instance instance := &crewv1.FirstMate{} diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/frigate/frigate_controller.go b/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/frigate/frigate_controller.go index 83d4595bb5..5dcdf563e6 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/frigate/frigate_controller.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/frigate/frigate_controller.go @@ -87,7 +87,7 @@ type ReconcileFrigate struct { // and what is in the Frigate.Spec // TODO(user): Modify this Reconcile function to implement your Controller logic. The scaffolding writes // a Deployment as an example -// +kubebuilder:rbac:groups=ship,resources=frigates,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=ship.k8s.io,resources=frigates,verbs=get;list;watch;create;update;patch;delete func (r *ReconcileFrigate) Reconcile(request reconcile.Request) (reconcile.Result, error) { // Fetch the Frigate instance instance := &shipv1beta1.Frigate{} diff --git a/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/kraken/kraken_controller.go b/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/kraken/kraken_controller.go index 9002dfda46..e913e66d04 100644 --- a/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/kraken/kraken_controller.go +++ b/cmd/vendor/sigs.k8s.io/controller-tools/test/pkg/controller/kraken/kraken_controller.go @@ -87,7 +87,7 @@ type ReconcileKraken struct { // and what is in the Kraken.Spec // TODO(user): Modify this Reconcile function to implement your Controller logic. The scaffolding writes // a Deployment as an example -// +kubebuilder:rbac:groups=creatures,resources=krakens,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=creatures.k8s.io,resources=krakens,verbs=get;list;watch;create;update;patch;delete func (r *ReconcileKraken) Reconcile(request reconcile.Request) (reconcile.Result, error) { // Fetch the Kraken instance instance := &creaturesv2alpha1.Kraken{}