Merge pull request #65 from janetkuo/chart-out

Allow --chart and --out to be specified together
This commit is contained in:
Janet Kuo 2016-07-26 09:38:57 -07:00 committed by GitHub
commit 3e1ae61376
2 changed files with 61 additions and 56 deletions

View File

@ -735,7 +735,7 @@ func loadBundlesFile(file string) KomposeObject {
}
// Load compose file into KomposeObject
func loadComposeFile(file string, c *cli.Context) KomposeObject {
func loadComposeFile(file string) KomposeObject {
komposeObject := KomposeObject{
ServiceConfigs: make(map[string]ServiceConfig),
}
@ -813,7 +813,6 @@ type convertOptions struct {
replicas int
inputFile string
outFile string
f *os.File
}
// Convert komposeObject to K8S controllers
@ -825,6 +824,10 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
mReplicaSets := make(map[string][]byte)
// OpenShift DeploymentConfigs
mDeploymentConfigs := make(map[string][]byte)
f := createOutFile(opt.outFile)
defer f.Close()
var svcnames []string
for name, service := range komposeObject.ServiceConfigs {
@ -951,41 +954,41 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
for k, v := range mServices {
if v != nil {
print(k, "svc", v, opt.toStdout, opt.generateYaml, opt.f)
print(k, "svc", v, opt.toStdout, opt.generateYaml, f)
}
}
// If --out or --stdout is set, the validation should already prevent multiple controllers being generated
if opt.createD {
for k, v := range mDeployments {
print(k, "deployment", v, opt.toStdout, opt.generateYaml, opt.f)
print(k, "deployment", v, opt.toStdout, opt.generateYaml, f)
}
}
if opt.createDS {
for k, v := range mDaemonSets {
print(k, "daemonset", v, opt.toStdout, opt.generateYaml, opt.f)
print(k, "daemonset", v, opt.toStdout, opt.generateYaml, f)
}
}
if opt.createRS {
for k, v := range mReplicaSets {
print(k, "replicaset", v, opt.toStdout, opt.generateYaml, opt.f)
print(k, "replicaset", v, opt.toStdout, opt.generateYaml, f)
}
}
if opt.createRC {
for k, v := range mReplicationControllers {
print(k, "rc", v, opt.toStdout, opt.generateYaml, opt.f)
print(k, "rc", v, opt.toStdout, opt.generateYaml, f)
}
}
if opt.f != nil {
if f != nil {
fmt.Fprintf(os.Stdout, "file %q created\n", opt.outFile)
}
if opt.createChart {
err := generateHelm(opt.inputFile, svcnames, opt.generateYaml, opt.createD, opt.createDS, opt.createRS, opt.createRC)
err := generateHelm(opt.inputFile, svcnames, opt.generateYaml, opt.createD, opt.createDS, opt.createRS, opt.createRC, opt.outFile)
if err != nil {
logrus.Fatalf("Failed to create Chart data: %s\n", err)
}
@ -993,7 +996,7 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
if opt.createDeploymentConfig {
for k, v := range mDeploymentConfigs {
print(k, "deploymentconfig", v, opt.toStdout, opt.generateYaml, opt.f)
print(k, "deploymentconfig", v, opt.toStdout, opt.generateYaml, f)
}
}
}
@ -1054,12 +1057,6 @@ func Convert(c *cli.Context) {
logrus.Fatalf("Error: compose file and dab file cannot be specified at the same time")
}
var f *os.File
if !createChart {
f = createOutFile(outFile)
defer f.Close()
}
komposeObject := KomposeObject{}
file := inputFile
@ -1067,7 +1064,7 @@ func Convert(c *cli.Context) {
komposeObject = loadBundlesFile(dabFile)
file = dabFile
} else {
komposeObject = loadComposeFile(inputFile, c)
komposeObject = loadComposeFile(inputFile)
}
// Convert komposeObject to K8S controllers
@ -1083,7 +1080,6 @@ func Convert(c *cli.Context) {
replicas: replicas,
inputFile: file,
outFile: outFile,
f: f,
}
komposeConvert(komposeObject, opt)
}

View File

@ -32,7 +32,7 @@ import (
/**
* Generate Helm Chart configuration
*/
func generateHelm(filename string, svcnames []string, generateYaml, createD, createDS, createRS, createRC bool) error {
func generateHelm(filename string, svcnames []string, generateYaml, createD, createDS, createRS, createRC bool, outFile string) error {
type ChartDetails struct {
Name string
}
@ -90,7 +90,11 @@ home:
}
/* Copy all related json/yaml files into the newly created manifests directory */
// TODO: support copying the file specified by --out?
if len(outFile) > 0 {
if err = cpFileToChart(manifestDir, outFile); err != nil {
return err
}
} else {
for _, svcname := range svcnames {
extension := ".json"
if generateYaml {
@ -127,17 +131,22 @@ home:
return err
}
}
}
fmt.Fprintf(os.Stdout, "chart created in %q\n", "."+string(os.PathSeparator)+dirName+string(os.PathSeparator))
return nil
}
func cpToChart(manifestDir, svcname, trailing, extension string) error {
infile, err := ioutil.ReadFile(svcname + "-" + trailing + extension)
return cpFileToChart(manifestDir, svcname+"-"+trailing+extension)
}
func cpFileToChart(manifestDir, filename string) error {
infile, err := ioutil.ReadFile(filename)
if err != nil {
logrus.Infof("Error reading %s: %s\n", svcname+"-"+trailing+extension, err)
logrus.Infof("Error reading %s: %s\n", filename, err)
return err
}
return ioutil.WriteFile(manifestDir+string(os.PathSeparator)+svcname+"-"+trailing+extension, infile, 0644)
return ioutil.WriteFile(manifestDir+string(os.PathSeparator)+filename, infile, 0644)
}