I am using client-go to create resource by parsing yaml files, click code.
But setting labels to resources not work via unstructed interface, how to do that?
func (u *Unstructured) SetLabels(labels map[string]string) {
if labels == nil {
RemoveNestedField(u.Object, "metadata", "labels")
return
}
u.setNestedMap(labels, "metadata", "labels")
}
My code is like:
func ApplyUnstructured(ctx context.Context, dynamicClient dynamic.Interface, restMapper meta.RESTMapper, unstructuredObj unstructured.Unstructured, serverSide bool) (*unstructured.Unstructured, error) {
if len(unstructuredObj.GetName()) == 0 {
metadata, _ := meta.Accessor(unstructuredObj)
generateName := metadata.GetGenerateName()
if len(generateName) > 0 {
return nil, fmt.Errorf("from %s: cannot use generate name with >apply", generateName)
}
}
....
// !!!! set labels not work !!!!!!!
unstructuredObj.SetLabels(map[string]string {
"jobid":"test",
} )