From d72263d1566564ed3b7d126beb822790cea247fb Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Wed, 28 Feb 2018 13:22:50 -0800 Subject: [PATCH 1/3] pkg/generator: add config.yaml generator in gen_config.go --- pkg/generator/gen_config.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pkg/generator/gen_config.go diff --git a/pkg/generator/gen_config.go b/pkg/generator/gen_config.go new file mode 100644 index 0000000000..d66b2296ad --- /dev/null +++ b/pkg/generator/gen_config.go @@ -0,0 +1,31 @@ +package generator + +import ( + "io" + + yaml "gopkg.in/yaml.v2" +) + +type Config struct { + // APIVersion is the kubernetes apiVersion that has the format of $GROUP_NAME/$VERSION. + APIVersion string `yaml:"apiVersion"` + // Kind is the kubernetes resource kind. + Kind string `yaml:"kind"` + // ProjectName is name of the new operator application + // and is also the name of the base directory. + ProjectName string `yaml:"projectName"` +} + +func renderConfigFile(w io.Writer, apiVersion, kind, projectName string) error { + o, err := yaml.Marshal(&Config{ + APIVersion: apiVersion, + Kind: kind, + ProjectName: projectName, + }) + if err != nil { + return err + } + + _, err = w.Write(o) + return err +} From 92070582c01617d0ddd1f14146a40bbb84a72868 Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Wed, 28 Feb 2018 13:23:17 -0800 Subject: [PATCH 2/3] pkg/generator: add TestGenConfig in generator_test.go --- pkg/generator/generator_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/generator/generator_test.go b/pkg/generator/generator_test.go index 96a606c897..3fd29516d4 100644 --- a/pkg/generator/generator_test.go +++ b/pkg/generator/generator_test.go @@ -274,3 +274,18 @@ func TestGenGopkg(t *testing.T) { t.Errorf("want %v, got %v", gopkgLockTmpl, buf.String()) } } + +const configExp = `apiVersion: app.example.com/v1alpha1 +kind: AppService +projectName: app-operator +` + +func TestGenConfig(t *testing.T) { + buf := &bytes.Buffer{} + if err := renderConfigFile(buf, "app.example.com/v1alpha1", "AppService", "app-operator"); err != nil { + t.Error(err) + } + if configExp != buf.String() { + t.Errorf("want %v, got %v", configExp, buf.String()) + } +} From cb6d1766c27923f70e55fe35ef75325474a61012 Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Wed, 28 Feb 2018 13:23:44 -0800 Subject: [PATCH 3/3] pkg/generator: fold renderConfigFile into renderConfig() --- pkg/generator/generator.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index e14d471267..c95d6cb7da 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -36,6 +36,7 @@ const ( updateGenerated = "update-generated.sh" gopkgtoml = "Gopkg.toml" gopkglock = "Gopkg.lock" + config = "config.yaml" ) type Generator struct { @@ -125,11 +126,19 @@ func renderCmdFiles(cmdProjectDir, repoPath string) error { } func (g *Generator) renderConfig() error { - if err := os.MkdirAll(filepath.Join(g.projectName, configDir), defaultDirFileMode); err != nil { + cp := filepath.Join(g.projectName, configDir) + if err := os.MkdirAll(cp, defaultDirFileMode); err != nil { return err } - // TODO render files. - return nil + return renderConfigFiles(cp, g.apiVersion, g.kind, g.projectName) +} + +func renderConfigFiles(configDir, apiVersion, kind, projectName string) error { + buf := &bytes.Buffer{} + if err := renderConfigFile(buf, apiVersion, kind, projectName); err != nil { + return err + } + return ioutil.WriteFile(filepath.Join(configDir, config), buf.Bytes(), defaultFileMode) } func (g *Generator) renderDeploy() error {