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 341e6e6  config: implement API arg remappings
341e6e6 is described below

commit 341e6e6c1e58ca12e8dd71fb4ce85763d2831eb5
Author: Rohit Yadav <rohit.ya...@shapeblue.com>
AuthorDate: Mon Nov 25 17:46:54 2019 +0530

    config: implement API arg remappings
    
    Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>
---
 src/components/view/InfoCard.vue                   |  2 +-
 src/config/router.js                               |  3 +
 src/config/section/compute.js                      | 57 +++++++++------
 src/config/section/event.js                        | 21 ++++--
 src/config/section/iam.js                          | 48 ++++++++++---
 src/config/section/infra.js                        | 18 ++++-
 src/config/section/infra/clusters.js               | 54 +++++++++++----
 src/config/section/infra/hosts.js                  | 80 +++++++++++++++++++---
 .../section/{event.js => infra/phynetworks.js}     | 35 +++-------
 src/config/section/infra/pods.js                   | 14 +++-
 src/config/section/infra/routers.js                | 17 ++++-
 src/config/section/infra/systemVms.js              | 24 +++++--
 src/config/section/infra/zones.js                  | 71 ++++++++++++++++---
 src/config/section/network.js                      | 56 +++++++++++++--
 src/config/section/offering.js                     | 48 +++++++++++++
 src/config/section/project.js                      |  7 +-
 src/config/section/storage.js                      | 25 +++++--
 src/views/AutogenView.vue                          |  2 +
 18 files changed, 460 insertions(+), 122 deletions(-)

diff --git a/src/components/view/InfoCard.vue b/src/components/view/InfoCard.vue
index 6d7438a..a739c9b 100644
--- a/src/components/view/InfoCard.vue
+++ b/src/components/view/InfoCard.vue
@@ -308,7 +308,7 @@
 
       <div class="account-center-tags" v-if="$route.meta.related">
         <span v-for="item in $route.meta.related" :key="item.path">
-          <router-link :to="{ path: '/' + item.name + '?' + item.param + '=' + 
resource.id }">
+          <router-link :to="{ path: '/' + item.name + '?' + item.param + '=' + 
(item.param === 'account' ? resource.name + '&domainid=' + resource.domainid : 
resource.id) }">
             <a-button style="margin-right: 10px">
               View {{ $t(item.title) }}
             </a-button>
