forked from LaconicNetwork/kompose
Allow --chart and --out to be specified together
This commit is contained in:
parent
569b47f3cd
commit
e41629ba49
@ -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)
|
||||
}
|
||||
|
||||
@ -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,42 +90,47 @@ home:
|
||||
}
|
||||
|
||||
/* Copy all related json/yaml files into the newly created manifests directory */
|
||||
// TODO: support copying the file specified by --out?
|
||||
for _, svcname := range svcnames {
|
||||
extension := ".json"
|
||||
if generateYaml {
|
||||
extension = ".yaml"
|
||||
}
|
||||
if createD {
|
||||
if err = cpToChart(manifestDir, svcname, "deployment", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if createDS {
|
||||
if err = cpToChart(manifestDir, svcname, "daemonset", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if createRC {
|
||||
if err = cpToChart(manifestDir, svcname, "rc", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if createRS {
|
||||
if err = cpToChart(manifestDir, svcname, "replicaset", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
/* The svc file is optional */
|
||||
infile, err := ioutil.ReadFile(svcname + "-svc" + extension)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
err = ioutil.WriteFile(manifestDir+string(os.PathSeparator)+svcname+"-svc"+extension, infile, 0644)
|
||||
if err != nil {
|
||||
if len(outFile) > 0 {
|
||||
if err = cpFileToChart(manifestDir, outFile); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
for _, svcname := range svcnames {
|
||||
extension := ".json"
|
||||
if generateYaml {
|
||||
extension = ".yaml"
|
||||
}
|
||||
if createD {
|
||||
if err = cpToChart(manifestDir, svcname, "deployment", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if createDS {
|
||||
if err = cpToChart(manifestDir, svcname, "daemonset", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if createRC {
|
||||
if err = cpToChart(manifestDir, svcname, "rc", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if createRS {
|
||||
if err = cpToChart(manifestDir, svcname, "replicaset", extension); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
/* The svc file is optional */
|
||||
infile, err := ioutil.ReadFile(svcname + "-svc" + extension)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
err = ioutil.WriteFile(manifestDir+string(os.PathSeparator)+svcname+"-svc"+extension, infile, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprintf(os.Stdout, "chart created in %q\n", "."+string(os.PathSeparator)+dirName+string(os.PathSeparator))
|
||||
@ -133,11 +138,15 @@ home:
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user