forked from LaconicNetwork/kompose
Merge pull request #65 from janetkuo/chart-out
Allow --chart and --out to be specified together
This commit is contained in:
commit
3e1ae61376
@ -735,7 +735,7 @@ func loadBundlesFile(file string) KomposeObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load compose file into KomposeObject
|
// Load compose file into KomposeObject
|
||||||
func loadComposeFile(file string, c *cli.Context) KomposeObject {
|
func loadComposeFile(file string) KomposeObject {
|
||||||
komposeObject := KomposeObject{
|
komposeObject := KomposeObject{
|
||||||
ServiceConfigs: make(map[string]ServiceConfig),
|
ServiceConfigs: make(map[string]ServiceConfig),
|
||||||
}
|
}
|
||||||
@ -813,7 +813,6 @@ type convertOptions struct {
|
|||||||
replicas int
|
replicas int
|
||||||
inputFile string
|
inputFile string
|
||||||
outFile string
|
outFile string
|
||||||
f *os.File
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert komposeObject to K8S controllers
|
// Convert komposeObject to K8S controllers
|
||||||
@ -825,6 +824,10 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
|
|||||||
mReplicaSets := make(map[string][]byte)
|
mReplicaSets := make(map[string][]byte)
|
||||||
// OpenShift DeploymentConfigs
|
// OpenShift DeploymentConfigs
|
||||||
mDeploymentConfigs := make(map[string][]byte)
|
mDeploymentConfigs := make(map[string][]byte)
|
||||||
|
|
||||||
|
f := createOutFile(opt.outFile)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
var svcnames []string
|
var svcnames []string
|
||||||
|
|
||||||
for name, service := range komposeObject.ServiceConfigs {
|
for name, service := range komposeObject.ServiceConfigs {
|
||||||
@ -951,41 +954,41 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
|
|||||||
|
|
||||||
for k, v := range mServices {
|
for k, v := range mServices {
|
||||||
if v != nil {
|
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 --out or --stdout is set, the validation should already prevent multiple controllers being generated
|
||||||
if opt.createD {
|
if opt.createD {
|
||||||
for k, v := range mDeployments {
|
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 {
|
if opt.createDS {
|
||||||
for k, v := range mDaemonSets {
|
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 {
|
if opt.createRS {
|
||||||
for k, v := range mReplicaSets {
|
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 {
|
if opt.createRC {
|
||||||
for k, v := range mReplicationControllers {
|
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)
|
fmt.Fprintf(os.Stdout, "file %q created\n", opt.outFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
if opt.createChart {
|
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 {
|
if err != nil {
|
||||||
logrus.Fatalf("Failed to create Chart data: %s\n", err)
|
logrus.Fatalf("Failed to create Chart data: %s\n", err)
|
||||||
}
|
}
|
||||||
@ -993,7 +996,7 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
|
|||||||
|
|
||||||
if opt.createDeploymentConfig {
|
if opt.createDeploymentConfig {
|
||||||
for k, v := range mDeploymentConfigs {
|
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")
|
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{}
|
komposeObject := KomposeObject{}
|
||||||
file := inputFile
|
file := inputFile
|
||||||
|
|
||||||
@ -1067,7 +1064,7 @@ func Convert(c *cli.Context) {
|
|||||||
komposeObject = loadBundlesFile(dabFile)
|
komposeObject = loadBundlesFile(dabFile)
|
||||||
file = dabFile
|
file = dabFile
|
||||||
} else {
|
} else {
|
||||||
komposeObject = loadComposeFile(inputFile, c)
|
komposeObject = loadComposeFile(inputFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert komposeObject to K8S controllers
|
// Convert komposeObject to K8S controllers
|
||||||
@ -1083,7 +1080,6 @@ func Convert(c *cli.Context) {
|
|||||||
replicas: replicas,
|
replicas: replicas,
|
||||||
inputFile: file,
|
inputFile: file,
|
||||||
outFile: outFile,
|
outFile: outFile,
|
||||||
f: f,
|
|
||||||
}
|
}
|
||||||
komposeConvert(komposeObject, opt)
|
komposeConvert(komposeObject, opt)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import (
|
|||||||
/**
|
/**
|
||||||
* Generate Helm Chart configuration
|
* 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 {
|
type ChartDetails struct {
|
||||||
Name string
|
Name string
|
||||||
}
|
}
|
||||||
@ -90,42 +90,47 @@ home:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Copy all related json/yaml files into the newly created manifests directory */
|
/* Copy all related json/yaml files into the newly created manifests directory */
|
||||||
// TODO: support copying the file specified by --out?
|
if len(outFile) > 0 {
|
||||||
for _, svcname := range svcnames {
|
if err = cpFileToChart(manifestDir, outFile); err != nil {
|
||||||
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
|
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))
|
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 {
|
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 {
|
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 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