Skip to content

Commit 6b3e5e9

Browse files
committed
add uts
1 parent 76bb6a9 commit 6b3e5e9

File tree

1 file changed

+189
-0
lines changed

1 file changed

+189
-0
lines changed

cloud/scope/powervs_cluster_test.go

+189
Original file line numberDiff line numberDiff line change
@@ -1765,6 +1765,74 @@ func TestCreateLoadbalancer(t *testing.T) {
17651765
}, nil, nil)
17661766
mockgt.EXPECT().AttachTag(gomock.Any()).Return(nil, nil, nil)
17671767

1768+
loadBalancerStatus, err := clusterScope.createLoadBalancer(lb)
1769+
g.Expect(err).To(BeNil())
1770+
g.Expect(loadBalancerStatus.State).To(BeEquivalentTo(infrav1beta2.VPCLoadBalancerStateActive))
1771+
g.Expect(loadBalancerStatus.ControllerCreated).To(Equal(ptr.To(true)))
1772+
g.Expect(loadBalancerStatus.Hostname).To(Equal(ptr.To("test-lb-hostname")))
1773+
})
1774+
t.Run("When IBMVPCClient client CreateLoadBalancer successfully creates load balancer in cloud but tagging load balancer fails", func(*testing.T) {
1775+
g := NewWithT(t)
1776+
setup(t)
1777+
t.Cleanup(teardown)
1778+
1779+
clusterAPIServerPort := int32(9090)
1780+
clusterScope := PowerVSClusterScope{
1781+
IBMVPCClient: mockVpc,
1782+
GlobalTaggingClient: mockgt,
1783+
IBMPowerVSCluster: &infrav1beta2.IBMPowerVSCluster{
1784+
Spec: infrav1beta2.IBMPowerVSClusterSpec{
1785+
1786+
ResourceGroup: &infrav1beta2.IBMPowerVSResourceReference{
1787+
ID: ptr.To("test-resource-gid"),
1788+
},
1789+
LoadBalancers: []infrav1beta2.VPCLoadBalancerSpec{
1790+
{
1791+
Name: "test-lb",
1792+
ID: nil,
1793+
},
1794+
},
1795+
VPCSubnets: []infrav1beta2.Subnet{
1796+
{
1797+
Name: ptr.To("test-subnet"),
1798+
ID: ptr.To("test-subnetid"),
1799+
},
1800+
},
1801+
},
1802+
Status: infrav1beta2.IBMPowerVSClusterStatus{
1803+
VPCSubnet: map[string]infrav1beta2.ResourceReference{
1804+
"test-subnet": {
1805+
ID: ptr.To("test-resource-reference-id"),
1806+
},
1807+
},
1808+
},
1809+
},
1810+
Cluster: &capiv1beta1.Cluster{
1811+
Spec: capiv1beta1.ClusterSpec{
1812+
ClusterNetwork: &capiv1beta1.ClusterNetwork{
1813+
APIServerPort: &clusterAPIServerPort,
1814+
},
1815+
},
1816+
},
1817+
}
1818+
1819+
lb := infrav1beta2.VPCLoadBalancerSpec{
1820+
Name: "test-lb",
1821+
AdditionalListeners: []infrav1beta2.AdditionalListenerSpec{
1822+
{
1823+
Port: int64(9090),
1824+
},
1825+
},
1826+
}
1827+
1828+
mockVpc.EXPECT().CreateLoadBalancer(gomock.Any()).Return(&vpcv1.LoadBalancer{
1829+
ID: ptr.To("test-lb-id"),
1830+
ProvisioningStatus: ptr.To("active"),
1831+
Hostname: ptr.To("test-lb-hostname"),
1832+
CRN: ptr.To("lb-crn"),
1833+
}, nil, nil)
1834+
mockgt.EXPECT().AttachTag(gomock.Any()).Return(nil, nil, fmt.Errorf("failed to tag load balancer"))
1835+
17681836
loadBalancerStatus, err := clusterScope.createLoadBalancer(lb)
17691837
g.Expect(err).To(BeNil())
17701838
g.Expect(loadBalancerStatus.State).To(BeEquivalentTo(infrav1beta2.VPCLoadBalancerStateActive))
@@ -2750,6 +2818,28 @@ func TestPowerVSScopeCreateVPC(t *testing.T) {
27502818
g.Expect(vpcID).To(Equal(vpcOutput.ID))
27512819
})
27522820

2821+
t.Run("When create VPC is successful but tagging vpc fails", func(t *testing.T) {
2822+
g := NewWithT(t)
2823+
setup(t)
2824+
t.Cleanup(teardown)
2825+
2826+
clusterScope := PowerVSClusterScope{
2827+
IBMVPCClient: mockVPC,
2828+
GlobalTaggingClient: mockgt,
2829+
Cluster: &capiv1beta1.Cluster{Spec: capiv1beta1.ClusterSpec{ClusterNetwork: nil}},
2830+
IBMPowerVSCluster: &infrav1beta2.IBMPowerVSCluster{Spec: infrav1beta2.IBMPowerVSClusterSpec{
2831+
ResourceGroup: &infrav1beta2.IBMPowerVSResourceReference{ID: ptr.To("resourceGroupID")}}},
2832+
}
2833+
vpcOutput := &vpcv1.VPC{Name: ptr.To("VPCName"), ID: ptr.To("vpcID"), DefaultSecurityGroup: &vpcv1.SecurityGroupReference{ID: ptr.To("DefaultSecurityGroupID")}}
2834+
mockVPC.EXPECT().CreateVPC(gomock.Any()).Return(vpcOutput, nil, nil)
2835+
mockgt.EXPECT().AttachTag(gomock.Any()).Return(nil, nil, fmt.Errorf("AttachTag returns error"))
2836+
mockVPC.EXPECT().CreateSecurityGroupRule(gomock.Any()).Return(nil, nil, nil)
2837+
2838+
vpcID, err := clusterScope.createVPC()
2839+
g.Expect(err).To(BeNil())
2840+
g.Expect(vpcID).To(Equal(vpcOutput.ID))
2841+
})
2842+
27532843
t.Run("When resourceGroupID is not nil and CreateSecurityGroupRule returns error", func(t *testing.T) {
27542844
g := NewWithT(t)
27552845
setup(t)
@@ -4083,6 +4173,31 @@ func TestCreateVPCSubnet(t *testing.T) {
40834173
g.Expect(subnetID).To(Equal(subnet1Details.ID))
40844174
g.Expect(err).To(BeNil())
40854175
})
4176+
t.Run("When createVPCSubnet returns success but tagging subnet fails", func(t *testing.T) {
4177+
g := NewWithT(t)
4178+
setup(t)
4179+
t.Cleanup(teardown)
4180+
4181+
clusterScope := PowerVSClusterScope{
4182+
Cluster: &capiv1beta1.Cluster{},
4183+
IBMVPCClient: mockVPC,
4184+
GlobalTaggingClient: mockgt,
4185+
IBMPowerVSCluster: &infrav1beta2.IBMPowerVSCluster{
4186+
Spec: infrav1beta2.IBMPowerVSClusterSpec{
4187+
ResourceGroup: &infrav1beta2.IBMPowerVSResourceReference{ID: ptr.To("resourceGroupID")},
4188+
},
4189+
Status: infrav1beta2.IBMPowerVSClusterStatus{VPC: &infrav1beta2.ResourceReference{ID: ptr.To("vpcID")}},
4190+
},
4191+
}
4192+
subnet := infrav1beta2.Subnet{Name: ptr.To("ClusterName-vpcsubnet-eu-de-1"), Zone: ptr.To("eu-de-1")}
4193+
subnet1Details := &vpcv1.Subnet{ID: ptr.To("subnet1ID"), Name: ptr.To("ClusterName-vpcsubnet-eu-de-1"), CRN: ptr.To("subnet-crn")}
4194+
4195+
mockVPC.EXPECT().CreateSubnet(gomock.Any()).Return(subnet1Details, nil, nil)
4196+
mockgt.EXPECT().AttachTag(gomock.Any()).Return(nil, nil, fmt.Errorf("error attching subnet"))
4197+
subnetID, err := clusterScope.createVPCSubnet(subnet)
4198+
g.Expect(subnetID).To(Equal(subnet1Details.ID))
4199+
g.Expect(err).To(BeNil())
4200+
})
40864201
t.Run("When zone is not set and createVPCSubnet returns success", func(t *testing.T) {
40874202
g := NewWithT(t)
40884203
setup(t)
@@ -7263,6 +7378,53 @@ func TestCreateTransitGateway(t *testing.T) {
72637378
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.VPCConnection.ControllerCreated).To(BeTrue())
72647379
g.Expect(err).To(BeNil())
72657380
})
7381+
7382+
t.Run("When TransitGateway is created but tagging TransitGateway fails", func(t *testing.T) {
7383+
g := NewWithT(t)
7384+
setup(t)
7385+
t.Cleanup(teardown)
7386+
7387+
clusterScope := PowerVSClusterScope{
7388+
Cluster: &capiv1beta1.Cluster{},
7389+
TransitGatewayClient: mockTransitGateway,
7390+
IBMVPCClient: mockVPC,
7391+
ResourceClient: mockResourceController,
7392+
GlobalTaggingClient: mockgt,
7393+
IBMPowerVSCluster: &infrav1beta2.IBMPowerVSCluster{
7394+
Spec: infrav1beta2.IBMPowerVSClusterSpec{
7395+
TransitGateway: &infrav1beta2.TransitGateway{
7396+
GlobalRouting: ptr.To(true),
7397+
},
7398+
ResourceGroup: &infrav1beta2.IBMPowerVSResourceReference{ID: ptr.To("resourceGroupID")},
7399+
Zone: ptr.To("zone-ID"),
7400+
VPC: &infrav1beta2.VPCResourceReference{Region: ptr.To("region")},
7401+
},
7402+
Status: infrav1beta2.IBMPowerVSClusterStatus{
7403+
ServiceInstance: &infrav1beta2.ResourceReference{
7404+
ID: ptr.To("serviceInstanceID"),
7405+
},
7406+
VPC: &infrav1beta2.ResourceReference{
7407+
ID: ptr.To("vpcID"),
7408+
},
7409+
},
7410+
},
7411+
}
7412+
7413+
mockTransitGateway.EXPECT().CreateTransitGateway(gomock.Any()).Return(&tgapiv1.TransitGateway{ID: ptr.To("transitGatewayID"), Name: ptr.To("transitGatewayName"), Status: ptr.To(string(infrav1beta2.TransitGatewayStateAvailable))}, nil, nil)
7414+
mockgt.EXPECT().AttachTag(gomock.Any()).Return(nil, nil, fmt.Errorf("failed to tag transitGateway"))
7415+
mockVPC.EXPECT().GetVPC(gomock.Any()).Return(&vpcv1.VPC{CRN: ptr.To("crn")}, nil, nil)
7416+
mockResourceController.EXPECT().GetResourceInstance(gomock.Any()).Return(&resourcecontrollerv2.ResourceInstance{CRN: ptr.To("crn")}, nil, nil)
7417+
mockTransitGateway.EXPECT().CreateTransitGatewayConnection(gomock.Any()).Return(&tgapiv1.TransitGatewayConnectionCust{ID: ptr.To("pvs-connID")}, nil, nil)
7418+
mockTransitGateway.EXPECT().CreateTransitGatewayConnection(gomock.Any()).Return(&tgapiv1.TransitGatewayConnectionCust{ID: ptr.To("vpc-connID")}, nil, nil)
7419+
err := clusterScope.createTransitGateway()
7420+
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.ID).To(BeEquivalentTo("transitGatewayID"))
7421+
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.ControllerCreated).To(BeTrue())
7422+
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.PowerVSConnection.ID).To(BeEquivalentTo("pvs-connID"))
7423+
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.PowerVSConnection.ControllerCreated).To(BeTrue())
7424+
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.VPCConnection.ID).To(BeEquivalentTo("vpc-connID"))
7425+
g.Expect(*clusterScope.IBMPowerVSCluster.Status.TransitGateway.VPCConnection.ControllerCreated).To(BeTrue())
7426+
g.Expect(err).To(BeNil())
7427+
})
72667428
}
72677429

