// Update updates the provided resource. func (rc *ResourceClient) Update(obj *runtime.Unstructured) (*runtime.Unstructured, error) { result := new(runtime.Unstructured) if len(obj.GetName()) == 0 { return result, errors.New("object missing name") } err := rc.namespace(rc.cl.Put()). Resource(rc.resource.Name). Name(obj.GetName()). Body(obj). Do(). Into(result) return result, err }
func TestUnstructuredSetters(t *testing.T) { unstruct := runtime.Unstructured{} trueVar := true want := runtime.Unstructured{ Object: map[string]interface{}{ "kind": "test_kind", "apiVersion": "test_version", "metadata": map[string]interface{}{ "name": "test_name", "namespace": "test_namespace", "generateName": "test_generateName", "uid": "test_uid", "resourceVersion": "test_resourceVersion", "selfLink": "test_selfLink", "creationTimestamp": "2009-11-10T23:00:00Z", "deletionTimestamp": "2010-11-10T23:00:00Z", "labels": map[string]interface{}{ "test_label": "test_value", }, "annotations": map[string]interface{}{ "test_annotation": "test_value", }, "ownerReferences": []map[string]interface{}{ { "kind": "Pod", "name": "poda", "apiVersion": "v1", "uid": "1", "controller": (*bool)(nil), }, { "kind": "Pod", "name": "podb", "apiVersion": "v1", "uid": "2", "controller": &trueVar, }, }, "finalizers": []interface{}{ "finalizer.1", "finalizer.2", }, "clusterName": "cluster123", }, }, } unstruct.SetAPIVersion("test_version") unstruct.SetKind("test_kind") unstruct.SetNamespace("test_namespace") unstruct.SetName("test_name") unstruct.SetGenerateName("test_generateName") unstruct.SetUID(types.UID("test_uid")) unstruct.SetResourceVersion("test_resourceVersion") unstruct.SetSelfLink("test_selfLink") unstruct.SetCreationTimestamp(unversioned.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)) date := unversioned.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC) unstruct.SetDeletionTimestamp(&date) unstruct.SetLabels(map[string]string{"test_label": "test_value"}) unstruct.SetAnnotations(map[string]string{"test_annotation": "test_value"}) newOwnerReferences := []metatypes.OwnerReference{ { Kind: "Pod", Name: "poda", APIVersion: "v1", UID: "1", }, { Kind: "Pod", Name: "podb", APIVersion: "v1", UID: "2", Controller: &trueVar, }, } unstruct.SetOwnerReferences(newOwnerReferences) unstruct.SetFinalizers([]string{"finalizer.1", "finalizer.2"}) unstruct.SetClusterName("cluster123") if !reflect.DeepEqual(unstruct, want) { t.Errorf("Wanted: \n%s\n Got:\n%s", want, unstruct) } }
func TestUnstructuredGetters(t *testing.T) { unstruct := runtime.Unstructured{ Object: map[string]interface{}{ "kind": "test_kind", "apiVersion": "test_version", "metadata": map[string]interface{}{ "name": "test_name", "namespace": "test_namespace", "generateName": "test_generateName", "uid": "test_uid", "resourceVersion": "test_resourceVersion", "selfLink": "test_selfLink", "creationTimestamp": "2009-11-10T23:00:00Z", "deletionTimestamp": "2010-11-10T23:00:00Z", "labels": map[string]interface{}{ "test_label": "test_value", }, "annotations": map[string]interface{}{ "test_annotation": "test_value", }, "ownerReferences": []map[string]interface{}{ { "kind": "Pod", "name": "poda", "apiVersion": "v1", "uid": "1", }, { "kind": "Pod", "name": "podb", "apiVersion": "v1", "uid": "2", }, }, "finalizers": []interface{}{ "finalizer.1", "finalizer.2", }, "clusterName": "cluster123", }, }, } if got, want := unstruct.GetAPIVersion(), "test_version"; got != want { t.Errorf("GetAPIVersions() = %s, want %s", got, want) } if got, want := unstruct.GetKind(), "test_kind"; got != want { t.Errorf("GetKind() = %s, want %s", got, want) } if got, want := unstruct.GetNamespace(), "test_namespace"; got != want { t.Errorf("GetNamespace() = %s, want %s", got, want) } if got, want := unstruct.GetName(), "test_name"; got != want { t.Errorf("GetName() = %s, want %s", got, want) } if got, want := unstruct.GetGenerateName(), "test_generateName"; got != want { t.Errorf("GetGenerateName() = %s, want %s", got, want) } if got, want := unstruct.GetUID(), types.UID("test_uid"); got != want { t.Errorf("GetUID() = %s, want %s", got, want) } if got, want := unstruct.GetResourceVersion(), "test_resourceVersion"; got != want { t.Errorf("GetResourceVersion() = %s, want %s", got, want) } if got, want := unstruct.GetSelfLink(), "test_selfLink"; got != want { t.Errorf("GetSelfLink() = %s, want %s", got, want) } if got, want := unstruct.GetCreationTimestamp(), unversioned.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC); !got.Equal(want) { t.Errorf("GetCreationTimestamp() = %s, want %s", got, want) } if got, want := unstruct.GetDeletionTimestamp(), unversioned.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC); got == nil || !got.Equal(want) { t.Errorf("GetDeletionTimestamp() = %s, want %s", got, want) } if got, want := unstruct.GetLabels(), map[string]string{"test_label": "test_value"}; !reflect.DeepEqual(got, want) { t.Errorf("GetLabels() = %s, want %s", got, want) } if got, want := unstruct.GetAnnotations(), map[string]string{"test_annotation": "test_value"}; !reflect.DeepEqual(got, want) { t.Errorf("GetAnnotations() = %s, want %s", got, want) } refs := unstruct.GetOwnerReferences() expectedOwnerReferences := []metatypes.OwnerReference{ { Kind: "Pod", Name: "poda", APIVersion: "v1", UID: "1", }, { Kind: "Pod", Name: "podb", APIVersion: "v1", UID: "2", }, } if got, want := refs, expectedOwnerReferences; !reflect.DeepEqual(got, want) { t.Errorf("GetOwnerReferences()=%v, want %v", got, want) } if got, want := unstruct.GetFinalizers(), []string{"finalizer.1", "finalizer.2"}; !reflect.DeepEqual(got, want) { t.Errorf("GetFinalizers()=%v, want %v", got, want) } if got, want := unstruct.GetClusterName(), "cluster123"; got != want { t.Errorf("GetClusterName()=%v, want %v", got, want) } }
// isDifferentApiVersion Returns true if obj lives in a different ApiVersion than the SwaggerSchema does. // The SwaggerSchema will not be able to process objects in different ApiVersions unless they are vendored. func (s *SwaggerSchema) isDifferentApiVersion(obj runtime.Unstructured) bool { groupVersion := obj.GetAPIVersion() return len(groupVersion) > 0 && s.api.ApiVersion != groupVersion }
func TestUnstructuredSetters(t *testing.T) { unstruct := runtime.Unstructured{} want := runtime.Unstructured{ Object: map[string]interface{}{ "kind": "test_kind", "apiVersion": "test_version", "metadata": map[string]interface{}{ "name": "test_name", "namespace": "test_namespace", "generateName": "test_generateName", "uid": "test_uid", "resourceVersion": "test_resourceVersion", "selfLink": "test_selfLink", "creationTimestamp": "2009-11-10T23:00:00Z", "deletionTimestamp": "2010-11-10T23:00:00Z", "labels": map[string]interface{}{ "test_label": "test_value", }, "annotations": map[string]interface{}{ "test_annotation": "test_value", }, }, }, } unstruct.SetAPIVersion("test_version") unstruct.SetKind("test_kind") unstruct.SetNamespace("test_namespace") unstruct.SetName("test_name") unstruct.SetGenerateName("test_generateName") unstruct.SetUID(types.UID("test_uid")) unstruct.SetResourceVersion("test_resourceVersion") unstruct.SetSelfLink("test_selfLink") unstruct.SetCreationTimestamp(unversioned.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)) date := unversioned.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC) unstruct.SetDeletionTimestamp(&date) unstruct.SetLabels(map[string]string{"test_label": "test_value"}) unstruct.SetAnnotations(map[string]string{"test_annotation": "test_value"}) if !reflect.DeepEqual(unstruct, want) { t.Errorf("Wanted: \n%s\n Got:\n%s", unstruct, want) } }
func TestUnstructuredGetters(t *testing.T) { unstruct := runtime.Unstructured{ Object: map[string]interface{}{ "kind": "test_kind", "apiVersion": "test_version", "metadata": map[string]interface{}{ "name": "test_name", "namespace": "test_namespace", "generateName": "test_generateName", "uid": "test_uid", "resourceVersion": "test_resourceVersion", "selfLink": "test_selfLink", "creationTimestamp": "2009-11-10T23:00:00Z", "deletionTimestamp": "2010-11-10T23:00:00Z", "labels": map[string]interface{}{ "test_label": "test_value", }, "annotations": map[string]interface{}{ "test_annotation": "test_value", }, }, }, } if got, want := unstruct.GetAPIVersion(), "test_version"; got != want { t.Errorf("GetAPIVersions() = %s, want %s", got, want) } if got, want := unstruct.GetKind(), "test_kind"; got != want { t.Errorf("GetKind() = %s, want %s", got, want) } if got, want := unstruct.GetNamespace(), "test_namespace"; got != want { t.Errorf("GetNamespace() = %s, want %s", got, want) } if got, want := unstruct.GetName(), "test_name"; got != want { t.Errorf("GetName() = %s, want %s", got, want) } if got, want := unstruct.GetGenerateName(), "test_generateName"; got != want { t.Errorf("GetGenerateName() = %s, want %s", got, want) } if got, want := unstruct.GetUID(), types.UID("test_uid"); got != want { t.Errorf("GetUID() = %s, want %s", got, want) } if got, want := unstruct.GetResourceVersion(), "test_resourceVersion"; got != want { t.Errorf("GetResourceVersion() = %s, want %s", got, want) } if got, want := unstruct.GetSelfLink(), "test_selfLink"; got != want { t.Errorf("GetSelfLink() = %s, want %s", got, want) } if got, want := unstruct.GetCreationTimestamp(), unversioned.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC); !got.Equal(want) { t.Errorf("GetCreationTimestamp() = %s, want %s", got, want) } if got, want := unstruct.GetDeletionTimestamp(), unversioned.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC); got == nil || !got.Equal(want) { t.Errorf("GetDeletionTimestamp() = %s, want %s", got, want) } if got, want := unstruct.GetLabels(), map[string]string{"test_label": "test_value"}; !reflect.DeepEqual(got, want) { t.Errorf("GetLabels() = %s, want %s", got, want) } if got, want := unstruct.GetAnnotations(), map[string]string{"test_annotation": "test_value"}; !reflect.DeepEqual(got, want) { t.Errorf("GetAnnotations() = %s, want %s", got, want) } }