@@ -242,50 +242,165 @@ func TestAPIServerHost(t *testing.T) {
242242}
243243
244244func TestGettingSecurityRules (t * testing.T ) {
245- g := NewWithT (t )
246-
247- cluster := & clusterv1.Cluster {
248- ObjectMeta : metav1.ObjectMeta {
249- Name : "my-cluster" ,
250- Namespace : "default" ,
245+ tests := []struct {
246+ name string
247+ cluster * clusterv1.Cluster
248+ azureCluster * infrav1.AzureCluster
249+ expectedRuleCount int
250+ }{
251+ {
252+ name : "default control plane subnet with no rules should have 2 security rules defaulted" ,
253+ cluster : & clusterv1.Cluster {
254+ ObjectMeta : metav1.ObjectMeta {
255+ Name : "my-cluster" ,
256+ Namespace : "default" ,
257+ },
258+ },
259+ azureCluster : & infrav1.AzureCluster {
260+ ObjectMeta : metav1.ObjectMeta {
261+ Name : "my-azure-cluster" ,
262+ },
263+ Spec : infrav1.AzureClusterSpec {
264+ AzureClusterClassSpec : infrav1.AzureClusterClassSpec {
265+ SubscriptionID : "123" ,
266+ IdentityRef : & corev1.ObjectReference {
267+ Kind : infrav1 .AzureClusterIdentityKind ,
268+ },
269+ },
270+ ControlPlaneEnabled : true ,
271+ NetworkSpec : infrav1.NetworkSpec {
272+ Subnets : infrav1.Subnets {
273+ {
274+ SubnetClassSpec : infrav1.SubnetClassSpec {
275+ Role : infrav1 .SubnetNode ,
276+ Name : "node" ,
277+ },
278+ },
279+ },
280+ },
281+ },
282+ },
283+ expectedRuleCount : 2 ,
251284 },
252- }
253-
254- azureCluster := & infrav1.AzureCluster {
255- ObjectMeta : metav1.ObjectMeta {
256- Name : "my-azure-cluster" ,
285+ {
286+ name : "additional rules are preserved" ,
287+ cluster : & clusterv1.Cluster {
288+ ObjectMeta : metav1.ObjectMeta {
289+ Name : "my-cluster" ,
290+ Namespace : "default" ,
291+ },
292+ },
293+ azureCluster : & infrav1.AzureCluster {
294+ ObjectMeta : metav1.ObjectMeta {
295+ Name : "my-azure-cluster" ,
296+ },
297+ Spec : infrav1.AzureClusterSpec {
298+ AzureClusterClassSpec : infrav1.AzureClusterClassSpec {
299+ SubscriptionID : "123" ,
300+ IdentityRef : & corev1.ObjectReference {
301+ Kind : infrav1 .AzureClusterIdentityKind ,
302+ },
303+ },
304+ ControlPlaneEnabled : true ,
305+ NetworkSpec : infrav1.NetworkSpec {
306+ Subnets : infrav1.Subnets {
307+ {
308+ SecurityGroup : infrav1.SecurityGroup {
309+ SecurityGroupClass : infrav1.SecurityGroupClass {
310+ SecurityRules : []infrav1.SecurityRule {{
311+ Name : "allow_9345" ,
312+ Description : "Allow port 9345" ,
313+ Priority : 2200 ,
314+ Protocol : infrav1 .SecurityGroupProtocolTCP ,
315+ Direction : infrav1 .SecurityRuleDirectionInbound ,
316+ Source : ptr .To ("*" ),
317+ SourcePorts : ptr .To ("*" ),
318+ Destination : ptr .To ("*" ),
319+ DestinationPorts : ptr .To ("9345" ),
320+ Action : infrav1 .SecurityRuleActionAllow ,
321+ }},
322+ },
323+ },
324+ SubnetClassSpec : infrav1.SubnetClassSpec {
325+ Role : infrav1 .SubnetControlPlane ,
326+ Name : string (infrav1 .SubnetControlPlane ),
327+ },
328+ },
329+ },
330+ },
331+ },
332+ },
333+ expectedRuleCount : 3 ,
257334 },
258- Spec : infrav1.AzureClusterSpec {
259- AzureClusterClassSpec : infrav1.AzureClusterClassSpec {
260- SubscriptionID : "123" ,
261- IdentityRef : & corev1.ObjectReference {
262- Kind : infrav1 .AzureClusterIdentityKind ,
335+ {
336+ name : "override rules are accepted" ,
337+ cluster : & clusterv1.Cluster {
338+ ObjectMeta : metav1.ObjectMeta {
339+ Name : "my-cluster" ,
340+ Namespace : "default" ,
263341 },
264342 },
265- ControlPlaneEnabled : true ,
266- NetworkSpec : infrav1.NetworkSpec {
267- Subnets : infrav1.Subnets {
268- {
269- SubnetClassSpec : infrav1.SubnetClassSpec {
270- Role : infrav1 .SubnetNode ,
271- Name : "node" ,
343+ azureCluster : & infrav1.AzureCluster {
344+ ObjectMeta : metav1.ObjectMeta {
345+ Name : "my-azure-cluster" ,
346+ },
347+ Spec : infrav1.AzureClusterSpec {
348+ AzureClusterClassSpec : infrav1.AzureClusterClassSpec {
349+ SubscriptionID : "123" ,
350+ IdentityRef : & corev1.ObjectReference {
351+ Kind : infrav1 .AzureClusterIdentityKind ,
352+ },
353+ },
354+ ControlPlaneEnabled : true ,
355+ NetworkSpec : infrav1.NetworkSpec {
356+ Subnets : infrav1.Subnets {
357+ {
358+ SecurityGroup : infrav1.SecurityGroup {
359+ SecurityGroupClass : infrav1.SecurityGroupClass {
360+ SecurityRules : []infrav1.SecurityRule {{
361+ Name : "deny_ssh" ,
362+ Description : "Deny SSH" ,
363+ Priority : 2200 ,
364+ Protocol : infrav1 .SecurityGroupProtocolTCP ,
365+ Direction : infrav1 .SecurityRuleDirectionInbound ,
366+ Source : ptr .To ("*" ),
367+ SourcePorts : ptr .To ("*" ),
368+ Destination : ptr .To ("*" ),
369+ DestinationPorts : ptr .To ("22" ),
370+ Action : infrav1 .SecurityRuleActionDeny ,
371+ }},
372+ },
373+ },
374+ SubnetClassSpec : infrav1.SubnetClassSpec {
375+ Role : infrav1 .SubnetControlPlane ,
376+ Name : string (infrav1 .SubnetControlPlane ),
377+ },
378+ },
272379 },
273380 },
274381 },
275382 },
383+ expectedRuleCount : 2 ,
276384 },
277385 }
278- azureCluster .Default ()
279386
280- clusterScope := & ClusterScope {
281- Cluster : cluster ,
282- AzureCluster : azureCluster ,
283- }
284- clusterScope .SetControlPlaneSecurityRules ()
387+ for _ , tt := range tests {
388+ t .Run (tt .name , func (t * testing.T ) {
389+ g := NewWithT (t )
285390
286- subnet , err := clusterScope .AzureCluster .Spec .NetworkSpec .GetControlPlaneSubnet ()
287- g .Expect (err ).NotTo (HaveOccurred ())
288- g .Expect (subnet .SecurityGroup .SecurityRules ).To (HaveLen (2 ))
391+ tt .azureCluster .Default ()
392+
393+ clusterScope := & ClusterScope {
394+ Cluster : tt .cluster ,
395+ AzureCluster : tt .azureCluster ,
396+ }
397+ clusterScope .SetControlPlaneSecurityRules ()
398+
399+ subnet , err := clusterScope .AzureCluster .Spec .NetworkSpec .GetControlPlaneSubnet ()
400+ g .Expect (err ).NotTo (HaveOccurred ())
401+ g .Expect (subnet .SecurityGroup .SecurityRules ).To (HaveLen (tt .expectedRuleCount ))
402+ })
403+ }
289404}
290405
291406func TestPublicIPSpecs (t * testing.T ) {
0 commit comments