// extract the PodSpec from the pod templates for each object we care about func (o *podNodeConstraints) getPodSpec(attr admission.Attributes) (kapi.PodSpec, error) { spec, _, err := meta.GetPodSpec(attr.GetObject()) if err != nil { return kapi.PodSpec{}, kapierrors.NewInternalError(err) } return *spec, nil }
// buildTemplates converts a set of resolved, valid references into references to template objects. func (c *AppConfig) buildTemplates(components app.ComponentReferences, parameters app.Environment, environment app.Environment) (string, []runtime.Object, error) { objects := []runtime.Object{} name := "" for _, ref := range components { tpl := ref.Input().ResolvedMatch.Template glog.V(4).Infof("processing template %s/%s", c.OriginNamespace, tpl.Name) result, err := TransformTemplate(tpl, c.OSClient, c.OriginNamespace, parameters) if err != nil { return name, nil, err } if len(name) == 0 { name = tpl.Name } objects = append(objects, result.Objects...) if len(result.Objects) > 0 { // if environment variables were passed in, let's apply the environment variables // to every pod template object for i := range result.Objects { podSpec, _, err := ometa.GetPodSpec(result.Objects[i]) if err == nil { for ii := range podSpec.Containers { if podSpec.Containers[ii].Env != nil { podSpec.Containers[ii].Env = app.JoinEnvironment(environment.List(), podSpec.Containers[ii].Env) } else { podSpec.Containers[ii].Env = environment.List() } } } } } DescribeGeneratedTemplate(c.Out, ref.Input().String(), result, c.OriginNamespace) } return name, objects, nil }