diff --git a/src/config/router.js b/src/config/router.js
index 77f11ef..c580de3 100644
--- a/src/config/router.js
+++ b/src/config/router.js
@@ -55,6 +55,7 @@ export function generateRouterMap (section) {
           keepAlive: true,
           icon: child.icon,
           docHelp: child.docHelp,
+          hidden: child.hidden,
           permission: child.permission,
           resourceType: child.resourceType,
           params: child.params ? child.params : {},
@@ -73,6 +74,7 @@ export function generateRouterMap (section) {
               name: child.name,
               keepAlive: true,
               icon: child.icon,
+              hidden: child.hidden,
               permission: child.permission,
               resourceType: child.resourceType,
               params: child.params ? child.params : {},
@@ -119,6 +121,7 @@ export function generateRouterMap (section) {
         keepAlive: true,
         icon: section.icon,
         docHelp: section.docHelp,
+        hidden: section.hidden,
         permission: section.permission,
         resourceType: section.resourceType,
         params: section.params ? section.params : {},
diff --git a/src/config/section/compute.js b/src/config/section/compute.js
index b518400..627500b 100644
--- a/src/config/section/compute.js
+++ b/src/config/section/compute.js
@@ -155,27 +155,6 @@ export default {
           }
         },
         {
-          api: 'migrateVirtualMachine',
-          icon: 'drag',
-          label: 'label.migrate.instance.to.host',
-          dataView: true,
-          show: (record) => { return ['Running'].includes(record.state) }
-        },
-        {
-          api: 'migrateVirtualMachineWithVolume',
-          icon: 'export',
-          label: 'Migrate VM with Volume(s)',
-          dataView: true,
-          show: (record) => { return ['Running'].includes(record.state) }
-        },
-        {
-          api: 'migrateVirtualMachine',
-          icon: 'drag',
-          label: 'label.migrate.instance.to.ps',
-          dataView: true,
-          show: (record) => { return ['Stopped'].includes(record.state) }
-        },
-        {
           api: 'updateVMAffinityGroup',
           icon: 'swap',
           label: 'label.change.affinity',
@@ -200,6 +179,42 @@ export default {
           show: (record) => { return ['Stopped'].includes(record.state) }
         },
         {
+          api: 'migrateVirtualMachine',
+          icon: 'drag',
+          label: 'label.migrate.instance.to.host',
+          dataView: true,
+          show: (record) => { return ['Running'].includes(record.state) },
+          args: ['hostid', 'virtualmachineid'],
+          mapping: {
+            virtualmachineid: {
+              value: (record) => { return record.id }
+            }
+          }
+        },
+        {
+          api: 'migrateVirtualMachineWithVolume',
+          icon: 'export',
+          label: 'Migrate VM with Volume(s)',
+          dataView: true,
+          show: (record) => { return ['Running'].includes(record.state) }
+        },
+        {
+          api: 'migrateVirtualMachine',
+          icon: 'drag',
+          label: 'label.migrate.instance.to.ps',
+          dataView: true,
+          show: (record) => { return ['Stopped'].includes(record.state) },
+          args: ['storageid', 'virtualmachineid'],
+          mapping: {
+            storageid: {
+              api: 'listStoragePools'
+            },
+            virtualmachineid: {
+              value: (record) => { return record.id }
+            }
+          }
+        },
+        {
           api: 'resetPasswordForVirtualMachine',
           icon: 'key',
           label: 'Reset Instance Password',
diff --git a/src/config/section/event.js b/src/config/section/event.js
index 0e15e2b..0a501a1 100644
--- a/src/config/section/event.js
+++ b/src/config/section/event.js
@@ -22,25 +22,32 @@ export default {
   permission: ['listEvents'],
   columns: ['username', 'description', 'state', 'level', 'type', 'account', 
'domain', 'created'],
   details: ['username', 'id', 'description', 'state', 'level', 'type', 
'account', 'domain', 'created'],
-  related: [{
-    name: 'event',
-    title: 'Event Timeline',
-    param: 'startid'
-  }],
   actions: [
     {
       api: 'archiveEvents',
       icon: 'book',
       label: 'Archive Event',
+      listView: true,
       dataView: true,
-      args: ['ids']
+      args: ['ids'],
+      mapping: {
+        ids: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'deleteEvents',
       icon: 'delete',
       label: 'Delete Event',
+      listView: true,
       dataView: true,
-      args: ['ids']
+      args: ['ids'],
+      mapping: {
+        ids: {
+          value: (record) => { return record.id }
+        }
+      }
     }
   ]
 }
diff --git a/src/config/section/iam.js b/src/config/section/iam.js
index aaca2bb..d910392 100644
--- a/src/config/section/iam.js
+++ b/src/config/section/iam.js
@@ -85,6 +85,11 @@ export default {
       permission: ['listAccounts'],
       columns: ['name', 'state', 'firstname', 'lastname', 'rolename', 
'roletype', 'domain'],
       details: ['name', 'id', 'rolename', 'roletype', 'domain', 
'networkdomain', 'iptotal', 'vmtotal', 'volumetotal', 'receivedbytes', 
'sentbytes', 'vmlimit', 'iplimit', 'volumelimit', 'snapshotlimit', 
'templatelimit', 'vpclimit', 'cpulimit', 'memorylimit', 'networklimit', 
'primarystoragelimit', 'secondarystoragelimit'],
+      related: [{
+        name: 'accountuser',
+        title: 'Users',
+        param: 'account'
+      }],
       actions: [
         {
           api: 'createAccount',
@@ -105,7 +110,15 @@ export default {
           icon: 'sync',
           label: 'Update Resource Count',
           dataView: true,
-          args: ['account', 'domainid']
+          args: ['account', 'domainid'],
+          mapping: {
+            account: {
+              value: (record) => { return record.account }
+            },
+            domainid: {
+              value: (record) => { return record.domainid }
+            }
+          }
         },
         {
           api: 'enableAccount',
@@ -121,7 +134,12 @@ export default {
           label: 'Disable Account',
           dataView: true,
           show: (record) => { return record.state === 'enabled' },
-          params: { lock: 'false' }
+          args: ['lock'],
+          mapping: {
+            lock: {
+              value: (record) => { return false }
+            }
+          }
         },
         {
           api: 'disableAccount',
@@ -129,17 +147,19 @@ export default {
           label: 'Lock account',
           dataView: true,
           show: (record) => { return record.state === 'enabled' },
-          args: ['lock']
+          args: ['lock'],
+          mapping: {
+            lock: {
+              value: (record) => { return true }
+            }
+          }
         },
         {
           api: 'deleteAccount',
           icon: 'delete',
           label: 'Delete account',
           dataView: true,
-          hidden: (record) => { return record.name === 'admin' },
-          args: [
-            'id'
-          ]
+          hidden: (record) => { return record.name === 'admin' }
         }
       ]
     },
@@ -206,14 +226,24 @@ export default {
           icon: 'plus',
           label: 'Create Role',
           listView: true,
-          args: ['name', 'description', 'type']
+          args: ['name', 'description', 'type'],
+          mapping: {
+            type: {
+              options: ['Admin', 'DomainAdmin', 'User']
+            }
+          }
         },
         {
           api: 'updateRole',
           icon: 'edit',
           label: 'Edit Role',
           dataView: true,
-          args: ['name', 'description', 'type']
+          args: ['name', 'description', 'type'],
+          mapping: {
+            type: {
+              options: ['Admin', 'DomainAdmin', 'User']
+            }
+          }
         },
         {
           api: 'deleteRole',
diff --git a/src/config/section/infra.js b/src/config/section/infra.js
index 7ffbdde..e89e67a 100644
--- a/src/config/section/infra.js
+++ b/src/config/section/infra.js
@@ -16,6 +16,7 @@
 // under the License.
 
 import zones from '@/config/section/infra/zones'
+import phynetworks from '@/config/section/infra/phynetworks'
 import pods from '@/config/section/infra/pods'
 import clusters from '@/config/section/infra/clusters'
 import hosts from '@/config/section/infra/hosts'
@@ -38,6 +39,7 @@ export default {
       component: () => import('@/views/infra/InfraSummary.vue')
     },
     zones,
+    phynetworks,
     pods,
     clusters,
     hosts,
@@ -48,7 +50,7 @@ export default {
     {
       name: 'cpusocket',
       title: 'CPU Sockets',
-      icon: 'api',
+      icon: 'inbox',
       permission: ['listHosts'],
       params: { type: 'routing' },
       columns: ['hypervisor', 'hosts', 'cpusockets']
@@ -73,14 +75,24 @@ export default {
           icon: 'book',
           label: 'Archive Alert',
           dataView: true,
-          args: ['ids']
+          args: ['ids'],
+          mapping: {
+            ids: {
+              value: (record) => { return record.id }
+            }
+          }
         },
         {
           api: 'deleteAlerts',
           icon: 'delete',
           label: 'Delete Alert',
           dataView: true,
-          args: ['ids']
+          args: ['ids'],
+          mapping: {
+            ids: {
+              value: (record) => { return record.id }
+            }
+          }
         }
       ]
     }
diff --git a/src/config/section/infra/clusters.js 
b/src/config/section/infra/clusters.js
index ae9e8d7..c9eeaae 100644
--- a/src/config/section/infra/clusters.js
+++ b/src/config/section/infra/clusters.js
@@ -37,35 +37,45 @@ export default {
     },
     {
       api: 'updateCluster',
-      icon: 'pause-circle',
+      icon: 'play-circle',
       label: 'label.action.enable.cluster',
       dataView: true,
-      defaultArgs: { allocationstate: 'Disabled' },
-      show: (record) => { return record.allocationstate === 'Enabled' }
+      defaultArgs: { allocationstate: 'Enabled' },
+      show: (record) => { return record.allocationstate === 'Disabled' }
     },
     {
       api: 'updateCluster',
-      icon: 'play-circle',
+      icon: 'pause-circle',
       label: 'label.action.disable.cluster',
       dataView: true,
-      defaultArgs: { allocationstate: 'Enabled' },
-      show: (record) => { return record.allocationstate === 'Disabled' }
+      defaultArgs: { allocationstate: 'Disabled' },
+      show: (record) => { return record.allocationstate === 'Enabled' }
     },
     {
       api: 'dedicateCluster',
       icon: 'user-add',
       label: 'label.dedicate.cluster',
       dataView: true,
+      show: (record) => { return !record.domainid },
       args: ['clusterid', 'domainid', 'account'],
-      show: (record) => { return !record.domainid }
+      mapping: {
+        clusterid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'releaseDedicatedCluster',
       icon: 'user-delete',
       label: 'label.release.dedicated.cluster',
       dataView: true,
+      show: (record) => { return record.domainid },
       args: ['clusterid'],
-      show: (record) => { return record.domainid }
+      mapping: {
+        clusterid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'updateCluster',
@@ -88,10 +98,15 @@ export default {
       icon: 'plus-circle',
       label: 'label.outofbandmanagement.enable',
       dataView: true,
-      args: ['clusterid'],
       show: (record) => {
         return !record.resourcedetails || 
!record.resourcedetails.outOfBandManagementEnabled ||
           record.resourcedetails.outOfBandManagementEnabled === 'false'
+      },
+      args: ['clusterid'],
+      mapping: {
+        clusterid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -99,10 +114,15 @@ export default {
       icon: 'minus-circle',
       label: 'label.outofbandmanagement.disable',
       dataView: true,
-      args: ['clusterid'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.outOfBandManagementEnabled &&
           record.resourcedetails.outOfBandManagementEnabled === 'true'
+      },
+      args: ['clusterid'],
+      mapping: {
+        clusterid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -110,10 +130,15 @@ export default {
       icon: 'eye',
       label: 'label.ha.enable',
       dataView: true,
-      args: ['clusterid'],
       show: (record) => {
         return !record.resourcedetails || 
!record.resourcedetails.resourceHAEnabled ||
           record.resourcedetails.resourceHAEnabled === 'false'
+      },
+      args: ['clusterid'],
+      mapping: {
+        clusterid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -121,10 +146,15 @@ export default {
       icon: 'eye-invisible',
       label: 'label.ha.disable',
       dataView: true,
-      args: ['clusterid'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.resourceHAEnabled &&
           record.resourcedetails.resourceHAEnabled === 'true'
+      },
+      args: ['clusterid'],
+      mapping: {
+        clusterid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
diff --git a/src/config/section/infra/hosts.js 
b/src/config/section/infra/hosts.js
index 64c1cbc..d19577b 100644
--- a/src/config/section/infra/hosts.js
+++ b/src/config/section/infra/hosts.js
@@ -49,8 +49,13 @@ export default {
       icon: 'safety-certificate',
       label: 'label.action.secure.host',
       dataView: true,
+      show: (record) => { return record.hypervisor === 'KVM' },
       args: ['hostid'],
-      show: (record) => { return record.hypervisor === 'KVM' }
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'reconnectHost',
@@ -80,16 +85,26 @@ export default {
       icon: 'user-add',
       label: 'label.dedicate.host',
       dataView: true,
+      show: (record) => { return !record.domainid },
       args: ['hostid', 'domainid', 'account'],
-      show: (record) => { return !record.domainid }
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'releaseDedicatedHost',
       icon: 'user-delete',
       label: 'label.release.dedicated.host',
       dataView: true,
+      show: (record) => { return record.domainid },
       args: ['hostid'],
-      show: (record) => { return record.domainid }
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'prepareHostForMaintenance',
@@ -110,17 +125,30 @@ export default {
       icon: 'setting',
       label: 'label.outofbandmanagement.configure',
       dataView: true,
-      args: ['hostid', 'address', 'port', 'username', 'password', 'driver']
+      args: ['hostid', 'address', 'port', 'username', 'password', 'driver'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        },
+        driver: {
+          options: ['ipmitool', 'nestedcloudstack']
+        }
+      }
     },
     {
       api: 'enableOutOfBandManagementForHost',
       icon: 'plus-circle',
       label: 'label.outofbandmanagement.enable',
       dataView: true,
-      args: ['hostid'],
       show: (record) => {
         return !record.resourcedetails || 
!record.resourcedetails.outOfBandManagementEnabled ||
           record.resourcedetails.outOfBandManagementEnabled === 'false'
+      },
+      args: ['hostid'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -128,10 +156,15 @@ export default {
       icon: 'minus-circle',
       label: 'label.outofbandmanagement.disable',
       dataView: true,
-      args: ['hostid'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.outOfBandManagementEnabled &&
           record.resourcedetails.outOfBandManagementEnabled === 'true'
+      },
+      args: ['hostid'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -139,10 +172,15 @@ export default {
       icon: 'login',
       label: 'label.outofbandmanagement.action.issue',
       dataView: true,
-      args: ['hostid', 'action'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.outOfBandManagementEnabled &&
           record.resourcedetails.outOfBandManagementEnabled === 'true'
+      },
+      args: ['hostid', 'action'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -150,10 +188,15 @@ export default {
       icon: 'key',
       label: 'label.outofbandmanagement.changepassword',
       dataView: true,
-      args: ['hostid', 'password'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.outOfBandManagementEnabled &&
           record.resourcedetails.outOfBandManagementEnabled === 'true'
+      },
+      args: ['hostid', 'password'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -161,17 +204,27 @@ export default {
       icon: 'tool',
       label: 'label.ha.configure',
       dataView: true,
-      args: ['hostid', 'provider']
+      args: ['hostid', 'provider'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'enableHAForHost',
       icon: 'eye',
       label: 'label.ha.enable',
       dataView: true,
-      args: ['hostid'],
       show: (record) => {
         return !record.resourcedetails || 
!record.resourcedetails.resourceHAEnabled ||
           record.resourcedetails.resourceHAEnabled === 'false'
+      },
+      args: ['hostid'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -179,10 +232,15 @@ export default {
       icon: 'eye-invisible',
       label: 'label.ha.disable',
       dataView: true,
-      args: ['hostid'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.resourceHAEnabled &&
           record.resourcedetails.resourceHAEnabled === 'true'
+      },
+      args: ['hostid'],
+      mapping: {
+        hostid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
diff --git a/src/config/section/event.js 
b/src/config/section/infra/phynetworks.js
similarity index 55%
copy from src/config/section/event.js
copy to src/config/section/infra/phynetworks.js
index 0e15e2b..aa59add 100644
--- a/src/config/section/event.js
+++ b/src/config/section/infra/phynetworks.js
@@ -16,31 +16,12 @@
 // under the License.
 
 export default {
-  name: 'event',
-  title: 'Events',
-  icon: 'schedule',
-  permission: ['listEvents'],
-  columns: ['username', 'description', 'state', 'level', 'type', 'account', 
'domain', 'created'],
-  details: ['username', 'id', 'description', 'state', 'level', 'type', 
'account', 'domain', 'created'],
-  related: [{
-    name: 'event',
-    title: 'Event Timeline',
-    param: 'startid'
-  }],
-  actions: [
-    {
-      api: 'archiveEvents',
-      icon: 'book',
-      label: 'Archive Event',
-      dataView: true,
-      args: ['ids']
-    },
-    {
-      api: 'deleteEvents',
-      icon: 'delete',
-      label: 'Delete Event',
-      dataView: true,
-      args: ['ids']
-    }
-  ]
+  name: 'physicalnetwork',
+  title: 'Physical Networks',
+  icon: 'api',
+  hidden: true,
+  permission: ['listPhysicalNetworks'],
+  columns: ['name', 'state', 'isolationmethods', 'vlan', 
'broadcastdomainrange', 'zoneid'],
+  details: ['name', 'state', 'isolationmethods', 'vlan', 
'broadcastdomainrange', 'zoneid'],
+  actions: []
 }
diff --git a/src/config/section/infra/pods.js b/src/config/section/infra/pods.js
index 23b80e4..19ef030 100644
--- a/src/config/section/infra/pods.js
+++ b/src/config/section/infra/pods.js
@@ -51,16 +51,26 @@ export default {
       icon: 'user-add',
       label: 'label.dedicate.pod',
       dataView: true,
+      show: (record) => { return !record.domainid },
       args: ['podid', 'domainid', 'account'],
-      show: (record) => { return !record.domainid }
+      mapping: {
+        podid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'releaseDedicatedPod',
       icon: 'user-delete',
       label: 'label.release.dedicated.pod',
       dataView: true,
+      show: (record) => { return record.domainid },
       args: ['podid'],
-      show: (record) => { return record.domainid }
+      mapping: {
+        podid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'updatePod',
diff --git a/src/config/section/infra/routers.js 
b/src/config/section/infra/routers.js
index f3631bb..4491693 100644
--- a/src/config/section/infra/routers.js
+++ b/src/config/section/infra/routers.js
@@ -66,16 +66,29 @@ export default {
       icon: 'drag',
       label: 'label.action.migrate.router',
       dataView: true,
+      show: (record) => { return record.state === 'Running' },
       args: ['virtualmachineid', 'hostid'],
-      show: (record) => { return record.state === 'Running' }
+      mapping: {
+        virtualmachineid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'runDiagnostics',
       icon: 'reconciliation',
       label: 'label.action.run.diagnostics',
       dataView: true,
+      show: (record) => { return record.state === 'Running' },
       args: ['targetid', 'type', 'ipaddress', 'params'],
-      show: (record) => { return record.state === 'Running' }
+      mapping: {
+        targetid: {
+          value: (record) => { return record.id }
+        },
+        type: {
+          options: ['ping', 'traceroute', 'arping']
+        }
+      }
     },
     {
       api: 'destroyRouter',
diff --git a/src/config/section/infra/systemVms.js 
b/src/config/section/infra/systemVms.js
index 3c87da0..8c0e93f 100644
--- a/src/config/section/infra/systemVms.js
+++ b/src/config/section/infra/systemVms.js
@@ -35,7 +35,8 @@ export default {
       icon: 'stop',
       label: 'label.action.stop.systemvm',
       dataView: true,
-      show: (record) => { return record.state === 'Running' }
+      show: (record) => { return record.state === 'Running' },
+      args: ['forced']
     },
     {
       api: 'rebootSystemVm',
@@ -49,24 +50,37 @@ export default {
       icon: 'arrows-alt',
       label: 'label.change.service.offering',
       dataView: true,
-      args: ['serviceofferingid'],
-      show: (record) => { return record.hypervisor !== 'KVM' }
+      show: (record) => { return record.hypervisor !== 'KVM' },
+      args: ['serviceofferingid']
     },
     {
       api: 'migrateSystemVm',
       icon: 'drag',
       label: 'label.action.migrate.systemvm',
       dataView: true,
+      show: (record) => { return record.state === 'Running' },
       args: ['virtualmachineid', 'hostid'],
-      show: (record) => { return record.state === 'Running' }
+      mapping: {
+        virtualmachineid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'runDiagnostics',
       icon: 'reconciliation',
       label: 'label.action.run.diagnostics',
       dataView: true,
+      show: (record) => { return record.state === 'Running' },
       args: ['targetid', 'type', 'ipaddress', 'params'],
-      show: (record) => { return record.state === 'Running' }
+      mapping: {
+        targetid: {
+          value: (record) => { return record.id }
+        },
+        type: {
+          options: ['ping', 'traceroute', 'arping']
+        }
+      }
     },
     {
       api: 'destroySystemVm',
diff --git a/src/config/section/infra/zones.js 
b/src/config/section/infra/zones.js
index 4d8edb0..ee8d3fd 100644
--- a/src/config/section/infra/zones.js
+++ b/src/config/section/infra/zones.js
@@ -23,6 +23,10 @@ export default {
   columns: ['name', 'state', 'networktype', 'clusters', 'cpuused', 
'cpumaxdeviation', 'cpuallocated', 'cputotal', 'memoryused', 
'memorymaxdeviation', 'memoryallocated', 'memorytotal'],
   details: ['name', 'id', 'allocationstate', 'networktype', 
'guestcidraddress', 'localstorageenabled', 'securitygroupsenabled', 'dns1', 
'dns2', 'internaldns1', 'internaldns2'],
   related: [{
+    name: 'physicalnetwork',
+    title: 'Physical Networks',
+    param: 'zoneid'
+  }, {
     name: 'pod',
     title: 'Pods',
     param: 'zoneid'
@@ -35,6 +39,10 @@ export default {
     title: 'Hosts',
     param: 'zoneid'
   }, {
+    name: 'systemvm',
+    title: 'SystemVMs',
+    param: 'zoneid'
+  }, {
     name: 'storagepool',
     title: 'Primate Storage',
     param: 'zoneid'
@@ -89,26 +97,41 @@ export default {
       icon: 'user-add',
       label: 'label.dedicate.zone',
       dataView: true,
+      show: (record) => { return !record.domainid },
       args: ['zoneid', 'domainid', 'account'],
-      show: (record) => { return !record.domainid }
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'releaseDedicatedZone',
       icon: 'user-delete',
       label: 'label.release.dedicated.zone',
       dataView: true,
+      show: (record) => { return record.domainid },
       args: ['zoneid'],
-      show: (record) => { return record.domainid }
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'enableOutOfBandManagementForZone',
       icon: 'plus-circle',
       label: 'label.outofbandmanagement.enable',
       dataView: true,
-      args: ['zoneid'],
       show: (record) => {
         return !record.resourcedetails || 
!record.resourcedetails.outOfBandManagementEnabled ||
           record.resourcedetails.outOfBandManagementEnabled === 'false'
+      },
+      args: ['zoneid'],
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -116,10 +139,15 @@ export default {
       icon: 'minus-circle',
       label: 'label.outofbandmanagement.disable',
       dataView: true,
-      args: ['zoneid'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.outOfBandManagementEnabled &&
           record.resourcedetails.outOfBandManagementEnabled === 'true'
+      },
+      args: ['zoneid'],
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -127,10 +155,15 @@ export default {
       icon: 'eye',
       label: 'label.ha.enable',
       dataView: true,
-      args: ['zoneid'],
       show: (record) => {
         return !record.resourcedetails || 
!record.resourcedetails.resourceHAEnabled ||
           record.resourcedetails.resourceHAEnabled === 'false'
+      },
+      args: ['zoneid'],
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -138,10 +171,15 @@ export default {
       icon: 'eye-invisible',
       label: 'label.ha.disable',
       dataView: true,
-      args: ['zoneid'],
       show: (record) => {
         return record.resourcedetails && 
record.resourcedetails.resourceHAEnabled &&
           record.resourcedetails.resourceHAEnabled === 'true'
+      },
+      args: ['zoneid'],
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
       }
     },
     {
@@ -149,24 +187,39 @@ export default {
       icon: 'block',
       label: 'label.add.vmware.datacenter',
       dataView: true,
+      show: (record) => { return !record.vmwaredcid },
       args: ['zoneid', 'name', 'vcenter', 'username', 'password'],
-      show: (record) => { return !record.vmwaredcid }
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'updateVmwareDc',
       icon: 'block',
       label: 'label.update.vmware.datacenter',
       dataView: true,
+      show: (record) => { return record.vmwaredcid },
       args: ['zoneid', 'name', 'vcenter', 'username', 'password', 
'isrecursive'],
-      show: (record) => { return record.vmwaredcid }
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'removeVmwareDc',
       icon: 'minus-square',
       label: 'label.remove.vmware.datacenter',
       dataView: true,
+      show: (record) => { return record.vmwaredcid },
       args: ['zoneid'],
-      show: (record) => { return record.vmwaredcid }
+      mapping: {
+        zoneid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'deleteZone',
diff --git a/src/config/section/network.js b/src/config/section/network.js
index 874f394..92e5e40 100644
--- a/src/config/section/network.js
+++ b/src/config/section/network.js
@@ -191,30 +191,59 @@ export default {
           icon: 'link',
           label: 'Enable Remote Access VPN',
           dataView: true,
-          args: ['publicipid', 'domainid', 'account']
+          args: ['publicipid', 'domainid', 'account'],
+          mapping: {
+            publicipid: {
+              value: (record) => { return record.id }
+            },
+            domainid: {
+              value: (record) => { return record.domainid }
+            },
+            account: {
+              value: (record) => { return record.account }
+            }
+          }
         },
         {
           api: 'deleteRemoteAccessVpn',
           icon: 'disconnect',
           label: 'Disable Remove Access VPN',
           dataView: true,
-          args: ['publicipid', 'domainid']
+          args: ['publicipid', 'domainid'],
+          mapping: {
+            publicipid: {
+              value: (record) => { return record.id }
+            },
+            domainid: {
+              value: (record) => { return record.domainid }
+            }
+          }
         },
         {
           api: 'enableStaticNat',
           icon: 'plus-circle',
           label: 'Enable Static NAT',
           dataView: true,
+          show: (record) => { return !record.virtualmachineid && 
!record.issourcenat },
           args: ['ipaddressid', 'virtualmachineid', 'vmguestip'],
-          show: (record) => { return !record.virtualmachineid && 
!record.issourcenat }
+          mapping: {
+            ipaddressid: {
+              value: (record) => { return record.id }
+            }
+          }
         },
         {
           api: 'disableStaticNat',
           icon: 'minus-circle',
           label: 'Disable Static NAT',
           dataView: true,
+          show: (record) => { return record.virtualmachineid },
           args: ['ipaddressid'],
-          show: (record) => { return record.virtualmachineid }
+          mapping: {
+            ipaddressid: {
+              value: (record) => { return record.id }
+            }
+          }
         },
         {
           api: 'disassociateIpAddress',
@@ -245,7 +274,18 @@ export default {
           icon: 'delete',
           label: 'Delete VPN User',
           dataView: true,
-          args: ['username', 'domainid', 'account']
+          args: ['username', 'domainid', 'account'],
+          mapping: {
+            username: {
+              value: (record) => { return record.username }
+            },
+            domainid: {
+              value: (record) => { return record.domainid }
+            },
+            account: {
+              value: (record) => { return record.account }
+            }
+          }
         }
       ]
     },
@@ -264,6 +304,12 @@ export default {
           label: 'Add VPN Customer Gateway',
           listView: true,
           args: ['name', 'gateway', 'cidrlist', 'ipsecpsk', 'ikelifetime', 
'esplifetime', 'dpd', 'forceencap', 'ikepolicy', 'esppolicy']
+        },
+        {
+          api: 'deleteVpnCustomerGateway',
+          icon: 'delete',
+          label: 'Delete VPN Customer Gateway',
+          dataView: true
         }
       ]
     }
diff --git a/src/config/section/offering.js b/src/config/section/offering.js
index b629530..2483d9c 100644
--- a/src/config/section/offering.js
+++ b/src/config/section/offering.js
@@ -137,6 +137,30 @@ export default {
         dataView: true,
         args: ['name', 'displaytext', 'availability']
       }, {
+        api: 'updateNetworkOffering',
+        icon: 'play-circle',
+        label: 'Enable Offering',
+        dataView: true,
+        show: (record) => { return record.state === 'Disabled' },
+        args: ['state'],
+        mapping: {
+          state: {
+            value: (record) => { return 'Enabled' }
+          }
+        }
+      }, {
+        api: 'updateNetworkOffering',
+        icon: 'pause-circle',
+        label: 'Disable Offering',
+        dataView: true,
+        show: (record) => { return record.state === 'Enabled' },
+        args: ['state'],
+        mapping: {
+          state: {
+            value: (record) => { return 'Disabled' }
+          }
+        }
+      }, {
         api: 'deleteNetworkOffering',
         icon: 'delete',
         label: 'Delete Offering',
@@ -170,6 +194,30 @@ export default {
         dataView: true,
         args: ['name', 'displaytext']
       }, {
+        api: 'updateVPCOffering',
+        icon: 'play-circle',
+        label: 'Enable Offering',
+        dataView: true,
+        show: (record) => { return record.state === 'Disabled' },
+        args: ['state'],
+        mapping: {
+          state: {
+            value: (record) => { return 'Enabled' }
+          }
+        }
+      }, {
+        api: 'updateVPCOffering',
+        icon: 'pause-circle',
+        label: 'Disable Offering',
+        dataView: true,
+        show: (record) => { return record.state === 'Enabled' },
+        args: ['state'],
+        mapping: {
+          state: {
+            value: (record) => { return 'Disabled' }
+          }
+        }
+      }, {
         api: 'deleteVPCOffering',
         icon: 'delete',
         label: 'Delete Offering',
diff --git a/src/config/section/project.js b/src/config/section/project.js
index 1f2b033..fd48292 100644
--- a/src/config/section/project.js
+++ b/src/config/section/project.js
@@ -57,7 +57,12 @@ export default {
       icon: 'user-add',
       label: 'Add Account to Project',
       dataView: true,
-      args: ['projectid', 'account', 'email']
+      args: ['projectid', 'account', 'email'],
+      mapping: {
+        projectid: {
+          value: (record) => { return record.id }
+        }
+      }
     },
     {
       api: 'deleteProject',
diff --git a/src/config/section/storage.js b/src/config/section/storage.js
index 48e2298..649e7be 100644
--- a/src/config/section/storage.js
+++ b/src/config/section/storage.js
@@ -38,16 +38,19 @@ export default {
           api: 'createVolume',
           icon: 'plus',
           label: 'Create Volume',
-          type: 'main',
-          args: ['name', 'zoneid', 'diskofferingid'],
-          listView: true
+          listView: true,
+          args: ['name', 'zoneid', 'diskofferingid']
         }, {
           api: 'uploadVolume',
           icon: 'link',
           label: 'Upload Volume From URL',
-          type: 'main',
+          listView: true,
           args: ['url', 'name', 'zoneid', 'format', 'diskofferingid', 
'checksum'],
-          listView: true
+          mapping: {
+            format: {
+              options: ['RAW', 'VHD', 'VHDX', 'OVA', 'QCOW2']
+            }
+          }
         }, {
           api: 'getUploadParamsForVolume',
           icon: 'cloud-upload',
@@ -142,9 +145,14 @@ export default {
           api: 'createTemplate',
           icon: 'picture',
           label: 'Create Template from Volume',
-          args: ['volumeid', 'name', 'displaytext', 'ostypeid', 'ispublic', 
'isfeatured', 'isdynamicallyscalable', 'requireshvm', 'passwordenabled', 
'sshkeyenabled'],
           dataView: true,
-          show: (record) => { return record.type === 'ROOT' }
+          show: (record) => { return record.type === 'ROOT' },
+          args: ['volumeid', 'name', 'displaytext', 'ostypeid', 'ispublic', 
'isfeatured', 'isdynamicallyscalable', 'requireshvm', 'passwordenabled', 
'sshkeyenabled'],
+          mapping: {
+            volumeid: {
+              value: (record) => { return record.id }
+            }
+          }
         },
         {
           api: 'deleteVolume',
@@ -169,6 +177,7 @@ export default {
           icon: 'plus',
           label: 'Create volume',
           dataView: true,
+          show: (record) => { return record.state === 'BackedUp' },
           args: ['snapshotid', 'name'],
           mapping: {
             snapshotid: {
@@ -181,6 +190,7 @@ export default {
           icon: 'picture',
           label: 'Create volume',
           dataView: true,
+          show: (record) => { return record.state === 'BackedUp' },
           args: ['snapshotid', 'name', 'displaytext', 'ostypeid', 'ispublic', 
'isfeatured', 'isdynamicallyscalable', 'requireshvm', 'passwordenabled', 
'sshkeyenabled'],
           mapping: {
             snapshotid: {
@@ -216,6 +226,7 @@ export default {
           icon: 'sync',
           label: 'Revert VM snapshot',
           dataView: true,
+          show: (record) => { return record.state === 'Ready' },
           args: ['vmsnapshotid'],
           mapping: {
             vmsnapshotid: {
diff --git a/src/views/AutogenView.vue b/src/views/AutogenView.vue
index 8fd7a3f..977a70c 100644
--- a/src/views/AutogenView.vue
+++ b/src/views/AutogenView.vue
@@ -496,6 +496,8 @@ export default {
         params.templatefilter = 'executable'
       } else if (possibleApi === 'listIsos') {
         params.isofilter = 'executable'
+      } else if (possibleApi === 'listHosts') {
+        params.type = 'routing'
       }
       api(possibleApi, params).then(json => {
         param.loading = false

Reply via email to