forked from LaconicNetwork/kompose
initial commit, parse dab file into objects
This commit is contained in:
parent
8871baf9be
commit
c49eccf313
@ -27,6 +27,7 @@ import (
|
|||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
|
|
||||||
"github.com/docker/libcompose/project"
|
"github.com/docker/libcompose/project"
|
||||||
|
"github.com/docker/docker/api/client/bundlefile"
|
||||||
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -553,7 +554,7 @@ func transformer(v interface{}, entity string, generateYaml bool) ([]byte, strin
|
|||||||
return data, ""
|
return data, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProjectKuberConvert tranforms docker compose to k8s objects
|
// ProjectKuberConvert tranforms docker compose or dab file to k8s objects
|
||||||
func ProjectKuberConvert(p *project.Project, c *cli.Context) {
|
func ProjectKuberConvert(p *project.Project, c *cli.Context) {
|
||||||
composeFile := c.String("file")
|
composeFile := c.String("file")
|
||||||
outFile := c.String("out")
|
outFile := c.String("out")
|
||||||
@ -563,6 +564,7 @@ func ProjectKuberConvert(p *project.Project, c *cli.Context) {
|
|||||||
createDS := c.BoolT("daemonset")
|
createDS := c.BoolT("daemonset")
|
||||||
createRS := c.BoolT("replicaset")
|
createRS := c.BoolT("replicaset")
|
||||||
createChart := c.BoolT("chart")
|
createChart := c.BoolT("chart")
|
||||||
|
fromBundles := c.BoolT("from-bundles")
|
||||||
singleOutput := len(outFile) != 0 || toStdout
|
singleOutput := len(outFile) != 0 || toStdout
|
||||||
|
|
||||||
// Validate the flags
|
// Validate the flags
|
||||||
@ -588,21 +590,39 @@ func ProjectKuberConvert(p *project.Project, c *cli.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p = project.NewProject(&project.Context{
|
|
||||||
ProjectName: "kube",
|
|
||||||
ComposeFile: composeFile,
|
|
||||||
})
|
|
||||||
|
|
||||||
if err := p.Parse(); err != nil {
|
|
||||||
logrus.Fatalf("Failed to parse the compose project from %s: %v", composeFile, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var f *os.File
|
var f *os.File
|
||||||
if !createChart {
|
if !createChart {
|
||||||
f = createOutFile(outFile)
|
f = createOutFile(outFile)
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if fromBundles {
|
||||||
|
p = project.NewProject(&project.Context{
|
||||||
|
ProjectName: "kube",
|
||||||
|
})
|
||||||
|
reader := strings.NewReader(composeFile)
|
||||||
|
bundle, err := bundlefile.LoadFile(reader)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatalf("Error: failed to load bundles file", err)
|
||||||
|
}
|
||||||
|
for name, service := range bundle.Services {
|
||||||
|
var serviceConfig *project.ServiceConfig
|
||||||
|
serviceConfig.Image = service.Image
|
||||||
|
// TODO: mapping other fields
|
||||||
|
serviceConfig.WorkingDir = *service.WorkingDir
|
||||||
|
p.Configs[name] = serviceConfig
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p = project.NewProject(&project.Context{
|
||||||
|
ProjectName: "kube",
|
||||||
|
ComposeFile: composeFile,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err := p.Parse(); err != nil {
|
||||||
|
logrus.Fatalf("Failed to parse the compose project from %s: %v", composeFile, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var mServices map[string][]byte = make(map[string][]byte)
|
var mServices map[string][]byte = make(map[string][]byte)
|
||||||
var mReplicationControllers map[string][]byte = make(map[string][]byte)
|
var mReplicationControllers map[string][]byte = make(map[string][]byte)
|
||||||
var mDeployments map[string][]byte = make(map[string][]byte)
|
var mDeployments map[string][]byte = make(map[string][]byte)
|
||||||
|
|||||||
@ -65,6 +65,11 @@ func ConvertCommand(factory app.ProjectFactory) cli.Command {
|
|||||||
Name: "stdout",
|
Name: "stdout",
|
||||||
Usage: "Print Kubernetes objects to stdout",
|
Usage: "Print Kubernetes objects to stdout",
|
||||||
},
|
},
|
||||||
|
// FIXME: this flag should be used together with --file/-f in order to specify dab file.
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "from-bundles",
|
||||||
|
Usage: "Getting input from docker DAB file",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user