func instantiateTemplate(client client.Interface, mapper configcmd.Mapper, templateNamespace, templateName, targetNamespace string, params map[string]string) error { template, err := client.Templates(templateNamespace).Get(templateName) if err != nil { return errors.NewError("cannot retrieve template %q from namespace %q", templateName, templateNamespace).WithCause(err) } // process the template result, err := genappcmd.TransformTemplate(template, client, targetNamespace, params) if err != nil { return errors.NewError("cannot process template %s/%s", templateNamespace, templateName).WithCause(err) } // Create objects bulk := &configcmd.Bulk{ Mapper: mapper, Op: configcmd.Create, } itemsToCreate := &kapi.List{ Items: result.Objects, } if errs := bulk.Run(itemsToCreate, targetNamespace); len(errs) > 0 { err = kerrors.NewAggregate(errs) return errors.NewError("cannot create objects from template %s/%s", templateNamespace, templateName).WithCause(err) } return nil }
func (o *DockerComposeOptions) Run() error { template, err := dockercompose.Generate(o.Filenames...) if err != nil { return err } template.ObjectLabels = map[string]string{ "compose": template.Name, } // all the types generated into the template should be known if errs := app.AsVersionedObjects(template.Objects, kapi.Scheme, kapi.Scheme, o.OutputVersions...); len(errs) > 0 { for _, err := range errs { fmt.Fprintf(o.Action.ErrOut, "error: %v\n", err) } } if o.Action.ShouldPrint() || (o.Action.Output == "name" && len(o.AsTemplate) > 0) { var out runtime.Object if len(o.AsTemplate) > 0 { template.Name = o.AsTemplate out = template } else { out = &kapi.List{Items: template.Objects} } return o.PrintObject(out) } result, err := appcmd.TransformTemplate(template, o.Client, o.Namespace, nil) if err != nil { return err } if o.Action.Verbose() { appcmd.DescribeGeneratedTemplate(o.Action.Out, "", result, o.Namespace) } if errs := o.Action.WithMessage("Importing compose file", "creating").Run(&kapi.List{Items: result.Objects}, o.Namespace); len(errs) > 0 { return cmdutil.ErrExit } return nil }
func (o *AppJSONOptions) Run() error { localPath, contents, err := contentsForPathOrURL(o.Filenames[0], o.In, "app.json") if err != nil { return err } g := &appjson.Generator{ LocalPath: localPath, BaseImage: o.BaseImage, } switch { case len(o.AsTemplate) > 0: g.Name = o.AsTemplate case len(localPath) > 0: g.Name = filepath.Base(localPath) default: g.Name = path.Base(path.Dir(o.Filenames[0])) } if len(g.Name) == 0 { g.Name = "app" } template, err := g.Generate(contents) if err != nil { return err } template.ObjectLabels = map[string]string{"app.json": template.Name} // all the types generated into the template should be known if errs := app.AsVersionedObjects(template.Objects, kapi.Scheme, kapi.Scheme, o.OutputVersions...); len(errs) > 0 { for _, err := range errs { fmt.Fprintf(o.Action.ErrOut, "error: %v\n", err) } } if o.Action.ShouldPrint() || (o.Action.Output == "name" && len(o.AsTemplate) > 0) { var out runtime.Object if len(o.AsTemplate) > 0 { template.Name = o.AsTemplate out = template } else { out = &kapi.List{Items: template.Objects} } return o.PrintObject(out) } result, err := appcmd.TransformTemplate(template, o.Client, o.Namespace, nil) if err != nil { return err } if o.Action.Verbose() { appcmd.DescribeGeneratedTemplate(o.Action.Out, "", result, o.Namespace) } if errs := o.Action.WithMessage("Importing app.json", "creating").Run(&kapi.List{Items: result.Objects}, o.Namespace); len(errs) > 0 { return cmdutil.ErrExit } return nil }