Skip to content

Commit 3532816

Browse files
committed
Fix default node offerings saved for Kubernetes clusters
1 parent d02adcd commit 3532816

2 files changed

Lines changed: 62 additions & 9 deletions

File tree

‎plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,6 +1442,15 @@ protected void validateServiceOfferingsForNodeTypesScale(Map<String, Long> map,
14421442
}
14431443
}
14441444

1445+
protected void setNodeServiceOfferingIds(KubernetesClusterVO cluster, Map<String, Long> serviceOfferingNodeTypeMap) {
1446+
Long defaultServiceOfferingId = cluster.getServiceOfferingId();
1447+
cluster.setWorkerNodeServiceOfferingId(serviceOfferingNodeTypeMap.getOrDefault(WORKER.name(), defaultServiceOfferingId));
1448+
cluster.setControlNodeServiceOfferingId(serviceOfferingNodeTypeMap.getOrDefault(CONTROL.name(), defaultServiceOfferingId));
1449+
if (cluster.getEtcdNodeCount() > 0) {
1450+
cluster.setEtcdNodeServiceOfferingId(serviceOfferingNodeTypeMap.getOrDefault(ETCD.name(), defaultServiceOfferingId));
1451+
}
1452+
}
1453+
14451454
private Long getExistingServiceOfferingIdForNodeType(String key, KubernetesClusterVO kubernetesCluster) {
14461455
if (key.equalsIgnoreCase(WORKER.name())) {
14471456
return kubernetesCluster.getWorkerNodeServiceOfferingId();
@@ -1674,19 +1683,11 @@ public KubernetesClusterVO doInTransaction(TransactionStatus status) {
16741683
cniConfigDetails = cmd.getCniConfigDetails().toString();
16751684
}
16761685
newCluster.setCniConfigDetails(cniConfigDetails);
1677-
if (serviceOfferingNodeTypeMap.containsKey(WORKER.name())) {
1678-
newCluster.setWorkerNodeServiceOfferingId(serviceOfferingNodeTypeMap.get(WORKER.name()));
1679-
}
1680-
if (serviceOfferingNodeTypeMap.containsKey(CONTROL.name())) {
1681-
newCluster.setControlNodeServiceOfferingId(serviceOfferingNodeTypeMap.get(CONTROL.name()));
1682-
}
16831686
if (etcdNodes > 0) {
16841687
newCluster.setEtcdNodeTemplateId(etcdNodeTemplate.getId());
16851688
newCluster.setEtcdNodeCount(etcdNodes);
1686-
if (serviceOfferingNodeTypeMap.containsKey(ETCD.name())) {
1687-
newCluster.setEtcdNodeServiceOfferingId(serviceOfferingNodeTypeMap.get(ETCD.name()));
1688-
}
16891689
}
1690+
setNodeServiceOfferingIds(newCluster, serviceOfferingNodeTypeMap);
16901691
newCluster.setWorkerNodeTemplateId(workerNodeTemplate.getId());
16911692
newCluster.setControlNodeTemplateId(controlNodeTemplate.getId());
16921693
if (zone.isSecurityGroupEnabled()) {

‎plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImplTest.java‎

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,58 @@ public class KubernetesClusterManagerImplTest {
107107
@InjectMocks
108108
KubernetesClusterManagerImpl kubernetesClusterManager;
109109

110+
@Test
111+
public void testSetNodeServiceOfferingIdsWithDefaultOffering() {
112+
KubernetesClusterVO cluster = new KubernetesClusterVO();
113+
cluster.setServiceOfferingId(1L);
114+
115+
kubernetesClusterManager.setNodeServiceOfferingIds(cluster, Collections.emptyMap());
116+
117+
Assert.assertEquals(Long.valueOf(1L), cluster.getWorkerNodeServiceOfferingId());
118+
Assert.assertEquals(Long.valueOf(1L), cluster.getControlNodeServiceOfferingId());
119+
Assert.assertNull(cluster.getEtcdNodeServiceOfferingId());
120+
}
121+
122+
@Test
123+
public void testSetNodeServiceOfferingIdsWithPartialOverrides() {
124+
KubernetesClusterVO cluster = new KubernetesClusterVO();
125+
cluster.setServiceOfferingId(1L);
126+
cluster.setEtcdNodeCount(3L);
127+
128+
kubernetesClusterManager.setNodeServiceOfferingIds(cluster, Map.of(WORKER.name(), 2L));
129+
130+
Assert.assertEquals(Long.valueOf(2L), cluster.getWorkerNodeServiceOfferingId());
131+
Assert.assertEquals(Long.valueOf(1L), cluster.getControlNodeServiceOfferingId());
132+
Assert.assertEquals(Long.valueOf(1L), cluster.getEtcdNodeServiceOfferingId());
133+
}
134+
135+
@Test
136+
public void testSetNodeServiceOfferingIdsWithOnlyExplicitOfferings() {
137+
KubernetesClusterVO cluster = new KubernetesClusterVO();
138+
cluster.setEtcdNodeCount(3L);
139+
140+
kubernetesClusterManager.setNodeServiceOfferingIds(cluster,
141+
Map.of(WORKER.name(), 2L, CONTROL.name(), 3L, ETCD.name(), 4L));
142+
143+
Assert.assertEquals(Long.valueOf(2L), cluster.getWorkerNodeServiceOfferingId());
144+
Assert.assertEquals(Long.valueOf(3L), cluster.getControlNodeServiceOfferingId());
145+
Assert.assertEquals(Long.valueOf(4L), cluster.getEtcdNodeServiceOfferingId());
146+
Assert.assertNull(cluster.getServiceOfferingId());
147+
}
148+
149+
@Test
150+
public void testSetNodeServiceOfferingIdsWithoutSeparateEtcdNodes() {
151+
KubernetesClusterVO cluster = new KubernetesClusterVO();
152+
cluster.setServiceOfferingId(1L);
153+
154+
kubernetesClusterManager.setNodeServiceOfferingIds(cluster,
155+
Map.of(WORKER.name(), 2L, CONTROL.name(), 3L, ETCD.name(), 4L));
156+
157+
Assert.assertEquals(Long.valueOf(2L), cluster.getWorkerNodeServiceOfferingId());
158+
Assert.assertEquals(Long.valueOf(3L), cluster.getControlNodeServiceOfferingId());
159+
Assert.assertNull(cluster.getEtcdNodeServiceOfferingId());
160+
}
161+
110162
@Test
111163
public void testValidateVpcTierAllocated() {
112164
Network network = Mockito.mock(Network.class);

0 commit comments

Comments
 (0)