diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 1f6a2057c49b..89abfe5981fa 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -708,6 +708,7 @@
"label.destnetworkuuid": "Network",
"label.destport": "Destination Ports",
"label.destroy": "Destroy",
+"label.destroying": "Destroying",
"label.destroyed": "Destroyed",
"label.destroy.router": "Destroy router",
"label.deststartport": "Destination Start Port",
@@ -931,6 +932,7 @@
"label.fwdeviceid": "ID",
"label.fwdevicestate": "Status",
"label.gateway": "Gateway",
+"label.global": "Global",
"label.global.settings": "Global Settings",
"label.globo.dns": "GloboDNS",
"label.globo.dns.configuration": "GloboDNS configuration",
@@ -1343,6 +1345,7 @@
"label.min_balance": "Min balance",
"label.mincpunumber": "Min CPU cores",
"label.minimum": "Minimum",
+"label.minimumsemanticversion": "Minimum semantic version",
"label.miniops": "Min IOPS",
"label.minmaxiops": "Min IOPS / Max IOPS",
"label.minmembers": "Min members",
@@ -1682,6 +1685,7 @@
"label.reboot": "Reboot",
"label.receivedbytes": "Bytes received",
"label.recover.vm": "Recover Instance",
+"label.recovering": "Recovering",
"label.redirect": "Redirect to:",
"label.redirecturi": "Redirect URI",
"label.redundantrouter": "Redundant router",
@@ -1824,6 +1828,7 @@
"label.scaledown.policy": "ScaleDown policy",
"label.scaleup.policies": "ScaleUp policies",
"label.scaleup.policy": "ScaleUp policy",
+"label.scaling": "Scaling",
"label.schedule": "Schedule",
"label.schedule.add": "Add schedule",
"label.scheduled.backups": "Scheduled backups",
@@ -2188,6 +2193,7 @@
"label.update.vmware.datacenter": "Update VMWare datacenter",
"label.updating": "Updating",
"label.upgrade.router.newer.template": "Upgrade router to use newer Template",
+"label.upgrading": "Upgrading",
"label.upload": "Upload",
"label.upload.description": "Path to upload objects at",
"label.upload.path": "Upload path",
diff --git a/ui/src/components/view/SearchView.vue b/ui/src/components/view/SearchView.vue
index 7a2154ad4263..43f07c7456b5 100644
--- a/ui/src/components/view/SearchView.vue
+++ b/ui/src/components/view/SearchView.vue
@@ -79,7 +79,7 @@
-
+
@@ -268,6 +268,9 @@ export default {
if (item === 'domainid' && !('listDomains' in this.$store.getters.apis)) {
return true
}
+ if (item === 'account' && !('listAccounts' in this.$store.getters.apis)) {
+ return true
+ }
if (item === 'account' && !('addAccountToProject' in this.$store.getters.apis || 'createAccount' in this.$store.getters.apis)) {
return true
}
@@ -280,7 +283,10 @@ export default {
if (item === 'groupid' && !('listInstanceGroups' in this.$store.getters.apis)) {
return true
}
- if (['zoneid', 'domainid', 'imagestoreid', 'storageid', 'state', 'level', 'clusterid', 'podid', 'groupid', 'entitytype', 'type'].includes(item)) {
+ if (['zoneid', 'domainid', 'imagestoreid', 'storageid', 'state', 'account', 'hypervisor', 'level',
+ 'clusterid', 'podid', 'groupid', 'entitytype', 'accounttype', 'systemvmtype', 'scope', 'provider',
+ 'type'].includes(item)
+ ) {
type = 'list'
} else if (item === 'tags') {
type = 'tag'
@@ -305,6 +311,11 @@ export default {
this.fields[typeIndex].loading = true
this.fields[typeIndex].opts = this.fetchGuestNetworkTypes()
this.fields[typeIndex].loading = false
+ } else if (this.$route.path === '/role' || this.$route.path.includes('/role/')) {
+ const typeIndex = this.fields.findIndex(item => item.name === 'type')
+ this.fields[typeIndex].loading = true
+ this.fields[typeIndex].opts = this.fetchRoleTypes()
+ this.fields[typeIndex].loading = false
}
}
@@ -329,6 +340,34 @@ export default {
this.fields[entityTypeIndex].loading = false
}
+ if (arrayField.includes('accounttype')) {
+ const accountTypeIndex = this.fields.findIndex(item => item.name === 'accounttype')
+ this.fields[accountTypeIndex].loading = true
+ this.fields[accountTypeIndex].opts = this.fetchAccountTypes()
+ this.fields[accountTypeIndex].loading = false
+ }
+
+ if (arrayField.includes('systemvmtype')) {
+ const systemVmTypeIndex = this.fields.findIndex(item => item.name === 'systemvmtype')
+ this.fields[systemVmTypeIndex].loading = true
+ this.fields[systemVmTypeIndex].opts = this.fetchSystemVmTypes()
+ this.fields[systemVmTypeIndex].loading = false
+ }
+
+ if (arrayField.includes('scope')) {
+ const scopeIndex = this.fields.findIndex(item => item.name === 'scope')
+ this.fields[scopeIndex].loading = true
+ this.fields[scopeIndex].opts = this.fetchStoragePoolScope()
+ this.fields[scopeIndex].loading = false
+ }
+
+ if (arrayField.includes('provider')) {
+ const providerIndex = this.fields.findIndex(item => item.name === 'provider')
+ this.fields[providerIndex].loading = true
+ this.fields[providerIndex].opts = this.fetchImageStoreProviders()
+ this.fields[providerIndex].loading = false
+ }
+
if (arrayField.includes('resourcetype')) {
const resourceTypeIndex = this.fields.findIndex(item => item.name === 'resourcetype')
this.fields[resourceTypeIndex].loading = true
@@ -351,6 +390,8 @@ export default {
let typeIndex = -1
let zoneIndex = -1
let domainIndex = -1
+ let accountIndex = -1
+ let hypervisorIndex = -1
let imageStoreIndex = -1
let storageIndex = -1
let podIndex = -1
@@ -362,6 +403,10 @@ export default {
typeIndex = this.fields.findIndex(item => item.name === 'type')
this.fields[typeIndex].loading = true
promises.push(await this.fetchAlertTypes())
+ } else if (this.$route.path === '/affinitygroup') {
+ typeIndex = this.fields.findIndex(item => item.name === 'type')
+ this.fields[typeIndex].loading = true
+ promises.push(await this.fetchAffinityGroupTypes())
}
}
@@ -377,6 +422,18 @@ export default {
promises.push(await this.fetchDomains(searchKeyword))
}
+ if (arrayField.includes('account')) {
+ accountIndex = this.fields.findIndex(item => item.name === 'account')
+ this.fields[accountIndex].loading = true
+ promises.push(await this.fetchAccounts(searchKeyword))
+ }
+
+ if (arrayField.includes('hypervisor')) {
+ hypervisorIndex = this.fields.findIndex(item => item.name === 'hypervisor')
+ this.fields[hypervisorIndex].loading = true
+ promises.push(await this.fetchHypervisors())
+ }
+
if (arrayField.includes('imagestoreid')) {
imageStoreIndex = this.fields.findIndex(item => item.name === 'imagestoreid')
this.fields[imageStoreIndex].loading = true
@@ -426,6 +483,18 @@ export default {
this.fields[domainIndex].opts = this.sortArray(domain[0].data, 'path')
}
}
+ if (accountIndex > -1) {
+ const account = response.filter(item => item.type === 'account')
+ if (account && account.length > 0) {
+ this.fields[accountIndex].opts = this.sortArray(account[0].data, 'name')
+ }
+ }
+ if (hypervisorIndex > -1) {
+ const hypervisor = response.filter(item => item.type === 'hypervisor')
+ if (hypervisor && hypervisor.length > 0) {
+ this.fields[hypervisorIndex].opts = this.sortArray(hypervisor[0].data, 'name')
+ }
+ }
if (imageStoreIndex > -1) {
const imageStore = response.filter(item => item.type === 'imagestoreid')
if (imageStore && imageStore.length > 0) {
@@ -539,6 +608,32 @@ export default {
})
})
},
+ fetchAccounts (searchKeyword) {
+ return new Promise((resolve, reject) => {
+ api('listAccounts', { listAll: true, showicon: true, keyword: searchKeyword }).then(json => {
+ const account = json.listaccountsresponse.account
+ resolve({
+ type: 'account',
+ data: account
+ })
+ }).catch(error => {
+ reject(error.response.headers['x-description'])
+ })
+ })
+ },
+ fetchHypervisors () {
+ return new Promise((resolve, reject) => {
+ api('listHypervisors').then(json => {
+ const hypervisor = json.listhypervisorsresponse.hypervisor.map(a => { return { id: a.name, name: a.name } })
+ resolve({
+ type: 'hypervisor',
+ data: hypervisor
+ })
+ }).catch(error => {
+ reject(error.response.headers['x-description'])
+ })
+ })
+ },
fetchImageStores (searchKeyword) {
return new Promise((resolve, reject) => {
api('listImageStores', { listAll: true, showicon: true, keyword: searchKeyword }).then(json => {
@@ -627,6 +722,41 @@ export default {
})
}
},
+ fetchAffinityGroupTypes () {
+ if (this.alertTypes.length > 0) {
+ return new Promise((resolve, reject) => {
+ resolve({
+ type: 'type',
+ data: this.alertTypes
+ })
+ })
+ } else {
+ return new Promise((resolve, reject) => {
+ api('listAffinityGroupTypes').then(json => {
+ const alerttypes = json.listaffinitygrouptypesresponse.affinityGroupType.map(a => {
+ let name = a.type
+ if (a.type === 'host anti-affinity') {
+ name = 'host anti-affinity (Strict)'
+ } else if (a.type === 'host affinity') {
+ name = 'host affinity (Strict)'
+ } else if (a.type === 'non-strict host anti-affinity') {
+ name = 'host anti-affinity (Non-Strict)'
+ } else if (a.type === 'non-strict host affinity') {
+ name = 'host affinity (Non-Strict)'
+ }
+ return { id: a.type, name: name }
+ })
+ this.alertTypes = alerttypes
+ resolve({
+ type: 'type',
+ data: alerttypes
+ })
+ }).catch(error => {
+ reject(error.response.headers['x-description'])
+ })
+ })
+ }
+ },
fetchGuestNetworkTypes () {
const types = []
if (this.apiName.indexOf('listNetworks') > -1) {
@@ -645,6 +775,108 @@ export default {
}
return types
},
+ fetchAccountTypes () {
+ const types = []
+ if (this.apiName.indexOf('listAccounts') > -1) {
+ types.push({
+ id: '1',
+ name: 'Admin'
+ })
+ types.push({
+ id: '2',
+ name: 'DomainAdmin'
+ })
+ types.push({
+ id: '3',
+ name: 'User'
+ })
+ }
+ return types
+ },
+ fetchSystemVmTypes () {
+ const types = []
+ if (this.apiName.indexOf('listSystemVms') > -1) {
+ types.push({
+ id: 'consoleproxy',
+ name: 'label.console.proxy.vm'
+ })
+ types.push({
+ id: 'secondarystoragevm',
+ name: 'label.secondary.storage.vm'
+ })
+ }
+ return types
+ },
+ fetchStoragePoolScope () {
+ const types = []
+ if (this.apiName.indexOf('listStoragePools') > -1) {
+ types.push({
+ id: 'HOST',
+ name: 'label.hostname'
+ })
+ types.push({
+ id: 'CLUSTER',
+ name: 'label.cluster'
+ })
+ types.push({
+ id: 'ZONE',
+ name: 'label.zone'
+ })
+ types.push({
+ id: 'REGION',
+ name: 'label.region'
+ })
+ types.push({
+ id: 'GLOBAL',
+ name: 'label.global'
+ })
+ }
+ return types
+ },
+ fetchImageStoreProviders () {
+ const types = []
+ if (this.apiName.indexOf('listImageStores') > -1) {
+ types.push({
+ id: 'NFS',
+ name: 'NFS'
+ })
+ types.push({
+ id: 'SMB/CIFS',
+ name: 'SMB/CIFS'
+ })
+ types.push({
+ id: 'S3',
+ name: 'S3'
+ })
+ types.push({
+ id: 'Swift',
+ name: 'Swift'
+ })
+ }
+ return types
+ },
+ fetchRoleTypes () {
+ const types = []
+ if (this.apiName.indexOf('listRoles') > -1) {
+ types.push({
+ id: 'Admin',
+ name: 'Admin'
+ })
+ types.push({
+ id: 'ResourceAdmin',
+ name: 'ResourceAdmin'
+ })
+ types.push({
+ id: 'DomainAdmin',
+ name: 'DomainAdmin'
+ })
+ types.push({
+ id: 'User',
+ name: 'User'
+ })
+ }
+ return types
+ },
fetchState () {
if (this.apiName.includes('listVolumes')) {
return [
@@ -673,6 +905,57 @@ export default {
name: 'label.migrating'
}
]
+ } else if (this.apiName.includes('listKubernetesClusters')) {
+ return [
+ {
+ id: 'Created',
+ name: 'label.created'
+ },
+ {
+ id: 'Starting',
+ name: 'label.starting'
+ },
+ {
+ id: 'Running',
+ name: 'label.running'
+ },
+ {
+ id: 'Stopping',
+ name: 'label.stopping'
+ },
+ {
+ id: 'Stopped',
+ name: 'label.stopped'
+ },
+ {
+ id: 'Scaling',
+ name: 'label.scaling'
+ },
+ {
+ id: 'Upgrading',
+ name: 'label.upgrading'
+ },
+ {
+ id: 'Alert',
+ name: 'label.alert'
+ },
+ {
+ id: 'Recovering',
+ name: 'label.recovering'
+ },
+ {
+ id: 'Destroyed',
+ name: 'label.destroyed'
+ },
+ {
+ id: 'Destroying',
+ name: 'label.destroying'
+ },
+ {
+ id: 'Error',
+ name: 'label.error'
+ }
+ ]
}
return []
},
diff --git a/ui/src/config/section/account.js b/ui/src/config/section/account.js
index 92897a33b126..a35b2b9d5f0d 100644
--- a/ui/src/config/section/account.js
+++ b/ui/src/config/section/account.js
@@ -24,6 +24,7 @@ export default {
icon: 'team-outlined',
docHelp: 'adminguide/accounts.html',
permission: ['listAccounts'],
+ searchFilters: ['name', 'accounttype', 'domainid'],
columns: ['name', 'state', 'rolename', 'roletype', 'domainpath'],
details: ['name', 'id', 'rolename', 'roletype', 'domainpath', 'networkdomain', 'iptotal', 'vmtotal', 'volumetotal', 'receivedbytes', 'sentbytes', 'created'],
related: [{
diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js
index ba3a21e15397..969402a694cd 100644
--- a/ui/src/config/section/compute.js
+++ b/ui/src/config/section/compute.js
@@ -520,6 +520,7 @@ export default {
title: 'label.kubernetes',
icon: ['fa-solid', 'fa-dharmachakra'],
docHelp: 'plugins/cloudstack-kubernetes-service.html',
+ searchFilters: ['name', 'domainid', 'account', 'state'],
permission: ['listKubernetesClusters'],
columns: (store) => {
var fields = ['name', 'state', 'clustertype', 'size', 'cpunumber', 'memory', 'kubernetesversionname']
@@ -629,6 +630,7 @@ export default {
docHelp: 'adminguide/autoscale_with_virtual_router.html',
resourceType: 'AutoScaleVmGroup',
permission: ['listAutoScaleVmGroups'],
+ searchFilters: ['name', 'zoneid', 'domainid', 'account'],
columns: (store) => {
var fields = ['name', 'state', 'associatednetworkname', 'publicip', 'publicport', 'privateport', 'minmembers', 'maxmembers', 'availablevirtualmachinecount', 'account']
if (store.listAllProjects) {
@@ -739,7 +741,7 @@ export default {
docHelp: 'adminguide/virtual_machines.html#changing-the-vm-name-os-or-group',
resourceType: 'VMInstanceGroup',
permission: ['listInstanceGroups'],
-
+ searchFilters: ['name', 'zoneid', 'domainid', 'account'],
columns: (store) => {
var fields = ['name', 'account']
if (store.listAllProjects) {
@@ -797,6 +799,7 @@ export default {
icon: 'key-outlined',
docHelp: 'adminguide/virtual_machines.html#using-ssh-keys-for-authentication',
permission: ['listSSHKeyPairs'],
+ searchFilters: ['name', 'domainid', 'account', 'fingerprint'],
columns: () => {
var fields = ['name', 'fingerprint']
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
@@ -957,6 +960,7 @@ export default {
icon: 'swap-outlined',
docHelp: 'adminguide/virtual_machines.html#affinity-groups',
permission: ['listAffinityGroups'],
+ searchFilters: ['name', 'zoneid', 'domainid', 'account', 'type'],
columns: () => {
var fields = ['name', 'type', 'description']
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
diff --git a/ui/src/config/section/config.js b/ui/src/config/section/config.js
index 6fa33e3ed31b..aa108b5b1fa8 100644
--- a/ui/src/config/section/config.js
+++ b/ui/src/config/section/config.js
@@ -37,6 +37,7 @@ export default {
icon: 'team-outlined',
docHelp: 'adminguide/accounts.html#using-an-ldap-server-for-user-authentication',
permission: ['listLdapConfigurations'],
+ searchFilters: ['domainid', 'hostname', 'port'],
columns: ['hostname', 'port', 'domainid'],
details: ['hostname', 'port', 'domainid'],
actions: [
@@ -118,6 +119,7 @@ export default {
icon: 'database-outlined',
docHelp: 'adminguide/hosts.html?highlight=Hypervisor%20capabilities#hypervisor-capabilities',
permission: ['listHypervisorCapabilities'],
+ searchFilters: ['hypervisor'],
columns: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxhostspercluster'],
details: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxdatavolumeslimit', 'maxhostspercluster', 'securitygroupenabled', 'storagemotionenabled'],
actions: [
diff --git a/ui/src/config/section/image.js b/ui/src/config/section/image.js
index 7a5d52d1b898..3efcfff4a565 100644
--- a/ui/src/config/section/image.js
+++ b/ui/src/config/section/image.js
@@ -367,6 +367,7 @@ export default {
icon: ['fa-solid', 'fa-dharmachakra'],
docHelp: 'plugins/cloudstack-kubernetes-service.html#kubernetes-supported-versions',
permission: ['listKubernetesSupportedVersions'],
+ searchFilters: ['zoneid', 'minimumsemanticversion'],
columns: ['name', 'state', 'semanticversion', 'isostate', 'mincpunumber', 'minmemory', 'zonename'],
details: ['name', 'semanticversion', 'supportsautoscaling', 'zoneid', 'zonename', 'isoid', 'isoname', 'isostate', 'mincpunumber', 'minmemory', 'supportsha', 'state', 'created'],
actions: [
diff --git a/ui/src/config/section/infra.js b/ui/src/config/section/infra.js
index 5b3b38a68e57..cb91d4d7b04f 100644
--- a/ui/src/config/section/infra.js
+++ b/ui/src/config/section/infra.js
@@ -79,7 +79,7 @@ export default {
permission: ['listAlerts'],
columns: ['name', 'description', 'type', 'sent'],
details: ['name', 'id', 'type', 'sent', 'description'],
- searchFilters: ['type'],
+ searchFilters: ['name', 'type'],
actions: [
{
api: 'archiveAlerts',
diff --git a/ui/src/config/section/infra/clusters.js b/ui/src/config/section/infra/clusters.js
index ab8bea6b79d4..8b2f37d5b7bb 100644
--- a/ui/src/config/section/infra/clusters.js
+++ b/ui/src/config/section/infra/clusters.js
@@ -24,6 +24,7 @@ export default {
icon: 'cluster-outlined',
docHelp: 'conceptsandterminology/concepts.html#about-clusters',
permission: ['listClustersMetrics'],
+ searchFilters: ['name', 'zoneid', 'podid', 'hypervisor'],
columns: () => {
const fields = ['name', 'state', 'allocationstate', 'clustertype', 'hypervisortype', 'hosts']
const metricsFields = ['cpuused', 'cpumaxdeviation', 'cpuallocated', 'cputotal', 'memoryused', 'memorymaxdeviation', 'memoryallocated', 'memorytotal', 'drsimbalance']
diff --git a/ui/src/config/section/infra/hosts.js b/ui/src/config/section/infra/hosts.js
index d92f4af21e6e..329b77fe2d7f 100644
--- a/ui/src/config/section/infra/hosts.js
+++ b/ui/src/config/section/infra/hosts.js
@@ -24,6 +24,7 @@ export default {
icon: 'database-outlined',
docHelp: 'conceptsandterminology/concepts.html#about-hosts',
permission: ['listHostsMetrics'],
+ searchFilters: ['name', 'zoneid', 'podid', 'clusterid', 'hypervisor'],
resourceType: 'Host',
filters: () => {
const filters = ['enabled', 'disabled', 'maintenance', 'up', 'down', 'alert']
diff --git a/ui/src/config/section/infra/pods.js b/ui/src/config/section/infra/pods.js
index eff62e0a4a28..595b35f4fb99 100644
--- a/ui/src/config/section/infra/pods.js
+++ b/ui/src/config/section/infra/pods.js
@@ -24,6 +24,7 @@ export default {
icon: 'appstore-outlined',
docHelp: 'conceptsandterminology/concepts.html#about-pods',
permission: ['listPods'],
+ searchFilters: ['name', 'zoneid'],
columns: ['name', 'allocationstate', 'gateway', 'netmask', 'zonename'],
details: ['name', 'id', 'allocationstate', 'netmask', 'gateway', 'zonename'],
related: [{
diff --git a/ui/src/config/section/infra/primaryStorages.js b/ui/src/config/section/infra/primaryStorages.js
index f222edeaf70b..74624b3e8887 100644
--- a/ui/src/config/section/infra/primaryStorages.js
+++ b/ui/src/config/section/infra/primaryStorages.js
@@ -24,6 +24,7 @@ export default {
icon: 'hdd-outlined',
docHelp: 'adminguide/storage.html#primary-storage',
permission: ['listStoragePoolsMetrics'],
+ searchFilters: ['name', 'zoneid', 'podid', 'clusterid', 'ipaddress', 'path', 'scope'],
columns: () => {
const fields = ['name', 'state', 'ipaddress', 'scope', 'type', 'path']
const metricsFields = ['disksizeusedgb', 'disksizetotalgb', 'disksizeallocatedgb', 'disksizeunallocatedgb']
diff --git a/ui/src/config/section/infra/secondaryStorages.js b/ui/src/config/section/infra/secondaryStorages.js
index 774c233c4461..53fa546d9348 100644
--- a/ui/src/config/section/infra/secondaryStorages.js
+++ b/ui/src/config/section/infra/secondaryStorages.js
@@ -24,6 +24,7 @@ export default {
icon: 'picture-outlined',
docHelp: 'adminguide/storage.html#secondary-storage',
permission: ['listImageStores'],
+ searchFilters: ['name', 'zoneid', 'provider'],
columns: () => {
var fields = ['name', 'url', 'protocol', 'scope', 'zonename']
if (store.getters.apis.listImageStores.params.filter(x => x.name === 'readonly').length > 0) {
diff --git a/ui/src/config/section/infra/systemVms.js b/ui/src/config/section/infra/systemVms.js
index 68a27f73a520..3ecd17f95caf 100644
--- a/ui/src/config/section/infra/systemVms.js
+++ b/ui/src/config/section/infra/systemVms.js
@@ -24,6 +24,7 @@ export default {
icon: 'thunderbolt-outlined',
docHelp: 'adminguide/systemvm.html',
permission: ['listSystemVms'],
+ searchFilters: ['name', 'zoneid', 'podid', 'hostid', 'systemvmtype', 'storageid'],
columns: ['name', 'state', 'agentstate', 'systemvmtype', 'publicip', 'privateip', 'linklocalip', 'version', 'hostname', 'zonename'],
details: ['name', 'id', 'agentstate', 'systemvmtype', 'publicip', 'privateip', 'linklocalip', 'gateway', 'hostname', 'version', 'zonename', 'created', 'activeviewersessions', 'isdynamicallyscalable', 'hostcontrolstate'],
resourceType: 'SystemVm',
diff --git a/ui/src/config/section/infra/zones.js b/ui/src/config/section/infra/zones.js
index b2768f773432..929add5210d0 100644
--- a/ui/src/config/section/infra/zones.js
+++ b/ui/src/config/section/infra/zones.js
@@ -24,6 +24,7 @@ export default {
icon: 'global-outlined',
docHelp: 'conceptsandterminology/concepts.html#about-zones',
permission: ['listZonesMetrics'],
+ searchFilters: ['name', 'domainid', 'tags'],
columns: () => {
const fields = ['name', 'allocationstate', 'type', 'networktype', 'clusters']
const metricsFields = ['cpuused', 'cpumaxdeviation', 'cpuallocated', 'cputotal', 'memoryused', 'memorymaxdeviation', 'memoryallocated', 'memorytotal']
diff --git a/ui/src/config/section/network.js b/ui/src/config/section/network.js
index 3d5241feb590..65abdd6bec84 100644
--- a/ui/src/config/section/network.js
+++ b/ui/src/config/section/network.js
@@ -748,6 +748,7 @@ export default {
icon: 'environment-outlined',
docHelp: 'adminguide/networking_and_traffic.html#reserving-public-ip-addresses-and-vlans-for-accounts',
permission: ['listPublicIpAddresses'],
+ searchFilters: ['ipaddress', 'zoneid', 'account', 'domainid', 'vlanid', 'tags'],
resourceType: 'PublicIpAddress',
columns: () => {
var fields = ['ipaddress', 'state', 'associatednetworkname', 'vpcname', 'virtualmachinename', 'allocated', 'account']
@@ -921,7 +922,6 @@ export default {
name: 's2svpn',
title: 'label.site.to.site.vpn',
icon: 'lock-outlined',
- hidden: true,
permission: ['listVpnGateways'],
columns: ['publicip', 'account', 'domain'],
details: ['publicip', 'account', 'domain'],
diff --git a/ui/src/config/section/offering.js b/ui/src/config/section/offering.js
index 3e99f602d919..b97b1a0cb2c9 100644
--- a/ui/src/config/section/offering.js
+++ b/ui/src/config/section/offering.js
@@ -29,6 +29,7 @@ export default {
docHelp: 'adminguide/service_offerings.html#compute-and-disk-service-offerings',
icon: 'cloud-outlined',
permission: ['listServiceOfferings'],
+ searchFilters: ['name', 'zoneid', 'domainid', 'cpunumber', 'cpuspeed', 'memory'],
params: () => {
var params = {}
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
@@ -132,6 +133,7 @@ export default {
icon: 'setting-outlined',
docHelp: 'adminguide/service_offerings.html#system-service-offerings',
permission: ['listServiceOfferings', 'listInfrastructure'],
+ searchFilters: ['name', 'zoneid', 'domainid', 'cpunumber', 'cpuspeed', 'memory'],
params: { issystem: 'true', isrecursive: 'true' },
columns: ['name', 'state', 'systemvmtype', 'cpunumber', 'cpuspeed', 'memory', 'storagetype', 'order'],
filters: ['active', 'inactive'],
@@ -208,6 +210,7 @@ export default {
icon: 'hdd-outlined',
docHelp: 'adminguide/service_offerings.html#compute-and-disk-service-offerings',
permission: ['listDiskOfferings'],
+ searchFilters: ['name', 'zoneid', 'domainid', 'storageid'],
params: () => {
var params = {}
if (['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
@@ -307,6 +310,7 @@ export default {
icon: 'cloud-upload-outlined',
docHelp: 'adminguide/virtual_machines.html#backup-offerings',
permission: ['listBackupOfferings'],
+ searchFilters: ['zoneid'],
columns: ['name', 'description', 'zonename'],
details: ['name', 'id', 'description', 'externalid', 'zone', 'allowuserdrivenbackups', 'created'],
related: [{
@@ -360,6 +364,7 @@ export default {
icon: 'wifi-outlined',
docHelp: 'adminguide/networking.html#network-offerings',
permission: ['listNetworkOfferings'],
+ searchFilters: ['name', 'zoneid', 'domainid', 'tags'],
columns: ['name', 'state', 'guestiptype', 'traffictype', 'networkrate', 'domain', 'zone', 'order'],
details: ['name', 'id', 'displaytext', 'guestiptype', 'traffictype', 'internetprotocol', 'networkrate', 'ispersistent', 'egressdefaultpolicy', 'availability', 'conservemode', 'specifyvlan', 'specifyipranges', 'supportspublicaccess', 'supportsstrechedl2subnet', 'service', 'tags', 'domain', 'zone'],
resourceType: 'NetworkOffering',
@@ -458,6 +463,7 @@ export default {
icon: 'deployment-unit-outlined',
docHelp: 'plugins/nuage-plugin.html?#vpc-offerings',
permission: ['listVPCOfferings'],
+ searchFilters: ['name', 'zoneid', 'domainid'],
resourceType: 'VpcOffering',
columns: ['name', 'state', 'displaytext', 'domain', 'zone', 'order'],
details: ['name', 'id', 'displaytext', 'internetprotocol', 'distributedvpcrouter', 'tags', 'service', 'domain', 'zone', 'created'],
diff --git a/ui/src/config/section/role.js b/ui/src/config/section/role.js
index 3823d633b186..c842b2f68f16 100644
--- a/ui/src/config/section/role.js
+++ b/ui/src/config/section/role.js
@@ -24,6 +24,7 @@ export default {
icon: 'idcard-outlined',
docHelp: 'adminguide/accounts.html#roles',
permission: ['listRoles', 'listRolePermissions'],
+ searchFilters: ['name', 'type'],
columns: ['name', 'type', 'description'],
details: ['name', 'id', 'type', 'description', 'ispublic'],
tabs: [{