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/10/20 11:02:35 UTC

[cloudstack-primate] branch master updated: allow adding docker Private registry details while deploying cluster (#802)

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 f3e9f8a  allow adding docker Private registry details while deploying cluster (#802)
f3e9f8a is described below

commit f3e9f8acf95611037a629540fa3596e3285b92ae
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Tue Oct 20 16:32:23 2020 +0530

    allow adding docker Private registry details while deploying cluster (#802)
    
    * allow adding docker Private registry details while deploying cluster
    
    * Set min master node count for HA to 2
    
    * generalize refresh of features list
    
    * Update user.js
    
    Co-authored-by: Pearl Dsilva <pe...@shapeblue.com>
---
 src/components/view/ListView.vue              |  2 +-
 src/locales/en.json                           |  2 +-
 src/store/modules/user.js                     | 11 ++++
 src/views/compute/CreateKubernetesCluster.vue | 72 +++++++++++++++++++++++++--
 4 files changed, 82 insertions(+), 5 deletions(-)

diff --git a/src/components/view/ListView.vue b/src/components/view/ListView.vue
index cb86d67..c68fd42 100644
--- a/src/components/view/ListView.vue
+++ b/src/components/view/ListView.vue
@@ -439,7 +439,7 @@ export default {
         value: this.editableValue
       }).then(json => {
         this.editableValueKey = null
-
+        this.$store.dispatch('RefreshFeatures')
         this.$message.success(`${this.$t('message.setting.updated')} ${record.name}`)
         if (json.updateconfigurationresponse &&
           json.updateconfigurationresponse.configuration &&
diff --git a/src/locales/en.json b/src/locales/en.json
index 64a7058..922dda5 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1603,7 +1603,7 @@
 "label.private.interface": "Private Interface",
 "label.private.ip.range": "Private IP Range",
 "label.private.ips": "Private IP Addresses",
-"label.private.registry": "Private registry",
+"label.private.registry": "Private Registry",
 "label.private.zone": "Private Zone",
 "label.privateinterface": "Private Interface",
 "label.privateip": "Private IP Address",
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index aba087d..6e66c0d 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -274,6 +274,17 @@ const user = {
           reject(error)
         })
       })
+    },
+    RefreshFeatures ({ commit }) {
+      return new Promise((resolve, reject) => {
+        api('listCapabilities').then(response => {
+          const result = response.listcapabilitiesresponse.capability
+          resolve(result)
+          commit('SET_FEATURES', result)
+        }).catch(error => {
+          reject(error)
+        })
+      })
     }
   }
 }
diff --git a/src/views/compute/CreateKubernetesCluster.vue b/src/views/compute/CreateKubernetesCluster.vue
index 75e70d4..9759a5d 100644
--- a/src/views/compute/CreateKubernetesCluster.vue
+++ b/src/views/compute/CreateKubernetesCluster.vue
@@ -176,11 +176,11 @@
           </span>
           <a-input
             v-decorator="['masternodes', {
-              initialValue: '1',
+              initialValue: '2',
               rules: [{ required: true, message: $t('message.error.input.value') },
                       {
                         validator: (rule, value, callback) => {
-                          if (value && (isNaN(value) || value <= 0)) {
+                          if (value && (isNaN(value) || value < 2)) {
                             callback(this.$t('message.validate.number'))
                           }
                           callback()
@@ -246,7 +246,65 @@
             </a-select-option>
           </a-select>
         </a-form-item>
-
+        <div v-if="$store.getters.features.kubernetesclusterexperimentalfeaturesenabled">
+          <a-form-item :label="$t('label.private.registry')">
+            <a-switch v-decorator="['privateregistry']" @change="checked => { this.usePrivateRegistry = checked }" />
+          </a-form-item>
+          <div v-if="usePrivateRegistry">
+            <a-form-item>
+              <span slot="label">
+                {{ $t('label.username') }}
+                <a-tooltip :title="apiParams.dockerregistryusername.description">
+                  <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
+                </a-tooltip>
+              </span>
+              <a-input
+                v-decorator="['dockerregistryusername', {
+                  rules: [{ required: true, message: $t('label.required') }]
+                }]"
+                :placeholder="apiParams.dockerregistryusername.description"/>
+            </a-form-item>
+            <a-form-item>
+              <span slot="label">
+                {{ $t('label.password') }}
+                <a-tooltip :title="apiParams.dockerregistrypassword.description">
+                  <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
+                </a-tooltip>
+              </span>
+              <a-input-password
+                v-decorator="['dockerregistrypassword', {
+                  rules: [{ required: true, message: $t('label.required') }]
+                }]"
+                :placeholder="apiParams.dockerregistrypassword.description"/>
+            </a-form-item>
+            <a-form-item>
+              <span slot="label">
+                {{ $t('label.url') }}
+                <a-tooltip :title="apiParams.dockerregistryurl.description">
+                  <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
+                </a-tooltip>
+              </span>
+              <a-input
+                v-decorator="['dockerregistryurl', {
+                  rules: [{ required: true, message: $t('label.required') }]
+                }]"
+                :placeholder="apiParams.dockerregistryurl.description"/>
+            </a-form-item>
+            <a-form-item>
+              <span slot="label">
+                {{ $t('label.email') }}
+                <a-tooltip :title="apiParams.dockerregistryemail.description">
+                  <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
+                </a-tooltip>
+              </span>
+              <a-input
+                v-decorator="['dockerregistryemail', {
+                  rules: [{ required: true, message: $t('label.required') }]
+                }]"
+                :placeholder="apiParams.dockerregistryemail.description"/>
+            </a-form-item>
+          </div>
+        </div>
         <div :span="24" class="action-button">
           <a-button @click="closeAction">{{ this.$t('label.cancel') }}</a-button>
           <a-button :loading="loading" type="primary" @click="handleSubmit">{{ this.$t('label.ok') }}</a-button>
@@ -277,6 +335,7 @@ export default {
       keyPairs: [],
       keyPairLoading: false,
       haEnabled: false,
+      usePrivateRegistry: false,
       loading: false
     }
   },
@@ -468,6 +527,13 @@ export default {
         if (this.isValidValueForKey(values, 'keypair') && this.arrayHasItems(this.keyPairs) && this.keyPairs[values.keypair].id != null) {
           params.keypair = this.keyPairs[values.keypair].id
         }
+        if (this.usePrivateRegistry) {
+          params.dockerregistryusername = values.dockerregistryusername
+          params.dockerregistrypassword = values.dockerregistrypassword
+          params.dockerregistryurl = values.dockerregistryurl
+          params.dockerregistryemail = values.dockerregistryemail
+        }
+
         api('createKubernetesCluster', params).then(json => {
           const jobId = json.createkubernetesclusterresponse.jobid
           this.$store.dispatch('AddAsyncJob', {