forked from LaconicNetwork/kompose
--provider global flag for kompose
Now a user can select a provider using global flag --provider=openshift to select openshift provider or --provider-kubernetes to select kubernetes provider if nothing is provided kubernetes is the default provider. Fixes #179
This commit is contained in:
parent
9cb74ed023
commit
b969f7aa44
211
cli/app/app.go
211
cli/app/app.go
@ -18,6 +18,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
@ -39,46 +40,51 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
DefaultComposeFile = "docker-compose.yml"
|
DefaultComposeFile = "docker-compose.yml"
|
||||||
|
DefaultProvider = "kubernetes"
|
||||||
)
|
)
|
||||||
|
|
||||||
var inputFormat = "compose"
|
var inputFormat = "compose"
|
||||||
|
|
||||||
// Hook for erroring and exit out on warning
|
func validateFlags(c *cli.Context, opt *kobject.ConvertOptions) {
|
||||||
type errorOnWarningHook struct{}
|
|
||||||
|
|
||||||
func (errorOnWarningHook) Levels() []logrus.Level {
|
if opt.OutFile == "-" {
|
||||||
return []logrus.Level{logrus.WarnLevel}
|
opt.ToStdout = true
|
||||||
|
opt.OutFile = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (errorOnWarningHook) Fire(entry *logrus.Entry) error {
|
|
||||||
logrus.Fatalln(entry.Message)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// BeforeApp is an action that is executed before any cli command.
|
|
||||||
func BeforeApp(c *cli.Context) error {
|
|
||||||
|
|
||||||
if c.GlobalBool("verbose") {
|
|
||||||
logrus.SetLevel(logrus.DebugLevel)
|
|
||||||
} else if c.GlobalBool("suppress-warnings") {
|
|
||||||
logrus.SetLevel(logrus.ErrorLevel)
|
|
||||||
} else if c.GlobalBool("error-on-warning") {
|
|
||||||
hook := errorOnWarningHook{}
|
|
||||||
logrus.AddHook(hook)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateFlags(opt kobject.ConvertOptions, singleOutput bool, dabFile, inputFile string) {
|
|
||||||
if len(opt.OutFile) != 0 && opt.ToStdout {
|
if len(opt.OutFile) != 0 && opt.ToStdout {
|
||||||
logrus.Fatalf("Error: --out and --stdout can't be set at the same time")
|
logrus.Fatalf("Error: --out and --stdout can't be set at the same time")
|
||||||
}
|
}
|
||||||
|
|
||||||
if opt.CreateChart && opt.ToStdout {
|
if opt.CreateChart && opt.ToStdout {
|
||||||
logrus.Fatalf("Error: chart cannot be generated when --stdout is specified")
|
logrus.Fatalf("Error: chart cannot be generated when --stdout is specified")
|
||||||
}
|
}
|
||||||
|
|
||||||
if opt.Replicas < 0 {
|
if opt.Replicas < 0 {
|
||||||
logrus.Fatalf("Error: --replicas cannot be negative")
|
logrus.Fatalf("Error: --replicas cannot be negative")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dabFile := c.GlobalString("bundle")
|
||||||
|
|
||||||
|
if len(dabFile) > 0 {
|
||||||
|
inputFormat = "bundle"
|
||||||
|
opt.InputFile = dabFile
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(dabFile) > 0 && len(opt.InputFile) > 0 && opt.InputFile != DefaultComposeFile {
|
||||||
|
logrus.Fatalf("Error: 'compose' file and 'dab' file cannot be specified at the same time")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateControllers(opt *kobject.ConvertOptions) {
|
||||||
|
|
||||||
|
singleOutput := len(opt.OutFile) != 0 || opt.OutFile == "-" || opt.ToStdout
|
||||||
|
|
||||||
|
if opt.Provider == "kubernetes" {
|
||||||
|
// create deployment by default if no controller has been set
|
||||||
|
if !opt.CreateD && !opt.CreateDS && !opt.CreateRC {
|
||||||
|
opt.CreateD = true
|
||||||
|
}
|
||||||
if singleOutput {
|
if singleOutput {
|
||||||
count := 0
|
count := 0
|
||||||
if opt.CreateD {
|
if opt.CreateD {
|
||||||
@ -90,67 +96,49 @@ func validateFlags(opt kobject.ConvertOptions, singleOutput bool, dabFile, input
|
|||||||
if opt.CreateRC {
|
if opt.CreateRC {
|
||||||
count++
|
count++
|
||||||
}
|
}
|
||||||
if opt.CreateDeploymentConfig {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if count > 1 {
|
if count > 1 {
|
||||||
logrus.Fatalf("Error: only one kind of Kubernetes resource can be generated when --out or --stdout is specified")
|
logrus.Fatalf("Error: only one kind of Kubernetes resource can be generated when --out or --stdout is specified")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(dabFile) > 0 && len(inputFile) > 0 && inputFile != DefaultComposeFile {
|
|
||||||
logrus.Fatalf("Error: compose file and dab file cannot be specified at the same time")
|
} else if opt.Provider == "openshift" {
|
||||||
|
// create deploymentconfig by default if no controller has been set
|
||||||
|
if !opt.CreateDeploymentConfig {
|
||||||
|
opt.CreateDeploymentConfig = true
|
||||||
|
}
|
||||||
|
if singleOutput {
|
||||||
|
count := 0
|
||||||
|
if opt.CreateDeploymentConfig {
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
// Add more controllers here once they are available in OpenShift
|
||||||
|
// if opt.foo {count++}
|
||||||
|
|
||||||
|
if count > 1 {
|
||||||
|
logrus.Fatalf("Error: only one kind of OpenShift resource can be generated when --out or --stdout is specified")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert transforms docker compose or dab file to k8s objects
|
// Convert transforms docker compose or dab file to k8s objects
|
||||||
func Convert(c *cli.Context) {
|
func Convert(c *cli.Context) {
|
||||||
inputFile := c.GlobalString("file")
|
|
||||||
dabFile := c.GlobalString("bundle")
|
|
||||||
outFile := c.String("out")
|
|
||||||
generateYaml := c.BoolT("yaml")
|
|
||||||
toStdout := c.BoolT("stdout")
|
|
||||||
createD := c.BoolT("deployment")
|
|
||||||
createDS := c.BoolT("daemonset")
|
|
||||||
createRC := c.BoolT("replicationcontroller")
|
|
||||||
createChart := c.BoolT("chart")
|
|
||||||
replicas := c.Int("replicas")
|
|
||||||
singleOutput := len(outFile) != 0 || outFile == "-" || toStdout
|
|
||||||
createDeploymentConfig := c.BoolT("deploymentconfig")
|
|
||||||
|
|
||||||
if outFile == "-" {
|
|
||||||
toStdout = true
|
|
||||||
outFile = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create Deployment by default if no controller has be set
|
|
||||||
if !createD && !createDS && !createRC && !createDeploymentConfig {
|
|
||||||
createD = true
|
|
||||||
}
|
|
||||||
|
|
||||||
komposeObject := kobject.KomposeObject{
|
|
||||||
ServiceConfigs: make(map[string]kobject.ServiceConfig),
|
|
||||||
}
|
|
||||||
|
|
||||||
file := inputFile
|
|
||||||
if len(dabFile) > 0 {
|
|
||||||
inputFormat = "bundle"
|
|
||||||
file = dabFile
|
|
||||||
}
|
|
||||||
|
|
||||||
opt := kobject.ConvertOptions{
|
opt := kobject.ConvertOptions{
|
||||||
ToStdout: toStdout,
|
ToStdout: c.BoolT("stdout"),
|
||||||
CreateD: createD,
|
CreateChart: c.BoolT("chart"),
|
||||||
CreateRC: createRC,
|
GenerateYaml: c.BoolT("yaml"),
|
||||||
CreateDS: createDS,
|
Replicas: c.Int("replicas"),
|
||||||
CreateDeploymentConfig: createDeploymentConfig,
|
InputFile: c.GlobalString("file"),
|
||||||
CreateChart: createChart,
|
OutFile: c.String("out"),
|
||||||
GenerateYaml: generateYaml,
|
Provider: strings.ToLower(c.GlobalString("provider")),
|
||||||
Replicas: replicas,
|
CreateD: c.BoolT("deployment"),
|
||||||
InputFile: file,
|
CreateDS: c.BoolT("daemonset"),
|
||||||
OutFile: outFile,
|
CreateRC: c.BoolT("replicationcontroller"),
|
||||||
|
CreateDeploymentConfig: c.BoolT("deploymentconfig"),
|
||||||
}
|
}
|
||||||
|
|
||||||
validateFlags(opt, singleOutput, dabFile, inputFile)
|
validateFlags(c, &opt)
|
||||||
|
validateControllers(&opt)
|
||||||
|
|
||||||
// loader parses input from file into komposeObject.
|
// loader parses input from file into komposeObject.
|
||||||
l, err := loader.GetLoader(inputFormat)
|
l, err := loader.GetLoader(inputFormat)
|
||||||
@ -158,11 +146,14 @@ func Convert(c *cli.Context) {
|
|||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
komposeObject = l.LoadFile(file)
|
komposeObject := kobject.KomposeObject{
|
||||||
|
ServiceConfigs: make(map[string]kobject.ServiceConfig),
|
||||||
|
}
|
||||||
|
komposeObject = l.LoadFile(opt.InputFile)
|
||||||
|
|
||||||
// transformer maps komposeObject to provider's primitives
|
// transformer maps komposeObject to provider's primitives
|
||||||
var t transformer.Transformer
|
var t transformer.Transformer
|
||||||
if !createDeploymentConfig {
|
if opt.Provider == "kubernetes" {
|
||||||
t = new(kubernetes.Kubernetes)
|
t = new(kubernetes.Kubernetes)
|
||||||
} else {
|
} else {
|
||||||
t = new(openshift.OpenShift)
|
t = new(openshift.OpenShift)
|
||||||
@ -176,25 +167,13 @@ func Convert(c *cli.Context) {
|
|||||||
|
|
||||||
// Up brings up deployment, svc.
|
// Up brings up deployment, svc.
|
||||||
func Up(c *cli.Context) {
|
func Up(c *cli.Context) {
|
||||||
inputFile := c.GlobalString("file")
|
|
||||||
dabFile := c.GlobalString("bundle")
|
|
||||||
|
|
||||||
komposeObject := kobject.KomposeObject{
|
|
||||||
ServiceConfigs: make(map[string]kobject.ServiceConfig),
|
|
||||||
}
|
|
||||||
|
|
||||||
file := inputFile
|
|
||||||
if len(dabFile) > 0 {
|
|
||||||
inputFormat = "bundle"
|
|
||||||
file = dabFile
|
|
||||||
}
|
|
||||||
|
|
||||||
opt := kobject.ConvertOptions{
|
opt := kobject.ConvertOptions{
|
||||||
|
InputFile: c.GlobalString("file"),
|
||||||
Replicas: 1,
|
Replicas: 1,
|
||||||
CreateD: true,
|
Provider: strings.ToLower(c.GlobalString("provider")),
|
||||||
}
|
}
|
||||||
|
validateFlags(c, &opt)
|
||||||
validateFlags(opt, false, dabFile, inputFile)
|
validateControllers(&opt)
|
||||||
|
|
||||||
// loader parses input from file into komposeObject.
|
// loader parses input from file into komposeObject.
|
||||||
l, err := loader.GetLoader(inputFormat)
|
l, err := loader.GetLoader(inputFormat)
|
||||||
@ -202,39 +181,35 @@ func Up(c *cli.Context) {
|
|||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
komposeObject = l.LoadFile(file)
|
komposeObject := kobject.KomposeObject{
|
||||||
|
ServiceConfigs: make(map[string]kobject.ServiceConfig),
|
||||||
|
}
|
||||||
|
komposeObject = l.LoadFile(opt.InputFile)
|
||||||
|
|
||||||
//get transfomer
|
//get transfomer
|
||||||
t := new(kubernetes.Kubernetes)
|
var t transformer.Transformer
|
||||||
|
if opt.Provider == "kubernetes" {
|
||||||
|
t = new(kubernetes.Kubernetes)
|
||||||
|
} else {
|
||||||
|
t = new(openshift.OpenShift)
|
||||||
|
}
|
||||||
|
|
||||||
//Submit objects provider
|
//Submit objects provider
|
||||||
errDeploy := t.Deploy(komposeObject, opt)
|
errDeploy := t.Deploy(komposeObject, opt)
|
||||||
if errDeploy != nil {
|
if errDeploy != nil {
|
||||||
logrus.Fatalf("Error while deploying application: %s", err)
|
logrus.Fatalf("Error while deploying application: %s", errDeploy)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Down deletes all deployment, svc.
|
// Down deletes all deployment, svc.
|
||||||
func Down(c *cli.Context) {
|
func Down(c *cli.Context) {
|
||||||
inputFile := c.GlobalString("file")
|
|
||||||
dabFile := c.GlobalString("bundle")
|
|
||||||
|
|
||||||
komposeObject := kobject.KomposeObject{
|
|
||||||
ServiceConfigs: make(map[string]kobject.ServiceConfig),
|
|
||||||
}
|
|
||||||
|
|
||||||
file := inputFile
|
|
||||||
if len(dabFile) > 0 {
|
|
||||||
inputFormat = "bundle"
|
|
||||||
file = dabFile
|
|
||||||
}
|
|
||||||
|
|
||||||
opt := kobject.ConvertOptions{
|
opt := kobject.ConvertOptions{
|
||||||
|
InputFile: c.GlobalString("file"),
|
||||||
Replicas: 1,
|
Replicas: 1,
|
||||||
CreateD: true,
|
Provider: strings.ToLower(c.GlobalString("provider")),
|
||||||
}
|
}
|
||||||
|
validateFlags(c, &opt)
|
||||||
validateFlags(opt, false, dabFile, inputFile)
|
validateControllers(&opt)
|
||||||
|
|
||||||
// loader parses input from file into komposeObject.
|
// loader parses input from file into komposeObject.
|
||||||
l, err := loader.GetLoader(inputFormat)
|
l, err := loader.GetLoader(inputFormat)
|
||||||
@ -242,15 +217,23 @@ func Down(c *cli.Context) {
|
|||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
komposeObject = l.LoadFile(file)
|
komposeObject := kobject.KomposeObject{
|
||||||
|
ServiceConfigs: make(map[string]kobject.ServiceConfig),
|
||||||
|
}
|
||||||
|
komposeObject = l.LoadFile(opt.InputFile)
|
||||||
|
|
||||||
// get transformer
|
//get transfomer
|
||||||
t := new(kubernetes.Kubernetes)
|
var t transformer.Transformer
|
||||||
|
if opt.Provider == "kubernetes" {
|
||||||
|
t = new(kubernetes.Kubernetes)
|
||||||
|
} else {
|
||||||
|
t = new(openshift.OpenShift)
|
||||||
|
}
|
||||||
|
|
||||||
//Remove deployed application
|
//Remove deployed application
|
||||||
errUndeploy := t.Undeploy(komposeObject, opt)
|
errUndeploy := t.Undeploy(komposeObject, opt)
|
||||||
if errUndeploy != nil {
|
if errUndeploy != nil {
|
||||||
logrus.Fatalf("Error while deleting application: %s", err)
|
logrus.Fatalf("Error while deleting application: %s", errUndeploy)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,58 +18,132 @@ package command
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/Sirupsen/logrus"
|
||||||
"github.com/skippbox/kompose/cli/app"
|
"github.com/skippbox/kompose/cli/app"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConvertCommand defines the kompose convert subcommand.
|
// Hook for erroring and exit out on warning
|
||||||
func ConvertCommand() cli.Command {
|
type errorOnWarningHook struct{}
|
||||||
return cli.Command{
|
|
||||||
|
func (errorOnWarningHook) Levels() []logrus.Level {
|
||||||
|
return []logrus.Level{logrus.WarnLevel}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (errorOnWarningHook) Fire(entry *logrus.Entry) error {
|
||||||
|
logrus.Fatalln(entry.Message)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeforeApp is an action that is executed before any cli command.
|
||||||
|
func BeforeApp(c *cli.Context) error {
|
||||||
|
|
||||||
|
if c.GlobalBool("verbose") {
|
||||||
|
logrus.SetLevel(logrus.DebugLevel)
|
||||||
|
} else if c.GlobalBool("suppress-warnings") {
|
||||||
|
logrus.SetLevel(logrus.ErrorLevel)
|
||||||
|
} else if c.GlobalBool("error-on-warning") {
|
||||||
|
hook := errorOnWarningHook{}
|
||||||
|
logrus.AddHook(hook)
|
||||||
|
}
|
||||||
|
|
||||||
|
// First command added was dummy convert command so removing it
|
||||||
|
c.App.Commands = c.App.Commands[1:]
|
||||||
|
provider := strings.ToLower(c.GlobalString("provider"))
|
||||||
|
switch provider {
|
||||||
|
case "kubernetes":
|
||||||
|
c.App.Commands = append(c.App.Commands, ConvertKubernetesCommand())
|
||||||
|
case "openshift":
|
||||||
|
c.App.Commands = append(c.App.Commands, ConvertOpenShiftCommand())
|
||||||
|
default:
|
||||||
|
logrus.Fatalf("Error: Unknown provider name. Providers supported are - 'kubernetes', 'openshift'.")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// When user tries out `kompose -h`, the convert option should be visible
|
||||||
|
// so adding a dummy `convert` command, real convert commands depending on Providers
|
||||||
|
// mentioned are added in `BeforeApp` function
|
||||||
|
func ConvertCommandDummy() cli.Command {
|
||||||
|
command := cli.Command{
|
||||||
|
Name: "convert",
|
||||||
|
Usage: fmt.Sprintf("Convert Docker Compose file (e.g. %s) to Kubernetes/OpenShift objects", app.DefaultComposeFile),
|
||||||
|
}
|
||||||
|
return command
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConvertKubernetesCommand defines the kompose convert subcommand for Kubernetes provider
|
||||||
|
func ConvertKubernetesCommand() cli.Command {
|
||||||
|
command := cli.Command{
|
||||||
Name: "convert",
|
Name: "convert",
|
||||||
Usage: fmt.Sprintf("Convert Docker Compose file (e.g. %s) to Kubernetes objects", app.DefaultComposeFile),
|
Usage: fmt.Sprintf("Convert Docker Compose file (e.g. %s) to Kubernetes objects", app.DefaultComposeFile),
|
||||||
Action: func(c *cli.Context) {
|
Action: func(c *cli.Context) {
|
||||||
app.Convert(c)
|
app.Convert(c)
|
||||||
},
|
},
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "chart,c",
|
||||||
|
Usage: "Create a Helm chart for converted objects",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "deployment,d",
|
||||||
|
Usage: "Generate a Kubernetes deployment object (default on)",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "daemonset,ds",
|
||||||
|
Usage: "Generate a Kubernetes daemonset object",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "replicationcontroller,rc",
|
||||||
|
Usage: "Generate a Kubernetes replication controller object",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
command.Flags = append(command.Flags, commonConvertFlags()...)
|
||||||
|
return command
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConvertOpenShiftCommand defines the kompose convert subcommand for OpenShift provider
|
||||||
|
func ConvertOpenShiftCommand() cli.Command {
|
||||||
|
command := cli.Command{
|
||||||
|
Name: "convert",
|
||||||
|
Usage: fmt.Sprintf("Convert Docker Compose file (e.g. %s) to OpenShift objects", app.DefaultComposeFile),
|
||||||
|
Action: func(c *cli.Context) {
|
||||||
|
app.Convert(c)
|
||||||
|
},
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "deploymentconfig,dc",
|
||||||
|
Usage: "Generate a OpenShift DeploymentConfig object",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
command.Flags = append(command.Flags, commonConvertFlags()...)
|
||||||
|
return command
|
||||||
|
}
|
||||||
|
|
||||||
|
func commonConvertFlags() []cli.Flag {
|
||||||
|
return []cli.Flag{
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "out,o",
|
Name: "out,o",
|
||||||
Usage: "Specify file name in order to save objects into",
|
Usage: "Specify file name in order to save objects into",
|
||||||
EnvVar: "OUTPUT_FILE",
|
EnvVar: "OUTPUT_FILE",
|
||||||
},
|
},
|
||||||
cli.BoolFlag{
|
|
||||||
Name: "deployment,d",
|
|
||||||
Usage: "Generate a deployment resource file (default on)",
|
|
||||||
},
|
|
||||||
cli.BoolFlag{
|
|
||||||
Name: "daemonset,ds",
|
|
||||||
Usage: "Generate a daemonset resource file",
|
|
||||||
},
|
|
||||||
cli.BoolFlag{
|
|
||||||
Name: "deploymentconfig,dc",
|
|
||||||
Usage: "Generate a DeploymentConfig for OpenShift",
|
|
||||||
},
|
|
||||||
cli.BoolFlag{
|
|
||||||
Name: "replicationcontroller,rc",
|
|
||||||
Usage: "Generate a replication controller resource file",
|
|
||||||
},
|
|
||||||
cli.IntFlag{
|
cli.IntFlag{
|
||||||
Name: "replicas",
|
Name: "replicas",
|
||||||
Value: 1,
|
Value: 1,
|
||||||
Usage: "Specify the number of replicas in the generated resource spec (default 1)",
|
Usage: "Specify the number of replicas in the generated resource spec (default 1)",
|
||||||
},
|
},
|
||||||
cli.BoolFlag{
|
|
||||||
Name: "chart,c",
|
|
||||||
Usage: "Create a chart deployment",
|
|
||||||
},
|
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "yaml, y",
|
Name: "yaml, y",
|
||||||
Usage: "Generate resource file in yaml format",
|
Usage: "Generate resource file in yaml format",
|
||||||
},
|
},
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "stdout",
|
Name: "stdout",
|
||||||
Usage: "Print Kubernetes objects to stdout",
|
Usage: "Print converted objects to stdout",
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -126,5 +200,12 @@ func CommonFlags() []cli.Flag {
|
|||||||
Name: "error-on-warning",
|
Name: "error-on-warning",
|
||||||
Usage: "Treat any warning as error",
|
Usage: "Treat any warning as error",
|
||||||
},
|
},
|
||||||
|
// mention the end provider
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "provider",
|
||||||
|
Usage: "Generate artifacts for this provider",
|
||||||
|
Value: app.DefaultProvider,
|
||||||
|
EnvVar: "PROVIDER",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,6 @@ package main
|
|||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
cliApp "github.com/skippbox/kompose/cli/app"
|
|
||||||
"github.com/skippbox/kompose/cli/command"
|
"github.com/skippbox/kompose/cli/command"
|
||||||
"github.com/skippbox/kompose/version"
|
"github.com/skippbox/kompose/version"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
@ -33,10 +32,15 @@ func main() {
|
|||||||
app.Author = "Skippbox Kompose Contributors"
|
app.Author = "Skippbox Kompose Contributors"
|
||||||
app.Email = "https://github.com/skippbox/kompose"
|
app.Email = "https://github.com/skippbox/kompose"
|
||||||
app.EnableBashCompletion = true
|
app.EnableBashCompletion = true
|
||||||
app.Before = cliApp.BeforeApp
|
app.Before = command.BeforeApp
|
||||||
app.Flags = append(command.CommonFlags())
|
app.Flags = append(command.CommonFlags())
|
||||||
app.Commands = []cli.Command{
|
app.Commands = []cli.Command{
|
||||||
command.ConvertCommand(),
|
// NOTE: Always add this in first, because this dummy command will be removed later
|
||||||
|
// in command.BeforeApp function and provider specific command will be added
|
||||||
|
command.ConvertCommandDummy(),
|
||||||
|
// command.ConvertKubernetesCommand or command.ConvertOpenShiftCommand
|
||||||
|
// is added depending on provider mentioned.
|
||||||
|
|
||||||
command.UpCommand(),
|
command.UpCommand(),
|
||||||
command.DownCommand(),
|
command.DownCommand(),
|
||||||
// TODO: enable these commands and update docs once we fix them
|
// TODO: enable these commands and update docs once we fix them
|
||||||
|
|||||||
@ -125,6 +125,7 @@ type ConvertOptions struct {
|
|||||||
Replicas int
|
Replicas int
|
||||||
InputFile string
|
InputFile string
|
||||||
OutFile string
|
OutFile string
|
||||||
|
Provider string
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceConfig holds the basic struct of a container
|
// ServiceConfig holds the basic struct of a container
|
||||||
|
|||||||
@ -14,7 +14,7 @@ export $(cat $KOMPOSE_ROOT/script/test/fixtures/etherpad/envs)
|
|||||||
# kubernetes test
|
# kubernetes test
|
||||||
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/etherpad/output-k8s.json" "Unsupported key depends_on - ignoring"
|
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/etherpad/output-k8s.json" "Unsupported key depends_on - ignoring"
|
||||||
# openshift test
|
# openshift test
|
||||||
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout --dc" "$KOMPOSE_ROOT/script/test/fixtures/etherpad/output-os.json" "Unsupported key depends_on - ignoring"
|
convert::expect_success_and_warning "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/etherpad/output-os.json" "Unsupported key depends_on - ignoring"
|
||||||
unset $(cat $KOMPOSE_ROOT/script/test/fixtures/etherpad/envs | cut -d'=' -f1)
|
unset $(cat $KOMPOSE_ROOT/script/test/fixtures/etherpad/envs | cut -d'=' -f1)
|
||||||
|
|
||||||
######
|
######
|
||||||
@ -24,7 +24,7 @@ export $(cat $KOMPOSE_ROOT/script/test/fixtures/gitlab/envs)
|
|||||||
# kubernetes test
|
# kubernetes test
|
||||||
convert::expect_success "kompose -f $KOMPOSE_ROOT/script/test/fixtures/gitlab/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/gitlab/output-k8s.json"
|
convert::expect_success "kompose -f $KOMPOSE_ROOT/script/test/fixtures/gitlab/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/gitlab/output-k8s.json"
|
||||||
# openshift test
|
# openshift test
|
||||||
convert::expect_success "kompose -f $KOMPOSE_ROOT/script/test/fixtures/gitlab/docker-compose.yml convert --stdout --dc" "$KOMPOSE_ROOT/script/test/fixtures/gitlab/output-os.json"
|
convert::expect_success "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/gitlab/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/gitlab/output-os.json"
|
||||||
unset $(cat $KOMPOSE_ROOT/script/test/fixtures/gitlab/envs | cut -d'=' -f1)
|
unset $(cat $KOMPOSE_ROOT/script/test/fixtures/gitlab/envs | cut -d'=' -f1)
|
||||||
|
|
||||||
######
|
######
|
||||||
@ -32,7 +32,7 @@ unset $(cat $KOMPOSE_ROOT/script/test/fixtures/gitlab/envs | cut -d'=' -f1)
|
|||||||
# kubernetes test
|
# kubernetes test
|
||||||
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/output-k8s.json" "Unsupported key build - ignoring"
|
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/output-k8s.json" "Unsupported key build - ignoring"
|
||||||
# openshift test
|
# openshift test
|
||||||
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/docker-compose.yml convert --stdout --dc" "$KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/output-os.json" "Unsupported key build - ignoring"
|
convert::expect_success_and_warning "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/ngnix-node-redis/output-os.json" "Unsupported key build - ignoring"
|
||||||
|
|
||||||
|
|
||||||
######
|
######
|
||||||
@ -40,7 +40,7 @@ convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtur
|
|||||||
# kubernetes test
|
# kubernetes test
|
||||||
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/output-k8s.json" "Service cannot be created because of missing port."
|
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/output-k8s.json" "Service cannot be created because of missing port."
|
||||||
# openshift test
|
# openshift test
|
||||||
convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/docker-compose.yml convert --stdout --dc" "$KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/output-os.json" "Service cannot be created because of missing port."
|
convert::expect_success_and_warning "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/entrypoint-command/output-os.json" "Service cannot be created because of missing port."
|
||||||
|
|
||||||
|
|
||||||
######
|
######
|
||||||
@ -48,7 +48,7 @@ convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtur
|
|||||||
# kubernetes test
|
# kubernetes test
|
||||||
convert::expect_success "kompose -f $KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/output-k8s.json"
|
convert::expect_success "kompose -f $KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/output-k8s.json"
|
||||||
# openshift test
|
# openshift test
|
||||||
convert::expect_success "kompose -f $KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/docker-compose.yml convert --stdout --dc" "$KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/output-os.json"
|
convert::expect_success "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/docker-compose.yml convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/ports-with-proto/output-os.json"
|
||||||
|
|
||||||
|
|
||||||
exit $EXIT_STATUS
|
exit $EXIT_STATUS
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user