@@ -2674,3 +2674,284 @@ func TestFailureDomains(t *testing.T) {
26742674 })
26752675 }
26762676}
2677+
2678+ func TestClusterScope_LBSpecs (t * testing.T ) {
2679+ tests := []struct {
2680+ name string
2681+ azureCluster * infrav1.AzureCluster
2682+ want []azure.ResourceSpecGetter
2683+ }{
2684+ {
2685+ name : "API Server LB, Control Plane Oubound LB, and Node Outbound LB" ,
2686+ azureCluster : & infrav1.AzureCluster {
2687+ ObjectMeta : metav1.ObjectMeta {
2688+ Name : "my-cluster" ,
2689+ },
2690+ Spec : infrav1.AzureClusterSpec {
2691+ AzureClusterClassSpec : infrav1.AzureClusterClassSpec {
2692+ AdditionalTags : infrav1.Tags {
2693+ "foo" : "bar" ,
2694+ },
2695+ SubscriptionID : "123" ,
2696+ Location : "westus2" ,
2697+ },
2698+ ResourceGroup : "my-rg" ,
2699+ NetworkSpec : infrav1.NetworkSpec {
2700+ Vnet : infrav1.VnetSpec {
2701+ Name : "my-vnet" ,
2702+ ResourceGroup : "my-rg" ,
2703+ },
2704+ Subnets : []infrav1.SubnetSpec {
2705+ {
2706+ SubnetClassSpec : infrav1.SubnetClassSpec {
2707+ Name : "cp-subnet" ,
2708+ Role : infrav1 .SubnetControlPlane ,
2709+ },
2710+ },
2711+ {
2712+ SubnetClassSpec : infrav1.SubnetClassSpec {
2713+ Name : "node-subnet" ,
2714+ Role : infrav1 .SubnetNode ,
2715+ },
2716+ },
2717+ },
2718+ APIServerLB : infrav1.LoadBalancerSpec {
2719+ Name : "api-server-lb" ,
2720+ BackendPool : infrav1.BackendPool {
2721+ Name : "api-server-lb-backend-pool" ,
2722+ },
2723+ LoadBalancerClassSpec : infrav1.LoadBalancerClassSpec {
2724+ Type : infrav1 .Public ,
2725+ IdleTimeoutInMinutes : pointer .Int32 (30 ),
2726+ SKU : infrav1 .SKUStandard ,
2727+ },
2728+ FrontendIPs : []infrav1.FrontendIP {
2729+ {
2730+ Name : "api-server-lb-frontend-ip" ,
2731+ PublicIP : & infrav1.PublicIPSpec {
2732+ Name : "api-server-lb-frontend-ip" ,
2733+ },
2734+ },
2735+ },
2736+ },
2737+ ControlPlaneOutboundLB : & infrav1.LoadBalancerSpec {
2738+ Name : "cp-outbound-lb" ,
2739+ BackendPool : infrav1.BackendPool {
2740+ Name : "cp-outbound-backend-pool" ,
2741+ },
2742+ LoadBalancerClassSpec : infrav1.LoadBalancerClassSpec {
2743+ Type : infrav1 .Public ,
2744+ IdleTimeoutInMinutes : pointer .Int32 (15 ),
2745+ SKU : infrav1 .SKUStandard ,
2746+ },
2747+ FrontendIPs : []infrav1.FrontendIP {
2748+ {
2749+ Name : "cp-outbound-lb-frontend-ip" ,
2750+ PublicIP : & infrav1.PublicIPSpec {
2751+ Name : "cp-outbound-lb-frontend-ip" ,
2752+ },
2753+ },
2754+ },
2755+ },
2756+ NodeOutboundLB : & infrav1.LoadBalancerSpec {
2757+ Name : "node-outbound-lb" ,
2758+ BackendPool : infrav1.BackendPool {
2759+ Name : "node-outbound-backend-pool" ,
2760+ },
2761+ LoadBalancerClassSpec : infrav1.LoadBalancerClassSpec {
2762+ Type : infrav1 .Public ,
2763+ IdleTimeoutInMinutes : pointer .Int32 (50 ),
2764+ SKU : infrav1 .SKUStandard ,
2765+ },
2766+ FrontendIPs : []infrav1.FrontendIP {
2767+ {
2768+ Name : "node-outbound-lb-frontend-ip" ,
2769+ PublicIP : & infrav1.PublicIPSpec {
2770+ Name : "node-outbound-lb-frontend-ip" ,
2771+ },
2772+ },
2773+ },
2774+ },
2775+ },
2776+ },
2777+ },
2778+ want : []azure.ResourceSpecGetter {
2779+ & loadbalancers.LBSpec {
2780+ Name : "api-server-lb" ,
2781+ ResourceGroup : "my-rg" ,
2782+ SubscriptionID : "123" ,
2783+ ClusterName : "my-cluster" ,
2784+ Location : "westus2" ,
2785+ VNetName : "my-vnet" ,
2786+ VNetResourceGroup : "my-rg" ,
2787+ SubnetName : "cp-subnet" ,
2788+ FrontendIPConfigs : []infrav1.FrontendIP {
2789+ {
2790+ Name : "api-server-lb-frontend-ip" ,
2791+ PublicIP : & infrav1.PublicIPSpec {
2792+ Name : "api-server-lb-frontend-ip" ,
2793+ },
2794+ },
2795+ },
2796+ APIServerPort : 6443 ,
2797+ Type : infrav1 .Public ,
2798+ SKU : infrav1 .SKUStandard ,
2799+ Role : infrav1 .APIServerRole ,
2800+ BackendPoolName : "api-server-lb-backend-pool" ,
2801+ IdleTimeoutInMinutes : pointer .Int32 (30 ),
2802+ AdditionalTags : infrav1.Tags {
2803+ "foo" : "bar" ,
2804+ },
2805+ },
2806+ & loadbalancers.LBSpec {
2807+ Name : "node-outbound-lb" ,
2808+ ResourceGroup : "my-rg" ,
2809+ SubscriptionID : "123" ,
2810+ ClusterName : "my-cluster" ,
2811+ Location : "westus2" ,
2812+ VNetName : "my-vnet" ,
2813+ VNetResourceGroup : "my-rg" ,
2814+ FrontendIPConfigs : []infrav1.FrontendIP {
2815+ {
2816+ Name : "node-outbound-lb-frontend-ip" ,
2817+ PublicIP : & infrav1.PublicIPSpec {
2818+ Name : "node-outbound-lb-frontend-ip" ,
2819+ },
2820+ },
2821+ },
2822+ Type : infrav1 .Public ,
2823+ SKU : infrav1 .SKUStandard ,
2824+ Role : infrav1 .NodeOutboundRole ,
2825+ BackendPoolName : "node-outbound-backend-pool" ,
2826+ IdleTimeoutInMinutes : pointer .Int32 (50 ),
2827+ AdditionalTags : infrav1.Tags {
2828+ "foo" : "bar" ,
2829+ },
2830+ },
2831+ & loadbalancers.LBSpec {
2832+ Name : "cp-outbound-lb" ,
2833+ ResourceGroup : "my-rg" ,
2834+ SubscriptionID : "123" ,
2835+ ClusterName : "my-cluster" ,
2836+ Location : "westus2" ,
2837+ VNetName : "my-vnet" ,
2838+ VNetResourceGroup : "my-rg" ,
2839+ FrontendIPConfigs : []infrav1.FrontendIP {
2840+ {
2841+ Name : "cp-outbound-lb-frontend-ip" ,
2842+ PublicIP : & infrav1.PublicIPSpec {
2843+ Name : "cp-outbound-lb-frontend-ip" ,
2844+ },
2845+ },
2846+ },
2847+ Type : infrav1 .Public ,
2848+ SKU : infrav1 .SKUStandard ,
2849+ BackendPoolName : "cp-outbound-backend-pool" ,
2850+ IdleTimeoutInMinutes : pointer .Int32 (15 ),
2851+ Role : infrav1 .ControlPlaneOutboundRole ,
2852+ AdditionalTags : infrav1.Tags {
2853+ "foo" : "bar" ,
2854+ },
2855+ },
2856+ },
2857+ },
2858+ {
2859+ name : "Private API Server LB" ,
2860+ azureCluster : & infrav1.AzureCluster {
2861+ ObjectMeta : metav1.ObjectMeta {
2862+ Name : "my-cluster" ,
2863+ },
2864+ Spec : infrav1.AzureClusterSpec {
2865+ AzureClusterClassSpec : infrav1.AzureClusterClassSpec {
2866+ SubscriptionID : "123" ,
2867+ Location : "westus2" ,
2868+ },
2869+ ResourceGroup : "my-rg" ,
2870+ NetworkSpec : infrav1.NetworkSpec {
2871+ Vnet : infrav1.VnetSpec {
2872+ Name : "my-vnet" ,
2873+ ResourceGroup : "my-rg" ,
2874+ },
2875+ Subnets : []infrav1.SubnetSpec {
2876+ {
2877+ SubnetClassSpec : infrav1.SubnetClassSpec {
2878+ Name : "cp-subnet" ,
2879+ Role : infrav1 .SubnetControlPlane ,
2880+ },
2881+ },
2882+ {
2883+ SubnetClassSpec : infrav1.SubnetClassSpec {
2884+ Name : "node-subnet" ,
2885+ Role : infrav1 .SubnetNode ,
2886+ },
2887+ },
2888+ },
2889+ APIServerLB : infrav1.LoadBalancerSpec {
2890+ Name : "api-server-lb" ,
2891+ BackendPool : infrav1.BackendPool {
2892+ Name : "api-server-lb-backend-pool" ,
2893+ },
2894+ LoadBalancerClassSpec : infrav1.LoadBalancerClassSpec {
2895+ Type : infrav1 .Internal ,
2896+ IdleTimeoutInMinutes : pointer .Int32 (30 ),
2897+ SKU : infrav1 .SKUStandard ,
2898+ },
2899+ },
2900+ },
2901+ },
2902+ },
2903+ want : []azure.ResourceSpecGetter {
2904+ & loadbalancers.LBSpec {
2905+ Name : "api-server-lb" ,
2906+ ResourceGroup : "my-rg" ,
2907+ SubscriptionID : "123" ,
2908+ ClusterName : "my-cluster" ,
2909+ Location : "westus2" ,
2910+ VNetName : "my-vnet" ,
2911+ VNetResourceGroup : "my-rg" ,
2912+ SubnetName : "cp-subnet" ,
2913+ APIServerPort : 6443 ,
2914+ Type : infrav1 .Internal ,
2915+ SKU : infrav1 .SKUStandard ,
2916+ Role : infrav1 .APIServerRole ,
2917+ BackendPoolName : "api-server-lb-backend-pool" ,
2918+ IdleTimeoutInMinutes : pointer .Int32 (30 ),
2919+ AdditionalTags : infrav1.Tags {},
2920+ },
2921+ },
2922+ },
2923+ }
2924+ for _ , tc := range tests {
2925+ tc := tc
2926+ t .Run (tc .name , func (t * testing.T ) {
2927+ t .Parallel ()
2928+ g := NewWithT (t )
2929+ scheme := runtime .NewScheme ()
2930+ _ = infrav1 .AddToScheme (scheme )
2931+ _ = clusterv1 .AddToScheme (scheme )
2932+
2933+ cluster := & clusterv1.Cluster {
2934+ ObjectMeta : metav1.ObjectMeta {
2935+ Name : tc .azureCluster .Name ,
2936+ Namespace : "default" ,
2937+ },
2938+ }
2939+
2940+ initObjects := []runtime.Object {cluster , tc .azureCluster }
2941+ fakeClient := fake .NewClientBuilder ().WithScheme (scheme ).WithRuntimeObjects (initObjects ... ).Build ()
2942+
2943+ clusterScope , err := NewClusterScope (context .TODO (), ClusterScopeParams {
2944+ AzureClients : AzureClients {
2945+ Authorizer : autorest.NullAuthorizer {},
2946+ },
2947+ Cluster : cluster ,
2948+ AzureCluster : tc .azureCluster ,
2949+ Client : fakeClient ,
2950+ })
2951+ g .Expect (err ).NotTo (HaveOccurred ())
2952+ if got := clusterScope .LBSpecs (); ! reflect .DeepEqual (got , tc .want ) {
2953+ t .Errorf ("LBSpecs() diff between expected result and actual result (%v): %s" , got , cmp .Diff (tc .want , got ))
2954+ }
2955+ })
2956+ }
2957+ }
0 commit comments