Add Controller to api/meta

This commit is contained in:
gmarek
2016-05-20 14:38:19 +02:00
parent a6dd89d797
commit 778b1df717
14 changed files with 60 additions and 19 deletions

View File

@@ -2773,7 +2773,7 @@
"items": {
"$ref": "v1.OwnerReference"
},
"description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected."
"description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller."
},
"finalizers": {
"type": "array",
@@ -2809,6 +2809,10 @@
"uid": {
"type": "string",
"description": "UID of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids"
},
"controller": {
"type": "boolean",
"description": "If true, this reference points to the managing controller."
}
}
},

View File

@@ -1331,4 +1331,4 @@ Last updated 2016-05-23 07:07:20 UTC
</div>
</div>
</body>
</html>
</html>

View File

@@ -4107,4 +4107,4 @@ Last updated 2016-05-24 11:53:33 UTC
</div>
</div>
</body>
</html>
</html>

View File

@@ -6097,4 +6097,4 @@ Last updated 2016-05-24 11:53:27 UTC
</div>
</div>
</body>
</html>
</html>

View File

@@ -8002,4 +8002,4 @@ Last updated 2016-05-26 18:58:49 UTC
</div>
</div>
</body>
</html>
</html>

View File

@@ -100,6 +100,10 @@ func (meta *ObjectMeta) GetOwnerReferences() []metatypes.OwnerReference {
ret[i].Name = meta.OwnerReferences[i].Name
ret[i].UID = meta.OwnerReferences[i].UID
ret[i].APIVersion = meta.OwnerReferences[i].APIVersion
if meta.OwnerReferences[i].Controller != nil {
value := *meta.OwnerReferences[i].Controller
ret[i].Controller = &value
}
}
return ret
}
@@ -111,6 +115,10 @@ func (meta *ObjectMeta) SetOwnerReferences(references []metatypes.OwnerReference
newReferences[i].Name = references[i].Name
newReferences[i].UID = references[i].UID
newReferences[i].APIVersion = references[i].APIVersion
if references[i].Controller != nil {
value := *references[i].Controller
newReferences[i].Controller = &value
}
}
meta.OwnerReferences = newReferences
}

View File

@@ -359,6 +359,14 @@ func extractFromOwnerReference(v reflect.Value, o *metatypes.OwnerReference) err
if err := runtime.Field(v, "UID", &o.UID); err != nil {
return err
}
var controllerPtr *bool
if err := runtime.Field(v, "Controller", &controllerPtr); err != nil {
return err
}
if controllerPtr != nil {
controller := *controllerPtr
o.Controller = &controller
}
return nil
}
@@ -376,6 +384,12 @@ func setOwnerReference(v reflect.Value, o *metatypes.OwnerReference) error {
if err := runtime.SetField(o.UID, v, "UID"); err != nil {
return err
}
if o.Controller != nil {
controller := *(o.Controller)
if err := runtime.SetField(&controller, v, "Controller"); err != nil {
return err
}
}
return nil
}

View File

@@ -781,6 +781,7 @@ func getObjectMetaAndOwnerRefereneces() (myAPIObject2 MyAPIObject2, metaOwnerRef
Name: references[i].Name,
UID: references[i].UID,
APIVersion: references[i].APIVersion,
Controller: references[i].Controller,
})
}
if len(references) == 0 {

View File

@@ -29,5 +29,9 @@ func DeepCopy_metatypes_OwnerReference(in OwnerReference, out *OwnerReference, c
out.Kind = in.Kind
out.UID = in.UID
out.Name = in.Name
if in.Controller != nil {
value := *in.Controller
out.Controller = &value
}
return nil
}

View File

@@ -26,4 +26,5 @@ type OwnerReference struct {
Kind string
UID types.UID
Name string
Controller *bool
}

View File

@@ -64,6 +64,7 @@ func getObjectMetaAndOwnerReferences() (objectMeta api.ObjectMeta, metaOwnerRefe
Name: references[i].Name,
UID: references[i].UID,
APIVersion: references[i].APIVersion,
Controller: references[i].Controller,
})
}
if len(references) == 0 {

View File

@@ -3629,13 +3629,7 @@ func autoConvert_v1_OwnerReference_To_api_OwnerReference(in *OwnerReference, out
out.Kind = in.Kind
out.Name = in.Name
out.UID = in.UID
if in.Controller != nil {
in, out := &in.Controller, &out.Controller
*out = new(bool)
**out = **in
} else {
out.Controller = nil
}
out.Controller = in.Controller
return nil
}
@@ -3648,13 +3642,7 @@ func autoConvert_api_OwnerReference_To_v1_OwnerReference(in *api.OwnerReference,
out.Kind = in.Kind
out.Name = in.Name
out.UID = in.UID
if in.Controller != nil {
in, out := &in.Controller, &out.Controller
*out = new(bool)
**out = **in
} else {
out.Controller = nil
}
out.Controller = in.Controller
return nil
}

View File

@@ -231,20 +231,36 @@ func (u *Unstructured) setNestedMap(value map[string]string, fields ...string) {
func extractOwnerReference(src interface{}) metatypes.OwnerReference {
v := src.(map[string]interface{})
controllerPtr, ok := (getNestedField(v, "controller")).(*bool)
if !ok {
controllerPtr = nil
} else {
if controllerPtr != nil {
controller := *controllerPtr
controllerPtr = &controller
}
}
return metatypes.OwnerReference{
Kind: getNestedString(v, "kind"),
Name: getNestedString(v, "name"),
APIVersion: getNestedString(v, "apiVersion"),
UID: (types.UID)(getNestedString(v, "uid")),
Controller: controllerPtr,
}
}
func setOwnerReference(src metatypes.OwnerReference) map[string]interface{} {
ret := make(map[string]interface{})
controllerPtr := src.Controller
if controllerPtr != nil {
controller := *controllerPtr
controllerPtr = &controller
}
setNestedField(ret, src.Kind, "kind")
setNestedField(ret, src.Name, "name")
setNestedField(ret, src.APIVersion, "apiVersion")
setNestedField(ret, string(src.UID), "uid")
setNestedField(ret, controllerPtr, "controller")
return ret
}

View File

@@ -236,6 +236,7 @@ func TestUnstructuredGetters(t *testing.T) {
func TestUnstructuredSetters(t *testing.T) {
unstruct := runtime.Unstructured{}
trueVar := true
want := runtime.Unstructured{
Object: map[string]interface{}{
@@ -262,12 +263,14 @@ func TestUnstructuredSetters(t *testing.T) {
"name": "poda",
"apiVersion": "v1",
"uid": "1",
"controller": (*bool)(nil),
},
{
"kind": "Pod",
"name": "podb",
"apiVersion": "v1",
"uid": "2",
"controller": &trueVar,
},
},
"finalizers": []interface{}{
@@ -303,6 +306,7 @@ func TestUnstructuredSetters(t *testing.T) {
Name: "podb",
APIVersion: "v1",
UID: "2",
Controller: &trueVar,
},
}
unstruct.SetOwnerReferences(newOwnerReferences)