@@ -254,10 +254,14 @@ func (a *admitTestCase) run(t *testing.T) {
254254
255255func  Test_nodePlugin_Admit (t  * testing.T ) {
256256	var  (
257- 		mynode  =  & user.DefaultInfo {Name : "system:node:mynode" , Groups : []string {"system:nodes" }}
258- 		bob     =  & user.DefaultInfo {Name : "bob" }
257+ 		trueRef  =  true 
258+ 		mynode   =  & user.DefaultInfo {Name : "system:node:mynode" , Groups : []string {"system:nodes" }}
259+ 		bob      =  & user.DefaultInfo {Name : "bob" }
260+ 
261+ 		mynodeObjMeta           =  metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" }
262+ 		mynodeObjMetaOwnerRefA  =  metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" , OwnerReferences : []metav1.OwnerReference {{Name : "fooerA" , Controller : & trueRef }}}
263+ 		mynodeObjMetaOwnerRefB  =  metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" , OwnerReferences : []metav1.OwnerReference {{Name : "fooerB" , Controller : & trueRef }}}
259264
260- 		mynodeObjMeta     =  metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" }
261265		mynodeObj         =  & api.Node {ObjectMeta : mynodeObjMeta }
262266		mynodeObjConfigA  =  & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {ConfigSource : & api.NodeConfigSource {
263267			ConfigMap : & api.ConfigMapNodeConfigSource {
@@ -274,9 +278,11 @@ func Test_nodePlugin_Admit(t *testing.T) {
274278				KubeletConfigKey : "kubelet" ,
275279			}}}}
276280
277- 		mynodeObjTaintA  =  & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "A" }}}}
278- 		mynodeObjTaintB  =  & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "B" }}}}
279- 		othernodeObj     =  & api.Node {ObjectMeta : metav1.ObjectMeta {Name : "othernode" }}
281+ 		mynodeObjTaintA     =  & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "A" }}}}
282+ 		mynodeObjTaintB     =  & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "B" }}}}
283+ 		mynodeObjOwnerRefA  =  & api.Node {ObjectMeta : mynodeObjMetaOwnerRefA }
284+ 		mynodeObjOwnerRefB  =  & api.Node {ObjectMeta : mynodeObjMetaOwnerRefB }
285+ 		othernodeObj        =  & api.Node {ObjectMeta : metav1.ObjectMeta {Name : "othernode" }}
280286
281287		coremymirrorpod , v1mymirrorpod            =  makeTestPod ("ns" , "mymirrorpod" , "mynode" , true )
282288		coreothermirrorpod , v1othermirrorpod      =  makeTestPod ("ns" , "othermirrorpod" , "othernode" , true )
@@ -1167,6 +1173,24 @@ func Test_nodePlugin_Admit(t *testing.T) {
11671173			attributes : admission .NewAttributesRecord (setForbiddenUpdateLabels (mynodeObj , "new" ), setForbiddenUpdateLabels (mynodeObj , "old" ), nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
11681174			err :        `is not allowed to modify labels: foo.node-restriction.kubernetes.io/foo, node-restriction.kubernetes.io/foo, other.k8s.io/foo, other.kubernetes.io/foo` ,
11691175		},
1176+ 		{
1177+ 			name :       "forbid update of my node: add owner reference" ,
1178+ 			podsGetter : existingPods ,
1179+ 			attributes : admission .NewAttributesRecord (mynodeObjOwnerRefA , mynodeObj , nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1180+ 			err :        "node \" mynode\"  is not allowed to modify ownerReferences" ,
1181+ 		},
1182+ 		{
1183+ 			name :       "forbid update of my node: remove owner reference" ,
1184+ 			podsGetter : existingPods ,
1185+ 			attributes : admission .NewAttributesRecord (mynodeObj , mynodeObjOwnerRefA , nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1186+ 			err :        "node \" mynode\"  is not allowed to modify ownerReferences" ,
1187+ 		},
1188+ 		{
1189+ 			name :       "forbid update of my node: change owner reference" ,
1190+ 			podsGetter : existingPods ,
1191+ 			attributes : admission .NewAttributesRecord (mynodeObjOwnerRefA , mynodeObjOwnerRefB , nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1192+ 			err :        "node \" mynode\"  is not allowed to modify ownerReferences" ,
1193+ 		},
11701194
11711195		// Other node object 
11721196		{
0 commit comments