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 8d2a7e5  compute: Add boottype and bootmode to VM instance (#364)
8d2a7e5 is described below

commit 8d2a7e5db48f81b1ec3027d9ae4d8501abd67ac9
Author: Hoang Nguyen <hoan...@unitech.vn>
AuthorDate: Wed Jun 17 17:11:28 2020 +0700

    compute: Add boottype and bootmode to VM instance (#364)
    
    Fixes #339
    
    Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>
    Co-authored-by: Rohit Yadav <rohit.ya...@shapeblue.com>
---
 src/views/compute/DeployVM.vue            | 146 ++++++++++++++++++++++++------
 src/views/dashboard/CapacityDashboard.vue |   6 +-
 2 files changed, 120 insertions(+), 32 deletions(-)

diff --git a/src/views/compute/DeployVM.vue b/src/views/compute/DeployVM.vue
index 4071a7a..9d2ca96 100644
--- a/src/views/compute/DeployVM.vue
+++ b/src/views/compute/DeployVM.vue
@@ -26,14 +26,10 @@
             layout="vertical"
           >
             <a-steps direction="vertical" size="small">
-              <a-step :title="this.$t('label.details')" status="process">
+              <a-step 
:title="this.$t('label.select.deployment.infrastructure')" status="process">
                 <template slot="description">
                   <div style="margin-top: 15px">
-                    <a-form-item :label="this.$t('label.name')">
-                      <a-input
-                        v-decorator="['name']"
-                      />
-                    </a-form-item>
+                    <span>{{ $t('message.select.a.zone') }}</span><br/>
                     <a-form-item :label="this.$t('label.zoneid')">
                       <a-select
                         v-decorator="['zoneid', {
@@ -73,20 +69,6 @@
                         :loading="loading.hosts"
                       ></a-select>
                     </a-form-item>
-                    <a-form-item :label="this.$t('label.group')">
-                      <a-input v-decorator="['group']" />
-                    </a-form-item>
-                    <a-form-item :label="this.$t('label.keyboard')">
-                      <a-select
-                        v-decorator="['keyboard']"
-                        :options="keyboardSelectOptions"
-                      ></a-select>
-                    </a-form-item>
-                    <a-form-item :label="this.$t('label.userdata')">
-                      <a-textarea
-                        v-decorator="['userdata']">
-                      </a-textarea>
-                    </a-form-item>
                   </div>
                 </template>
               </a-step>
@@ -100,6 +82,7 @@
                       :activeTabKey="tabKey"
                       @tabChange="key => onTabChange(key, 'tabKey')">
                       <p v-if="tabKey === 'templateid'">
+                        {{ $t('message.template.desc') }}
                         <template-iso-selection
                           input-decorator="templateid"
                           :items="options.templates"
@@ -114,6 +97,7 @@
                           @update-disk-size="updateFieldValue"/>
                       </p>
                       <p v-else>
+                        {{ $t('message.iso.desc') }}
                         <template-iso-selection
                           input-decorator="isoid"
                           :items="options.isos"
@@ -133,11 +117,6 @@
                             @change="value => this.hypervisor = value" />
                         </a-form-item>
                       </p>
-                      <a-form-item :label="this.$t('label.bootintosetup')" 
v-if="zoneSelected && ((tabKey === 'isoid' && hypervisor === 'VMware') || 
(tabKey === 'templateid' && template && template.hypervisor === 'VMware'))" >
-                        <a-switch
-                          v-decorator="['bootintosetup']">
-                        </a-switch>
-                      </a-form-item>
                     </a-card>
                     <a-form-item class="form-item-hidden">
                       <a-input v-decorator="['templateid']"/>
@@ -275,6 +254,62 @@
                   </div>
                 </template>
               </a-step>
+              <a-step
+                :title="this.$t('label.details')"
+                :status="zoneSelected ? 'process' : 'wait'">
+                <template slot="description" v-if="zoneSelected">
+                  {{ $t('message.vm.review.launch') }}
+                  <div style="margin-top: 15px">
+                    <a-form-item :label="$t('label.name.optional')">
+                      <a-input
+                        v-decorator="['name']"
+                      />
+                    </a-form-item>
+                    <a-form-item :label="$t('label.group.optional')">
+                      <a-input v-decorator="['group']" />
+                    </a-form-item>
+                    <a-form-item :label="$t('label.keyboard')">
+                      <a-select
+                        v-decorator="['keyboard']"
+                        :options="keyboardSelectOptions"
+                      ></a-select>
+                    </a-form-item>
+                    <div
+                      v-if="vm.templateid && ['KVM', 
'VMware'].includes(hypervisor)">
+                      <a-form-item :label="$t('label.vm.boottype')">
+                        <a-select
+                          v-decorator="['boottype']"
+                          @change="fetchBootModes"
+                        >
+                          <a-select-option v-for="bootType in 
options.bootTypes" :key="bootType.id">
+                            {{ bootType.description }}
+                          </a-select-option>
+                        </a-select>
+                      </a-form-item>
+                      <a-form-item :label="$t('label.vm.bootmode')">
+                        <a-select
+                          v-decorator="['bootmode']">
+                          <a-select-option v-for="bootMode in 
options.bootModes" :key="bootMode.id">
+                            {{ bootMode.description }}
+                          </a-select-option>
+                        </a-select>
+                      </a-form-item>
+                    </div>
+                    <a-form-item
+                      :label="this.$t('label.bootintosetup')"
+                      v-if="zoneSelected && ((tabKey === 'isoid' && hypervisor 
=== 'VMware') || (tabKey === 'templateid' && template && template.hypervisor 
=== 'VMware'))" >
+                      <a-switch
+                        v-decorator="['bootintosetup']">
+                      </a-switch>
+                    </a-form-item>
+                    <a-form-item :label="$t('label.userdata')">
+                      <a-textarea
+                        v-decorator="['userdata']">
+                      </a-textarea>
+                    </a-form-item>
+                  </div>
+                </template>
+              </a-step>
             </a-steps>
             <div class="card-footer">
               <!-- ToDo extract as component -->
