Skip to content

Commit

Permalink
make default kompose conversion YAML
Browse files Browse the repository at this point in the history
  • Loading branch information
Abhishek committed Jan 3, 2017
1 parent 9c3fdaa commit 6995a69
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 74 deletions.
9 changes: 6 additions & 3 deletions cmd/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
var (
ConvertSource, ConvertOut, ConvertBuildRepo, ConvertBuildBranch string
ConvertChart, ConvertDeployment, ConvertDaemonSet bool
ConvertReplicationController, ConvertYaml, ConvertStdout bool
ConvertReplicationController, ConvertStdout, ConvertJson bool
ConvertEmptyVols, ConvertDeploymentConfig, ConvertBuildConfig bool
ConvertReplicas int
ConvertOpt kobject.ConvertOptions
Expand All @@ -45,7 +45,7 @@ var convertCmd = &cobra.Command{
ConvertOpt = kobject.ConvertOptions{
ToStdout: ConvertStdout,
CreateChart: ConvertChart,
GenerateYaml: ConvertYaml,
GenerateJson: ConvertJson,
Replicas: ConvertReplicas,
InputFile: GlobalFile,
OutFile: ConvertOut,
Expand Down Expand Up @@ -92,7 +92,10 @@ func init() {
convertCmd.Flags().MarkHidden("build-branch")

// Standard between the two
convertCmd.Flags().BoolVarP(&ConvertYaml, "yaml", "y", false, "Generate resource files into yaml format")
convertCmd.Flags().BoolVarP(&ConvertJson, "yaml", "y", true, "Generate resource files into yaml format")
convertCmd.Flags().MarkDeprecated("yaml", "YAML is the default format now.")
convertCmd.Flags().MarkShorthandDeprecated("y", "YAML is the default format now.")
convertCmd.Flags().BoolVarP(&ConvertJson, "json", "j", false, "Generate resource files into json format")
convertCmd.Flags().BoolVar(&ConvertStdout, "stdout", false, "Print converted objects to stdout")
convertCmd.Flags().BoolVar(&ConvertEmptyVols, "emptyvols", false, "Use Empty Volumes. Do not generate PVCs")
convertCmd.Flags().StringVarP(&ConvertOut, "out", "o", "", "Specify a file name to save objects to")
Expand Down
5 changes: 5 additions & 0 deletions pkg/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ func ValidateFlags(bundle string, args []string, cmd *cobra.Command, opt *kobjec
opt.OutFile = ""
}

//Check for simultaneously providing yaml and json format
if cmd.Flags().Lookup("yaml").Changed && cmd.Flags().Lookup("json").Changed {
logrus.Fatalf("Error: 'YAML' and 'JSON' format cannot be provided at the same time")
}

// Get the provider
provider := cmd.Flags().Lookup("provider").Value.String()
logrus.Debug("Checking validation of provider %s", provider)
Expand Down
2 changes: 1 addition & 1 deletion pkg/kobject/kobject.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type ConvertOptions struct {
BuildRepo string
BuildBranch string
CreateChart bool
GenerateYaml bool
GenerateJson bool
EmptyVols bool
Replicas int
InputFile string
Expand Down
38 changes: 19 additions & 19 deletions pkg/transformer/kubernetes/k8sutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,11 +185,11 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error {
if err != nil {
return err
}
data, err := marshal(convertedList, opt.GenerateYaml)
data, err := marshal(convertedList, opt.GenerateJson)
if err != nil {
return fmt.Errorf("Error in marshalling the List: %v", err)
}
files = append(files, transformer.Print("", dirName, "", data, opt.ToStdout, opt.GenerateYaml, f))
files = append(files, transformer.Print("", dirName, "", data, opt.ToStdout, opt.GenerateJson, f))
} else {
var file string
// create a separate file for each provider
Expand All @@ -198,34 +198,34 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error {
if err != nil {
return err
}

data, err := marshal(versionedObject, opt.GenerateYaml)
data, err := marshal(versionedObject, opt.GenerateJson)
if err != nil {
return err
}
switch t := v.(type) {
case *api.ReplicationController:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *extensions.Deployment:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *extensions.DaemonSet:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *deployapi.DeploymentConfig:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *buildapi.BuildConfig:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *imageapi.ImageStream:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *api.Service:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *api.PersistentVolumeClaim:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *api.Pod:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *routeapi.Route:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
case *extensions.Ingress:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateYaml, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)

}
files = append(files, file)
}
Expand All @@ -237,12 +237,12 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error {
}

// marshal object runtime.Object and return byte array
func marshal(obj runtime.Object, yamlFormat bool) (data []byte, err error) {
func marshal(obj runtime.Object, jsonFormat bool) (data []byte, err error) {
// convert data to yaml or json
if yamlFormat {
data, err = yaml.Marshal(obj)
} else {
if jsonFormat {
data, err = json.MarshalIndent(obj, "", " ")
} else {
data, err = yaml.Marshal(obj)
}
if err != nil {
data = nil
Expand Down
16 changes: 8 additions & 8 deletions pkg/transformer/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func ConfigAnnotations(service kobject.ServiceConfig) map[string]string {
}

// Transform data to json/yaml
func TransformData(obj runtime.Object, GenerateYaml bool) ([]byte, error) {
func TransformData(obj runtime.Object, GenerateJson bool) ([]byte, error) {
// Convert to versioned object
objectVersion := obj.GetObjectKind().GroupVersionKind()
version := unversioned.GroupVersion{Group: objectVersion.Group, Version: objectVersion.Version}
Expand All @@ -120,9 +120,9 @@ func TransformData(obj runtime.Object, GenerateYaml bool) ([]byte, error) {
}

// convert data to json / yaml
data, err := json.MarshalIndent(versionedObj, "", " ")
if GenerateYaml == true {
data, err = yaml.Marshal(versionedObj)
data, err := yaml.Marshal(versionedObj)
if GenerateJson == true {
data, err = json.MarshalIndent(versionedObj, "", " ")
}
if err != nil {
return nil, err
Expand All @@ -132,13 +132,13 @@ func TransformData(obj runtime.Object, GenerateYaml bool) ([]byte, error) {
}

// Either print to stdout or to file/s
func Print(name, path string, trailing string, data []byte, toStdout, generateYaml bool, f *os.File) string {
func Print(name, path string, trailing string, data []byte, toStdout, generateJson bool, f *os.File) string {

file := ""
if generateYaml {
file = fmt.Sprintf("%s-%s.yaml", name, trailing)
} else {
if generateJson {
file = fmt.Sprintf("%s-%s.json", name, trailing)
} else {
file = fmt.Sprintf("%s-%s.yaml", name, trailing)
}
if toStdout {
fmt.Fprintf(os.Stdout, "%s\n", string(data))
Expand Down
Loading

0 comments on commit 6995a69

Please sign in to comment.