@@ -27,7 +27,9 @@ import (
2727 "sigs.k8s.io/cluster-api-provider-azure/cloud/services/networkinterfaces/mock_networkinterfaces"
2828 "sigs.k8s.io/cluster-api-provider-azure/cloud/services/publicips/mock_publicips"
2929 "sigs.k8s.io/cluster-api-provider-azure/cloud/services/publicloadbalancers/mock_publicloadbalancers"
30+ "sigs.k8s.io/cluster-api-provider-azure/cloud/services/resourceskus/mock_resourceskus"
3031 "sigs.k8s.io/cluster-api-provider-azure/cloud/services/subnets/mock_subnets"
32+ "sigs.k8s.io/cluster-api-provider-azure/internal/test/matchers"
3133
3234 "github.com/Azure/go-autorest/autorest"
3335 "github.com/Azure/go-autorest/autorest/to"
@@ -236,7 +238,8 @@ func TestReconcileNetworkInterface(t *testing.T) {
236238 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
237239 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
238240 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
239- mPublicIP * mock_publicips.MockClientMockRecorder )
241+ mPublicIP * mock_publicips.MockClientMockRecorder ,
242+ mResourceSku * mock_resourceskus.MockClient )
240243 }{
241244 {
242245 name : "get subnets fails" ,
@@ -251,7 +254,8 @@ func TestReconcileNetworkInterface(t *testing.T) {
251254 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
252255 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
253256 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
254- mPublicIP * mock_publicips.MockClientMockRecorder ) {
257+ mPublicIP * mock_publicips.MockClientMockRecorder ,
258+ mResourceSku * mock_resourceskus.MockClient ) {
255259 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).
256260 Return (network.Subnet {}, autorest .NewErrorWithResponse ("" , "" , & http.Response {StatusCode : 500 }, "Internal Server Error" ))
257261 },
@@ -269,7 +273,9 @@ func TestReconcileNetworkInterface(t *testing.T) {
269273 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
270274 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
271275 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
272- mPublicIP * mock_publicips.MockClientMockRecorder ) {
276+ mPublicIP * mock_publicips.MockClientMockRecorder ,
277+ mResourceSku * mock_resourceskus.MockClient ) {
278+ mResourceSku .EXPECT ().HasAcceleratedNetworking (gomock .Any (), gomock .Any ())
273279 gomock .InOrder (
274280 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).
275281 Return (network.Subnet {}, nil ),
@@ -291,7 +297,9 @@ func TestReconcileNetworkInterface(t *testing.T) {
291297 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
292298 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
293299 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
294- mPublicIP * mock_publicips.MockClientMockRecorder ) {
300+ mPublicIP * mock_publicips.MockClientMockRecorder ,
301+ mResourceSku * mock_resourceskus.MockClient ) {
302+ mResourceSku .EXPECT ().HasAcceleratedNetworking (gomock .Any (), gomock .Any ())
295303 gomock .InOrder (
296304 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
297305 m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , gomock .AssignableToTypeOf (network.Interface {})))
@@ -310,7 +318,9 @@ func TestReconcileNetworkInterface(t *testing.T) {
310318 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
311319 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
312320 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
313- mPublicIP * mock_publicips.MockClientMockRecorder ) {
321+ mPublicIP * mock_publicips.MockClientMockRecorder ,
322+ mResourceSku * mock_resourceskus.MockClient ) {
323+ mResourceSku .EXPECT ().HasAcceleratedNetworking (gomock .Any (), gomock .Any ())
314324 gomock .InOrder (
315325 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
316326 m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , gomock .AssignableToTypeOf (network.Interface {})))
@@ -331,7 +341,9 @@ func TestReconcileNetworkInterface(t *testing.T) {
331341 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
332342 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
333343 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
334- mPublicIP * mock_publicips.MockClientMockRecorder ) {
344+ mPublicIP * mock_publicips.MockClientMockRecorder ,
345+ mResourceSku * mock_resourceskus.MockClient ) {
346+ mResourceSku .EXPECT ().HasAcceleratedNetworking (gomock .Any (), gomock .Any ())
335347 gomock .InOrder (
336348 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).
337349 Return (network.Subnet {ID : to .StringPtr ("my-subnet-id" )}, nil ),
@@ -374,9 +386,10 @@ func TestReconcileNetworkInterface(t *testing.T) {
374386 },
375387 },
376388 }}, nil ),
377- m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , network.Interface {
389+ m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , matchers . DiffEq ( network.Interface {
378390 Location : to .StringPtr ("test-location" ),
379391 InterfacePropertiesFormat : & network.InterfacePropertiesFormat {
392+ EnableAcceleratedNetworking : to .BoolPtr (false ),
380393 IPConfigurations : & []network.InterfaceIPConfiguration {
381394 {
382395 Name : to .StringPtr ("pipConfig" ),
@@ -389,7 +402,7 @@ func TestReconcileNetworkInterface(t *testing.T) {
389402 },
390403 },
391404 },
392- }))
405+ })))
393406 },
394407 },
395408 {
@@ -407,7 +420,8 @@ func TestReconcileNetworkInterface(t *testing.T) {
407420 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
408421 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
409422 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
410- mPublicIP * mock_publicips.MockClientMockRecorder ) {
423+ mPublicIP * mock_publicips.MockClientMockRecorder ,
424+ mResourceSku * mock_resourceskus.MockClient ) {
411425 gomock .InOrder (
412426 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
413427 mPublicLoadBalancer .Get (context .TODO (), "my-rg" , "my-publiclb" ).
@@ -429,7 +443,8 @@ func TestReconcileNetworkInterface(t *testing.T) {
429443 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
430444 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
431445 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
432- mPublicIP * mock_publicips.MockClientMockRecorder ) {
446+ mPublicIP * mock_publicips.MockClientMockRecorder ,
447+ mResourceSku * mock_resourceskus.MockClient ) {
433448 gomock .InOrder (
434449 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
435450 mPublicLoadBalancer .Get (context .TODO (), "my-rg" , "my-publiclb" ).Return (network.LoadBalancer {
@@ -493,7 +508,8 @@ func TestReconcileNetworkInterface(t *testing.T) {
493508 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
494509 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
495510 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
496- mPublicIP * mock_publicips.MockClientMockRecorder ) {
511+ mPublicIP * mock_publicips.MockClientMockRecorder ,
512+ mResourceSku * mock_resourceskus.MockClient ) {
497513 gomock .InOrder (
498514 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
499515 mInternalLoadBalancer .Get (context .TODO (), "my-rg" , "my-internal-lb" ).
@@ -514,7 +530,9 @@ func TestReconcileNetworkInterface(t *testing.T) {
514530 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
515531 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
516532 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
517- mPublicIP * mock_publicips.MockClientMockRecorder ) {
533+ mPublicIP * mock_publicips.MockClientMockRecorder ,
534+ mResourceSku * mock_resourceskus.MockClient ) {
535+ mResourceSku .EXPECT ().HasAcceleratedNetworking (gomock .Any (), gomock .Any ())
518536 gomock .InOrder (
519537 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
520538 mPublicIP .CreateOrUpdate (context .TODO (), "my-rg" , "my-public-ip" , gomock .AssignableToTypeOf (network.PublicIPAddress {})),
@@ -536,14 +554,112 @@ func TestReconcileNetworkInterface(t *testing.T) {
536554 mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
537555 mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
538556 mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
539- mPublicIP * mock_publicips.MockClientMockRecorder ) {
557+ mPublicIP * mock_publicips.MockClientMockRecorder ,
558+ mResourceSku * mock_resourceskus.MockClient ) {
540559 gomock .InOrder (
541560 mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
542561 mPublicIP .CreateOrUpdate (context .TODO (), "my-rg" , "my-public-ip" , gomock .AssignableToTypeOf (network.PublicIPAddress {})),
543562 mPublicIP .Get (context .TODO (), "my-rg" , "my-public-ip" ).Return (network.PublicIPAddress {}, autorest .NewErrorWithResponse ("" , "" , & http.Response {StatusCode : 500 }, "Internal Server Error" )),
544563 m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , gomock .AssignableToTypeOf (network.Interface {})))
545564 },
546565 },
566+ {
567+ name : "network interface with accelerated networking successfully created" ,
568+ netInterfaceSpec : Spec {
569+ Name : "my-net-interface" ,
570+ VnetName : "my-vnet" ,
571+ SubnetName : "my-subnet" ,
572+ },
573+ expectedError : "" ,
574+ expect : func (m * mock_networkinterfaces.MockClientMockRecorder ,
575+ mSubnet * mock_subnets.MockClientMockRecorder ,
576+ mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
577+ mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
578+ mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
579+ mPublicIP * mock_publicips.MockClientMockRecorder ,
580+ mResourceSku * mock_resourceskus.MockClient ) {
581+ mResourceSku .EXPECT ().HasAcceleratedNetworking (context .TODO (), gomock .Any ()).Return (true , nil )
582+ gomock .InOrder (
583+ mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
584+ m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , matchers .DiffEq (network.Interface {
585+ Location : to .StringPtr ("test-location" ),
586+ InterfacePropertiesFormat : & network.InterfacePropertiesFormat {
587+ EnableAcceleratedNetworking : to .BoolPtr (true ),
588+ IPConfigurations : & []network.InterfaceIPConfiguration {
589+ {
590+ Name : to .StringPtr ("pipConfig" ),
591+ InterfaceIPConfigurationPropertiesFormat : & network.InterfaceIPConfigurationPropertiesFormat {
592+ Subnet : & network.Subnet {},
593+ PrivateIPAllocationMethod : network .Dynamic ,
594+ LoadBalancerBackendAddressPools : & []network.BackendAddressPool {},
595+ },
596+ },
597+ },
598+ },
599+ })),
600+ )
601+ },
602+ },
603+ {
604+ name : "network interface without accelerated networking successfully created" ,
605+ netInterfaceSpec : Spec {
606+ Name : "my-net-interface" ,
607+ VnetName : "my-vnet" ,
608+ SubnetName : "my-subnet" ,
609+ },
610+ expectedError : "" ,
611+ expect : func (m * mock_networkinterfaces.MockClientMockRecorder ,
612+ mSubnet * mock_subnets.MockClientMockRecorder ,
613+ mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
614+ mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
615+ mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
616+ mPublicIP * mock_publicips.MockClientMockRecorder ,
617+ mResourceSku * mock_resourceskus.MockClient ) {
618+ mResourceSku .EXPECT ().HasAcceleratedNetworking (context .TODO (), gomock .Any ()).Return (false , nil )
619+ gomock .InOrder (
620+ mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
621+ m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , matchers .DiffEq (network.Interface {
622+ Location : to .StringPtr ("test-location" ),
623+ InterfacePropertiesFormat : & network.InterfacePropertiesFormat {
624+ EnableAcceleratedNetworking : to .BoolPtr (false ),
625+ IPConfigurations : & []network.InterfaceIPConfiguration {
626+ {
627+ Name : to .StringPtr ("pipConfig" ),
628+ InterfaceIPConfigurationPropertiesFormat : & network.InterfaceIPConfigurationPropertiesFormat {
629+ Subnet : & network.Subnet {},
630+ PrivateIPAllocationMethod : network .Dynamic ,
631+ LoadBalancerBackendAddressPools : & []network.BackendAddressPool {},
632+ },
633+ },
634+ },
635+ },
636+ })),
637+ )
638+ },
639+ },
640+ {
641+ name : "network interface fails to get accelerated networking capability" ,
642+ netInterfaceSpec : Spec {
643+ Name : "my-net-interface" ,
644+ VnetName : "my-vnet" ,
645+ SubnetName : "my-subnet" ,
646+ },
647+ expectedError : "failed to get accelerated networking capability: #: Internal Server Error: StatusCode=500" ,
648+ expect : func (m * mock_networkinterfaces.MockClientMockRecorder ,
649+ mSubnet * mock_subnets.MockClientMockRecorder ,
650+ mPublicLoadBalancer * mock_publicloadbalancers.MockClientMockRecorder ,
651+ mInboundNATRules * mock_inboundnatrules.MockClientMockRecorder ,
652+ mInternalLoadBalancer * mock_internalloadbalancers.MockClientMockRecorder ,
653+ mPublicIP * mock_publicips.MockClientMockRecorder ,
654+ mResourceSku * mock_resourceskus.MockClient ) {
655+ mResourceSku .EXPECT ().HasAcceleratedNetworking (context .TODO (), gomock .Any ()).Return (
656+ false , autorest .NewErrorWithResponse ("" , "" , & http.Response {StatusCode : 500 }, "Internal Server Error" ))
657+ gomock .InOrder (
658+ mSubnet .Get (context .TODO (), "my-rg" , "my-vnet" , "my-subnet" ).Return (network.Subnet {}, nil ),
659+ m .CreateOrUpdate (context .TODO (), "my-rg" , "my-net-interface" , gomock .AssignableToTypeOf (network.Interface {})),
660+ )
661+ },
662+ },
547663 }
548664
549665 for _ , tc := range testcases {
@@ -555,6 +671,7 @@ func TestReconcileNetworkInterface(t *testing.T) {
555671 inboundNatRulesMock := mock_inboundnatrules .NewMockClient (mockCtrl )
556672 internalLoadBalancerMock := mock_internalloadbalancers .NewMockClient (mockCtrl )
557673 publicIPsMock := mock_publicips .NewMockClient (mockCtrl )
674+ resourceSkusMock := mock_resourceskus .NewMockClient (mockCtrl )
558675
559676 cluster := & clusterv1.Cluster {
560677 ObjectMeta : metav1.ObjectMeta {Name : "test-cluster" },
@@ -613,7 +730,8 @@ func TestReconcileNetworkInterface(t *testing.T) {
613730
614731 tc .expect (netInterfaceMock .EXPECT (), subnetMock .EXPECT (),
615732 publicLoadBalancerMock .EXPECT (), inboundNatRulesMock .EXPECT (),
616- internalLoadBalancerMock .EXPECT (), publicIPsMock .EXPECT ())
733+ internalLoadBalancerMock .EXPECT (), publicIPsMock .EXPECT (),
734+ resourceSkusMock )
617735
618736 s := & Service {
619737 Scope : clusterScope ,
@@ -624,6 +742,7 @@ func TestReconcileNetworkInterface(t *testing.T) {
624742 InboundNATRulesClient : inboundNatRulesMock ,
625743 InternalLoadBalancersClient : internalLoadBalancerMock ,
626744 PublicIPsClient : publicIPsMock ,
745+ ResourceSkusClient : resourceSkusMock ,
627746 }
628747
629748 err = s .Reconcile (context .TODO (), & tc .netInterfaceSpec )
0 commit comments