in pkg/build/inline.go [329:394]
func (n *Inliner) objectTemplateBuilders(ctx context.Context, objects map[string][]*unstructured.Unstructured, ref bundle.ComponentReference) ([]*unstructured.Unstructured, error) {
var outObj []*unstructured.Unstructured
for parentPath, objList := range objects {
for _, obj := range objList {
if obj.GetKind() != "ObjectTemplateBuilder" {
// There shouldn't be any non-ObjectTemplateBuilders at this point
continue
}
name := obj.GetName()
builder := &bundle.ObjectTemplateBuilder{}
if err := converter.FromUnstructured(obj).ToObject(builder); err != nil {
return nil, fmt.Errorf("for component %v and object %q: %v", ref, name, err)
}
parentURL, err := url.Parse(parentPath)
if err != nil {
return nil, err
}
furl, err := builder.File.ParsedURL()
if err != nil {
return nil, err
}
builder.File.URL = makeAbsWithParent(parentURL, furl).String()
contents, err := n.readFile(ctx, builder.File)
if err != nil {
return nil, fmt.Errorf("for component %v and object %q: %v", ref, name, err)
}
objTemplate := &bundle.ObjectTemplate{
TypeMeta: metav1.TypeMeta{
APIVersion: "bundle.gke.io/v1alpha1",
Kind: "ObjectTemplate",
},
ObjectMeta: builder.ObjectMeta,
OptionsSchema: builder.OptionsSchema,
Template: string(contents),
}
objTemplate.ObjectMeta.Annotations = make(map[string]string)
for key, value := range builder.ObjectMeta.Annotations {
objTemplate.ObjectMeta.Annotations[key] = value
}
objTemplate.ObjectMeta.Annotations[string(bundle.InlinePathIdentifier)] = builder.File.URL
tmplType := bundle.TemplateTypeGo
if builder.Type != bundle.TemplateTypeUndefined {
tmplType = builder.Type
}
objTemplate.Type = tmplType
objJSON, err := converter.FromObject(objTemplate).ToJSON()
if err != nil {
return nil, fmt.Errorf("for component %v and object %q, while converting back to JSON: %v", ref, name, err)
}
unsObj, err := converter.FromJSON(objJSON).ToUnstructured()
if err != nil {
return nil, fmt.Errorf("for component %v and object %q, while converting back to Unstructured: %v", ref, name, err)
}
outObj = append(outObj, unsObj)
}
}
return outObj, nil
}