@@ -373,7 +408,9 @@ export default {
         clusters: [],
         hosts: [],
         groups: [],
-        keyboards: []
+        keyboards: [],
+        bootTypes: [],
+        bootModes: []
       },
       loading: {
         deploy: false,
@@ -634,8 +671,12 @@ export default {
     instanceConfig (instanceConfig) {
       this.template = _.find(this.options.templates, (option) => option.id === 
instanceConfig.templateid)
       this.iso = _.find(this.options.isos, (option) => option.id === 
instanceConfig.isoid)
-      var hypervisorItem = _.find(this.options.hypervisors, (option) => 
option.name === instanceConfig.hypervisor)
-      this.hypervisor = hypervisorItem ? hypervisorItem.name : null
+
+      if (instanceConfig.hypervisor) {
+        var hypervisorItem = _.find(this.options.hypervisors, (option) => 
option.name === instanceConfig.hypervisor)
+        this.hypervisor = hypervisorItem ? hypervisorItem.name : null
+      }
+
       this.serviceOffering = _.find(this.options.serviceOfferings, (option) => 
option.id === instanceConfig.computeofferingid)
       this.diskOffering = _.find(this.options.diskOfferings, (option) => 
option.id === instanceConfig.diskofferingid)
       this.zone = _.find(this.options.zones, (option) => option.id === 
instanceConfig.zoneid)
@@ -735,8 +776,11 @@ export default {
       }
 
       this.fetchKeyboard()
+      this.fetchBootTypes()
+      this.fetchBootModes()
+
       Vue.nextTick().then(() => {
-        ['name', 'keyboard', 'userdata'].forEach(this.fillValue)
+        ['name', 'keyboard', 'boottype', 'bootmode', 
'userdata'].forEach(this.fillValue)
         this.instanceConfig = this.form.getFieldsValue() // ToDo: maybe 
initialize with some other defaults
       })
     },
@@ -782,6 +826,43 @@ export default {
 
       this.$set(this.options, 'keyboards', keyboardType)
     },
+    fetchBootTypes () {
+      const bootTypes = []
+
+      bootTypes.push({
+        id: 'BIOS',
+        description: 'BIOS'
+      })
+      bootTypes.push({
+        id: 'UEFI',
+        description: 'UEFI'
+      })
+
+      this.options.bootTypes = bootTypes
+      this.$forceUpdate()
+    },
+    fetchBootModes (bootType) {
+      const bootModes = []
+
+      if (bootType === 'UEFI') {
+        bootModes.push({
+          id: 'LEGACY',
+          description: 'LEGACY'
+        })
+        bootModes.push({
+          id: 'SECURE',
+          description: 'SECURE'
+        })
+      } else {
+        bootModes.push({
+          id: 'LEGACY',
+          description: 'LEGACY'
+        })
+      }
+
+      this.options.bootModes = bootModes
+      this.$forceUpdate()
+    },
     fetchNetwork () {
       const param = this.params.networks
       this.fetchOptions(param, 'networks')
@@ -885,6 +966,8 @@ export default {
         deployVmData.hostid = values.hostid
         deployVmData.group = values.group
         deployVmData.keyboard = values.keyboard
+        deployVmData.boottype = values.boottype
+        deployVmData.bootmode = values.bootmode
         if (values.userdata && values.userdata.length > 0) {
           deployVmData.userdata = 
encodeURIComponent(btoa(this.sanitizeReverse(values.userdata)))
         }
@@ -1037,6 +1120,11 @@ export default {
             }
             param.opts = response
             this.options[name] = response
+
+            if (name === 'hypervisors') {
+              this.hypervisor = response[0] && response[0].name ? 
response[0].name : null
+            }
+
             this.$forceUpdate()
             if (param.field) {
               this.fillValue(param.field)
diff --git a/src/views/dashboard/CapacityDashboard.vue 
b/src/views/dashboard/CapacityDashboard.vue
index 593c7a1..55b444b 100644
--- a/src/views/dashboard/CapacityDashboard.vue
+++ b/src/views/dashboard/CapacityDashboard.vue
@@ -17,7 +17,7 @@
 
 <template>
   <a-row class="capacity-dashboard" :gutter="12">
-    <a-col :xl="16">
+    <a-col :xl="18">
       <div class="capacity-dashboard-wrapper">
         <div class="capacity-dashboard-select">
           <a-select
@@ -48,7 +48,7 @@
         <a-col
           :xs="12"
           :sm="8"
-          :md="8"
+          :md="6"
           :style="{ marginBottom: '12px' }"
           v-for="stat in stats"
           :key="stat.type">
@@ -71,7 +71,7 @@
       </a-row>
     </a-col>
 
-    <a-col :xl="8">
+    <a-col :xl="6">
       <chart-card>
         <div style="text-align: center">
           <a-tooltip placement="bottom" 
class="capacity-dashboard-button-wrapper">

Reply via email to