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 <abhishek.mr...@gmail.com>
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(() => {

Reply via email to