72687430
func makePowerVSClusterScope(mockTransitGateway *tgmock.MockTransitGateway, mockVPC *mock.MockVpc, mockResourceController *mockRC.MockResourceController) PowerVSClusterScope {
@@ -9621,6 +9783,33 @@ func TestCreateVPCSecurityGroup(t *testing.T) {
96219783
g.Expect(*sg).To(BeEquivalentTo("securityGroupID"))
96229784
g.Expect(err).To(BeNil())
96239785
})
9786+
9787+
t.Run("When SecurityGroup is created successfully but tagging SecurityGroup fails", func(t *testing.T) {
9788+
g := NewWithT(t)
9789+
setup(t)
9790+
t.Cleanup(teardown)
9791+
clusterScope := PowerVSClusterScope{
9792+
Cluster: &capiv1beta1.Cluster{},
9793+
IBMVPCClient: mockVPC,
9794+
GlobalTaggingClient: mockgt,
9795+
IBMPowerVSCluster: &infrav1beta2.IBMPowerVSCluster{
9796+
Spec: infrav1beta2.IBMPowerVSClusterSpec{
9797+
VPCSecurityGroups: append([]infrav1beta2.VPCSecurityGroup{}, infrav1beta2.VPCSecurityGroup{
9798+
Name: ptr.To("securityGroupName"),
9799+
}),
9800+
ResourceGroup: &infrav1beta2.IBMPowerVSResourceReference{
9801+
ID: ptr.To("resourceGroupID"),
9802+
},
9803+
},
9804+
},
9805+
}
9806+
9807+
mockVPC.EXPECT().CreateSecurityGroup(gomock.Any()).Return(&vpcv1.SecurityGroup{ID: ptr.To("securityGroupID"), CRN: ptr.To("sg-crn")}, nil, nil)
9808+
mockgt.EXPECT().AttachTag(gomock.Any()).Return(nil, nil, fmt.Errorf("failed to tag SecurityGroup"))
9809+
sg, err := clusterScope.createVPCSecurityGroup(clusterScope.IBMPowerVSCluster.Spec.VPCSecurityGroups[0])
9810+
g.Expect(*sg).To(BeEquivalentTo("securityGroupID"))
9811+
g.Expect(err).To(BeNil())
9812+
})
96249813
t.Run("When SecurityGroup returns error", func(t *testing.T) {
96259814
g := NewWithT(t)
96269815
setup(t)

0 commit comments

Comments
 (0)