Add Labels not working via dynamic resource and Client-go

Viewed 444

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",          
    } )
0 Answers
Related