Skip to content

Commit c663fa4

Browse files
committed
Cover missing code and address review comments
1 parent 6aa452c commit c663fa4

File tree

1 file changed

+53
-95
lines changed

1 file changed

+53
-95
lines changed

cloud/scope/powervs_cluster_test.go

Lines changed: 53 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,9 @@ func TestReconcilePowerVSServiceInstance(t *testing.T) {
11151115
t.Cleanup(teardown)
11161116

11171117
clusterScopeParams := getPowerVSClusterScopeParams()
1118-
clusterScopeParams.ResourceControllerFactory = func() (resourcecontroller.ResourceController, error) {
1119-
mockResourceController.EXPECT().GetResourceInstance(gomock.Any()).Return(nil, nil, errors.New("failed to get resource instance"))
1120-
return mockResourceController, nil
1118+
clusterScopeParams.PowerVSClientFactory = func() (powervs.PowerVS, error) {
1119+
mockPowerVS.EXPECT().GetDHCPServer(gomock.Any()).Return(nil, fmt.Errorf("GetDHCPServer error"))
1120+
return mockPowerVS, nil
11211121
}
11221122
clusterScope, err := NewPowerVSClusterScope(clusterScopeParams)
11231123
g.Expect(err).To(BeNil())
@@ -1127,39 +1127,33 @@ func TestReconcilePowerVSServiceInstance(t *testing.T) {
11271127
g.Expect(err).ToNot(BeNil())
11281128
g.Expect(requeue).To(BeFalse())
11291129
})
1130-
1131-
t.Run("When service instance id is set and GetResourceInstance returns nil", func(t *testing.T) {
1130+
t.Run("When DHCPServer exists and is active", func(t *testing.T) {
11321131
g := NewWithT(t)
11331132
setup(t)
11341133
t.Cleanup(teardown)
11351134

11361135
clusterScopeParams := getPowerVSClusterScopeParams()
1137-
clusterScopeParams.ResourceControllerFactory = func() (resourcecontroller.ResourceController, error) {
1138-
mockResourceController.EXPECT().GetResourceInstance(gomock.Any()).Return(nil, nil, nil)
1139-
return mockResourceController, nil
1136+
clusterScopeParams.PowerVSClientFactory = func() (powervs.PowerVS, error) {
1137+
dhcpServer := &models.DHCPServerDetail{ID: ptr.To("dhcpID"), Status: ptr.To(string(infrav1beta2.DHCPServerStateActive))}
1138+
mockPowerVS.EXPECT().GetDHCPServer(gomock.Any()).Return(dhcpServer, nil)
1139+
return mockPowerVS, nil
11401140
}
1141-
clusterScope, err := NewPowerVSClusterScope(clusterScopeParams)
1142-
g.Expect(err).To(BeNil())
1143-
clusterScope.IBMPowerVSCluster.Spec.ServiceInstanceID = serviceInstanceID
1141+
clusterScope, _ := NewPowerVSClusterScope(clusterScopeParams)
11441142

1145-
requeue, err := clusterScope.ReconcilePowerVSServiceInstance()
1146-
g.Expect(err).ToNot(BeNil())
1143+
requeue, err := clusterScope.ReconcileNetwork()
1144+
g.Expect(err).To(BeNil())
11471145
g.Expect(requeue).To(BeFalse())
11481146
})
1149-
1150-
t.Run("When service instance id is set and instance in failed state", func(t *testing.T) {
1147+
t.Run("When DHCPID is empty and GetNetworkByID returns error ", func(t *testing.T) {
11511148
g := NewWithT(t)
11521149
setup(t)
11531150
t.Cleanup(teardown)
11541151

11551152
clusterScopeParams := getPowerVSClusterScopeParams()
1156-
clusterScopeParams.ResourceControllerFactory = func() (resourcecontroller.ResourceController, error) {
1157-
instance := &resourcecontrollerv2.ResourceInstance{
1158-
Name: ptr.To("test-instance"),
1159-
State: ptr.To("failed"),
1160-
}
1161-
mockResourceController.EXPECT().GetResourceInstance(gomock.Any()).Return(instance, nil, nil)
1162-
return mockResourceController, nil
1153+
clusterScopeParams.PowerVSClientFactory = func() (powervs.PowerVS, error) {
1154+
network := &models.Network{}
1155+
mockPowerVS.EXPECT().GetNetworkByID(gomock.Any()).Return(network, fmt.Errorf("GetNetworkByID error"))
1156+
return mockPowerVS, nil
11631157
}
11641158
clusterScope, err := NewPowerVSClusterScope(clusterScopeParams)
11651159
g.Expect(err).To(BeNil())
@@ -1170,30 +1164,50 @@ func TestReconcilePowerVSServiceInstance(t *testing.T) {
11701164
g.Expect(requeue).To(BeFalse())
11711165
})
11721166

1173-
t.Run("When service instance id is set and instance in active state", func(t *testing.T) {
1167+
t.Run("When service instance id is set and instance in failed state", func(t *testing.T) {
11741168
g := NewWithT(t)
11751169
setup(t)
11761170
t.Cleanup(teardown)
1177-
1171+
network := &models.Network{NetworkID: ptr.To("networkID")}
11781172
clusterScopeParams := getPowerVSClusterScopeParams()
1179-
clusterScopeParams.ResourceControllerFactory = func() (resourcecontroller.ResourceController, error) {
1180-
instance := &resourcecontrollerv2.ResourceInstance{
1181-
Name: ptr.To("test-instance"),
1182-
State: ptr.To("active"),
1183-
}
1184-
mockResourceController.EXPECT().GetResourceInstance(gomock.Any()).Return(instance, nil, nil)
1185-
return mockResourceController, nil
1173+
clusterScopeParams.PowerVSClientFactory = func() (powervs.PowerVS, error) {
1174+
mockPowerVS.EXPECT().GetNetworkByID(gomock.Any()).Return(network, nil)
1175+
return mockPowerVS, nil
11861176
}
11871177
clusterScope, err := NewPowerVSClusterScope(clusterScopeParams)
11881178
g.Expect(err).To(BeNil())
11891179
clusterScope.IBMPowerVSCluster.Spec.ServiceInstanceID = serviceInstanceID
11901180

1191-
requeue, err := clusterScope.ReconcilePowerVSServiceInstance()
1181+
requeue, err := clusterScope.ReconcileNetwork()
1182+
g.Expect(clusterScope.IBMPowerVSCluster.Status.Network.ID).To(Equal(network.NetworkID))
11921183
g.Expect(err).To(BeNil())
11931184
g.Expect(requeue).To(BeFalse())
11941185
})
1186+
t.Run("When DHCPID is empty and GetNetworkByName returns empty network", func(t *testing.T) {
1187+
g := NewWithT(t)
1188+
setup(t)
1189+
t.Cleanup(teardown)
11951190

1196-
t.Run("When isServiceInstanceExists returns error", func(t *testing.T) {
1191+
network := &models.NetworkReference{}
1192+
dhcpNetwork := &models.DHCPServerNetwork{ID: ptr.To("dhcpNetworkID")}
1193+
dhcpServer := &models.DHCPServer{ID: ptr.To("dhcpID"), Network: dhcpNetwork}
1194+
clusterScopeParams := getPowerVSClusterScopeParams()
1195+
clusterScopeParams.PowerVSClientFactory = func() (powervs.PowerVS, error) {
1196+
mockPowerVS.EXPECT().GetNetworkByName(gomock.Any()).Return(network, nil)
1197+
mockPowerVS.EXPECT().CreateDHCPServer(gomock.Any()).Return(dhcpServer, nil)
1198+
return mockPowerVS, nil
1199+
}
1200+
clusterScopeParams.IBMPowerVSCluster.Spec.DHCPServer.ID = nil
1201+
clusterScope, _ := NewPowerVSClusterScope(clusterScopeParams)
1202+
1203+
requeue, err := clusterScope.ReconcileNetwork()
1204+
g.Expect(clusterScope.IBMPowerVSCluster.Status.DHCPServer.ID).To(Equal(dhcpServer.ID))
1205+
g.Expect(clusterScope.IBMPowerVSCluster.Status.Network.ID).To(Equal(dhcpNetwork.ID))
1206+
g.Expect(err).To(BeNil())
1207+
g.Expect(requeue).To(BeTrue())
1208+
1209+
})
1210+
t.Run("When DHCPID is empty and checkNetwork returns empty network ID", func(t *testing.T) {
11971211
g := NewWithT(t)
11981212
setup(t)
11991213
t.Cleanup(teardown)
@@ -1302,73 +1316,17 @@ func TestReconcilePowerVSServiceInstance(t *testing.T) {
13021316
g.Expect(*clusterScope.IBMPowerVSCluster.Status.ServiceInstance.ID).To(Equal("instance-GUID"))
13031317
g.Expect(*clusterScope.IBMPowerVSCluster.Status.ServiceInstance.ControllerCreated).To(BeTrue())
13041318
})
1305-
}
1306-
1307-
func TestCheckServiceInstanceState(t *testing.T) {
1308-
testCases := []struct {
1309-
name string
1310-
requeue bool
1311-
expectedErr error
1312-
instance resourcecontrollerv2.ResourceInstance
1313-
}{
1314-
{
1315-
name: "Service instance is in active state",
1316-
instance: resourcecontrollerv2.ResourceInstance{Name: ptr.To("instance"), State: ptr.To("active")},
1317-
},
1318-
{
1319-
name: "Service instance is in provisioning state",
1320-
instance: resourcecontrollerv2.ResourceInstance{Name: ptr.To("instance"), State: ptr.To("provisioning")},
1321-
requeue: true,
1322-
},
1323-
{
1324-
name: "Service instance is in failed state",
1325-
instance: resourcecontrollerv2.ResourceInstance{Name: ptr.To("instance"), State: ptr.To("failed")},
1326-
expectedErr: fmt.Errorf("PowerVS service instance is in failed state"),
1327-
},
1328-
{
1329-
name: "Service instance is in unknown state",
1330-
instance: resourcecontrollerv2.ResourceInstance{Name: ptr.To("instance"), State: ptr.To("unknown")},
1331-
expectedErr: fmt.Errorf("PowerVS service instance is in unknown state"),
1332-
},
1333-
}
1334-
1335-
for _, tc := range testCases {
1336-
g := NewWithT(t)
1337-
t.Run(tc.name, func(_ *testing.T) {
1338-
clusterScope := PowerVSClusterScope{}
1339-
requeue, err := clusterScope.checkServiceInstanceState(tc.instance)
1340-
g.Expect(requeue).To(Equal(tc.requeue))
1341-
if tc.expectedErr != nil {
1342-
g.Expect(err).To(Equal(tc.expectedErr))
1343-
} else {
1344-
g.Expect(err).To(BeNil())
1345-
}
1346-
})
1347-
}
1348-
}
1349-
1350-
func TestIsServiceInstanceExists(t *testing.T) {
1351-
var (
1352-
mockResourceController *mockRC.MockResourceController
1353-
mockCtrl *gomock.Controller
1354-
)
1355-
setup := func(t *testing.T) {
1356-
t.Helper()
1357-
mockCtrl = gomock.NewController(t)
1358-
mockResourceController = mockRC.NewMockResourceController(mockCtrl)
1359-
}
1360-
teardown := func() {
1361-
mockCtrl.Finish()
1362-
}
1363-
t.Run("When get service instance returns error", func(t *testing.T) {
1319+
t.Run("When DHCPID and networkID is not empty and createDHCPServer returns error", func(t *testing.T) {
13641320
g := NewWithT(t)
13651321
setup(t)
13661322
t.Cleanup(teardown)
13671323

13681324
clusterScopeParams := getPowerVSClusterScopeParams()
1369-
clusterScopeParams.ResourceControllerFactory = func() (resourcecontroller.ResourceController, error) {
1370-
mockResourceController.EXPECT().GetServiceInstance(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, errors.New("failed to get service instance"))
1371-
return mockResourceController, nil
1325+
clusterScopeParams.PowerVSClientFactory = func() (powervs.PowerVS, error) {
1326+
network := &models.Network{}
1327+
mockPowerVS.EXPECT().GetNetworkByID(gomock.Any()).Return(network, nil)
1328+
mockPowerVS.EXPECT().CreateDHCPServer(gomock.Any()).Return(nil, fmt.Errorf("CreateDHCPServer error"))
1329+
return mockPowerVS, nil
13721330
}
13731331
clusterScope, err := NewPowerVSClusterScope(clusterScopeParams)
13741332
g.Expect(err).To(BeNil())

0 commit comments

Comments
 (0)