@@ -45,19 +45,53 @@ var managedByLabelMap = map[string]string{
4545}
4646
4747// Helper functions for creating managed resources
48- func createManagedNamespace (name string ) * corev1.Namespace {
48+ func createUnmanagedNamespace (name string ) * corev1.Namespace {
4949 return & corev1.Namespace {
5050 ObjectMeta : metav1.ObjectMeta {
51- Name : name ,
52- Labels : managedByLabelMap ,
51+ Name : name ,
5352 },
5453 }
5554}
55+ func createManagedNamespace (name string ) * corev1.Namespace {
56+ ns := createUnmanagedNamespace (name )
57+ ns .Labels = managedByLabelMap
58+ return ns
59+ }
5660
57- func createUnmanagedNamespace ( name string ) * corev1.Namespace {
58- return & corev1.Namespace {
61+ func createManagedResourceQuota ( ns , name string ) * corev1.ResourceQuota {
62+ return & corev1.ResourceQuota {
5963 ObjectMeta : metav1.ObjectMeta {
60- Name : name ,
64+ Name : name ,
65+ Namespace : ns ,
66+ Labels : managedByLabelMap ,
67+ },
68+ }
69+ }
70+
71+ func createManagedNetworkPolicy (ns , name string ) * networkingv1.NetworkPolicy {
72+ return & networkingv1.NetworkPolicy {
73+ ObjectMeta : metav1.ObjectMeta {
74+ Name : name ,
75+ Namespace : ns ,
76+ Labels : managedByLabelMap ,
77+ },
78+ }
79+ }
80+
81+ func createManagedCRP (name string ) * placementv1beta1.ClusterResourcePlacement {
82+ return & placementv1beta1.ClusterResourcePlacement {
83+ ObjectMeta : metav1.ObjectMeta {
84+ Name : name ,
85+ Labels : managedByLabelMap ,
86+ },
87+ Spec : placementv1beta1.PlacementSpec {
88+ ResourceSelectors : []placementv1beta1.ResourceSelectorTerm {
89+ {
90+ Group : "" ,
91+ Version : "v1" ,
92+ Kind : "Namespace" ,
93+ },
94+ },
6195 },
6296 }
6397}
@@ -175,6 +209,67 @@ var _ = Describe("ValidatingAdmissionPolicy for Managed Resources", Label("manag
175209 }, eventuallyDuration , workloadEventuallyDuration ).Should (Succeed ())
176210 })
177211
212+ Context ("For other resources in scope" , func () {
213+
214+ It ("should deny creating managed resource quotas" , func () {
215+ rq := createManagedResourceQuota ("default" , "default" )
216+ err := notMasterUser .Create (ctx , rq )
217+ expectDeniedByVAP (err )
218+ })
219+
220+ It ("should deny creating managed network policy" , func () {
221+ np := createManagedNetworkPolicy ("default" , "default" )
222+ err := notMasterUser .Create (ctx , np )
223+ expectDeniedByVAP (err )
224+ })
225+
226+ It ("should deny creating managed CRP" , func () {
227+ crp := createManagedCRP ("test-crp" )
228+ err := notMasterUser .Create (ctx , crp )
229+ expectDeniedByVAP (err )
230+ })
231+
232+ It ("general expected behavior of other resources" , func () {
233+ rq := createManagedResourceQuota ("default" , "default" )
234+ np := createManagedNetworkPolicy ("default" , "default" )
235+ crp := createManagedCRP ("test-crp" )
236+ err := sysMastersClient .Create (ctx , rq )
237+ Expect (err ).To (BeNil (), "system:masters user should create managed ResourceQuota" )
238+ err = sysMastersClient .Create (ctx , np )
239+ Expect (err ).To (BeNil (), "system:masters user should create managed NetworkPolicy" )
240+ err = sysMastersClient .Create (ctx , crp )
241+ Expect (err ).To (BeNil (), "system:masters user should create managed CRP" )
242+
243+ var updateErr error
244+ Eventually (func () error {
245+ var urq corev1.ResourceQuota
246+ if err := sysMastersClient .Get (ctx , types.NamespacedName {Name : "default" , Namespace : "default" }, & urq ); err != nil {
247+ return err
248+ }
249+ urq .Annotations = map [string ]string {"test" : "annotation" }
250+ By ("expecting denial of UPDATE operation on managed namespace" )
251+ updateErr = notMasterUser .Update (ctx , & urq )
252+ if k8sErrors .IsConflict (updateErr ) {
253+ return updateErr
254+ }
255+ return nil
256+ }, eventuallyDuration , workloadEventuallyDuration ).Should (Succeed ())
257+ expectDeniedByVAP (updateErr )
258+
259+ err = notMasterUser .Delete (ctx , np )
260+ expectDeniedByVAP (err )
261+ err = notMasterUser .Delete (ctx , crp )
262+ expectDeniedByVAP (err )
263+
264+ err = sysMastersClient .Delete (ctx , rq )
265+ Expect (err ).To (BeNil (), "system:masters user should create managed ResourceQuota" )
266+ err = sysMastersClient .Delete (ctx , np )
267+ Expect (err ).To (BeNil (), "system:masters user should create managed NetworkPolicy" )
268+ err = sysMastersClient .Delete (ctx , crp )
269+ Expect (err ).To (BeNil (), "system:masters user should create managed CRP" )
270+ })
271+ })
272+
178273 AfterAll (func () {
179274 err := sysMastersClient .Delete (ctx , managedNS )
180275 if err != nil {
@@ -183,65 +278,4 @@ var _ = Describe("ValidatingAdmissionPolicy for Managed Resources", Label("manag
183278 })
184279 })
185280
186- Context ("For other resources in scope" , func () {
187- It ("should deny creating managed resource quotas" , func () {
188- Eventually (func () error {
189- rq := corev1.ResourceQuota {
190- ObjectMeta : metav1.ObjectMeta {
191- Name : "default" ,
192- Namespace : "default" ,
193- Labels : managedByLabelMap ,
194- },
195- }
196- err := notMasterUser .Create (ctx , & rq )
197- if k8sErrors .IsConflict (err ) {
198- return err
199- }
200- expectDeniedByVAP (err )
201- return nil
202- }, eventuallyDuration , workloadEventuallyDuration ).Should (Succeed ())
203- })
204- It ("should deny creating managed network policy" , func () {
205- Eventually (func () error {
206- np := networkingv1.NetworkPolicy {
207- ObjectMeta : metav1.ObjectMeta {
208- Name : "default" ,
209- Namespace : "default" ,
210- Labels : managedByLabelMap ,
211- },
212- }
213- err := notMasterUser .Create (ctx , & np )
214- if k8sErrors .IsConflict (err ) {
215- return err
216- }
217- expectDeniedByVAP (err )
218- return nil
219- }, eventuallyDuration , workloadEventuallyDuration ).Should (Succeed ())
220- })
221- It ("should deny creating managed CRP" , func () {
222- Eventually (func () error {
223- crp := placementv1beta1.ClusterResourcePlacement {
224- ObjectMeta : metav1.ObjectMeta {
225- Name : "managedcrp" ,
226- Labels : managedByLabelMap ,
227- },
228- Spec : placementv1beta1.PlacementSpec {
229- ResourceSelectors : []placementv1beta1.ClusterResourceSelector {
230- {
231- Group : "" ,
232- Version : "v1" ,
233- Kind : "Namespace" ,
234- },
235- },
236- },
237- }
238- err := notMasterUser .Create (ctx , & crp )
239- if k8sErrors .IsConflict (err ) {
240- return err
241- }
242- expectDeniedByVAP (err )
243- return nil
244- }, eventuallyDuration , workloadEventuallyDuration ).Should (Succeed ())
245- })
246- })
247281})
0 commit comments