diff --git a/cmd/kubebuilder/create/controller/controller.go b/cmd/kubebuilder/create/controller/controller.go index 8b9664b11b..628f2adf0c 100644 --- a/cmd/kubebuilder/create/controller/controller.go +++ b/cmd/kubebuilder/create/controller/controller.go @@ -35,7 +35,7 @@ type controllerTemplateArgs struct { Repo string PluralizedKind string NonNamespacedKind bool - CoreType bool + CoreType bool } func doController(dir string, args controllerTemplateArgs) bool { diff --git a/cmd/kubebuilder/create/controller/controllertest.go b/cmd/kubebuilder/create/controller/controllertest.go index 0ad2eaefbb..8f09c65065 100644 --- a/cmd/kubebuilder/create/controller/controllertest.go +++ b/cmd/kubebuilder/create/controller/controllertest.go @@ -52,14 +52,9 @@ import ( "github.com/kubernetes-sigs/kubebuilder/pkg/test" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - {{if .CoreType}} + {{if not .CoreType}}"{{ .Repo }}/pkg/client/clientset/versioned"{{end}} "{{ .Repo }}/pkg/inject" "{{ .Repo }}/pkg/inject/args" - {{else}} - "{{ .Repo }}/pkg/client/clientset/versioned" - "{{ .Repo }}/pkg/inject" - "{{ .Repo }}/pkg/inject/args" - {{end}} ) var ( diff --git a/cmd/kubebuilder/create/controller/run.go b/cmd/kubebuilder/create/controller/run.go index 72da8ae86f..07f6032605 100644 --- a/cmd/kubebuilder/create/controller/run.go +++ b/cmd/kubebuilder/create/controller/run.go @@ -29,51 +29,54 @@ import ( "strings" ) -var nonNamespacedKind bool -var generate bool -var CoreType bool +type ControllerArguments struct { + nonNamespacedKind bool + generate bool + CoreType bool +} + +func AddCreateController(cmd *cobra.Command) { + var c ControllerArguments -var createControllerCmd = &cobra.Command{ - Use: "controller", - Short: "Creates a controller for an API group, version and resource", - Long: `Creates a controller for an API group, version and resource. + createControllerCmd := &cobra.Command{ + Use: "controller", + Short: "Creates a controller for an API group, version and resource", + Long: `Creates a controller for an API group, version and resource. Also creates: - controller reconcile function - tests for the controller `, - Example: `# Create a controller for resource "Bee" in the "insect" group with version "v1beta" + Example: `# Create a controller for resource "Bee" in the "insect" group with version "v1beta" kubebuilder create controller --group insect --version v1beta1 --kind Bee # Create a controller for k8s core type "Deployment" in the "apps" group with version "v1beta2" kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type `, - Run: RunCreateController, -} - -func AddCreateController(cmd *cobra.Command) { + Run: c.RunCreateController, + } createutil.RegisterResourceFlags(createControllerCmd) - createControllerCmd.Flags().BoolVar(&nonNamespacedKind, "non-namespaced", false, "if set, the API kind will be non namespaced") - createControllerCmd.Flags().BoolVar(&generate, "generate", true, "generate controller code") - createControllerCmd.Flags().BoolVar(&CoreType, "core-type", false, "generate controller for core type") + createControllerCmd.Flags().BoolVar(&c.nonNamespacedKind, "non-namespaced", false, "if set, the API kind will be non namespaced") + createControllerCmd.Flags().BoolVar(&c.generate, "generate", true, "generate controller code") + createControllerCmd.Flags().BoolVar(&c.CoreType, "core-type", false, "generate controller for core type") cmd.AddCommand(createControllerCmd) } -func RunCreateController(cmd *cobra.Command, args []string) { +func (c *ControllerArguments) RunCreateController(cmd *cobra.Command, args []string) { if _, err := os.Stat("pkg"); err != nil { log.Fatalf("could not find 'pkg' directory. must run kubebuilder init before creating controller") } util.GetDomain() - createutil.ValidateResourceFlags() + c.Validate() cr := util.GetCopyright(createutil.Copyright) fmt.Printf("Creating controller ...\n") - CreateController(cr) - if generate { + c.CreateController(cr) + if c.generate { fmt.Printf("Generating code for new controller... " + - "Regenerate after editing controller files by running `kubebuilder generate clean; kubebuilder generate`.\n") + "Regenerate after editing controller files by running `kubebuilder generate clean; kubebuilder generate`.\n") generatecmd.RunGenerate(cmd, args) } fmt.Printf("Next: Run the controller and create an instance with:\n" + @@ -82,7 +85,11 @@ func RunCreateController(cmd *cobra.Command, args []string) { "$ kubectl apply -f hack/sample/" + strings.ToLower(createutil.KindName) + ".yaml\n") } -func CreateController(boilerplate string) { +func (c *ControllerArguments) Validate() { + createutil.ValidateResourceFlags() +} + +func (c *ControllerArguments) CreateController(boilerplate string) { args := controllerTemplateArgs{ boilerplate, util.Domain, @@ -92,8 +99,8 @@ func CreateController(boilerplate string) { createutil.ResourceName, util.Repo, inflect.NewDefaultRuleset().Pluralize(createutil.KindName), - nonNamespacedKind, - CoreType, + c.nonNamespacedKind, + c.CoreType, } dir, err := os.Getwd() @@ -103,4 +110,4 @@ func CreateController(boilerplate string) { fmt.Printf("Edit your controller function...\n") doController(dir, args) doControllerTest(dir, args) -} \ No newline at end of file +} diff --git a/cmd/kubebuilder/create/resource/run.go b/cmd/kubebuilder/create/resource/run.go index 106c260416..4882bee610 100644 --- a/cmd/kubebuilder/create/resource/run.go +++ b/cmd/kubebuilder/create/resource/run.go @@ -75,7 +75,6 @@ func RunCreateResource(cmd *cobra.Command, args []string) { cr := util.GetCopyright(createutil.Copyright) - fmt.Printf("Creating API files for you to edit...\n") createGroup(cr) createVersion(cr) @@ -115,8 +114,8 @@ func createResource(boilerplate string) { if controller { fmt.Printf("Creating controller ...\n") - controllerct.CoreType = false - controllerct.CreateController(boilerplate) + c := controllerct.ControllerArguments{CoreType: false} + c.CreateController(boilerplate) } fmt.Printf("Edit your sample resource instance...\n") diff --git a/test.sh b/test.sh index cb6446a4ab..9edc6fa398 100755 --- a/test.sh +++ b/test.sh @@ -522,7 +522,7 @@ function generate_coretype_controller { kubebuilder init repo --domain sample.kubernetes.io --controller-only kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type - # Update the controller test + # Fill the required fileds of Deployment object so that the Deployment instance can be successfully created update_controller_test } @@ -534,7 +534,7 @@ function generate_resource_with_coretype_controller { kubebuilder create resource --group ant --version v1beta1 --kind Ant kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type - # Update the controller test + # Fill the required fileds of Deployment object so that the Deployment instance can be successfully created update_controller_test }