@@ -1197,7 +1197,16 @@ var _ = framework.SIGDescribe("node")("DRA", feature.DynamicResourceAllocation,
11971197 })
11981198
11991199 // Messages from test-driver/deploy/example/plugin-permissions.yaml
1200- matchVAPDeniedError := gomega .MatchError (gomega .ContainSubstring ("may only modify resourceslices that belong to the node the pod is running on" ))
1200+ matchVAPDeniedError := func (nodeName string , slice * resourceapi.ResourceSlice ) types.GomegaMatcher {
1201+ subStr := fmt .Sprintf ("this user running on node '%s' may not modify " , nodeName )
1202+ switch {
1203+ case slice .Spec .NodeName != "" :
1204+ subStr += fmt .Sprintf ("resourceslices on node '%s'" , slice .Spec .NodeName )
1205+ default :
1206+ subStr += "cluster resourceslices"
1207+ }
1208+ return gomega .MatchError (gomega .ContainSubstring (subStr ))
1209+ }
12011210 mustCreate := func (clientSet kubernetes.Interface , clientName string , slice * resourceapi.ResourceSlice ) * resourceapi.ResourceSlice {
12021211 ginkgo .GinkgoHelper ()
12031212 slice , err := clientSet .ResourceV1alpha3 ().ResourceSlices ().Create (ctx , slice , metav1.CreateOptions {})
@@ -1237,17 +1246,17 @@ var _ = framework.SIGDescribe("node")("DRA", feature.DynamicResourceAllocation,
12371246 }
12381247
12391248 // Create with different clients, keep it in the end.
1240- mustFailToCreate (realNodeClient , "real plugin" , fictionalNodeSlice , matchVAPDeniedError )
1249+ mustFailToCreate (realNodeClient , "real plugin" , fictionalNodeSlice , matchVAPDeniedError ( realNodeName , fictionalNodeSlice ) )
12411250 mustCreateAndDelete (fictionalNodeClient , "fictional plugin" , fictionalNodeSlice )
12421251 createdFictionalNodeSlice := mustCreate (f .ClientSet , "admin" , fictionalNodeSlice )
12431252
12441253 // Update with different clients.
1245- mustFailToUpdate (realNodeClient , "real plugin" , createdFictionalNodeSlice , matchVAPDeniedError )
1254+ mustFailToUpdate (realNodeClient , "real plugin" , createdFictionalNodeSlice , matchVAPDeniedError ( realNodeName , createdFictionalNodeSlice ) )
12461255 createdFictionalNodeSlice = mustUpdate (fictionalNodeClient , "fictional plugin" , createdFictionalNodeSlice )
12471256 createdFictionalNodeSlice = mustUpdate (f .ClientSet , "admin" , createdFictionalNodeSlice )
12481257
12491258 // Delete with different clients.
1250- mustFailToDelete (realNodeClient , "real plugin" , createdFictionalNodeSlice , matchVAPDeniedError )
1259+ mustFailToDelete (realNodeClient , "real plugin" , createdFictionalNodeSlice , matchVAPDeniedError ( realNodeName , createdFictionalNodeSlice ) )
12511260 mustDelete (fictionalNodeClient , "fictional plugin" , createdFictionalNodeSlice )
12521261
12531262 // Now the same for a slice which is not associated with a node.
@@ -1272,18 +1281,18 @@ var _ = framework.SIGDescribe("node")("DRA", feature.DynamicResourceAllocation,
12721281 })
12731282
12741283 // Create with different clients, keep it in the end.
1275- mustFailToCreate (realNodeClient , "real plugin" , clusterSlice , matchVAPDeniedError )
1276- mustFailToCreate (fictionalNodeClient , "fictional plugin" , clusterSlice , matchVAPDeniedError )
1284+ mustFailToCreate (realNodeClient , "real plugin" , clusterSlice , matchVAPDeniedError ( realNodeName , clusterSlice ) )
1285+ mustFailToCreate (fictionalNodeClient , "fictional plugin" , clusterSlice , matchVAPDeniedError ( fictionalNodeName , clusterSlice ) )
12771286 createdClusterSlice := mustCreate (f .ClientSet , "admin" , clusterSlice )
12781287
12791288 // Update with different clients.
1280- mustFailToUpdate (realNodeClient , "real plugin" , createdClusterSlice , matchVAPDeniedError )
1281- mustFailToUpdate (fictionalNodeClient , "fictional plugin" , createdClusterSlice , matchVAPDeniedError )
1289+ mustFailToUpdate (realNodeClient , "real plugin" , createdClusterSlice , matchVAPDeniedError ( realNodeName , createdClusterSlice ) )
1290+ mustFailToUpdate (fictionalNodeClient , "fictional plugin" , createdClusterSlice , matchVAPDeniedError ( fictionalNodeName , createdClusterSlice ) )
12821291 createdClusterSlice = mustUpdate (f .ClientSet , "admin" , createdClusterSlice )
12831292
12841293 // Delete with different clients.
1285- mustFailToDelete (realNodeClient , "real plugin" , createdClusterSlice , matchVAPDeniedError )
1286- mustFailToDelete (fictionalNodeClient , "fictional plugin" , createdClusterSlice , matchVAPDeniedError )
1294+ mustFailToDelete (realNodeClient , "real plugin" , createdClusterSlice , matchVAPDeniedError ( realNodeName , createdClusterSlice ) )
1295+ mustFailToDelete (fictionalNodeClient , "fictional plugin" , createdClusterSlice , matchVAPDeniedError ( fictionalNodeName , createdClusterSlice ) )
12871296 mustDelete (f .ClientSet , "admin" , createdClusterSlice )
12881297 })
12891298
0 commit comments