You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2020/05/11 10:38:42 UTC

[cloudstack-primate] branch master updated: compute: cks cluster async actions fix (#331)

This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack-primate.git


The following commit(s) were added to refs/heads/master by this push:
     new 445e423  compute: cks cluster async actions fix (#331)
445e423 is described below

commit 445e4236272467bf85173368e9d3b2c6b4037a7e
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Mon May 11 16:08:35 2020 +0530

    compute: cks cluster async actions fix (#331)
    
    Fixes
    
    Poll cluster async actions
    Fixes related to scale cluster
    Action labels from translations
    
    Signed-off-by: Abhishek Kumar <ab...@gmail.com>
---
 src/components/widgets/Status.vue              |  2 ++
 src/config/section/compute.js                  | 19 ++++++-------------
 src/config/section/image.js                    |  6 +++---
 src/locales/en.json                            |  9 +++++++++
 src/views/compute/CreateKubernetesCluster.vue  | 17 ++++++++++++++++-
 src/views/compute/ScaleKubernetesCluster.vue   | 24 +++++++++++++++++++-----
 src/views/compute/UpgradeKubernetesCluster.vue | 19 ++++++++++++++++++-
 7 files changed, 73 insertions(+), 23 deletions(-)

diff --git a/src/components/widgets/Status.vue b/src/components/widgets/Status.vue
index 75222a1..01f2ece 100644
--- a/src/components/widgets/Status.vue
+++ b/src/components/widgets/Status.vue
@@ -75,6 +75,8 @@ export default {
         case 'Starting':
         case 'Stopping':
         case 'Scheduled':
+        case 'Scaling':
+        case 'Upgrading':
           status = 'processing'
           break
         case 'Alert':
diff --git a/src/config/section/compute.js b/src/config/section/compute.js
index 25e3c68..ce8d2b2 100644
--- a/src/config/section/compute.js
+++ b/src/config/section/compute.js
@@ -352,7 +352,7 @@ export default {
         {
           api: 'createKubernetesCluster',
           icon: 'plus',
-          label: 'Create Kubernetes Cluster',
+          label: 'label.kubernetes.cluster.create',
           listView: true,
           popup: true,
           component: () => import('@/views/compute/CreateKubernetesCluster.vue')
@@ -360,28 +360,21 @@ export default {
         {
           api: 'startKubernetesCluster',
           icon: 'caret-right',
-          label: 'Start Kubernetes Cluster',
+          label: 'label.kubernetes.cluster.start',
           dataView: true,
           show: (record) => { return ['Stopped'].includes(record.state) }
         },
         {
           api: 'stopKubernetesCluster',
           icon: 'stop',
-          label: 'Stop Kubernetes Cluster',
+          label: 'label.kubernetes.cluster.stop',
           dataView: true,
           show: (record) => { return !['Stopped'].includes(record.state) }
         },
-        // {
-        //   api: 'getKubernetesClusterConfig',
-        //   icon: 'cloud-download',
-        //   label: 'Download Cluster Config',
-        //   dataView: true,
-        //   show: (record) => { return !['Stopped'].includes(record.state) }
-        // },
         {
           api: 'scaleKubernetesCluster',
           icon: 'swap',
-          label: 'Scale Kubernetes Cluster',
+          label: 'label.kubernetes.cluster.scale',
           dataView: true,
           show: (record) => { return ['Created', 'Running'].includes(record.state) },
           popup: true,
@@ -390,7 +383,7 @@ export default {
         {
           api: 'upgradeKubernetesCluster',
           icon: 'plus-circle',
-          label: 'Upgrade Kubernetes Cluster',
+          label: 'label.kubernetes.cluster.upgrade',
           dataView: true,
           show: (record) => { return ['Created', 'Running'].includes(record.state) },
           popup: true,
@@ -399,7 +392,7 @@ export default {
         {
           api: 'deleteKubernetesCluster',
           icon: 'delete',
-          label: 'Delete Kubernetes Cluster',
+          label: 'label.kubernetes.cluster.delete',
           dataView: true,
           show: (record) => { return !['Destroyed', 'Destroying'].includes(record.state) }
         }
diff --git a/src/config/section/image.js b/src/config/section/image.js
index 39df4f2..9b0276e 100644
--- a/src/config/section/image.js
+++ b/src/config/section/image.js
@@ -185,7 +185,7 @@ export default {
         {
           api: 'addKubernetesSupportedVersion',
           icon: 'plus',
-          label: 'Add Kubernetes Version',
+          label: 'label.kubernetes.version.add',
           listView: true,
           popup: true,
           component: () => import('@/views/image/AddKubernetesSupportedVersion.vue')
@@ -193,7 +193,7 @@ export default {
         {
           api: 'updateKubernetesSupportedVersion',
           icon: 'edit',
-          label: 'Update Kuberntes Version',
+          label: 'label.kubernetes.version.update',
           dataView: true,
           popup: true,
           component: () => import('@/views/image/UpdateKubernetesSupportedVersion.vue')
@@ -201,7 +201,7 @@ export default {
         {
           api: 'deleteKubernetesSupportedVersion',
           icon: 'delete',
-          label: 'Delete Kubernetes Version',
+          label: 'label.kubernetes.version.update',
           dataView: true
         }
       ]
diff --git a/src/locales/en.json b/src/locales/en.json
index 1905f31..3134b00 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -600,6 +600,15 @@
 "label.interval.weekly": "Every {number}",
 "label.interval.monthly": "Day {number} of month",
 "label.japanese.keyboard": "Japanese keyboard",
+"label.kubernetes.cluster.create": "Create Kubernetes Cluster",
+"label.kubernetes.cluster.delete": "Delete Kubernetes Cluster",
+"label.kubernetes.cluster.scale": "Scale Kubernetes Cluster",
+"label.kubernetes.cluster.start": "Start Kubernetes Cluster",
+"label.kubernetes.cluster.stop": "Stop Kubernetes Cluster",
+"label.kubernetes.cluster.Upgrade": "Upgrade Kubernetes Cluster",
+"label.kubernetes.version.add": "Add Kubernetes Version",
+"label.kubernetes.version.delete": "Delete Kubernetes Version",
+"label.kubernetes.version.update": "Update Kubernetes Version",
 "label.link.domain.to.ldap": "Link Domain to LDAP",
 "label.local.storage":"Local Storage",
 "label.make.project.owner": "Make account project owner",
diff --git a/src/views/compute/CreateKubernetesCluster.vue b/src/views/compute/CreateKubernetesCluster.vue
index 25c1b78..15b9237 100644
--- a/src/views/compute/CreateKubernetesCluster.vue
+++ b/src/views/compute/CreateKubernetesCluster.vue
@@ -403,7 +403,22 @@ export default {
           params.keypair = this.keyPairs[values.keypair].id
         }
         api('createKubernetesCluster', params).then(json => {
-          this.$message.success('Successfully created Kubernetes cluster: ' + values.name)
+          const jobId = json.createkubernetesclusterresponse.jobid
+          this.$store.dispatch('AddAsyncJob', {
+            title: this.$t('label.kubernetes.cluster.create'),
+            jobid: jobId,
+            description: values.name,
+            status: 'progress'
+          })
+          this.$pollJob({
+            jobId,
+            loadingMessage: `Create Kubernetes cluster ${values.name} in progress`,
+            catchMessage: 'Error encountered while fetching async job result',
+            successMessage: `Successfully created Kubernetes cluster ${values.name}`,
+            successMethod: result => {
+              this.$emit('refresh-data')
+            }
+          })
         }).catch(error => {
           this.$notifyError(error)
         }).finally(() => {
diff --git a/src/views/compute/ScaleKubernetesCluster.vue b/src/views/compute/ScaleKubernetesCluster.vue
index c30b421..c07890f 100644
--- a/src/views/compute/ScaleKubernetesCluster.vue
+++ b/src/views/compute/ScaleKubernetesCluster.vue
@@ -25,7 +25,7 @@
         <a-form-item :label="$t('cks.cluster.size')">
           <a-input
             v-decorator="['size', {
-              initialValue: '1',
+              initialValue: originalSize,
               rules: [{
                 validator: (rule, value, callback) => {
                   if (value && (isNaN(value) || value <= 0)) {
@@ -76,7 +76,6 @@ export default {
   },
   data () {
     return {
-      originalSize: 1,
       serviceOfferings: [],
       serviceOfferingLoading: false,
       minCpu: 2,
@@ -93,13 +92,13 @@ export default {
     })
   },
   created () {
+    this.originalSize = !this.isObjectEmpty(this.resource) ? this.resource.size : 1
   },
   mounted () {
     this.fetchData()
   },
   methods: {
     fetchData () {
-      this.originalSize = !this.isObjectEmpty(this.resource) ? 1 : this.resource.size
       this.fetchKubernetesVersionData()
     },
     isValidValueForKey (obj, key) {
@@ -165,13 +164,28 @@ export default {
           id: this.resource.id
         }
         if (this.isValidValueForKey(values, 'size') && values.size > 0) {
-          params.kubernetesversionid = this.kubernetesVersions[values.kubernetesversionid].id
+          params.size = values.size
         }
         if (this.isValidValueForKey(values, 'serviceofferingid') && this.arrayHasItems(this.serviceOfferings)) {
           params.serviceofferingid = this.serviceOfferings[values.serviceofferingid].id
         }
         api('scaleKubernetesCluster', params).then(json => {
-          this.$message.success('Successfully scaled Kubernetes cluster: ' + this.resource.name)
+          const jobId = json.scalekubernetesclusterresponse.jobid
+          this.$store.dispatch('AddAsyncJob', {
+            title: this.$t('label.kubernetes.cluster.scale'),
+            jobid: jobId,
+            description: this.resource.name,
+            status: 'progress'
+          })
+          this.$pollJob({
+            jobId,
+            loadingMessage: `Scale Kubernetes cluster ${this.resource.name} in progress`,
+            catchMessage: 'Error encountered while fetching async job result',
+            successMessage: `Successfully scaled Kubernetes cluster ${this.resource.name}`,
+            successMethod: result => {
+              this.$emit('refresh-data')
+            }
+          })
         }).catch(error => {
           this.$notifyError(error)
         }).finally(() => {
diff --git a/src/views/compute/UpgradeKubernetesCluster.vue b/src/views/compute/UpgradeKubernetesCluster.vue
index bd96ae9..78dfaab 100644
--- a/src/views/compute/UpgradeKubernetesCluster.vue
+++ b/src/views/compute/UpgradeKubernetesCluster.vue
@@ -147,7 +147,24 @@ export default {
           params.kubernetesversionid = this.kubernetesVersions[values.kubernetesversionid].id
         }
         api('upgradeKubernetesCluster', params).then(json => {
-          this.$message.success('Successfully upgraded Kubernetes cluster: ' + this.resource.name)
+          this.$emit('refresh-data')
+          const jobId = json.upgradekubernetesclusterresponse.jobid
+          this.$store.dispatch('AddAsyncJob', {
+            title: this.$t('label.kubernetes.cluster.upgrade'),
+            jobid: jobId,
+            description: this.resource.name,
+            status: 'progress'
+          })
+          this.$pollJob({
+            jobId,
+            loadingMessage: `Upgrade Kubernetes cluster ${this.resource.name} in progress`,
+            catchMessage: 'Error encountered while fetching async job result',
+            successMessage: `Successfully upgraded Kubernetes cluster ${this.resource.name}`,
+            successMethod: result => {
+              this.$emit('refresh-data')
+              console.log('hello!')
+            }
+          })
         }).catch(error => {
           this.$notifyError(error)
         }).finally(() => {