@@ -260,10 +260,14 @@ func (a *admitTestCase) run(t *testing.T) {
260
260
261
261
func Test_nodePlugin_Admit (t * testing.T ) {
262
262
var (
263
- mynode = & user.DefaultInfo {Name : "system:node:mynode" , Groups : []string {"system:nodes" }}
264
- bob = & user.DefaultInfo {Name : "bob" }
263
+ trueRef = true
264
+ mynode = & user.DefaultInfo {Name : "system:node:mynode" , Groups : []string {"system:nodes" }}
265
+ bob = & user.DefaultInfo {Name : "bob" }
266
+
267
+ mynodeObjMeta = metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" }
268
+ mynodeObjMetaOwnerRefA = metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" , OwnerReferences : []metav1.OwnerReference {{Name : "fooerA" , Controller : & trueRef }}}
269
+ mynodeObjMetaOwnerRefB = metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" , OwnerReferences : []metav1.OwnerReference {{Name : "fooerB" , Controller : & trueRef }}}
265
270
266
- mynodeObjMeta = metav1.ObjectMeta {Name : "mynode" , UID : "mynode-uid" }
267
271
mynodeObj = & api.Node {ObjectMeta : mynodeObjMeta }
268
272
mynodeObjConfigA = & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {ConfigSource : & api.NodeConfigSource {
269
273
ConfigMap : & api.ConfigMapNodeConfigSource {
@@ -280,9 +284,11 @@ func Test_nodePlugin_Admit(t *testing.T) {
280
284
KubeletConfigKey : "kubelet" ,
281
285
}}}}
282
286
283
- mynodeObjTaintA = & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "A" }}}}
284
- mynodeObjTaintB = & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "B" }}}}
285
- othernodeObj = & api.Node {ObjectMeta : metav1.ObjectMeta {Name : "othernode" }}
287
+ mynodeObjTaintA = & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "A" }}}}
288
+ mynodeObjTaintB = & api.Node {ObjectMeta : mynodeObjMeta , Spec : api.NodeSpec {Taints : []api.Taint {{Key : "mykey" , Value : "B" }}}}
289
+ mynodeObjOwnerRefA = & api.Node {ObjectMeta : mynodeObjMetaOwnerRefA }
290
+ mynodeObjOwnerRefB = & api.Node {ObjectMeta : mynodeObjMetaOwnerRefB }
291
+ othernodeObj = & api.Node {ObjectMeta : metav1.ObjectMeta {Name : "othernode" }}
286
292
287
293
coremymirrorpod , v1mymirrorpod = makeTestPod ("ns" , "mymirrorpod" , "mynode" , true )
288
294
coreothermirrorpod , v1othermirrorpod = makeTestPod ("ns" , "othermirrorpod" , "othernode" , true )
@@ -1222,6 +1228,24 @@ func Test_nodePlugin_Admit(t *testing.T) {
1222
1228
attributes : admission .NewAttributesRecord (setForbiddenUpdateLabels (mynodeObj , "new" ), setForbiddenUpdateLabels (mynodeObj , "old" ), nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1223
1229
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` ,
1224
1230
},
1231
+ {
1232
+ name : "forbid update of my node: add owner reference" ,
1233
+ podsGetter : existingPods ,
1234
+ attributes : admission .NewAttributesRecord (mynodeObjOwnerRefA , mynodeObj , nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1235
+ err : "node \" mynode\" is not allowed to modify ownerReferences" ,
1236
+ },
1237
+ {
1238
+ name : "forbid update of my node: remove owner reference" ,
1239
+ podsGetter : existingPods ,
1240
+ attributes : admission .NewAttributesRecord (mynodeObj , mynodeObjOwnerRefA , nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1241
+ err : "node \" mynode\" is not allowed to modify ownerReferences" ,
1242
+ },
1243
+ {
1244
+ name : "forbid update of my node: change owner reference" ,
1245
+ podsGetter : existingPods ,
1246
+ attributes : admission .NewAttributesRecord (mynodeObjOwnerRefA , mynodeObjOwnerRefB , nodeKind , mynodeObj .Namespace , mynodeObj .Name , nodeResource , "" , admission .Update , & metav1.UpdateOptions {}, false , mynode ),
1247
+ err : "node \" mynode\" is not allowed to modify ownerReferences" ,
1248
+ },
1225
1249
1226
1250
// Other node object
1227
1251
{
0 commit comments