@@ -2712,3 +2712,222 @@ func getAMCPMetaData() metav1.ObjectMeta {
27122712 Namespace : "default" ,
27132713 }
27142714}
2715+
2716+ func TestValidateAMCPVirtualNetwork (t * testing.T ) {
2717+ tests := []struct {
2718+ name string
2719+ amcp * AzureManagedControlPlane
2720+ wantErr string
2721+ }{
2722+ {
2723+ name : "Testing valid VirtualNetwork in same resource group" ,
2724+ amcp : & AzureManagedControlPlane {
2725+ ObjectMeta : metav1.ObjectMeta {
2726+ Name : "fooName" ,
2727+ Labels : map [string ]string {
2728+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2729+ },
2730+ },
2731+ Spec : AzureManagedControlPlaneSpec {
2732+ ResourceGroupName : "rg1" ,
2733+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2734+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2735+ ResourceGroup : "rg1" ,
2736+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2737+ Name : "vnet1" ,
2738+ CIDRBlock : defaultAKSVnetCIDR ,
2739+ Subnet : ManagedControlPlaneSubnet {
2740+ Name : "subnet1" ,
2741+ CIDRBlock : defaultAKSNodeSubnetCIDR ,
2742+ },
2743+ },
2744+ },
2745+ },
2746+ },
2747+ },
2748+ wantErr : "" ,
2749+ },
2750+ {
2751+ name : "Testing valid VirtualNetwork in different resource group" ,
2752+ amcp : & AzureManagedControlPlane {
2753+ ObjectMeta : metav1.ObjectMeta {
2754+ Name : "fooName" ,
2755+ Labels : map [string ]string {
2756+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2757+ },
2758+ },
2759+ Spec : AzureManagedControlPlaneSpec {
2760+ ResourceGroupName : "rg1" ,
2761+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2762+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2763+ ResourceGroup : "rg2" ,
2764+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2765+ Name : "vnet1" ,
2766+ CIDRBlock : defaultAKSVnetCIDR ,
2767+ Subnet : ManagedControlPlaneSubnet {
2768+ Name : "subnet1" ,
2769+ CIDRBlock : defaultAKSNodeSubnetCIDR ,
2770+ },
2771+ },
2772+ },
2773+ },
2774+ },
2775+ },
2776+ wantErr : "" ,
2777+ },
2778+ {
2779+ name : "Testing invalid VirtualNetwork in different resource group: invalid subnet CIDR" ,
2780+ amcp : & AzureManagedControlPlane {
2781+ ObjectMeta : metav1.ObjectMeta {
2782+ Name : "fooName" ,
2783+ Labels : map [string ]string {
2784+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2785+ },
2786+ },
2787+ Spec : AzureManagedControlPlaneSpec {
2788+ ResourceGroupName : "rg1" ,
2789+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2790+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2791+ ResourceGroup : "rg2" ,
2792+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2793+ Name : "vnet1" ,
2794+ CIDRBlock : "10.1.0.0/16" ,
2795+ Subnet : ManagedControlPlaneSubnet {
2796+ Name : "subnet1" ,
2797+ CIDRBlock : "10.0.0.0/24" ,
2798+ },
2799+ },
2800+ },
2801+ },
2802+ },
2803+ },
2804+ wantErr : "pre-existing virtual networks CIDR block should contain the subnet CIDR block" ,
2805+ },
2806+ {
2807+ name : "Testing invalid VirtualNetwork in different resource group: no subnet CIDR" ,
2808+ amcp : & AzureManagedControlPlane {
2809+ ObjectMeta : metav1.ObjectMeta {
2810+ Name : "fooName" ,
2811+ Labels : map [string ]string {
2812+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2813+ },
2814+ },
2815+ Spec : AzureManagedControlPlaneSpec {
2816+ ResourceGroupName : "rg1" ,
2817+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2818+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2819+ ResourceGroup : "rg2" ,
2820+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2821+ Name : "vnet1" ,
2822+ CIDRBlock : "10.1.0.0/16" ,
2823+ Subnet : ManagedControlPlaneSubnet {
2824+ Name : "subnet1" ,
2825+ },
2826+ },
2827+ },
2828+ },
2829+ },
2830+ },
2831+ wantErr : "pre-existing virtual networks CIDR block should contain the subnet CIDR block" ,
2832+ },
2833+ {
2834+ name : "Testing invalid VirtualNetwork in different resource group: no VNet CIDR" ,
2835+ amcp : & AzureManagedControlPlane {
2836+ ObjectMeta : metav1.ObjectMeta {
2837+ Name : "fooName" ,
2838+ Labels : map [string ]string {
2839+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2840+ },
2841+ },
2842+ Spec : AzureManagedControlPlaneSpec {
2843+ ResourceGroupName : "rg1" ,
2844+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2845+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2846+ ResourceGroup : "rg2" ,
2847+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2848+ Name : "vnet1" ,
2849+ Subnet : ManagedControlPlaneSubnet {
2850+ Name : "subnet1" ,
2851+ CIDRBlock : "11.0.0.0/24" ,
2852+ },
2853+ },
2854+ },
2855+ },
2856+ },
2857+ },
2858+ wantErr : "pre-existing virtual networks CIDR block should contain the subnet CIDR block" ,
2859+ },
2860+ {
2861+ name : "Testing invalid VirtualNetwork in different resource group: invalid VNet CIDR" ,
2862+ amcp : & AzureManagedControlPlane {
2863+ ObjectMeta : metav1.ObjectMeta {
2864+ Name : "fooName" ,
2865+ Labels : map [string ]string {
2866+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2867+ },
2868+ },
2869+ Spec : AzureManagedControlPlaneSpec {
2870+ ResourceGroupName : "rg1" ,
2871+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2872+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2873+ ResourceGroup : "rg2" ,
2874+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2875+ Name : "vnet1" ,
2876+ CIDRBlock : "invalid_vnet_CIDR" ,
2877+ Subnet : ManagedControlPlaneSubnet {
2878+ Name : "subnet1" ,
2879+ CIDRBlock : "11.0.0.0/24" ,
2880+ },
2881+ },
2882+ },
2883+ },
2884+ },
2885+ },
2886+ wantErr : "pre-existing virtual networks CIDR block is invalid" ,
2887+ },
2888+ {
2889+ name : "Testing invalid VirtualNetwork in different resource group: invalid Subnet CIDR" ,
2890+ amcp : & AzureManagedControlPlane {
2891+ ObjectMeta : metav1.ObjectMeta {
2892+ Name : "fooName" ,
2893+ Labels : map [string ]string {
2894+ clusterv1 .ClusterNameLabel : "fooCluster" ,
2895+ },
2896+ },
2897+ Spec : AzureManagedControlPlaneSpec {
2898+ ResourceGroupName : "rg1" ,
2899+ AzureManagedControlPlaneClassSpec : AzureManagedControlPlaneClassSpec {
2900+ VirtualNetwork : ManagedControlPlaneVirtualNetwork {
2901+ ResourceGroup : "rg2" ,
2902+ ManagedControlPlaneVirtualNetworkClassSpec : ManagedControlPlaneVirtualNetworkClassSpec {
2903+ Name : "vnet1" ,
2904+ Subnet : ManagedControlPlaneSubnet {
2905+ Name : "subnet1" ,
2906+ CIDRBlock : "invalid_subnet_CIDR" ,
2907+ },
2908+ },
2909+ },
2910+ },
2911+ },
2912+ },
2913+ wantErr : "pre-existing subnets CIDR block is invalid" ,
2914+ },
2915+ }
2916+
2917+ for _ , tc := range tests {
2918+ t .Run (tc .name , func (t * testing.T ) {
2919+ g := NewWithT (t )
2920+ mcpw := & azureManagedControlPlaneWebhook {}
2921+ err := mcpw .Default (context .Background (), tc .amcp )
2922+ g .Expect (err ).NotTo (HaveOccurred ())
2923+
2924+ errs := validateAMCPVirtualNetwork (tc .amcp .Spec .VirtualNetwork , field .NewPath ("spec" , "VirtualNetwork" ))
2925+ if tc .wantErr != "" {
2926+ g .Expect (errs ).ToNot (BeEmpty ())
2927+ g .Expect (errs [0 ].Detail ).To (Equal (tc .wantErr ))
2928+ } else {
2929+ g .Expect (err ).NotTo (HaveOccurred ())
2930+ }
2931+ })
2932+ }
2933+ }
0 commit comments