This is an automated email from the ASF dual-hosted git repository.
kiranchavala pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push:
new 43ab8a93674 cks,ui: fix npe and check for disable zone (#9105)
43ab8a93674 is described below
commit 43ab8a936747fbd34d3e28fece69a78a97be0ea6
Author: Abhishek Kumar <[email protected]>
AuthorDate: Tue Jun 11 14:36:11 2024 +0530
cks,ui: fix npe and check for disable zone (#9105)
Fixes #8962
---
.../version/KubernetesVersionManagerImpl.java | 22 ++++---
.../version/KubernetesVersionManagerImplTest.java | 73 ++++++++++++++++++++++
ui/src/views/compute/CreateKubernetesCluster.vue | 3 +-
3 files changed, 90 insertions(+), 8 deletions(-)
diff --git
a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
index 3ea30291f43..b2dafbf70bc 100644
---
a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
+++
b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
@@ -81,6 +81,20 @@ public class KubernetesVersionManagerImpl extends
ManagerBase implements Kuberne
public static final String MINIMUN_AUTOSCALER_SUPPORTED_VERSION = "1.15.0";
+ protected void updateTemplateDetailsInKubernetesSupportedVersionResponse(
+ final KubernetesSupportedVersion kubernetesSupportedVersion,
KubernetesSupportedVersionResponse response) {
+ TemplateJoinVO template =
templateJoinDao.findById(kubernetesSupportedVersion.getIsoId());
+ if (template == null) {
+ return;
+ }
+ response.setIsoId(template.getUuid());
+ response.setIsoName(template.getName());
+ if (template.getState() != null) {
+ response.setIsoState(template.getState().toString());
+ }
+ response.setDirectDownload(template.isDirectDownload());
+ }
+
private KubernetesSupportedVersionResponse
createKubernetesSupportedVersionResponse(final KubernetesSupportedVersion
kubernetesSupportedVersion) {
KubernetesSupportedVersionResponse response = new
KubernetesSupportedVersionResponse();
response.setObjectName("kubernetessupportedversion");
@@ -100,13 +114,7 @@ public class KubernetesVersionManagerImpl extends
ManagerBase implements Kuberne
response.setSupportsHA(compareSemanticVersions(kubernetesSupportedVersion.getSemanticVersion(),
KubernetesClusterService.MIN_KUBERNETES_VERSION_HA_SUPPORT)>=0);
response.setSupportsAutoscaling(versionSupportsAutoscaling(kubernetesSupportedVersion));
- TemplateJoinVO template =
templateJoinDao.findById(kubernetesSupportedVersion.getIsoId());
- if (template != null) {
- response.setIsoId(template.getUuid());
- response.setIsoName(template.getName());
- response.setIsoState(template.getState().toString());
- response.setDirectDownload(template.isDirectDownload());
- }
+
updateTemplateDetailsInKubernetesSupportedVersionResponse(kubernetesSupportedVersion,
response);
response.setCreated(kubernetesSupportedVersion.getCreated());
return response;
}
diff --git
a/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/version/KubernetesVersionManagerImplTest.java
b/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/version/KubernetesVersionManagerImplTest.java
new file mode 100644
index 00000000000..ee371df3b72
--- /dev/null
+++
b/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/version/KubernetesVersionManagerImplTest.java
@@ -0,0 +1,73 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.kubernetes.version;
+
+import java.util.UUID;
+
+import org.apache.cloudstack.api.response.KubernetesSupportedVersionResponse;
+import
org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import com.cloud.api.query.dao.TemplateJoinDao;
+import com.cloud.api.query.vo.TemplateJoinVO;
+
+@RunWith(MockitoJUnitRunner.class)
+public class KubernetesVersionManagerImplTest {
+
+ @Mock
+ TemplateJoinDao templateJoinDao;
+
+ @InjectMocks
+ KubernetesVersionManagerImpl kubernetesVersionManager = new
KubernetesVersionManagerImpl();
+
+ @Test
+ public void
testUpdateTemplateDetailsInKubernetesSupportedVersionResponseNullTemplate() {
+ KubernetesSupportedVersion kubernetesSupportedVersion =
Mockito.mock(KubernetesSupportedVersion.class);
+ Mockito.when(kubernetesSupportedVersion.getIsoId()).thenReturn(1L);
+ KubernetesSupportedVersionResponse response = new
KubernetesSupportedVersionResponse();
+
kubernetesVersionManager.updateTemplateDetailsInKubernetesSupportedVersionResponse(kubernetesSupportedVersion,
+ response);
+ Assert.assertNull(ReflectionTestUtils.getField(response, "isoId"));
+ }
+
+ @Test
+ public void
testUpdateTemplateDetailsInKubernetesSupportedVersionResponseValidTemplate() {
+ KubernetesSupportedVersion kubernetesSupportedVersion =
Mockito.mock(KubernetesSupportedVersion.class);
+ Mockito.when(kubernetesSupportedVersion.getIsoId()).thenReturn(1L);
+ KubernetesSupportedVersionResponse response = new
KubernetesSupportedVersionResponse();
+ TemplateJoinVO templateJoinVO = Mockito.mock(TemplateJoinVO.class);
+ String uuid = UUID.randomUUID().toString();
+ Mockito.when(templateJoinVO.getUuid()).thenReturn(uuid);
+ Mockito.when(templateJoinDao.findById(1L)).thenReturn(templateJoinVO);
+
kubernetesVersionManager.updateTemplateDetailsInKubernetesSupportedVersionResponse(kubernetesSupportedVersion,
+ response);
+ Assert.assertEquals(uuid, ReflectionTestUtils.getField(response,
"isoId"));
+ Assert.assertNull(ReflectionTestUtils.getField(response, "isoState"));
+ ObjectInDataStoreStateMachine.State state =
ObjectInDataStoreStateMachine.State.Ready;
+ Mockito.when(templateJoinVO.getState()).thenReturn(state);
+
kubernetesVersionManager.updateTemplateDetailsInKubernetesSupportedVersionResponse(kubernetesSupportedVersion,
+ response);
+ Assert.assertEquals(state.toString(),
ReflectionTestUtils.getField(response, "isoState"));
+ }
+}
diff --git a/ui/src/views/compute/CreateKubernetesCluster.vue
b/ui/src/views/compute/CreateKubernetesCluster.vue
index ca1e424cca4..e701ef4d507 100644
--- a/ui/src/views/compute/CreateKubernetesCluster.vue
+++ b/ui/src/views/compute/CreateKubernetesCluster.vue
@@ -332,8 +332,9 @@ export default {
this.zoneLoading = true
params.showicon = true
api('listZones', params).then(json => {
- const listZones = json.listzonesresponse.zone
+ var listZones = json.listzonesresponse.zone
if (listZones) {
+ listZones = listZones.filter(x => x.allocationstate === 'Enabled')
this.zones = this.zones.concat(listZones)
}
}).finally(() => {