Skip to content

Commit

Permalink
Address comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Liujingfang1 committed May 14, 2018
1 parent c545cba commit fe2d0f9
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 36 deletions.
2 changes: 1 addition & 1 deletion cmd/kubebuilder/create/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type controllerTemplateArgs struct {
Repo string
PluralizedKind string
NonNamespacedKind bool
CoreType bool
CoreType bool
}

func doController(dir string, args controllerTemplateArgs) bool {
Expand Down
7 changes: 1 addition & 6 deletions cmd/kubebuilder/create/controller/controllertest.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down
55 changes: 31 additions & 24 deletions cmd/kubebuilder/create/controller/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -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" +
Expand All @@ -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,
Expand All @@ -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()
Expand All @@ -103,4 +110,4 @@ func CreateController(boilerplate string) {
fmt.Printf("Edit your controller function...\n")
doController(dir, args)
doControllerTest(dir, args)
}
}
5 changes: 2 additions & 3 deletions cmd/kubebuilder/create/resource/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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")
Expand Down
4 changes: 2 additions & 2 deletions test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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
}

Expand Down

0 comments on commit fe2d0f9

Please sign in to comment.