mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
config: fix translation key usage for API actions and elsewhere (#407)
- Adds API messages - Fixes English strings to use keys - Fixes/adds missing keys to en.json - Fixes locale load/store issue across logout/login FIxes #410 Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com> Co-authored-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
parent
1edfce8786
commit
a9bc272403
@ -27,9 +27,9 @@
|
||||
<a-spin :spinning="loading">
|
||||
<a-list style="min-width: 200px; max-width: 300px">
|
||||
<a-list-item>
|
||||
<a-list-item-meta title="Notifications">
|
||||
<a-list-item-meta :title="$t('label.notifications')">
|
||||
<a-avatar :style="{backgroundColor: '#6887d0', verticalAlign: 'middle'}" icon="notification" slot="avatar"/>
|
||||
<a-button size="small" slot="description" @click="clearJobs">Clear All</a-button>
|
||||
<a-button size="small" slot="description" @click="clearJobs">{{ $t('label.clear.list') }}</a-button>
|
||||
</a-list-item-meta>
|
||||
</a-list-item>
|
||||
<a-list-item v-for="(job, index) in jobs" :key="index">
|
||||
|
||||
@ -93,6 +93,10 @@ export default {
|
||||
hi
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.language = Vue.ls.get('LOCALE') || 'en'
|
||||
this.setLocale(this.language)
|
||||
},
|
||||
methods: {
|
||||
moment,
|
||||
onClick (e) {
|
||||
@ -107,7 +111,7 @@ export default {
|
||||
this.$i18n.locale = localeValue
|
||||
this.language = localeValue
|
||||
moment.locale(localeValue)
|
||||
Vue.ls.set('current_locale', localeValue)
|
||||
Vue.ls.set('LOCALE', localeValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,20 +29,20 @@
|
||||
<a-menu-item class="user-menu-item" key="0">
|
||||
<router-link :to="{ path: '/accountuser/' + $store.getters.userInfo.id }">
|
||||
<a-icon class="user-menu-item-icon" type="user"/>
|
||||
<span class="user-menu-item-name">Profile</span>
|
||||
<span class="user-menu-item-name">{{ $t('label.profilename') }}</span>
|
||||
</router-link>
|
||||
</a-menu-item>
|
||||
<a-menu-item class="user-menu-item" key="1" disabled>
|
||||
<a :href="docBase" target="_blank">
|
||||
<a-icon class="user-menu-item-icon" type="question-circle-o"></a-icon>
|
||||
<span class="user-menu-item-name">Help</span>
|
||||
<span class="user-menu-item-name">{{ $t('label.help') }}</span>
|
||||
</a>
|
||||
</a-menu-item>
|
||||
<a-menu-divider/>
|
||||
<a-menu-item class="user-menu-item" key="2">
|
||||
<a href="javascript:;" @click="handleLogout">
|
||||
<a-icon class="user-menu-item-icon" type="logout"/>
|
||||
<span class="user-menu-item-name">Logout</span>
|
||||
<span class="user-menu-item-name">{{ $t('label.logout') }}</span>
|
||||
</a>
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
|
||||
@ -169,12 +169,12 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.releasededicatedzoneresponse.jobid,
|
||||
successMessage: `Successfully released dedicated zone`,
|
||||
successMessage: this.$t('message.dedicated.zone.released'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.dedicatedDomainId = null
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully released dedicated zone',
|
||||
title: this.$t('message.dedicated.zone.released'),
|
||||
jobid: response.releasededicatedzoneresponse.jobid,
|
||||
status: 'progress'
|
||||
})
|
||||
@ -183,7 +183,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.parentFetchData()
|
||||
},
|
||||
loadingMessage: `Releasing dedicated zone...`,
|
||||
loadingMessage: this.$t('message.releasing.dedicated.zone'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
@ -199,12 +199,12 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.releasededicatedpodresponse.jobid,
|
||||
successMessage: `Successfully released dedicated pod`,
|
||||
successMessage: this.$t('message.pod.dedication.released'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.dedicatedDomainId = null
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully released dedicated pod',
|
||||
title: this.$t('message.pod.dedication.released'),
|
||||
jobid: response.releasededicatedpodresponse.jobid,
|
||||
status: 'progress'
|
||||
})
|
||||
@ -213,7 +213,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.parentFetchData()
|
||||
},
|
||||
loadingMessage: `Releasing dedicated pod...`,
|
||||
loadingMessage: this.$t('message.releasing.dedicated.pod'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
@ -229,12 +229,12 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.releasededicatedclusterresponse.jobid,
|
||||
successMessage: `Successfully released dedicated cluster`,
|
||||
successMessage: this.$t('message.cluster.dedication.released'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.dedicatedDomainId = null
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully released dedicated cluster',
|
||||
title: this.$t('message.cluster.dedication.released'),
|
||||
jobid: response.releasededicatedclusterresponse.jobid,
|
||||
status: 'progress'
|
||||
})
|
||||
@ -243,7 +243,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.parentFetchData()
|
||||
},
|
||||
loadingMessage: `Releasing dedicated cluster...`,
|
||||
loadingMessage: this.$t('message.releasing.dedicated.cluster'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
@ -259,12 +259,12 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.releasededicatedhostresponse.jobid,
|
||||
successMessage: `Successfully released dedicated host`,
|
||||
successMessage: this.$t('message.host.dedication.released'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.dedicatedDomainId = null
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully released dedicated host',
|
||||
title: this.$t('message.host.dedication.released'),
|
||||
jobid: response.releasededicatedhostresponse.jobid,
|
||||
status: 'progress'
|
||||
})
|
||||
@ -273,7 +273,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.parentFetchData()
|
||||
},
|
||||
loadingMessage: `Releasing dedicated host...`,
|
||||
loadingMessage: this.$t('message.releasing.dedicated.host'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
|
||||
@ -90,14 +90,14 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicatezoneresponse.jobid,
|
||||
successMessage: `Successfully dedicated zone`,
|
||||
successMessage: this.$t('label.zone.dedicated'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainId = this.domainId
|
||||
this.dedicatedDomainModal = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated zone',
|
||||
title: this.$t('label.zone.dedicated'),
|
||||
jobid: response.dedicatezoneresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -109,7 +109,7 @@ export default {
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainModal = false
|
||||
},
|
||||
loadingMessage: `Dedicating zone...`,
|
||||
loadingMessage: this.$t('message.dedicating.zone'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
@ -134,14 +134,14 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicatepodresponse.jobid,
|
||||
successMessage: `Successfully dedicated pod`,
|
||||
successMessage: this.$t('label.pod.dedicated'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainId = this.domainId
|
||||
this.dedicatedDomainModal = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated pod',
|
||||
title: this.$t('label.pod.dedicated'),
|
||||
jobid: response.dedicatepodresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -153,7 +153,7 @@ export default {
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainModal = false
|
||||
},
|
||||
loadingMessage: `Dedicating pod...`,
|
||||
loadingMessage: this.$t('message.dedicating.pod'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
@ -178,14 +178,14 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicateclusterresponse.jobid,
|
||||
successMessage: `Successfully dedicated cluster`,
|
||||
successMessage: this.$t('message.cluster.dedicated'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainId = this.domainId
|
||||
this.dedicatedDomainModal = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated cluster',
|
||||
title: this.$t('message.cluster.dedicated'),
|
||||
jobid: response.dedicateclusterresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -197,7 +197,7 @@ export default {
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainModal = false
|
||||
},
|
||||
loadingMessage: `Dedicating cluster...`,
|
||||
loadingMessage: this.$t('message.dedicating.cluster'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
@ -222,14 +222,14 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicatehostresponse.jobid,
|
||||
successMessage: `Successfully dedicated host`,
|
||||
successMessage: this.$t('message.host.dedicated'),
|
||||
successMethod: () => {
|
||||
this.parentFetchData()
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainId = this.domainId
|
||||
this.dedicatedDomainModal = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated host',
|
||||
title: this.$t('message.host.dedicated'),
|
||||
jobid: response.dedicatehostresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -241,7 +241,7 @@ export default {
|
||||
this.fetchParentData()
|
||||
this.dedicatedDomainModal = false
|
||||
},
|
||||
loadingMessage: `Dedicating host...`,
|
||||
loadingMessage: this.$t('message.dedicating.host'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.parentFetchData()
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<a-alert
|
||||
v-if="disableSettings"
|
||||
banner
|
||||
message="Please stop the virtual machine to access settings" />
|
||||
:message="$t('message.action.settings.warning.vm.running')" />
|
||||
<div v-else>
|
||||
<div v-show="!showAddDetail">
|
||||
<a-button type="dashed" style="width: 100%" icon="plus" @click="showAddDetail = true">{{ $t('label.add.setting') }}</a-button>
|
||||
@ -31,14 +31,14 @@
|
||||
:filterOption="filterOption"
|
||||
:value="newKey"
|
||||
:dataSource="Object.keys(detailOptions)"
|
||||
placeholder="Name"
|
||||
:placeholder="$t('label.name')"
|
||||
@change="e => onAddInputChange(e, 'newKey')" />
|
||||
<a-auto-complete
|
||||
style="width: 100%"
|
||||
:filterOption="filterOption"
|
||||
:value="newValue"
|
||||
:dataSource="detailOptions[newKey]"
|
||||
placeholder="Value"
|
||||
:placeholder="$t('label.value')"
|
||||
@change="e => onAddInputChange(e, 'newValue')" />
|
||||
<a-button type="primary" style="width: 25%" icon="plus" @click="addDetail">{{ $t('label.add.setting') }}</a-button>
|
||||
<a-button type="dashed" style="width: 25%" icon="close" @click="showAddDetail = false">{{ $t('label.cancel') }}</a-button>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
:dataSource="$route.meta.details">
|
||||
<a-list-item slot="renderItem" slot-scope="item" v-if="item in resource">
|
||||
<div>
|
||||
<strong>{{ item === 'service' ? $t('label.supportedservices') : $t('label.' + item) }}</strong>
|
||||
<strong>{{ item === 'service' ? $t('label.supportedservices') : $t('label.' + String(item).toLowerCase()) }}</strong>
|
||||
<br/>
|
||||
<div v-if="Array.isArray(resource[item]) && item === 'service'">
|
||||
<div v-for="(service, idx) in resource[item]" :key="idx">
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
<span v-if="field.type==='boolean'">
|
||||
<a-switch
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please provide input' }]
|
||||
rules: [{ required: field.required, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
@ -50,7 +50,7 @@
|
||||
<a-select
|
||||
:loading="field.loading"
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please select option' }]
|
||||
rules: [{ required: field.required, message: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
<span v-else-if="field.type==='long'">
|
||||
<a-input-number
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter a number' }]
|
||||
rules: [{ required: field.required, message: `${this.$t('message.validate.number')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
@ -71,15 +71,15 @@
|
||||
<span v-else-if="field.name==='password'">
|
||||
<a-input-password
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter input' }]
|
||||
rules: [{ required: field.required, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
</span>
|
||||
<span v-else">
|
||||
<span v-else>
|
||||
<a-input
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter input' }]
|
||||
rules: [{ required: field.required, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
|
||||
@ -105,6 +105,7 @@
|
||||
icon="barcode"
|
||||
type="dashed"
|
||||
size="small"
|
||||
@click="$message.success('Copied to clipboard')"
|
||||
v-clipboard:copy="resource.id" />
|
||||
</a-tooltip>
|
||||
<span style="margin-left: 10px;">{{ resource.id }}</span>
|
||||
@ -498,13 +499,13 @@
|
||||
<template slot="title">
|
||||
<span>Copy {{ $t('label.apikey') }}</span>
|
||||
</template>
|
||||
<a-button shape="circle" type="dashed" size="small" v-clipboard:copy="resource.apikey">
|
||||
<a-button shape="circle" type="dashed" size="small" @click="$message.success('Copied to clipboard')" v-clipboard:copy="resource.apikey">
|
||||
<a-icon type="copy"/>
|
||||
</a-button>
|
||||
</a-tooltip>
|
||||
</strong>
|
||||
<div>
|
||||
{{ resource.apikey }}
|
||||
{{ resource.apikey.substring(0, 20) }}...
|
||||
</div>
|
||||
</div> <br/>
|
||||
<div class="user-keys">
|
||||
@ -515,13 +516,13 @@
|
||||
<template slot="title">
|
||||
<span>Copy {{ $t('label.secretkey') }}</span>
|
||||
</template>
|
||||
<a-button shape="circle" type="dashed" size="small" v-clipboard:copy="resource.secretkey">
|
||||
<a-button shape="circle" type="dashed" size="small" @click="$message.success('Copied to clipboard')" v-clipboard:copy="resource.secretkey">
|
||||
<a-icon type="copy"/>
|
||||
</a-button>
|
||||
</a-tooltip>
|
||||
</strong>
|
||||
<div>
|
||||
{{ resource.secretkey }}
|
||||
{{ resource.secretkey.substring(0, 20) }}...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -60,17 +60,21 @@
|
||||
</div>
|
||||
-->
|
||||
|
||||
<a slot="name" slot-scope="text, record" href="javascript:;">
|
||||
<span slot="name" slot-scope="text, record">
|
||||
<div style="min-width: 120px">
|
||||
<span v-if="$route.path.startsWith('/project')" style="margin-right: 5px">
|
||||
<a-button type="dashed" size="small" shape="circle" icon="login" @click="changeProject(record)" />
|
||||
</span>
|
||||
<os-logo v-if="record.ostypename" :osName="record.ostypename" size="1x" style="margin-right: 5px" />
|
||||
<console :resource="record" size="small" style="margin-right: 5px" />
|
||||
|
||||
<span v-if="$route.name === 'globalsetting'">{{ text }}</span>
|
||||
<span v-else>
|
||||
<router-link :to="{ path: $route.path + '/' + record.id }" v-if="record.id">{{ text }}</router-link>
|
||||
<router-link :to="{ path: $route.path + '/' + record.name }" v-else>{{ text }}</router-link>
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
</span>
|
||||
<a slot="displayname" slot-scope="text, record" href="javascript:;">
|
||||
<router-link :to="{ path: $route.path + '/' + record.id }">{{ text }}</router-link>
|
||||
</a>
|
||||
@ -93,6 +97,12 @@
|
||||
<a slot="vmname" slot-scope="text, record" href="javascript:;">
|
||||
<router-link :to="{ path: '/vm/' + record.virtualmachineid }">{{ text }}</router-link>
|
||||
</a>
|
||||
<span slot="hypervisor" slot-scope="text, record">
|
||||
<span v-if="$route.name === 'hypervisorcapability'">
|
||||
<router-link :to="{ path: $route.path + '/' + record.id }">{{ text }}</router-link>
|
||||
</span>
|
||||
<span v-else>{{ text }}</span>
|
||||
</span>
|
||||
<template slot="state" slot-scope="text">
|
||||
<status :text="text ? text : ''" displayText />
|
||||
</template>
|
||||
@ -286,8 +296,8 @@ export default {
|
||||
!json.updateconfigurationresponse.configuration.isdynamic &&
|
||||
['Admin'].includes(this.$store.getters.userInfo.roletype)) {
|
||||
this.$notification.warning({
|
||||
message: 'Status',
|
||||
description: 'Please restart your management server(s) for your new settings to take effect.'
|
||||
message: this.$t('label.status'),
|
||||
description: this.$t('message.restart.mgmt.server')
|
||||
})
|
||||
}
|
||||
}).catch(error => {
|
||||
|
||||
@ -131,7 +131,7 @@ export default {
|
||||
console.error(error)
|
||||
this.$message.error('There was an error saving this setting.')
|
||||
this.$notification.error({
|
||||
message: 'Error',
|
||||
message: this.$t('label.error'),
|
||||
description: 'There was an error saving this setting. Please try again later.'
|
||||
})
|
||||
}).finally(() => {
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<a-card :bordered="false">
|
||||
<a-input-search
|
||||
size="default"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="searchQuery"
|
||||
@search="onSearch"
|
||||
>
|
||||
|
||||
@ -85,6 +85,7 @@ export default {
|
||||
api: 'updateResourceCount',
|
||||
icon: 'sync',
|
||||
label: 'label.action.update.resource.count',
|
||||
message: 'message.update.resource.count',
|
||||
dataView: true,
|
||||
args: ['account', 'domainid'],
|
||||
mapping: {
|
||||
@ -100,6 +101,7 @@ export default {
|
||||
api: 'enableAccount',
|
||||
icon: 'play-circle',
|
||||
label: 'label.action.enable.account',
|
||||
message: 'message.enable.account',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'disabled' || record.state === 'locked' },
|
||||
params: { lock: 'false' }
|
||||
@ -108,6 +110,7 @@ export default {
|
||||
api: 'disableAccount',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.action.disable.account',
|
||||
message: 'message.disable.account',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'enabled' },
|
||||
args: ['lock'],
|
||||
@ -121,6 +124,7 @@ export default {
|
||||
api: 'disableAccount',
|
||||
icon: 'lock',
|
||||
label: 'label.action.lock.account',
|
||||
message: 'message.lock.account',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'enabled' },
|
||||
args: ['lock'],
|
||||
@ -150,6 +154,7 @@ export default {
|
||||
api: 'deleteAccount',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.account',
|
||||
message: 'message.delete.account',
|
||||
dataView: true,
|
||||
hidden: (record) => { return record.name === 'admin' }
|
||||
}
|
||||
|
||||
@ -83,6 +83,7 @@ export default {
|
||||
api: 'startVirtualMachine',
|
||||
icon: 'caret-right',
|
||||
label: 'label.action.start.instance',
|
||||
message: 'message.action.start.instance',
|
||||
docHelp: 'adminguide/virtual_machines.html#stopping-and-starting-vms',
|
||||
dataView: true,
|
||||
groupAction: true,
|
||||
@ -113,6 +114,7 @@ export default {
|
||||
api: 'restoreVirtualMachine',
|
||||
icon: 'sync',
|
||||
label: 'label.reinstall.vm',
|
||||
message: 'message.reinstall.vm',
|
||||
dataView: true,
|
||||
args: ['virtualmachineid', 'templateid'],
|
||||
show: (record) => { return ['Running', 'Stopped'].includes(record.state) },
|
||||
@ -142,6 +144,7 @@ export default {
|
||||
api: 'assignVirtualMachineToBackupOffering',
|
||||
icon: 'folder-add',
|
||||
label: 'label.backup.offering.assign',
|
||||
message: 'label.backup.offering.assign',
|
||||
dataView: true,
|
||||
args: ['virtualmachineid', 'backupofferingid'],
|
||||
show: (record) => { return !record.backupofferingid },
|
||||
@ -185,6 +188,7 @@ export default {
|
||||
api: 'removeVirtualMachineFromBackupOffering',
|
||||
icon: 'scissor',
|
||||
label: 'label.backup.offering.remove',
|
||||
message: 'label.backup.offering.remove',
|
||||
dataView: true,
|
||||
args: ['virtualmachineid', 'forced'],
|
||||
show: (record) => { return record.backupofferingid },
|
||||
@ -214,6 +218,7 @@ export default {
|
||||
api: 'detachIso',
|
||||
icon: 'link',
|
||||
label: 'label.action.detach.iso',
|
||||
message: 'message.detach.iso.confirm',
|
||||
dataView: true,
|
||||
args: ['virtualmachineid'],
|
||||
show: (record) => { return ['Running', 'Stopped'].includes(record.state) && 'isoid' in record && record.isoid },
|
||||
@ -267,6 +272,7 @@ export default {
|
||||
api: 'migrateVirtualMachine',
|
||||
icon: 'drag',
|
||||
label: 'label.migrate.instance.to.ps',
|
||||
message: 'message.migrate.instance.to.ps',
|
||||
dataView: true,
|
||||
show: (record, store) => { return ['Stopped'].includes(record.state) && ['Admin'].includes(store.userInfo.roletype) },
|
||||
args: ['storageid', 'virtualmachineid'],
|
||||
@ -283,6 +289,7 @@ export default {
|
||||
api: 'resetPasswordForVirtualMachine',
|
||||
icon: 'key',
|
||||
label: 'label.action.reset.password',
|
||||
message: 'message.action.instance.reset.password',
|
||||
dataView: true,
|
||||
show: (record) => { return ['Running', 'Stopped'].includes(record.state) },
|
||||
response: (result) => { return result.virtualmachine && result.virtualmachine.password ? `Password of the VM is ${result.virtualmachine.password}` : null }
|
||||
@ -319,6 +326,7 @@ export default {
|
||||
api: 'recoverVirtualMachine',
|
||||
icon: 'medicine-box',
|
||||
label: 'label.recover.vm',
|
||||
message: 'message.recover.vm',
|
||||
dataView: true,
|
||||
show: (record, store) => { return ['Destroyed'].includes(record.state) && store.features.allowuserexpungerecovervm }
|
||||
},
|
||||
@ -334,6 +342,7 @@ export default {
|
||||
api: 'expungeVirtualMachine',
|
||||
icon: 'delete',
|
||||
label: 'label.action.expunge.instance',
|
||||
message: 'message.action.expunge.instance',
|
||||
dataView: true,
|
||||
show: (record, store) => { return ['Destroyed', 'Expunging'].includes(record.state) && store.features.allowuserexpungerecovervm }
|
||||
},
|
||||
@ -341,6 +350,7 @@ export default {
|
||||
api: 'destroyVirtualMachine',
|
||||
icon: 'delete',
|
||||
label: 'label.action.destroy.instance',
|
||||
message: 'message.action.destroy.instance',
|
||||
args: ['expunge', 'volumeids'],
|
||||
mapping: {
|
||||
volumeids: {
|
||||
@ -523,6 +533,7 @@ export default {
|
||||
api: 'deleteAffinityGroup',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.affinity.group',
|
||||
message: 'message.delete.affinity.group',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -26,8 +26,7 @@ export default {
|
||||
title: 'label.global.settings',
|
||||
icon: 'setting',
|
||||
permission: ['listConfigurations'],
|
||||
columns: ['name', 'description', 'category', 'value', 'actions'],
|
||||
details: ['name', 'category', 'description', 'value']
|
||||
columns: ['name', 'description', 'category', 'value', 'actions']
|
||||
},
|
||||
{
|
||||
name: 'ldapsetting',
|
||||
@ -50,6 +49,7 @@ export default {
|
||||
api: 'deleteLdapConfiguration',
|
||||
icon: 'delete',
|
||||
label: 'label.remove.ldap',
|
||||
message: 'message.remove.ldap',
|
||||
dataView: true,
|
||||
args: ['hostname'],
|
||||
mapping: {
|
||||
@ -65,16 +65,15 @@ export default {
|
||||
title: 'label.hypervisor.capabilities',
|
||||
icon: 'database',
|
||||
permission: ['listHypervisorCapabilities'],
|
||||
columns: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxdatavolumeslimit', 'maxhostspercluster'],
|
||||
columns: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxhostspercluster'],
|
||||
details: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxdatavolumeslimit', 'maxhostspercluster', 'securitygroupenabled', 'storagemotionenabled'],
|
||||
actions: [
|
||||
{
|
||||
api: 'updateHypervisorCapabilities',
|
||||
icon: 'edit',
|
||||
label: 'label.edit',
|
||||
dataView: true,
|
||||
args: [
|
||||
'id', 'maxguestslimit'
|
||||
]
|
||||
args: ['maxguestslimit']
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -76,6 +76,7 @@ export default {
|
||||
api: 'updateResourceCount',
|
||||
icon: 'sync',
|
||||
label: 'label.action.update.resource.count',
|
||||
message: 'message.update.resource.count',
|
||||
listView: true,
|
||||
dataView: true,
|
||||
args: ['domainid'],
|
||||
|
||||
@ -32,6 +32,7 @@ export default {
|
||||
api: 'archiveEvents',
|
||||
icon: 'book',
|
||||
label: 'label.archive.events',
|
||||
message: 'message.confirm.archive.selected.events',
|
||||
listView: false,
|
||||
dataView: true,
|
||||
args: ['ids'],
|
||||
@ -45,6 +46,7 @@ export default {
|
||||
api: 'deleteEvents',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.events',
|
||||
message: 'message.confirm.remove.selected.events',
|
||||
listView: false,
|
||||
dataView: true,
|
||||
args: ['ids'],
|
||||
|
||||
@ -75,6 +75,7 @@ export default {
|
||||
api: 'extractTemplate',
|
||||
icon: 'cloud-download',
|
||||
label: 'label.action.download.template',
|
||||
message: 'message.action.download.template',
|
||||
dataView: true,
|
||||
show: (record) => { return record && record.isextractable },
|
||||
args: ['zoneid', 'mode'],
|
||||
@ -149,6 +150,7 @@ export default {
|
||||
api: 'extractIso',
|
||||
icon: 'cloud-download',
|
||||
label: 'label.action.download.iso',
|
||||
message: 'message.action.download.iso',
|
||||
dataView: true,
|
||||
show: (record) => { return record && record.isextractable },
|
||||
args: ['zoneid', 'mode'],
|
||||
|
||||
@ -77,6 +77,7 @@ export default {
|
||||
api: 'archiveAlerts',
|
||||
icon: 'book',
|
||||
label: 'label.archive.alerts',
|
||||
message: 'message.confirm.archive.selected.alerts',
|
||||
dataView: true,
|
||||
args: ['ids'],
|
||||
mapping: {
|
||||
@ -88,7 +89,8 @@ export default {
|
||||
{
|
||||
api: 'deleteAlerts',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.events',
|
||||
label: 'label.delete.alerts',
|
||||
message: 'message.confirm.remove.selected.alerts',
|
||||
dataView: true,
|
||||
args: ['ids'],
|
||||
mapping: {
|
||||
|
||||
@ -47,6 +47,7 @@ export default {
|
||||
api: 'updateCluster',
|
||||
icon: 'play-circle',
|
||||
label: 'label.action.enable.cluster',
|
||||
message: 'message.action.enable.cluster',
|
||||
dataView: true,
|
||||
defaultArgs: { allocationstate: 'Enabled' },
|
||||
show: (record) => { return record.allocationstate === 'Disabled' }
|
||||
@ -55,6 +56,7 @@ export default {
|
||||
api: 'updateCluster',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.action.disable.cluster',
|
||||
message: 'message.action.disable.cluster',
|
||||
dataView: true,
|
||||
defaultArgs: { allocationstate: 'Disabled' },
|
||||
show: (record) => { return record.allocationstate === 'Enabled' }
|
||||
@ -63,6 +65,7 @@ export default {
|
||||
api: 'updateCluster',
|
||||
icon: 'plus-square',
|
||||
label: 'label.action.manage.cluster',
|
||||
message: 'message.action.manage.cluster',
|
||||
dataView: true,
|
||||
defaultArgs: { managedstate: 'Managed' },
|
||||
show: (record) => { return record.clustertype === 'CloudManaged' && ['PrepareUnmanaged', 'Unmanaged'].includes(record.state) }
|
||||
@ -71,6 +74,7 @@ export default {
|
||||
api: 'updateCluster',
|
||||
icon: 'minus-square',
|
||||
label: 'label.action.unmanage.cluster',
|
||||
message: 'message.action.unmanage.cluster',
|
||||
dataView: true,
|
||||
defaultArgs: { managedstate: 'Unmanaged' },
|
||||
show: (record) => { return record.clustertype === 'CloudManaged' && record.state === 'Enabled' }
|
||||
@ -79,6 +83,7 @@ export default {
|
||||
api: 'enableOutOfBandManagementForCluster',
|
||||
icon: 'plus-circle',
|
||||
label: 'label.outofbandmanagement.enable',
|
||||
message: 'label.outofbandmanagement.enable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return !record.resourcedetails || !record.resourcedetails.outOfBandManagementEnabled ||
|
||||
@ -95,6 +100,7 @@ export default {
|
||||
api: 'disableOutOfBandManagementForCluster',
|
||||
icon: 'minus-circle',
|
||||
label: 'label.outofbandmanagement.disable',
|
||||
message: 'label.outofbandmanagement.disable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.resourcedetails && record.resourcedetails.outOfBandManagementEnabled &&
|
||||
@ -111,6 +117,7 @@ export default {
|
||||
api: 'enableHAForCluster',
|
||||
icon: 'eye',
|
||||
label: 'label.ha.enable',
|
||||
message: 'label.ha.enable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return !record.resourcedetails || !record.resourcedetails.resourceHAEnabled ||
|
||||
@ -127,6 +134,7 @@ export default {
|
||||
api: 'disableHAForCluster',
|
||||
icon: 'eye-invisible',
|
||||
label: 'label.ha.disable',
|
||||
message: 'label.ha.disable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.resourcedetails && record.resourcedetails.resourceHAEnabled &&
|
||||
@ -143,6 +151,7 @@ export default {
|
||||
api: 'deleteCluster',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.cluster',
|
||||
message: 'message.action.delete.cluster',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -61,6 +61,7 @@ export default {
|
||||
api: 'provisionCertificate',
|
||||
icon: 'safety-certificate',
|
||||
label: 'label.action.secure.host',
|
||||
message: 'message.action.secure.host',
|
||||
dataView: true,
|
||||
show: (record) => { return record.hypervisor === 'KVM' },
|
||||
args: ['hostid'],
|
||||
@ -74,6 +75,7 @@ export default {
|
||||
api: 'reconnectHost',
|
||||
icon: 'forward',
|
||||
label: 'label.action.force.reconnect',
|
||||
message: 'message.confirm.action.force.reconnect',
|
||||
dataView: true,
|
||||
show: (record) => { return ['Disconnected', 'Up'].includes(record.state) }
|
||||
},
|
||||
@ -81,6 +83,7 @@ export default {
|
||||
api: 'updateHost',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.disable.host',
|
||||
message: 'message.confirm.disable.host',
|
||||
dataView: true,
|
||||
defaultArgs: { allocationstate: 'Disable' },
|
||||
show: (record) => { return record.resourcestate === 'Enabled' }
|
||||
@ -89,6 +92,7 @@ export default {
|
||||
api: 'updateHost',
|
||||
icon: 'play-circle',
|
||||
label: 'label.enable.host',
|
||||
message: 'message.confirm.enable.host',
|
||||
dataView: true,
|
||||
defaultArgs: { allocationstate: 'Enable' },
|
||||
show: (record) => { return record.resourcestate === 'Disabled' }
|
||||
@ -97,6 +101,7 @@ export default {
|
||||
api: 'prepareHostForMaintenance',
|
||||
icon: 'plus-square',
|
||||
label: 'label.action.enable.maintenance.mode',
|
||||
message: 'message.action.host.enable.maintenance.mode',
|
||||
dataView: true,
|
||||
show: (record) => { return record.resourcestate === 'Enabled' }
|
||||
},
|
||||
@ -104,6 +109,7 @@ export default {
|
||||
api: 'cancelHostMaintenance',
|
||||
icon: 'minus-square',
|
||||
label: 'label.action.cancel.maintenance.mode',
|
||||
message: 'message.action.cancel.maintenance.mode',
|
||||
dataView: true,
|
||||
show: (record) => { return record.resourcestate === 'Maintenance' || record.resourcestate === 'ErrorInMaintenance' || record.resourcestate === 'PrepareForMaintenance' }
|
||||
},
|
||||
@ -111,6 +117,7 @@ export default {
|
||||
api: 'configureOutOfBandManagement',
|
||||
icon: 'setting',
|
||||
label: 'label.outofbandmanagement.configure',
|
||||
message: 'label.outofbandmanagement.configure',
|
||||
dataView: true,
|
||||
args: ['hostid', 'address', 'port', 'username', 'password', 'driver'],
|
||||
mapping: {
|
||||
@ -126,6 +133,7 @@ export default {
|
||||
api: 'enableOutOfBandManagementForHost',
|
||||
icon: 'plus-circle',
|
||||
label: 'label.outofbandmanagement.enable',
|
||||
message: 'label.outofbandmanagement.enable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return !record.outofbandmanagement || !record.outofbandmanagement.enabled ||
|
||||
@ -142,6 +150,7 @@ export default {
|
||||
api: 'disableOutOfBandManagementForHost',
|
||||
icon: 'minus-circle',
|
||||
label: 'label.outofbandmanagement.disable',
|
||||
message: 'label.outofbandmanagement.disable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.outofbandmanagement && record.outofbandmanagement.enabled &&
|
||||
@ -158,6 +167,7 @@ export default {
|
||||
api: 'issueOutOfBandManagementPowerAction',
|
||||
icon: 'login',
|
||||
label: 'label.outofbandmanagement.action.issue',
|
||||
message: 'label.outofbandmanagement.action.issue',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.outofbandmanagement && record.outofbandmanagement.enabled &&
|
||||
@ -174,6 +184,7 @@ export default {
|
||||
api: 'changeOutOfBandManagementPassword',
|
||||
icon: 'key',
|
||||
label: 'label.outofbandmanagement.changepassword',
|
||||
message: 'label.outofbandmanagement.changepassword',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.outofbandmanagement && record.outofbandmanagement.enabled &&
|
||||
@ -190,6 +201,7 @@ export default {
|
||||
api: 'configureHAForHost',
|
||||
icon: 'tool',
|
||||
label: 'label.ha.configure',
|
||||
message: 'label.ha.configure',
|
||||
dataView: true,
|
||||
args: ['hostid', 'provider'],
|
||||
mapping: {
|
||||
@ -205,6 +217,7 @@ export default {
|
||||
api: 'enableHAForHost',
|
||||
icon: 'eye',
|
||||
label: 'label.ha.enable',
|
||||
message: 'label.ha.enable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return !record.hostha || !record.hostha.haenable || record.hostha.haenable === false
|
||||
@ -220,6 +233,7 @@ export default {
|
||||
api: 'disableHAForHost',
|
||||
icon: 'eye-invisible',
|
||||
label: 'label.ha.disable',
|
||||
message: 'label.ha.disable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.hostha && record.hostha.haenable &&
|
||||
|
||||
@ -28,6 +28,7 @@ export default {
|
||||
api: 'startInternalLoadBalancerVM',
|
||||
icon: 'caret-right',
|
||||
label: 'label.action.start.router',
|
||||
message: 'message.confirm.start.lb.vm',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Stopped' }
|
||||
},
|
||||
|
||||
@ -32,6 +32,7 @@ export default {
|
||||
api: 'updateNetworkServiceProvider',
|
||||
icon: 'stop',
|
||||
label: 'label.disable.provider',
|
||||
message: 'message.confirm.disable.provider',
|
||||
dataView: true,
|
||||
args: ['state'],
|
||||
show: (record) => { return record.state === 'Enabled' },
|
||||
@ -45,6 +46,7 @@ export default {
|
||||
api: 'updateNetworkServiceProvider',
|
||||
icon: 'right-circle',
|
||||
label: 'label.enable.provider',
|
||||
message: 'message.confirm.enable.provider',
|
||||
dataView: true,
|
||||
args: ['state'],
|
||||
show: (record) => { return record.state === 'Disabled' },
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
export default {
|
||||
name: 'physicalnetwork',
|
||||
title: 'label.physical.networks',
|
||||
title: 'label.physical.network',
|
||||
icon: 'api',
|
||||
hidden: true,
|
||||
permission: ['listPhysicalNetworks'],
|
||||
@ -122,6 +122,7 @@ export default {
|
||||
api: 'deletePhysicalNetwork',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.physical.network',
|
||||
message: 'message.action.delete.physical.network',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -51,6 +51,7 @@ export default {
|
||||
api: 'updatePod',
|
||||
icon: 'play-circle',
|
||||
label: 'label.action.enable.pod',
|
||||
message: 'message.action.enable.pod',
|
||||
dataView: true,
|
||||
show: (record) => { return record.allocationstate === 'Disabled' },
|
||||
args: ['allocationstate'],
|
||||
@ -64,6 +65,7 @@ export default {
|
||||
api: 'updatePod',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.action.disable.pod',
|
||||
message: 'message.action.disable.pod',
|
||||
dataView: true,
|
||||
show: (record) => { return record.allocationstate === 'Enabled' },
|
||||
args: ['allocationstate'],
|
||||
@ -77,6 +79,7 @@ export default {
|
||||
api: 'deletePod',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.pod',
|
||||
message: 'message.action.delete.pod',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -54,6 +54,7 @@ export default {
|
||||
api: 'enableStorageMaintenance',
|
||||
icon: 'plus-square',
|
||||
label: 'label.action.enable.maintenance.mode',
|
||||
message: 'message.action.primarystorage.enable.maintenance.mode',
|
||||
dataView: true,
|
||||
show: (record) => { return ['Up', 'Connecting', 'Down', 'ErrorInMaintenance'].includes(record.state) }
|
||||
},
|
||||
@ -61,6 +62,7 @@ export default {
|
||||
api: 'cancelStorageMaintenance',
|
||||
icon: 'minus-square',
|
||||
label: 'label.action.cancel.maintenance.mode',
|
||||
message: 'message.action.cancel.maintenance.mode',
|
||||
dataView: true,
|
||||
show: (record) => { return ['Maintenance', 'PrepareForMaintenance', 'ErrorInMaintenance'].includes(record.state) }
|
||||
},
|
||||
|
||||
@ -28,6 +28,7 @@ export default {
|
||||
api: 'startRouter',
|
||||
icon: 'caret-right',
|
||||
label: 'label.action.start.router',
|
||||
message: 'message.action.start.router',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Stopped' }
|
||||
},
|
||||
@ -44,6 +45,7 @@ export default {
|
||||
api: 'rebootRouter',
|
||||
icon: 'sync',
|
||||
label: 'label.action.reboot.router',
|
||||
message: 'message.action.reboot.router',
|
||||
dataView: true,
|
||||
hidden: (record) => { return record.state === 'Running' }
|
||||
},
|
||||
@ -51,6 +53,7 @@ export default {
|
||||
api: 'scaleSystemVm',
|
||||
icon: 'arrows-alt',
|
||||
label: 'label.change.service.offering',
|
||||
message: 'message.confirm.scale.up.router.vm',
|
||||
dataView: true,
|
||||
args: ['serviceofferingid'],
|
||||
show: (record) => { return record.hypervisor !== 'KVM' }
|
||||
@ -59,6 +62,7 @@ export default {
|
||||
api: 'upgradeRouterTemplate',
|
||||
icon: 'fullscreen',
|
||||
label: 'label.upgrade.router.newer.template',
|
||||
message: 'message.confirm.upgrade.router.newer.template',
|
||||
dataView: true,
|
||||
groupAction: true,
|
||||
show: (record) => { return record.requiresupgrade }
|
||||
@ -111,6 +115,7 @@ export default {
|
||||
api: 'destroyRouter',
|
||||
icon: 'delete',
|
||||
label: 'label.destroy.router',
|
||||
message: 'message.confirm.destroy.router',
|
||||
dataView: true,
|
||||
show: (record) => { return ['Running', 'Error', 'Stopped'].includes(record.state) }
|
||||
}
|
||||
|
||||
@ -42,6 +42,7 @@ export default {
|
||||
api: 'deleteImageStore',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.secondary.storage',
|
||||
message: 'message.action.delete.secondary.storage',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -27,6 +27,7 @@ export default {
|
||||
api: 'startSystemVm',
|
||||
icon: 'caret-right',
|
||||
label: 'label.action.start.systemvm',
|
||||
message: 'message.action.start.systemvm',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Stopped' }
|
||||
},
|
||||
@ -43,6 +44,7 @@ export default {
|
||||
api: 'rebootSystemVm',
|
||||
icon: 'sync',
|
||||
label: 'label.action.reboot.systemvm',
|
||||
message: 'message.action.reboot.systemvm',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Running' }
|
||||
},
|
||||
@ -50,6 +52,7 @@ export default {
|
||||
api: 'scaleSystemVm',
|
||||
icon: 'arrows-alt',
|
||||
label: 'label.change.service.offering',
|
||||
message: 'message.confirm.scale.up.system.vm',
|
||||
dataView: true,
|
||||
show: (record) => { return record.hypervisor !== 'KVM' },
|
||||
args: ['serviceofferingid']
|
||||
@ -102,6 +105,7 @@ export default {
|
||||
api: 'destroySystemVm',
|
||||
icon: 'delete',
|
||||
label: 'label.action.destroy.systemvm',
|
||||
message: 'message.action.destroy.systemvm',
|
||||
dataView: true,
|
||||
show: (record) => { return ['Running', 'Error', 'Stopped'].includes(record.state) }
|
||||
}
|
||||
|
||||
@ -88,6 +88,7 @@ export default {
|
||||
api: 'updateZone',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.action.disable.zone',
|
||||
message: 'message.action.disable.zone',
|
||||
dataView: true,
|
||||
defaultArgs: { allocationstate: 'Disabled' },
|
||||
show: (record) => { return record.allocationstate === 'Enabled' }
|
||||
@ -96,6 +97,7 @@ export default {
|
||||
api: 'updateZone',
|
||||
icon: 'play-circle',
|
||||
label: 'label.action.enable.zone',
|
||||
message: 'message.action.enable.zone',
|
||||
dataView: true,
|
||||
defaultArgs: { allocationstate: 'Enabled' },
|
||||
show: (record) => { return record.allocationstate === 'Disabled' }
|
||||
@ -104,6 +106,7 @@ export default {
|
||||
api: 'enableOutOfBandManagementForZone',
|
||||
icon: 'plus-circle',
|
||||
label: 'label.outofbandmanagement.enable',
|
||||
message: 'label.outofbandmanagement.enable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return !record.resourcedetails || !record.resourcedetails.outOfBandManagementEnabled ||
|
||||
@ -120,6 +123,7 @@ export default {
|
||||
api: 'disableOutOfBandManagementForZone',
|
||||
icon: 'minus-circle',
|
||||
label: 'label.outofbandmanagement.disable',
|
||||
message: 'label.outofbandmanagement.disable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.resourcedetails && record.resourcedetails.outOfBandManagementEnabled &&
|
||||
@ -136,6 +140,7 @@ export default {
|
||||
api: 'enableHAForZone',
|
||||
icon: 'eye',
|
||||
label: 'label.ha.enable',
|
||||
message: 'label.ha.enable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return !record.resourcedetails || !record.resourcedetails.resourceHAEnabled ||
|
||||
@ -152,6 +157,7 @@ export default {
|
||||
api: 'disableHAForZone',
|
||||
icon: 'eye-invisible',
|
||||
label: 'label.ha.disable',
|
||||
message: 'label.ha.disable',
|
||||
dataView: true,
|
||||
show: (record) => {
|
||||
return record.resourcedetails && record.resourcedetails.resourceHAEnabled &&
|
||||
@ -181,6 +187,7 @@ export default {
|
||||
api: 'updateVmwareDc',
|
||||
icon: 'block',
|
||||
label: 'label.update.vmware.datacenter',
|
||||
message: 'label.update.vmware.datacenter',
|
||||
dataView: true,
|
||||
show: record => record.vmwaredc,
|
||||
args: ['zoneid', 'name', 'vcenter', 'username', 'password'],
|
||||
@ -194,6 +201,7 @@ export default {
|
||||
api: 'removeVmwareDc',
|
||||
icon: 'minus-square',
|
||||
label: 'label.remove.vmware.datacenter',
|
||||
message: 'message.confirm.remove.vmware.datacenter',
|
||||
dataView: true,
|
||||
show: record => record.vmwaredc,
|
||||
args: ['zoneid'],
|
||||
@ -207,6 +215,7 @@ export default {
|
||||
api: 'deleteZone',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.zone',
|
||||
message: 'message.action.delete.zone',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -78,6 +78,7 @@ export default {
|
||||
api: 'replaceNetworkACLList',
|
||||
icon: 'swap',
|
||||
label: 'label.replace.acl.list',
|
||||
message: 'message.confirm.replace.acl.new.one',
|
||||
dataView: true,
|
||||
show: (record) => { return record.vpcid },
|
||||
args: ['aclid', 'networkid'],
|
||||
@ -95,6 +96,7 @@ export default {
|
||||
api: 'deleteNetwork',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.network',
|
||||
message: 'message.action.delete.network',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
@ -143,6 +145,7 @@ export default {
|
||||
api: 'restartVPC',
|
||||
icon: 'sync',
|
||||
label: 'label.restart.vpc',
|
||||
message: 'message.restart.vpc',
|
||||
dataView: true,
|
||||
args: ['makeredundant', 'cleanup']
|
||||
},
|
||||
@ -150,6 +153,7 @@ export default {
|
||||
api: 'deleteVPC',
|
||||
icon: 'delete',
|
||||
label: 'label.remove.vpc',
|
||||
message: 'message.remove.vpc',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
@ -184,6 +188,7 @@ export default {
|
||||
api: 'deleteSecurityGroup',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.security.group',
|
||||
message: 'message.action.delete.security.group',
|
||||
dataView: true,
|
||||
show: (record) => { return record.name !== 'default' }
|
||||
}
|
||||
@ -238,6 +243,7 @@ export default {
|
||||
api: 'disableStaticNat',
|
||||
icon: 'minus-circle',
|
||||
label: 'label.action.disable.static.nat',
|
||||
message: 'message.action.disable.static.nat',
|
||||
dataView: true,
|
||||
show: (record) => { return record.virtualmachineid },
|
||||
args: ['ipaddressid'],
|
||||
@ -251,6 +257,7 @@ export default {
|
||||
api: 'disassociateIpAddress',
|
||||
icon: 'delete',
|
||||
label: 'label.action.release.ip',
|
||||
message: 'message.action.release.ip',
|
||||
dataView: true,
|
||||
show: (record) => { return !record.issourcenat }
|
||||
}
|
||||
@ -289,6 +296,7 @@ export default {
|
||||
api: 'replaceNetworkACLList',
|
||||
icon: 'swap',
|
||||
label: 'label.replace.acl.list',
|
||||
message: 'message.confirm.replace.acl.new.one',
|
||||
dataView: true,
|
||||
args: ['aclid', 'gatewayid'],
|
||||
mapping: {
|
||||
@ -305,13 +313,14 @@ export default {
|
||||
api: 'deletePrivateGateway',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.gateway',
|
||||
message: 'message.delete.gateway',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 's2svpn',
|
||||
title: 'label.site-to-site.vpns',
|
||||
title: 'label.site.to.site.vpn',
|
||||
icon: 'lock',
|
||||
hidden: true,
|
||||
permission: ['listVpnGateways'],
|
||||
@ -329,13 +338,14 @@ export default {
|
||||
api: 'deleteVpnGateway',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.vpn.gateway',
|
||||
message: 'message.delete.vpn.gateway',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 's2svpnconn',
|
||||
title: 'label.site-to-site.vpn.connections',
|
||||
title: 'label.site.to.site.vpn.connections',
|
||||
icon: 'sync',
|
||||
hidden: true,
|
||||
permission: ['listVpnConnections'],
|
||||
@ -361,12 +371,14 @@ export default {
|
||||
api: 'resetVpnConnection',
|
||||
icon: 'reload',
|
||||
label: 'label.reset.vpn.connection',
|
||||
message: 'message.reset.vpn.connection',
|
||||
dataView: true
|
||||
},
|
||||
{
|
||||
api: 'deleteVpnConnection',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.vpn.connection',
|
||||
message: 'message.delete.vpn.connection',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
@ -406,6 +418,7 @@ export default {
|
||||
api: 'deleteNetworkACLList',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.acl.list',
|
||||
message: 'message.confirm.delete.acl.list',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
@ -462,6 +475,7 @@ export default {
|
||||
api: 'deleteLoadBalancer',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.internal.lb',
|
||||
message: 'message.confirm.delete.internal.lb',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
@ -485,6 +499,7 @@ export default {
|
||||
api: 'removeVpnUser',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.vpn.user',
|
||||
message: 'message.action.delete.vpn.user',
|
||||
dataView: true,
|
||||
args: ['username', 'domainid', 'account'],
|
||||
mapping: {
|
||||
@ -528,6 +543,7 @@ export default {
|
||||
api: 'deleteVpnCustomerGateway',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.vpn.customer.gateway',
|
||||
message: 'message.delete.vpn.customer.gateway',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -58,6 +58,7 @@ export default {
|
||||
api: 'deleteServiceOffering',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.service.offering',
|
||||
message: 'message.action.delete.service.offering',
|
||||
dataView: true
|
||||
}]
|
||||
},
|
||||
@ -88,6 +89,7 @@ export default {
|
||||
api: 'deleteServiceOffering',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.system.service.offering',
|
||||
message: 'message.action.delete.system.service.offering',
|
||||
dataView: true,
|
||||
params: { issystem: 'true' }
|
||||
}]
|
||||
@ -129,6 +131,7 @@ export default {
|
||||
api: 'deleteDiskOffering',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.disk.offering',
|
||||
message: 'message.action.delete.disk.offering',
|
||||
dataView: true
|
||||
}]
|
||||
},
|
||||
@ -150,6 +153,7 @@ export default {
|
||||
api: 'deleteBackupOffering',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.backup.offering',
|
||||
message: 'message.action.delete.backup.offering',
|
||||
dataView: true
|
||||
}]
|
||||
},
|
||||
@ -183,6 +187,7 @@ export default {
|
||||
api: 'updateNetworkOffering',
|
||||
icon: 'play-circle',
|
||||
label: 'label.enable.network.offering',
|
||||
message: 'message.confirm.enable.network.offering',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Disabled' },
|
||||
args: ['state'],
|
||||
@ -195,6 +200,7 @@ export default {
|
||||
api: 'updateNetworkOffering',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.disable.network.offering',
|
||||
message: 'message.confirm.disable.network.offering',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Enabled' },
|
||||
args: ['state'],
|
||||
@ -214,6 +220,7 @@ export default {
|
||||
api: 'deleteNetworkOffering',
|
||||
icon: 'delete',
|
||||
label: 'label.remove.network.offering',
|
||||
message: 'message.confirm.remove.network.offering',
|
||||
dataView: true
|
||||
}]
|
||||
},
|
||||
@ -248,6 +255,7 @@ export default {
|
||||
api: 'updateVPCOffering',
|
||||
icon: 'play-circle',
|
||||
label: 'label.enable.vpc.offering',
|
||||
message: 'message.confirm.enable.vpc.offering',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Disabled' },
|
||||
args: ['state'],
|
||||
@ -260,6 +268,7 @@ export default {
|
||||
api: 'updateVPCOffering',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.disable.vpc.offering',
|
||||
message: 'message.confirm.disable.vpc.offering',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Enabled' },
|
||||
args: ['state'],
|
||||
@ -279,6 +288,7 @@ export default {
|
||||
api: 'deleteVPCOffering',
|
||||
icon: 'delete',
|
||||
label: 'label.remove.vpc.offering',
|
||||
message: 'message.confirm.remove.vpc.offering',
|
||||
dataView: true
|
||||
}]
|
||||
}
|
||||
|
||||
@ -79,6 +79,7 @@ export default {
|
||||
api: 'activateProject',
|
||||
icon: 'play-circle',
|
||||
label: 'label.activate.project',
|
||||
message: 'message.activate.project',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Suspended' }
|
||||
},
|
||||
@ -86,6 +87,7 @@ export default {
|
||||
api: 'suspendProject',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.suspend.project',
|
||||
message: 'message.suspend.project',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state !== 'Suspended' }
|
||||
},
|
||||
@ -106,6 +108,7 @@ export default {
|
||||
api: 'deleteProject',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.project',
|
||||
message: 'message.delete.project',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -58,6 +58,7 @@ export default {
|
||||
api: 'deleteRole',
|
||||
icon: 'delete',
|
||||
label: 'label.delete.role',
|
||||
message: 'label.delete.role',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -66,6 +66,7 @@ export default {
|
||||
api: 'attachVolume',
|
||||
icon: 'paper-clip',
|
||||
label: 'label.action.attach.disk',
|
||||
message: 'message.confirm.attach.disk',
|
||||
args: ['virtualmachineid'],
|
||||
dataView: true,
|
||||
show: (record) => { return record.type !== 'ROOT' && record.state !== 'Destroy' && !('virtualmachineid' in record) }
|
||||
@ -74,6 +75,7 @@ export default {
|
||||
api: 'detachVolume',
|
||||
icon: 'link',
|
||||
label: 'label.action.detach.disk',
|
||||
message: 'message.detach.disk',
|
||||
dataView: true,
|
||||
show: (record) => { return record.type !== 'ROOT' && 'virtualmachineid' in record && record.virtualmachineid }
|
||||
},
|
||||
@ -134,6 +136,7 @@ export default {
|
||||
api: 'extractVolume',
|
||||
icon: 'cloud-download',
|
||||
label: 'label.action.download.volume',
|
||||
message: 'message.download.volume.confirm',
|
||||
dataView: true,
|
||||
show: (record) => { return record && record.state === 'Ready' && (record.vmstate === 'Stopped' || record.virtualmachineid == null) && record.state !== 'Destroy' },
|
||||
args: ['zoneid', 'mode'],
|
||||
@ -164,6 +167,7 @@ export default {
|
||||
api: 'recoverVolume',
|
||||
icon: 'medicine-box',
|
||||
label: 'label.action.recover.volume',
|
||||
message: 'message.action.recover.volume',
|
||||
dataView: true,
|
||||
show: (record, store) => {
|
||||
return (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) || store.features.allowuserexpungerecovervolume) && record.state === 'Destroy'
|
||||
@ -173,6 +177,7 @@ export default {
|
||||
api: 'deleteVolume',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.volume',
|
||||
message: 'message.action.delete.volume',
|
||||
dataView: true,
|
||||
groupAction: true,
|
||||
show: (record, store) => {
|
||||
@ -184,6 +189,7 @@ export default {
|
||||
api: 'destroyVolume',
|
||||
icon: 'delete',
|
||||
label: 'label.action.destroy.volume',
|
||||
message: 'message.action.destroy.volume',
|
||||
dataView: true,
|
||||
args: (record, store) => {
|
||||
return (!['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) && !store.features.allowuserexpungerecovervolumestore) ? [] : ['expunge']
|
||||
@ -233,6 +239,7 @@ export default {
|
||||
api: 'revertSnapshot',
|
||||
icon: 'sync',
|
||||
label: 'label.action.revert.snapshot',
|
||||
message: 'message.action.revert.snapshot',
|
||||
dataView: true,
|
||||
show: (record) => { return record.revertable }
|
||||
},
|
||||
@ -240,6 +247,7 @@ export default {
|
||||
api: 'deleteSnapshot',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.snapshot',
|
||||
message: 'message.action.delete.snapshot',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
@ -257,6 +265,7 @@ export default {
|
||||
api: 'revertToVMSnapshot',
|
||||
icon: 'sync',
|
||||
label: 'label.action.vmsnapshot.revert',
|
||||
message: 'label.action.vmsnapshot.revert',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'Ready' },
|
||||
args: ['vmsnapshotid'],
|
||||
@ -270,6 +279,7 @@ export default {
|
||||
api: 'deleteVMSnapshot',
|
||||
icon: 'delete',
|
||||
label: 'label.action.vmsnapshot.delete',
|
||||
message: 'message.action.vmsnapshot.delete',
|
||||
dataView: true,
|
||||
args: ['vmsnapshotid'],
|
||||
mapping: {
|
||||
@ -292,12 +302,14 @@ export default {
|
||||
api: 'restoreBackup',
|
||||
icon: 'sync',
|
||||
label: 'label.backup.restore',
|
||||
message: 'message.backup.restore',
|
||||
dataView: true
|
||||
},
|
||||
{
|
||||
api: 'restoreVolumeFromBackupAndAttachToVM',
|
||||
icon: 'paper-clip',
|
||||
label: 'Restore Volume and Attach',
|
||||
label: 'label.backup.attach.restore',
|
||||
message: 'message.backup.attach.restore',
|
||||
dataView: true,
|
||||
popup: true,
|
||||
component: () => import('@/views/storage/RestoreAttachBackupVolume.vue')
|
||||
@ -306,6 +318,7 @@ export default {
|
||||
api: 'removeVirtualMachineFromBackupOffering',
|
||||
icon: 'scissor',
|
||||
label: 'label.backup.offering.remove',
|
||||
message: 'message.backup.offering.remove',
|
||||
dataView: true,
|
||||
args: ['forced', 'virtualmachineid'],
|
||||
mapping: {
|
||||
@ -320,7 +333,8 @@ export default {
|
||||
{
|
||||
api: 'deleteBackup',
|
||||
icon: 'delete',
|
||||
label: 'Delete Backup',
|
||||
label: 'label.delete.backup',
|
||||
message: 'message.delete.backup',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -50,12 +50,14 @@ export default {
|
||||
api: 'registerUserKeys',
|
||||
icon: 'file-protect',
|
||||
label: 'label.action.generate.keys',
|
||||
message: 'message.generate.keys',
|
||||
dataView: true
|
||||
},
|
||||
{
|
||||
api: 'enableUser',
|
||||
icon: 'play-circle',
|
||||
label: 'label.action.enable.user',
|
||||
message: 'message.enable.user',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'disabled' }
|
||||
},
|
||||
@ -63,6 +65,7 @@ export default {
|
||||
api: 'disableUser',
|
||||
icon: 'pause-circle',
|
||||
label: 'label.action.disable.user',
|
||||
message: 'message.disable.user',
|
||||
dataView: true,
|
||||
show: (record) => { return record.state === 'enabled' }
|
||||
},
|
||||
@ -70,6 +73,7 @@ export default {
|
||||
api: 'deleteUser',
|
||||
icon: 'delete',
|
||||
label: 'label.action.delete.user',
|
||||
message: 'message.delete.user',
|
||||
dataView: true
|
||||
}
|
||||
]
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "\u0627\u0644\u062d\u0627\u0644\u0627\u062a",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "Internal DNS 1",
|
||||
"label.internal.dns.2": "Internal DNS 2",
|
||||
"label.internal.lb": "Internal LB",
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "Instances",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "Internal DNS 1",
|
||||
"label.internal.dns.2": "Internal DNS 2",
|
||||
"label.internal.lb": "Internal LB",
|
||||
|
||||
@ -862,7 +862,7 @@
|
||||
"label.instanceport": "Instanz-Port",
|
||||
"label.instances": "Instanzen",
|
||||
"label.instanciate.template.associate.profile.blade": "Vorlage instanzieren und Profil zu Blade assoziieren",
|
||||
"label.intermediate.certificate": "Intermediate Zertifikat {0}",
|
||||
"label.intermediate.certificate": "Intermediate Zertifikat",
|
||||
"label.internal.dns.1": "Interner DNS 1",
|
||||
"label.internal.dns.2": "Interner DNS 2",
|
||||
"label.internal.lb": "Interne LB",
|
||||
|
||||
@ -430,11 +430,13 @@
|
||||
"label.available.public.ips": "Available Public IP Addresses",
|
||||
"label.back": "Back",
|
||||
"label.backup": "Backups",
|
||||
"label.backup.attach.restore": "Restore and Attach Backup Volume",
|
||||
"label.backup.offering.assign": "Assign VM to backup offering",
|
||||
"label.backup.offering.remove": "Remove VM from backup offering",
|
||||
"label.backup.offerings": "Backup Offerings",
|
||||
"label.backup.restore": "Restore VM Backup",
|
||||
"label.backupofferingid": "Backup Offering",
|
||||
"label.backupofferingname": "Backup Offering",
|
||||
"label.balance": "Balance",
|
||||
"label.bandwidth": "Bandwidth",
|
||||
"label.baremetal.dhcp.devices": "Baremetal DHCP Devices",
|
||||
@ -484,6 +486,7 @@
|
||||
"label.capacity.iops": "Capacity IOPS",
|
||||
"label.capacitybytes": "Capacity Bytes",
|
||||
"label.capacityiops": "IOPS Total",
|
||||
"label.category": "Category",
|
||||
"label.certchain": "Chain",
|
||||
"label.certificate": "Certificate",
|
||||
"label.certificate.details": "Certificate Details",
|
||||
@ -606,6 +609,7 @@
|
||||
"label.delete.acl.list": "Delete ACL List",
|
||||
"label.delete.affinity.group": "Delete Affinity Group",
|
||||
"label.delete.alerts": "Delete alerts",
|
||||
"label.delete.backup" : "Delete Backup",
|
||||
"label.delete.baremetal.rack.configuration": "Delete Baremetal Rack Configuration",
|
||||
"label.delete.bigswitchbcf": "Remove BigSwitch BCF Controller",
|
||||
"label.delete.brocadevcs": "Remove Brocade Vcs Switch",
|
||||
@ -696,6 +700,7 @@
|
||||
"label.disksizetotal": "Disk Total",
|
||||
"label.disksizetotalgb": "Total",
|
||||
"label.disksizeunallocatedgb": "Unallocated",
|
||||
"label.disksizeused": "Disk Size Used",
|
||||
"label.disksizeusedgb": "Used",
|
||||
"label.display.text": "Display Text",
|
||||
"label.displayname": "Display Name",
|
||||
@ -955,7 +960,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "Instances",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "Internal DNS 1",
|
||||
"label.internal.dns.2": "Internal DNS 2",
|
||||
"label.internal.lb": "Internal LB",
|
||||
@ -1151,8 +1156,10 @@
|
||||
"label.max.secondary.storage": "Max. secondary (GiB)",
|
||||
"label.maxcpu": "Max. CPU Cores",
|
||||
"label.maxcpunumber": "Max CPU Cores",
|
||||
"label.maxdatavolumeslimit": "Max data volumes limit",
|
||||
"label.maxerrorretry": "Max Error Retry",
|
||||
"label.maxguestslimit": "Max guest limit",
|
||||
"label.maxhostspercluster": "Max hosts per cluster",
|
||||
"label.maximum": "Maximum",
|
||||
"label.maxinstance": "Max Instances",
|
||||
"label.maxiops": "Max IOPS",
|
||||
@ -1264,6 +1271,7 @@
|
||||
"label.netscaler.details": "NetScaler details",
|
||||
"label.network": "Network",
|
||||
"label.network.acl": "Network ACL",
|
||||
"label.network.acl.lists": "Network ACL Lists",
|
||||
"label.network.acls": "Network ACLs",
|
||||
"label.network.addvm": "Add network to VM",
|
||||
"label.network.desc": "Network Desc",
|
||||
@ -1410,6 +1418,7 @@
|
||||
"label.ping.dir": "PING Directory",
|
||||
"label.ping.path": "Ping Path",
|
||||
"label.ping.storage.ip": "PING storage IP",
|
||||
"label.pkcs.private.certificate": "PKCS#8 Private certificate",
|
||||
"label.plannermode": "Planner mode",
|
||||
"label.please.complete.the.following.fields": "Please complete the following fields",
|
||||
"label.please.specify.netscaler.info": "Please specify Netscaler info",
|
||||
@ -1463,6 +1472,7 @@
|
||||
"label.project.invite": "Invite to project",
|
||||
"label.project.name": "Project name",
|
||||
"label.project.view": "Project View",
|
||||
"label.projectaccountname": "Project Account Name",
|
||||
"label.projectid": "Project ID",
|
||||
"label.projects": "Projects",
|
||||
"label.promiscuousmode": "Promiscuous Mode",
|
||||
@ -1682,7 +1692,9 @@
|
||||
"label.security.groups": "Security Groups",
|
||||
"label.security.groups.enabled": "Security Groups Enabled",
|
||||
"label.securitygroup": "Security Group",
|
||||
"label.securitygroupenabled": "Security Groups Enabled",
|
||||
"label.securitygroups": "Security Groups",
|
||||
"label.securitygroupsenabled": "Security Groups Enabled",
|
||||
"label.select": "Select",
|
||||
"label.select-view": "Select view",
|
||||
"label.select.a.zone": "Select a zone",
|
||||
@ -1696,12 +1708,14 @@
|
||||
"label.select.region": "Select region",
|
||||
"label.select.tier": "Select Tier",
|
||||
"label.select.vm.for.static.nat": "Select VM for static NAT",
|
||||
"label.select.zones": "Select zones",
|
||||
"label.self": "Mine",
|
||||
"label.selfexecutable": "Self",
|
||||
"label.semanticversion": "Semantic version",
|
||||
"label.sent": "Date",
|
||||
"label.sentbytes": "Bytes Sent",
|
||||
"label.server": "Server",
|
||||
"label.server.certificate": "Server certificate",
|
||||
"label.service.connectivity.distributedroutercapabilitycheckbox": "Distributed Router",
|
||||
"label.service.connectivity.regionlevelvpccapabilitycheckbox": "Region Level VPC",
|
||||
"label.service.lb.elasticlbcheckbox": "Elastic LB",
|
||||
@ -1737,6 +1751,7 @@
|
||||
"label.shutdown.provider": "Shutdown provider",
|
||||
"label.simplified.chinese.keyboard": "Simplified Chinese keyboard",
|
||||
"label.site.to.site.vpn": "Site-to-site VPN",
|
||||
"label.site.to.site.vpn.connections": "Site-to-site VPN Connections",
|
||||
"label.size": "Size",
|
||||
"label.sizegb": "Size",
|
||||
"label.skip.guide": "I have used CloudStack before, skip this guide",
|
||||
@ -1759,6 +1774,7 @@
|
||||
"label.sourcecidr": "Source CIDR",
|
||||
"label.sourceipaddress": "Source IP Address",
|
||||
"label.sourcenat": "Source NAT",
|
||||
"label.sourcenatsupported": "Source NAT Supported",
|
||||
"label.sourcenattype": "Supported Source NAT type",
|
||||
"label.sourceport": "Source Port",
|
||||
"label.specify.vxlan": "Specify VXLAN",
|
||||
@ -1810,6 +1826,7 @@
|
||||
"label.sticky.holdtime": "Hold time",
|
||||
"label.sticky.indirect": "Indirect",
|
||||
"label.sticky.length": "Length",
|
||||
"label.sticky.mode": "Mode",
|
||||
"label.sticky.name": "Sticky Name",
|
||||
"label.sticky.nocache": "No cache",
|
||||
"label.sticky.postonly": "Post only",
|
||||
@ -1823,6 +1840,7 @@
|
||||
"label.storage.tags": "Storage Tags",
|
||||
"label.storage.traffic": "Storage Traffic",
|
||||
"label.storageid": "Primary Storage",
|
||||
"label.storagemotionenabled": "Storage Motion Enabled",
|
||||
"label.storagepolicy": "Storage policy",
|
||||
"label.storagepool": "Storage Pool",
|
||||
"label.storagetags": "Storage Tags",
|
||||
@ -1836,6 +1854,7 @@
|
||||
"label.summary": "Summary",
|
||||
"label.sunday": "Sunday",
|
||||
"label.supportedservices": "Supported Services",
|
||||
"label.supportsha": "Supports HA",
|
||||
"label.supportspublicaccess": "Supports Public Access",
|
||||
"label.supportsregionlevelvpc": "Supports Region Level VPC",
|
||||
"label.supportsstrechedl2subnet": "Supports Streched L2 Subnet",
|
||||
@ -1988,6 +2007,7 @@
|
||||
"label.virtual.routers.group.zone": "Virtual Routers group by zone",
|
||||
"label.virtualmachinedisplayname": "VM name",
|
||||
"label.virtualmachineid": "VM ID",
|
||||
"label.virtualmachinename": "VM name",
|
||||
"label.virtualsize": "Virtual Size",
|
||||
"label.vlan": "VLAN/VNI",
|
||||
"label.vlan.range": "VLAN/VNI Range",
|
||||
@ -2048,6 +2068,7 @@
|
||||
"label.vpclimit": "VPC limits",
|
||||
"label.vpcname": "VPC",
|
||||
"label.vpcoffering": "VPC Offering",
|
||||
"label.vpctotal": "Total VPCs",
|
||||
"label.vpn": "VPN",
|
||||
"label.vpn.connection": "VPN Connection",
|
||||
"label.vpn.gateway": "VPN Gateway",
|
||||
@ -2236,6 +2257,9 @@
|
||||
"message.assign.instance.another": "Please specify the account type, domain, account name and network (optional) of the new account. <br> If the default nic of the vm is on a shared network, CloudStack will check if the network can be used by the new account if you do not specify one network. <br> If the default nic of the vm is on a isolated network, and the new account has more one isolated networks, you should specify one.",
|
||||
"message.attach.iso.confirm": "Please confirm that you want to attach the ISO to this virtual instance.",
|
||||
"message.attach.volume": "Please fill in the following data to attach a new volume. If you are attaching a disk volume to a Windows based virtual machine, you will need to reboot the instance to see the attached disk.",
|
||||
"message.backup.attach.restore": "Please confirm that you want to restore and attach the volume from the backup?",
|
||||
"message.backup.offering.remove": "Are you sure you want to remove VM from backup offering and delete the backup chain?",
|
||||
"message.backup.restore": "Please confirm that you want to restore the vm backup?",
|
||||
"message.basic.mode.desc": "Choose this network model if you do <b>*<u>not</u>*</b> want to enable any VLAN support. All virtual instances created under this network model will be assigned an IP directly from the network and security groups are used to provide security and segregation.",
|
||||
"message.change.offering.confirm": "Please confirm that you wish to change the service offering of this virtual instance.",
|
||||
"message.change.password": "Please change your password.",
|
||||
@ -2278,7 +2302,7 @@
|
||||
"message.confirm.delete.srx": "Please confirm that you would like to delete SRX",
|
||||
"message.confirm.delete.ucs.manager": "Please confirm that you want to delete UCS Manager",
|
||||
"message.confirm.destroy.kubernetes.cluster": "Please confirm that you want to destroy this Kubernetes cluster.",
|
||||
"message.confirm.destroy.router": "Please confirm that you would like to destroy this router",
|
||||
"message.confirm.destroy.router": "All services provided by this virtual router will be interrupted. Please confirm that you want to stop this router. Please confirm that you would like to destroy this router",
|
||||
"message.confirm.disable.host": "Please confirm that you want to disable the host",
|
||||
"message.confirm.disable.network.offering": "Are you sure you want to disable this network offering?",
|
||||
"message.confirm.disable.provider": "Please confirm that you would like to disable this provider",
|
||||
@ -2335,8 +2359,13 @@
|
||||
"message.creating.zone": "Creating zone",
|
||||
"message.dedicate.zone": "Dedicating zone",
|
||||
"message.dedicated.zone.released": "Zone dedication released",
|
||||
"message.dedicating.cluster": "Dedicating Cluster...",
|
||||
"message.dedicating.host": "Dedicating Host...",
|
||||
"message.dedicating.pod": "Dedicating Pod...",
|
||||
"message.dedicating.zone": "Dedicating Zone...",
|
||||
"message.delete.account": "Please confirm that you want to delete this account.",
|
||||
"message.delete.affinity.group": "Please confirm that you would like to remove this affinity group.",
|
||||
"message.delete.backup": "Are you sure you want to delete the backup?",
|
||||
"message.delete.gateway": "Please confirm you want to delete the gateway",
|
||||
"message.delete.project": "Are you sure you want to delete this project?",
|
||||
"message.delete.sslcertificate": "Please confirm that you would like to delete this certificate.",
|
||||
@ -2502,6 +2531,10 @@
|
||||
"message.register.failed": "Registration Failed",
|
||||
"message.register.succeeded": "Registration Succeeded",
|
||||
"message.reinstall.vm": "NOTE: Proceed with caution. This will cause the VM to be reinstalled from the template; data on the root disk will be lost. Extra data volumes, if any, will not be touched.",
|
||||
"message.releasing.dedicated.cluster": "Releasing dedicated cluster...",
|
||||
"message.releasing.dedicated.host": "Releasing dedicated host...",
|
||||
"message.releasing.dedicated.pod": "Releasing dedicated pod...",
|
||||
"message.releasing.dedicated.zone": "Releasing dedicated zone...",
|
||||
"message.remove.ldap": "Are you sure you want to delete the LDAP configuration?",
|
||||
"message.remove.region": "Are you sure you want to remove this region from this management server?",
|
||||
"message.remove.vpc": "Please confirm that you want to remove the VPC",
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Puerto de Instancia",
|
||||
"label.instances": "Instancias",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciar Plantilla y asociar al Perfil al Blade",
|
||||
"label.intermediate.certificate": "Certificado intermedio {0}",
|
||||
"label.intermediate.certificate": "Certificado intermedio",
|
||||
"label.internal.dns.1": "DNS interno una",
|
||||
"label.internal.dns.2": "DNS interno 2",
|
||||
"label.internal.lb": "LB interno",
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Port Instance",
|
||||
"label.instances": "Instances",
|
||||
"label.instanciate.template.associate.profile.blade": "Instancier Mod\u00e8le et Profil associ\u00e9 \u00e0 la Lame",
|
||||
"label.intermediate.certificate": "Certificat interm\u00e9diaire {0}",
|
||||
"label.intermediate.certificate": "Certificat interm\u00e9diaire",
|
||||
"label.internal.dns.1": "DNS interne 1",
|
||||
"label.internal.dns.2": "DNS interne 2",
|
||||
"label.internal.lb": "R\u00e9partiteur interne",
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
"label.instanceport": "P\u00e9ld\u00e1ny port",
|
||||
"label.instances": "P\u00e9ld\u00e1nyok",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "K\u00f6zb\u00fcls\u0151 tan\u00fas\u00edtv\u00e1ny {0}",
|
||||
"label.intermediate.certificate": "K\u00f6zb\u00fcls\u0151 tan\u00fas\u00edtv\u00e1ny",
|
||||
"label.internal.dns.1": "1. bels\u0151 DNS",
|
||||
"label.internal.dns.2": "2. bels\u0151 DNS",
|
||||
"label.internal.lb": "Bels\u0151 LB",
|
||||
|
||||
@ -34,7 +34,7 @@ function loadLocaleMessages () {
|
||||
Vue.use(VueI18n)
|
||||
|
||||
export default new VueI18n({
|
||||
locale: Vue.ls ? Vue.ls.get('current_locale') || 'en' : 'en',
|
||||
locale: Vue.ls ? Vue.ls.get('LOCALE') || 'en' : 'en',
|
||||
fallbackLocale: 'en',
|
||||
silentTranslationWarn: true,
|
||||
messages: loadLocaleMessages()
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "Istanze",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "DNS 1 Interno",
|
||||
"label.internal.dns.2": "DNS2 Interno",
|
||||
"label.internal.lb": "Internal LB",
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
"label.instanceport": "\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 \u30dd\u30fc\u30c8",
|
||||
"label.instances": "\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9",
|
||||
"label.instanciate.template.associate.profile.blade": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4f5c\u6210\u304a\u3088\u3073\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3068\u30d6\u30ec\u30fc\u30c9\u306e\u95a2\u9023\u4ed8\u3051",
|
||||
"label.intermediate.certificate": "\u4e2d\u9593\u8a3c\u660e\u66f8 {0}",
|
||||
"label.intermediate.certificate": "\u4e2d\u9593\u8a3c\u660e\u66f8",
|
||||
"label.internal.dns.1": "\u5185\u90e8 DNS 1",
|
||||
"label.internal.dns.2": "\u5185\u90e8 DNS 2",
|
||||
"label.internal.lb": "\u5185\u90e8 LB",
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "\uc778\uc2a4\ud134\uc2a4",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "\ub0b4\ubd80 DNS 1",
|
||||
"label.internal.dns.2": "\ub0b4\ubd80 DNS 2",
|
||||
"label.internal.lb": "Internal LB",
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Instansport",
|
||||
"label.instances": "Instanser",
|
||||
"label.instanciate.template.associate.profile.blade": "Instansier mal og assosier malen med Blade",
|
||||
"label.intermediate.certificate": "Intermediate sertifikat {0}",
|
||||
"label.intermediate.certificate": "Intermediate sertifikat",
|
||||
"label.internal.dns.1": "Intern DNS 1",
|
||||
"label.internal.dns.2": "Intern DNS 2",
|
||||
"label.internal.lb": "Intern LB",
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "instantie poort",
|
||||
"label.instances": "Instanties",
|
||||
"label.instanciate.template.associate.profile.blade": "Initieer Template en verbind Profiel met Blade",
|
||||
"label.intermediate.certificate": "Intermediair certificaat {0}",
|
||||
"label.intermediate.certificate": "Intermediair certificaat",
|
||||
"label.internal.dns.1": "Interne DNS 1",
|
||||
"label.internal.dns.2": "Interne DNS 2",
|
||||
"label.internal.lb": "interne LB",
|
||||
|
||||
@ -861,7 +861,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "Instancje",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "Internal DNS 1",
|
||||
"label.internal.dns.2": "Internal DNS 2",
|
||||
"label.internal.lb": "Internal LB",
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
"label.instanceport": "Instanciar Porta",
|
||||
"label.instances": "Inst\u00e2ncias",
|
||||
"label.instanciate.template.associate.profile.blade": "Instancia Template e Associa Perfil \u00e0 L\u00e2mina",
|
||||
"label.intermediate.certificate": "Certificado intermedi\u00e1rio {0}",
|
||||
"label.intermediate.certificate": "Certificado intermedi\u00e1rio",
|
||||
"label.internal.dns.1": "DNS 1 Interno",
|
||||
"label.internal.dns.2": "DNS 2 Interno",
|
||||
"label.internal.lb": "LB interno",
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
"label.instanceport": "Instance Port",
|
||||
"label.instances": "\u041c\u0430\u0448\u0438\u043d\u044b",
|
||||
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
|
||||
"label.intermediate.certificate": "Intermediate certificate {0}",
|
||||
"label.intermediate.certificate": "Intermediate certificate",
|
||||
"label.internal.dns.1": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 DNS 1",
|
||||
"label.internal.dns.2": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 DNS 2",
|
||||
"label.internal.lb": "Internal LB",
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
"label.instanceport": "\u5b9e\u4f8b\u7aef\u53e3",
|
||||
"label.instances": "\u5b9e\u4f8b",
|
||||
"label.instanciate.template.associate.profile.blade": "\u5c06\u6a21\u677f\u5b9e\u4f8b\u5316\u5e76\u5c06\u914d\u7f6e\u6587\u4ef6\u4e0e\u5200\u7247\u5f0f\u670d\u52a1\u5668\u5173\u8054",
|
||||
"label.intermediate.certificate": "\u4e2d\u95f4\u8bc1\u4e66 {0}",
|
||||
"label.intermediate.certificate": "\u4e2d\u95f4\u8bc1\u4e66",
|
||||
"label.internal.dns.1": "\u5185\u90e8 DNS 1",
|
||||
"label.internal.dns.2": "\u5185\u90e8 DNS 2",
|
||||
"label.internal.lb": "\u5185\u90e8\u8d1f\u8f7d\u5747\u8861\u5668",
|
||||
|
||||
@ -99,7 +99,7 @@ export const pollJobPlugin = {
|
||||
}).catch(e => {
|
||||
console.error(`${catchMessage} - ${e}`)
|
||||
notification.error({
|
||||
message: 'Error',
|
||||
message: this.$t('label.error'),
|
||||
description: catchMessage,
|
||||
duration: 0
|
||||
})
|
||||
@ -114,6 +114,7 @@ export const notifierPlugin = {
|
||||
|
||||
install (Vue) {
|
||||
Vue.prototype.$notifyError = function (error) {
|
||||
console.log(error)
|
||||
var msg = 'Request Failed'
|
||||
var desc = ''
|
||||
if (error && error.response) {
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
@exec-action="execAction"/>
|
||||
<a-select
|
||||
v-if="filters && filters.length > 0"
|
||||
placeholder="Filter By"
|
||||
:placeholder="$t('label.filterby')"
|
||||
:value="$t('label.' + selectedFilter)"
|
||||
style="min-width: 100px; margin-left: 10px"
|
||||
@change="changeFilter">
|
||||
@ -62,7 +62,7 @@
|
||||
</a-select>
|
||||
<a-input-search
|
||||
style="width: 20vw; margin-left: 10px"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="searchQuery"
|
||||
v-if="!dataView && !treeView"
|
||||
allowClear
|
||||
@ -118,7 +118,9 @@
|
||||
</span>
|
||||
<a-spin :spinning="currentAction.loading">
|
||||
<span v-if="currentAction.message">
|
||||
<a-alert :message="$t(currentAction.message)" type="warning" />
|
||||
<a-alert type="warning">
|
||||
<span slot="message" v-html="$t(currentAction.message)" />
|
||||
</a-alert>
|
||||
<br v-if="currentAction.paramFields.length > 0"/>
|
||||
</span>
|
||||
<a-form
|
||||
@ -141,7 +143,7 @@
|
||||
<span v-if="field.type==='boolean'">
|
||||
<a-switch
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please provide input' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
v-model="formModel[field.name]"
|
||||
:placeholder="field.description"
|
||||
@ -151,7 +153,7 @@
|
||||
<a-select
|
||||
:loading="field.loading"
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please select option' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.select')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
>
|
||||
@ -167,7 +169,7 @@
|
||||
showSearch
|
||||
optionFilterProp="children"
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please select option' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.select')}` }]
|
||||
}]"
|
||||
:loading="field.loading"
|
||||
:placeholder="field.description"
|
||||
@ -186,7 +188,7 @@
|
||||
showSearch
|
||||
optionFilterProp="children"
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please select option' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.select')}` }]
|
||||
}]"
|
||||
:loading="field.loading"
|
||||
:placeholder="field.description"
|
||||
@ -204,7 +206,7 @@
|
||||
:loading="field.loading"
|
||||
mode="multiple"
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please select option' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.select')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
>
|
||||
@ -216,7 +218,7 @@
|
||||
<span v-else-if="field.type==='long'">
|
||||
<a-input-number
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter a number' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.validate.number')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
@ -224,7 +226,7 @@
|
||||
<span v-else-if="field.name==='password' || field.name==='currentpassword'">
|
||||
<a-input-password
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter input' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
@ -233,7 +235,7 @@
|
||||
<a-textarea
|
||||
rows="2"
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter input' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="field.description"
|
||||
/>
|
||||
@ -241,7 +243,7 @@
|
||||
<span v-else>
|
||||
<a-input
|
||||
v-decorator="[field.name, {
|
||||
rules: [{ required: field.required, message: 'Please enter input' }]
|
||||
rules: [{ required: field.required, message: `${$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="field.description" />
|
||||
</span>
|
||||
@ -487,7 +489,7 @@ export default {
|
||||
customRender[key] = columnKey[key]
|
||||
}
|
||||
this.columns.push({
|
||||
title: this.$t('label.' + key),
|
||||
title: this.$t('label.' + String(key).toLowerCase()),
|
||||
dataIndex: key,
|
||||
scopedSlots: { customRender: key },
|
||||
sorter: function (a, b) { return genericCompare(a[this.dataIndex] || '', b[this.dataIndex] || '') }
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
<a-input
|
||||
size="large"
|
||||
type="text"
|
||||
placeholder="Username"
|
||||
:placeholder="$t('label.username')"
|
||||
v-decorator="[
|
||||
'username',
|
||||
{rules: [{ required: true, message: 'Enter your username' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}
|
||||
@ -54,7 +54,7 @@
|
||||
size="large"
|
||||
type="password"
|
||||
autocomplete="false"
|
||||
placeholder="Password"
|
||||
:placeholder="$t('label.password')"
|
||||
v-decorator="[
|
||||
'password',
|
||||
{rules: [{ required: true, message: 'Enter your password' }], validateTrigger: 'blur'}
|
||||
@ -68,7 +68,7 @@
|
||||
<a-input
|
||||
size="large"
|
||||
type="text"
|
||||
placeholder="Domain"
|
||||
:placeholder="$t('label.domain')"
|
||||
v-decorator="[
|
||||
'domain',
|
||||
{rules: [{ required: false, message: 'Enter your domain, leave empty for ROOT domain' }], validateTrigger: 'change'}
|
||||
|
||||
@ -210,7 +210,7 @@ export default {
|
||||
networkids: this.selectedNetwork
|
||||
}).then(response => {
|
||||
this.$notification.success({
|
||||
message: 'Successfully assigned instance'
|
||||
message: this.$t('label.loadbalancerinstance')
|
||||
})
|
||||
this.loading = false
|
||||
this.$parent.$parent.close()
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
<a-form-item :label="this.$t('label.zoneid')">
|
||||
<a-select
|
||||
v-decorator="['zoneid', {
|
||||
rules: [{ required: true, message: 'Please select option' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:options="zoneSelectOptions"
|
||||
@change="onSelectZoneId"
|
||||
@ -127,7 +127,7 @@
|
||||
initialValue: hypervisorSelectOptions && hypervisorSelectOptions.length > 0
|
||||
? hypervisorSelectOptions[0].value
|
||||
: null,
|
||||
rules: [{ required: true, message: 'Please select option' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:options="hypervisorSelectOptions"
|
||||
@change="value => this.hypervisor = value" />
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<template>
|
||||
<div class="form">
|
||||
<a-input-search
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="searchQuery"
|
||||
style="margin-bottom: 10px;"
|
||||
@search="fetchData" />
|
||||
|
||||
@ -87,7 +87,7 @@
|
||||
v-decorator="['day-of-week', {
|
||||
rules: [{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}]
|
||||
}]" >
|
||||
<a-select-option v-for="(opt, optIndex) in dayOfWeek" :key="optIndex">
|
||||
@ -102,7 +102,7 @@
|
||||
v-decorator="['day-of-month', {
|
||||
rules: [{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}]
|
||||
}]">
|
||||
<a-select-option v-for="opt in dayOfMonth" :key="opt.name">
|
||||
@ -118,7 +118,7 @@
|
||||
v-decorator="['timezone', {
|
||||
rules: [{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
messamessage: `${this.$t('message.error.select')}`
|
||||
}]
|
||||
}]"
|
||||
:loading="fetching">
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<div>
|
||||
<a-input-search
|
||||
style="width: 25vw;float: right;margin-bottom: 10px; z-index: 8"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="filter"
|
||||
@search="handleSearch" />
|
||||
<a-table
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<div>
|
||||
<a-input-search
|
||||
style="width: 25vw;float: right;margin-bottom: 10px; z-index: 8"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="filter"
|
||||
@search="handleSearch" />
|
||||
<a-table
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<div>
|
||||
<a-input-search
|
||||
style="width: 25vw;float: right;margin-bottom: 10px; z-index: 8"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="filter"
|
||||
@search="handleSearch" />
|
||||
<a-table
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<div>
|
||||
<a-input-search
|
||||
style="width: 25vw; float: right; margin-bottom: 10px; z-index: 8"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="filter"
|
||||
@search="handleSearch" />
|
||||
<a-button type="primary" @click="showCreateForm = true" style="float: right; margin-right: 5px; z-index: 8">
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<div>
|
||||
<a-input-search
|
||||
style="width: 25vw;float: right;margin-bottom: 10px; z-index: 8"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="filter"
|
||||
@search="handleSearch" />
|
||||
<a-table
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<span class="filter-group">
|
||||
<a-input-search
|
||||
class="search-input"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="filter"
|
||||
@search="filterDataSource">
|
||||
<a-popover
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<a-card :bordered="false">
|
||||
<a-input-search
|
||||
style="margin-bottom: 10px"
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="searchQuery"
|
||||
@search="handleSearch" />
|
||||
<a-table
|
||||
@ -54,7 +54,7 @@
|
||||
<a-select
|
||||
showSearch
|
||||
v-decorator="['domainid', {
|
||||
rules: [{ required: true, message: 'Please select option' }]
|
||||
rules: [{ required: true, memessage: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.domainid.description"
|
||||
:loading="domainLoading">
|
||||
@ -73,7 +73,7 @@
|
||||
<a-select
|
||||
showSearch
|
||||
v-decorator="['roleid', {
|
||||
rules: [{ required: true, message: 'Please select option' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.roleid.description"
|
||||
:loading="roleLoading">
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
:dataSource="apis"
|
||||
:value="newRule"
|
||||
@change="val => newRule = val"
|
||||
placeholder="Rule"
|
||||
:placeholder="$t('label.rule')"
|
||||
:class="{'rule-dropdown-error' : newRuleSelectError}" />
|
||||
</div>
|
||||
<div class="rules-table__col rules-table__col--permission">
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
<a-popconfirm
|
||||
v-if="'deleteIso' in $store.getters.apis"
|
||||
placement="topRight"
|
||||
title="Delete the ISO for this zone?"
|
||||
:title="$t('message.action.delete.iso')"
|
||||
:ok-text="$t('label.yes')"
|
||||
:cancel-text="$t('label.no')"
|
||||
:loading="deleteLoading"
|
||||
@ -87,12 +87,12 @@
|
||||
<a-select
|
||||
id="zone-selection"
|
||||
mode="multiple"
|
||||
placeholder="Select Zones"
|
||||
:placeholder="$t('label.select.zones')"
|
||||
v-decorator="['zoneid', {
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<a-form-item v-if="currentForm === 'Create'" :label="$t('label.url')">
|
||||
<a-input
|
||||
v-decorator="['url', {
|
||||
rules: [{ required: true, message: 'Please upload an ISO' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.upload.iso.from.local')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.url.description" />
|
||||
</a-form-item>
|
||||
@ -41,7 +41,7 @@
|
||||
:remove="handleRemove"
|
||||
:beforeUpload="beforeUpload"
|
||||
v-decorator="['file', {
|
||||
rules: [{ required: true, message: 'Please enter input' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]">
|
||||
<p class="ant-upload-drag-icon">
|
||||
<a-icon type="cloud-upload" />
|
||||
@ -54,7 +54,7 @@
|
||||
<a-form-item :label="$t('label.name')">
|
||||
<a-input
|
||||
v-decorator="['name', {
|
||||
rules: [{ required: true, message: 'Please enter input' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.name.description" />
|
||||
</a-form-item>
|
||||
@ -62,7 +62,7 @@
|
||||
<a-form-item :label="$t('label.displaytext')">
|
||||
<a-input
|
||||
v-decorator="['displaytext', {
|
||||
rules: [{ required: true, message: 'Please enter input' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.displaytext.description" />
|
||||
</a-form-item>
|
||||
@ -78,7 +78,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -115,7 +115,7 @@
|
||||
<a-select
|
||||
v-decorator="['ostypeid', {
|
||||
initialValue: defaultOsType,
|
||||
rules: [{ required: true, message: 'Please select option' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
showSearch
|
||||
optionFilterProp="children"
|
||||
@ -335,7 +335,7 @@ export default {
|
||||
api('registerIso', params).then(json => {
|
||||
this.$emit('refresh-data')
|
||||
this.$notification.success({
|
||||
message: 'Register ISO',
|
||||
message: 'label.action.register.iso',
|
||||
description: 'Sucessfully registered ISO ' + params.name
|
||||
})
|
||||
}).catch(error => {
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<a-form-item :label="$t('label.url')">
|
||||
<a-input
|
||||
v-decorator="['url', {
|
||||
rules: [{ required: true, message: 'Please enter input' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.url.description" />
|
||||
</a-form-item>
|
||||
@ -46,7 +46,7 @@
|
||||
:remove="handleRemove"
|
||||
:beforeUpload="beforeUpload"
|
||||
v-decorator="['file', {
|
||||
rules: [{ required: true, message: 'Please enter input' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]">
|
||||
<p class="ant-upload-drag-icon">
|
||||
<a-icon type="cloud-upload" />
|
||||
@ -61,7 +61,7 @@
|
||||
<a-form-item :label="$t('label.name')">
|
||||
<a-input
|
||||
v-decorator="['name', {
|
||||
rules: [{ required: true, message: 'Please upload a template ' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.upload.template.from.local')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.name.description" />
|
||||
</a-form-item>
|
||||
@ -70,7 +70,7 @@
|
||||
<a-form-item :label="$t('label.displaytext')">
|
||||
<a-input
|
||||
v-decorator="['displaytext', {
|
||||
rules: [{ required: true, message: 'Please enter input' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.displaytext.description" />
|
||||
</a-form-item>
|
||||
@ -87,7 +87,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option',
|
||||
message: `${this.$t('message.error.select')}`,
|
||||
type: 'array'
|
||||
}
|
||||
]
|
||||
@ -135,7 +135,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -155,7 +155,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -177,7 +177,7 @@
|
||||
<a-form-item :label="$t('label.checksum')">
|
||||
<a-input
|
||||
v-decorator="['checksum', {
|
||||
rules: [{ required: false, message: 'Please enter input' }]
|
||||
rules: [{ required: false, message: `${this.$t('message.error.required.input')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.checksum.description" />
|
||||
</a-form-item>
|
||||
@ -200,7 +200,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -219,7 +219,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: false,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -238,7 +238,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: false,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -256,7 +256,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: false,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -278,7 +278,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
<a-popconfirm
|
||||
v-if="'deleteTemplate' in $store.getters.apis"
|
||||
placement="topRight"
|
||||
title="Delete the template for this zone?"
|
||||
:title="$t('message.action.delete.template')"
|
||||
:ok-text="$t('label.yes')"
|
||||
:cancel-text="$t('label.no')"
|
||||
:loading="deleteLoading"
|
||||
@ -87,12 +87,12 @@
|
||||
<a-select
|
||||
id="zone-selection"
|
||||
mode="multiple"
|
||||
placeholder="Select Zones"
|
||||
:placeholder="$t('label.select.zones')"
|
||||
v-decorator="['zoneid', {
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
</div>
|
||||
<a-form-item :label="$t('label.zoneid')">
|
||||
<a-select
|
||||
v-decorator="['zone', { initialValue: this.zoneSelected, rules: [{ required: true, message: 'required'}] }]"
|
||||
v-decorator="['zone', { initialValue: this.zoneSelected, rules: [{ required: true, message: `${this.$t('label.required')}`}] }]"
|
||||
@change="val => changeZone(val)">
|
||||
<a-select-option :value="zone.id" v-for="(zone) in zones" :key="zone.id">
|
||||
{{ zone.name }}
|
||||
@ -48,7 +48,7 @@
|
||||
<div v-if="this.scope === 'cluster' || this.scope === 'host'">
|
||||
<a-form-item :label="$t('label.podid')">
|
||||
<a-select
|
||||
v-decorator="['pod', { initialValue: this.podSelected, rules: [{ required: true, message: 'required'}] }]"
|
||||
v-decorator="['pod', { initialValue: this.podSelected, rules: [{ required: true, message: `${this.$t('label.required')}`}] }]"
|
||||
@change="val => changePod(val)">
|
||||
<a-select-option :value="pod.id" v-for="(pod) in pods" :key="pod.id">
|
||||
{{ pod.name }}
|
||||
@ -57,7 +57,7 @@
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.clusterid')">
|
||||
<a-select
|
||||
v-decorator="['cluster', { initialValue: this.clusterSelected, rules: [{ required: true, message: 'required'}] }]"
|
||||
v-decorator="['cluster', { initialValue: this.clusterSelected, rules: [{ required: true, message: `${this.$t('label.required')}`}] }]"
|
||||
@change="val => fetchHypervisor(val)">
|
||||
<a-select-option :value="cluster.id" v-for="cluster in clusters" :key="cluster.id">
|
||||
{{ cluster.name }}
|
||||
@ -68,7 +68,7 @@
|
||||
<div v-if="this.scope === 'host'">
|
||||
<a-form-item :label="$t('label.hostid')">
|
||||
<a-select
|
||||
v-decorator="['host', { initialValue: this.hostSelected, rules: [{ required: true, message: 'required'}] }]"
|
||||
v-decorator="['host', { initialValue: this.hostSelected, rules: [{ required: true, message: `${this.$t('label.required')}`}] }]"
|
||||
@change="val => this.hostSelected = val">
|
||||
<a-select-option :value="host.id" v-for="host in hosts" :key="host.id">
|
||||
{{ host.name }}
|
||||
@ -77,11 +77,11 @@
|
||||
</a-form-item>
|
||||
</div>
|
||||
<a-form-item :label="$t('label.name')">
|
||||
<a-input v-decorator="['name', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['name', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.protocol')">
|
||||
<a-select
|
||||
v-decorator="['protocol', { initialValue: this.protocols[0], rules: [{ required: true, message: 'required'}] }]"
|
||||
v-decorator="['protocol', { initialValue: this.protocols[0], rules: [{ required: true, message: `${this.$t('label.required')}`}] }]"
|
||||
@change="val => this.protocolSelected = val">
|
||||
<a-select-option :value="protocol" v-for="(protocol,idx) in protocols" :key="idx">
|
||||
{{ protocol }}
|
||||
@ -91,44 +91,44 @@
|
||||
<div
|
||||
v-if="protocolSelected === 'nfs' || protocolSelected === 'SMB' || protocolSelected === 'iscsi' || protocolSelected === 'vmfs'|| protocolSelected === 'Gluster'">
|
||||
<a-form-item :label="$t('label.server')">
|
||||
<a-input v-decorator="['server', { rules: [{ required: true, message: 'required' }] }]" />
|
||||
<a-input v-decorator="['server', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]" />
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div v-if="protocolSelected === 'nfs' || protocolSelected === 'SMB' || protocolSelected === 'ocfs2' || protocolSelected === 'preSetup'|| protocolSelected === 'SharedMountPoint'">
|
||||
<a-form-item :label="$t('label.path')">
|
||||
<a-input v-decorator="['path', { rules: [{ required: true, message: 'required' }] }]" />
|
||||
<a-input v-decorator="['path', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]" />
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div v-if="protocolSelected === 'SMB'">
|
||||
<a-form-item :label="$t('label.smbusername')">
|
||||
<a-input v-decorator="['smbUsername', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['smbUsername', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.smbpassword')">
|
||||
<a-input-password v-decorator="['smbPassword', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input-password v-decorator="['smbPassword', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.smbdomain')">
|
||||
<a-input v-decorator="['smbDomain', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['smbDomain', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div v-if="protocolSelected === 'iscsi'">
|
||||
<a-form-item :label="$t('label.iqn')">
|
||||
<a-input v-decorator="['iqn', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['iqn', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.lun')">
|
||||
<a-input v-decorator="['lun', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['lun', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div v-if="protocolSelected === 'vmfs'">
|
||||
<a-form-item :label="$t('label.vcenterdatacenter')">
|
||||
<a-input v-decorator="['vCenterDataCenter', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['vCenterDataCenter', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.vcenterdatastore')">
|
||||
<a-input v-decorator="['vCenterDataStore', { rules: [{ required: true, message: 'required' }] }]"/>
|
||||
<a-input v-decorator="['vCenterDataStore', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]"/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<a-form-item :label="$t('label.providername')">
|
||||
<a-select
|
||||
v-decorator="['provider', { initialValue: providerSelected, rules: [{ required: true, message: 'required'}] }]"
|
||||
v-decorator="['provider', { initialValue: providerSelected, rules: [{ required: true, message: `${this.$t('label.required')}`}] }]"
|
||||
@change="val => this.providerSelected = val">
|
||||
<a-select-option :value="provider" v-for="(provider,idx) in providers" :key="idx">
|
||||
{{ provider }}
|
||||
@ -166,7 +166,7 @@
|
||||
</div>
|
||||
<div v-if="protocolSelected === 'CLVM'">
|
||||
<a-form-item :label="$t('label.volumegroup')">
|
||||
<a-input v-decorator="['volumegroup', { rules: [{ required: true, message: 'required'}] }]" />
|
||||
<a-input v-decorator="['volumegroup', { rules: [{ required: true, message: `${this.$t('label.required')}`}] }]" />
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div v-if="protocolSelected === 'Gluster'">
|
||||
|
||||
@ -45,7 +45,7 @@
|
||||
'zone',
|
||||
{
|
||||
initialValue: this.zoneSelected,
|
||||
rules: [{ required: true, message: 'required'}]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}`}]
|
||||
}]"
|
||||
@change="val => { zoneSelected = val }"
|
||||
>
|
||||
@ -61,7 +61,7 @@
|
||||
v-decorator="[
|
||||
'server',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -70,7 +70,7 @@
|
||||
v-decorator="[
|
||||
'path',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -81,7 +81,7 @@
|
||||
v-decorator="[
|
||||
'smbUsername',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -90,7 +90,7 @@
|
||||
v-decorator="[
|
||||
'smbPassword',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -99,7 +99,7 @@
|
||||
v-decorator="[
|
||||
'smbDomain',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -110,7 +110,7 @@
|
||||
v-decorator="[
|
||||
'url',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -119,7 +119,7 @@
|
||||
v-decorator="[
|
||||
'account',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -128,7 +128,7 @@
|
||||
v-decorator="[
|
||||
'username',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -137,7 +137,7 @@
|
||||
v-decorator="[
|
||||
'key',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
@ -262,11 +262,11 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicateclusterresponse.jobid,
|
||||
successMessage: `Successfully dedicated cluster`,
|
||||
successMessage: this.$t('message.cluster.dedicated'),
|
||||
successMethod: () => {
|
||||
this.loading = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated cluster',
|
||||
title: this.$t('message.cluster.dedicated'),
|
||||
jobid: response.dedicateclusterresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -276,7 +276,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.loading = false
|
||||
},
|
||||
loadingMessage: `Dedicating cluster...`,
|
||||
loadingMessage: this.$t('message.dedicate.zone'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.loading = false
|
||||
|
||||
@ -59,6 +59,12 @@ export default {
|
||||
ListView,
|
||||
Breadcrumb
|
||||
},
|
||||
provide: function () {
|
||||
return {
|
||||
parentFetchData: this.fetchData,
|
||||
parentToggleLoading: () => { this.loading = !this.loading }
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
|
||||
@ -315,11 +315,11 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicatehostresponse.jobid,
|
||||
successMessage: `Successfully dedicated host`,
|
||||
successMessage: this.$t('message.host.dedicated'),
|
||||
successMethod: () => {
|
||||
this.loading = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated host',
|
||||
title: this.$t('message.host.dedicated'),
|
||||
jobid: response.dedicatehostresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -329,7 +329,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.loading = false
|
||||
},
|
||||
loadingMessage: `Dedicating host...`,
|
||||
loadingMessage: this.$t('message.dedicate.host'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.loading = false
|
||||
|
||||
@ -48,16 +48,16 @@
|
||||
</p>
|
||||
|
||||
<a-form @submit.prevent="handleSslFormSubmit" ref="sslForm" :form="form">
|
||||
<a-form-item label="Root certificate" :required="true">
|
||||
<a-form-item :label="$t('label.root.certificate')" :required="true">
|
||||
<a-textarea
|
||||
id="rootCert"
|
||||
rows="2"
|
||||
placeholder="Root certificate"
|
||||
:placeholder="$t('label.root.certificate')"
|
||||
:autoFocus="true"
|
||||
name="rootCert"
|
||||
v-decorator="[
|
||||
'root',
|
||||
{rules: [{ required: true, message: 'Required' }], validateTrigger:'change'}
|
||||
{rules: [{ required: true, message: `${this.$t('label.required')}` }], validateTrigger:'change'}
|
||||
]"
|
||||
></a-textarea>
|
||||
</a-form-item>
|
||||
@ -67,11 +67,11 @@
|
||||
v-for="(item, index) in intermediateCertificates"
|
||||
:key="`key-${index}`"
|
||||
class="intermediate-certificate"
|
||||
:label="`Intermediate certificate ${index + 1}`">
|
||||
:label="$t('label.intermediate.certificate') + ` ${index + 1}`">
|
||||
<a-textarea
|
||||
:id="`intermediateCert${index}`"
|
||||
rows="2"
|
||||
:placeholder="`Intermediate certificate ${index + 1}`"
|
||||
:placeholder="$t('label.intermediate.certificate') + ` ${index + 1}`"
|
||||
:name="`intermediateCert${index}`"
|
||||
v-decorator="[
|
||||
`intermediate${index + 1}`,
|
||||
@ -88,40 +88,40 @@
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="Server certificate" :required="true">
|
||||
<a-form-item :label="$t('label.server.certificate')" :required="true">
|
||||
<a-textarea
|
||||
id="serverCert"
|
||||
rows="2"
|
||||
placeholder="Server certificate"
|
||||
:placeholder="$t('label.server.certificate')"
|
||||
name="serverCert"
|
||||
v-decorator="[
|
||||
'server',
|
||||
{rules: [{ required: true, message: 'Required' }], validateTrigger:'change'}
|
||||
{rules: [{ required: true, message: `${this.$t('label.required')}` }], validateTrigger:'change'}
|
||||
]"
|
||||
></a-textarea>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="PKCS#8 Private Key" :required="true">
|
||||
<a-form-item :label="$t('label.pkcs.private.certificate')" :required="true">
|
||||
<a-textarea
|
||||
id="pkcsKey"
|
||||
rows="2"
|
||||
placeholder="PKCS#8 Private Key"
|
||||
:placeholder="$t('label.pkcs.private.certificate')"
|
||||
name="pkcsKey"
|
||||
v-decorator="[
|
||||
'pkcs',
|
||||
{rules: [{ required: true, message: 'Required' }], validateTrigger:'change'}
|
||||
{rules: [{ required: true, message: `${this.$t('label.required')}` }], validateTrigger:'change'}
|
||||
]"
|
||||
></a-textarea>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="DNS Domain Suffix (i.e., xyz.com)" :required="true">
|
||||
<a-form-item :label="$t('label.domain.suffix')" :required="true">
|
||||
<a-input
|
||||
id="dnsSuffix"
|
||||
placeholder="DNS Domain Suffix (i.e., xyz.com)"
|
||||
:placeholder="$t('label.domain.suffix')"
|
||||
name="dnsSuffix"
|
||||
v-decorator="[
|
||||
'dns',
|
||||
{rules: [{ required: true, message: 'Required' }], validateTrigger:'change'}
|
||||
{rules: [{ required: true, message: `${this.$t('label.required')}` }], validateTrigger:'change'}
|
||||
]"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<a-select
|
||||
v-decorator="['zoneid', {
|
||||
initialValue: this.zoneId,
|
||||
rules: [{ required: true, message: 'required' }] }
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }] }
|
||||
]">
|
||||
<a-select-option
|
||||
v-for="zone in zonesList"
|
||||
@ -40,7 +40,7 @@
|
||||
v-decorator="[
|
||||
'name',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -51,7 +51,7 @@
|
||||
v-decorator="[
|
||||
'gateway',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -62,7 +62,7 @@
|
||||
v-decorator="[
|
||||
'netmask',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -73,7 +73,7 @@
|
||||
v-decorator="[
|
||||
'startip',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
/>
|
||||
</a-form-item>
|
||||
@ -213,11 +213,11 @@ export default {
|
||||
}).then(response => {
|
||||
this.$pollJob({
|
||||
jobId: response.dedicatepodresponse.jobid,
|
||||
successMessage: `Successfully dedicated pod`,
|
||||
successMessage: this.$t('message.pod.dedicated'),
|
||||
successMethod: () => {
|
||||
this.loading = false
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: 'Successfully dedicated pod',
|
||||
title: this.$t('message.pod.dedicated'),
|
||||
jobid: response.dedicatepodresponse.jobid,
|
||||
description: `Domain ID: ${this.dedicatedDomainId}`,
|
||||
status: 'progress'
|
||||
@ -227,7 +227,7 @@ export default {
|
||||
errorMethod: () => {
|
||||
this.loading = false
|
||||
},
|
||||
loadingMessage: `Dedicating pod...`,
|
||||
loadingMessage: this.$t('message.dedicate.pod'),
|
||||
catchMessage: 'Error encountered while fetching async job result',
|
||||
catchMethod: () => {
|
||||
this.loading = false
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
<a-form-item :label="$t('label.vlanrange')">
|
||||
<a-input
|
||||
v-decorator="['range', {
|
||||
rules: [{ required: true, message: 'Required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
@ -75,7 +75,7 @@
|
||||
<a-select
|
||||
@change="handleDomainChange"
|
||||
v-decorator="['domain', {
|
||||
rules: [{ required: true, message: 'Required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
>
|
||||
<a-select-option v-for="domain in domains" :key="domain.id" :value="domain.id">{{ domain.name }}</a-select-option>
|
||||
@ -85,7 +85,7 @@
|
||||
<a-form-item :label="$t('label.account')" v-if="selectedScope === 'account'">
|
||||
<a-select
|
||||
v-decorator="['account', {
|
||||
rules: [{ required: true, message: 'Required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
>
|
||||
<a-select-option
|
||||
@ -100,7 +100,7 @@
|
||||
<a-form-item :label="$t('label.project')" v-if="selectedScope === 'project'">
|
||||
<a-select
|
||||
v-decorator="['project', {
|
||||
rules: [{ required: true, message: 'Required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
>
|
||||
<a-select-option
|
||||
|
||||
@ -72,7 +72,7 @@
|
||||
<a-form-item :label="$t('label.podid')" class="form__item">
|
||||
<a-select
|
||||
v-decorator="['pod', {
|
||||
rules: [{ required: true, message: 'Required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
>
|
||||
<a-select-option v-for="item in items" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
|
||||
@ -80,12 +80,12 @@
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.gateway')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['gateway', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['gateway', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.netmask')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['netmask', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['netmask', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.vlan')" class="form__item">
|
||||
@ -95,12 +95,12 @@
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.startip')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['startip', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['startip', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.endip')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['endip', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['endip', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.system.vms')" class="form__item">
|
||||
|
||||
@ -120,12 +120,12 @@
|
||||
>
|
||||
<a-form-item :label="$t('label.gateway')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['gateway', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['gateway', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.netmask')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['netmask', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['netmask', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.vlan')" class="form__item">
|
||||
@ -135,12 +135,12 @@
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.startip')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['startip', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['startip', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.endip')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['endip', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['endip', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<div class="form__item">
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
<a-form-item :label="$t('label.podid')" class="form__item">
|
||||
<a-select
|
||||
v-decorator="['pod', {
|
||||
rules: [{ required: true, message: 'Required' }]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }]
|
||||
}]"
|
||||
>
|
||||
<a-select-option v-for="pod in pods" :key="pod.id" :value="pod.id">{{ pod.name }}</a-select-option>
|
||||
@ -78,12 +78,12 @@
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.gateway')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['gateway', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['gateway', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.netmask')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['netmask', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['netmask', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.vlan')" class="form__item">
|
||||
@ -93,12 +93,12 @@
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.startip')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['startip', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['startip', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.endip')" class="form__item">
|
||||
<a-input
|
||||
v-decorator="['endip', { rules: [{ required: true, message: 'Required' }] }]">
|
||||
v-decorator="['endip', { rules: [{ required: true, message: `${this.$t('label.required')}` }] }]">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
|
||||
@ -284,33 +284,33 @@ export default {
|
||||
{
|
||||
title: 'label.pod.name',
|
||||
key: 'podName',
|
||||
placeHolder: 'Please enter pod name',
|
||||
placeHolder: 'message.installwizard.tooltip.addpod.name',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
title: 'label.reserved.system.gateway',
|
||||
key: 'podReservedGateway',
|
||||
placeHolder: 'Please enter system gateway for Pod',
|
||||
placeHolder: 'message.installwizard.tooltip.addpod.reservedsystemgateway',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
title: 'label.reserved.system.netmask',
|
||||
key: 'podReservedNetmask',
|
||||
placeHolder: 'Please enter system netmask for Pod',
|
||||
placeHolder: 'message.tooltip.reserved.system.netmask',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
title: 'label.start.reserved.system.IP',
|
||||
title: 'label.start.reserved.system.ip',
|
||||
key: 'podReservedStartIp',
|
||||
placeHolder: 'Please enter reserved system start ip for Pod',
|
||||
placeHolder: 'message.installwizard.tooltip.addpod.reservedsystemstartip',
|
||||
required: true,
|
||||
ipV4: true,
|
||||
message: 'Please enter a valid IP v4 address.'
|
||||
},
|
||||
{
|
||||
title: 'label.end.reserved.system.IP',
|
||||
title: 'label.end.reserved.system.ip',
|
||||
key: 'podReservedStopIp',
|
||||
placeHolder: 'Please enter reserved system stop ip for Pod',
|
||||
placeHolder: 'message.installwizard.tooltip.addpod.reservedsystemendip',
|
||||
required: false,
|
||||
ipV4: true,
|
||||
message: 'Please enter a valid IP v4 address.'
|
||||
@ -320,19 +320,19 @@ export default {
|
||||
{
|
||||
title: 'label.guest.gateway',
|
||||
key: 'guestGateway',
|
||||
placeHolder: 'Please enter guest gateway',
|
||||
placeHolder: 'message.installwizard.tooltip.configureguesttraffic.guestgateway',
|
||||
required: false
|
||||
},
|
||||
{
|
||||
title: 'label.guest.netmask',
|
||||
key: 'guestNetmask',
|
||||
placeHolder: 'Please enter guest netmask',
|
||||
placeHolder: 'message.installwizard.tooltip.configureguesttraffic.guestnetmask',
|
||||
required: false
|
||||
},
|
||||
{
|
||||
title: 'label.guest.start.ip',
|
||||
key: 'guestStartIp',
|
||||
placeHolder: 'Please enter start ip for guest traffic',
|
||||
placeHolder: 'message.installwizard.tooltip.configureguesttraffic.gueststartip',
|
||||
required: false,
|
||||
ipV4: true,
|
||||
message: 'Please enter a valid IP v4 address.'
|
||||
@ -340,7 +340,7 @@ export default {
|
||||
{
|
||||
title: 'label.guest.end.ip',
|
||||
key: 'guestStopIp',
|
||||
placeHolder: 'Please enter stop ip for guest traffic',
|
||||
placeHolder: 'message.installwizard.tooltip.configureguesttraffic.guestendip',
|
||||
required: false,
|
||||
ipV4: true,
|
||||
message: 'Please enter a valid IP v4 address.'
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
</a-tag>
|
||||
</div>
|
||||
<a-modal
|
||||
title="Edit traffic type"
|
||||
:title="$t('label.edit.traffic.type')"
|
||||
:visible="showEditTraffic"
|
||||
:closable="true"
|
||||
@ok="updateTrafficLabel(trafficInEdit)"
|
||||
@ -69,7 +69,7 @@
|
||||
>
|
||||
<a-form :form="form">
|
||||
<span class="ant-form-text"> Please specify the traffic label you want associated with this traffic type. </span>
|
||||
<a-form-item v-bind="formItemLayout" style="margin-top:16px;" label="Traffic Label">
|
||||
<a-form-item v-bind="formItemLayout" style="margin-top:16px;" :label="$t('label.traffic.label')">
|
||||
<a-input
|
||||
v-decorator="['trafficLabel', {
|
||||
rules: [{
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
</draggable>
|
||||
</div>
|
||||
|
||||
<a-modal title="Edit Tags" v-model="tagsModalVisible" :footer="null">
|
||||
<a-modal :title="$t('label.edit.tags')" v-model="tagsModalVisible" :footer="null">
|
||||
<a-spin v-if="tagsLoading"></a-spin>
|
||||
|
||||
<div v-else>
|
||||
@ -150,15 +150,15 @@
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item v-if="ruleForm.getFieldValue('protocol') === 'protocolnumber'" :label="$t('label.protocolnumber')">
|
||||
<a-input v-decorator="['protocolnumber' , { rules: [{ required: true, message: 'required' }]}]" />
|
||||
<a-input v-decorator="['protocolnumber' , { rules: [{ required: true, message: `${this.$t('label.required')}` }]}]" />
|
||||
</a-form-item>
|
||||
|
||||
<div v-if="ruleForm.getFieldValue('protocol') === 'icmp' || ruleForm.getFieldValue('protocol') === 'protocolnumber'">
|
||||
<a-form-item :label="$t('label.icmptype')">
|
||||
<a-input v-decorator="['icmptype']" placeholder="Please specify -1 if you want to allow all ICMP types." />
|
||||
<a-input v-decorator="['icmptype']" :placeholder="$t('icmp.type.desc')" />
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.icmpcode')">
|
||||
<a-input v-decorator="['icmpcode']" placeholder="Please specify -1 if you want to allow all ICMP types." />
|
||||
<a-input v-decorator="['icmpcode']" :placeholder="$t('icmp.code.desc')" />
|
||||
</a-form-item>
|
||||
</div>
|
||||
|
||||
@ -181,7 +181,7 @@
|
||||
<a-textarea
|
||||
v-decorator="['reason']"
|
||||
:autosize="{ minRows: 2 }"
|
||||
placeholder="Enter the reason behind an ACL rule" />
|
||||
:placeholder="$t('label.acl.reason.description')" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
@ -218,7 +218,7 @@ export default {
|
||||
ruleForm: this.$form.createForm(this),
|
||||
tagsLoading: false,
|
||||
ruleModalVisible: false,
|
||||
ruleModalTitle: 'Edit rule',
|
||||
ruleModalTitle: this.$t('label.edit.rule'),
|
||||
ruleFormMode: 'edit'
|
||||
}
|
||||
},
|
||||
@ -415,7 +415,7 @@ export default {
|
||||
partialupgrade: false
|
||||
}).then(response => {
|
||||
this.$store.dispatch('AddAsyncJob', {
|
||||
title: `Edit ACL rule`,
|
||||
title: this.$t('label.edit.acl.rule'),
|
||||
jobid: response.createnetworkaclresponse.jobid,
|
||||
status: 'progress'
|
||||
})
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -82,7 +82,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -112,7 +112,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -82,7 +82,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -139,7 +139,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -170,7 +170,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
@ -193,7 +193,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
v-decorator="[
|
||||
'name',
|
||||
{
|
||||
rules: [{ required: true, message: 'required' }],
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}` }],
|
||||
}
|
||||
]"
|
||||
:placeholder="$t('label.vpncustomergatewayname')" />
|
||||
@ -32,7 +32,7 @@
|
||||
v-decorator="[
|
||||
'gateway',
|
||||
{
|
||||
rules: [{ required: true, message: 'required'}],
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}`}],
|
||||
}
|
||||
]"
|
||||
:placeholder="$t('label.vpncustomergateway')" />
|
||||
@ -42,7 +42,7 @@
|
||||
v-decorator="[
|
||||
'cidrlist',
|
||||
{
|
||||
rules: [{ required: true, message: 'required'}],
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}`}],
|
||||
}
|
||||
]"
|
||||
:placeholder="$t('label.vpncustomergateway.cidrlist')" />
|
||||
@ -53,7 +53,7 @@
|
||||
v-decorator="[
|
||||
'ipsecpsk',
|
||||
{
|
||||
rules: [{ required: true, message: 'required'}],
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}`}],
|
||||
}
|
||||
]"
|
||||
:placeholder="$t('label.vpncustomergateway.secretkey')" />
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
<div class="list__header__col list__header__col--full">
|
||||
<a-input-search
|
||||
placeholder="Search"
|
||||
:placeholder="$t('label.search')"
|
||||
v-model="searchQuery"
|
||||
@search="fetchData" />
|
||||
</div>
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
@showSizeChange="handleChangePageSize"
|
||||
showSizeChanger/>
|
||||
|
||||
<a-modal title="Edit Tags" v-model="tagsModalVisible" :footer="null" :afterClose="closeModal">
|
||||
<a-modal :title="$t('label.edit.tags')" v-model="tagsModalVisible" :footer="null" :afterClose="closeModal">
|
||||
<div class="add-tags">
|
||||
<div class="add-tags__input">
|
||||
<p class="add-tags__label">{{ $t('label.key') }}</p>
|
||||
|
||||
@ -97,7 +97,7 @@
|
||||
</template>
|
||||
</a-table>
|
||||
|
||||
<a-modal title="Edit Tags" v-model="tagsModalVisible" :footer="null" :afterClose="closeModal">
|
||||
<a-modal :title="$t('label.edit.tags')" v-model="tagsModalVisible" :footer="null" :afterClose="closeModal">
|
||||
<a-spin v-if="tagsLoading"></a-spin>
|
||||
|
||||
<div v-else>
|
||||
|
||||
@ -124,7 +124,11 @@ export default {
|
||||
api('listLoadBalancers', {
|
||||
id: this.resource.id
|
||||
}).then(response => {
|
||||
this.assignedVMs = response.listloadbalancersresponse.loadbalancer[0].loadbalancerinstance || []
|
||||
const lb = response.listloadbalancersresponse.loadbalancer
|
||||
this.assignedVMs = []
|
||||
if (Array.isArray(lb) && lb.length) {
|
||||
this.assignedVMs = lb[0].loadbalancerinstance || []
|
||||
}
|
||||
}).finally(() => {
|
||||
this.fetchLoading = false
|
||||
})
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
@showSizeChange="handleChangePageSize"
|
||||
showSizeChanger/>
|
||||
|
||||
<a-modal title="Edit Tags" v-model="tagsModalVisible" :footer="null" :afterClose="closeModal" class="tags-modal">
|
||||
<a-modal :title="$t('label.edit.tags')" v-model="tagsModalVisible" :footer="null" :afterClose="closeModal" class="tags-modal">
|
||||
<span v-show="tagsModalLoading" class="modal-loading">
|
||||
<a-icon type="loading"></a-icon>
|
||||
</span>
|
||||
@ -166,7 +166,7 @@
|
||||
</a-modal>
|
||||
|
||||
<a-modal
|
||||
title="Configure Sticky Policy"
|
||||
:title="$t('label.configure.sticky.policy')"
|
||||
v-model="stickinessModalVisible"
|
||||
:footer="null"
|
||||
:afterClose="closeModal"
|
||||
@ -177,7 +177,7 @@
|
||||
</span>
|
||||
|
||||
<a-form :form="stickinessPolicyForm" @submit="handleSubmitStickinessForm" class="custom-ant-form">
|
||||
<a-form-item label="Stickiness method">
|
||||
<a-form-item :label="$t('label.stickiness.method')">
|
||||
<a-select v-decorator="['methodname']" @change="handleStickinessMethodSelectChange">
|
||||
<a-select-option value="LbCookie">LbCookie</a-select-option>
|
||||
<a-select-option value="AppCookie">AppCookie</a-select-option>
|
||||
@ -186,58 +186,58 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
label="Sticky Name"
|
||||
:label="$t('label.sticky.name')"
|
||||
v-show="stickinessPolicyMethod === 'LbCookie' || stickinessPolicyMethod ===
|
||||
'AppCookie' || stickinessPolicyMethod === 'SourceBased'">
|
||||
<a-input v-decorator="['name', { rules: [{ required: true, message: 'Please specify a sticky name'}] }]" />
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
label="Cookie name"
|
||||
:label="$t('label.sticky.cookie-name')"
|
||||
v-show="stickinessPolicyMethod === 'LbCookie' || stickinessPolicyMethod ===
|
||||
'AppCookie'">
|
||||
<a-input v-decorator="['cookieName']" />
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
label="Mode"
|
||||
:label="$t('label.sticky.mode')"
|
||||
v-show="stickinessPolicyMethod === 'LbCookie' || stickinessPolicyMethod ===
|
||||
'AppCookie'">
|
||||
<a-input v-decorator="['mode']" />
|
||||
</a-form-item>
|
||||
<a-form-item label="No cache" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-form-item :label="$t('label.sticky.nocache')" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-checkbox v-decorator="['nocache']" v-model="stickinessNoCache"></a-checkbox>
|
||||
</a-form-item>
|
||||
<a-form-item label="Indirect" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-form-item :label="$t('label.sticky.indirect')" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-checkbox v-decorator="['indirect']" v-model="stickinessIndirect"></a-checkbox>
|
||||
</a-form-item>
|
||||
<a-form-item label="Post only" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-form-item :label="$t('label.sticky.postonly')" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-checkbox v-decorator="['postonly']" v-model="stickinessPostOnly"></a-checkbox>
|
||||
</a-form-item>
|
||||
<a-form-item label="Domain" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-form-item :label="$t('label.domain')" v-show="stickinessPolicyMethod === 'LbCookie'">
|
||||
<a-input v-decorator="['domain']" />
|
||||
</a-form-item>
|
||||
<a-form-item label="Length" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-form-item :label="$t('label.sticky.length')" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-input v-decorator="['length']" type="number" />
|
||||
</a-form-item>
|
||||
<a-form-item label="Hold time" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-form-item :label="$t('label.sticky.holdtime')" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-input v-decorator="['holdtime']" type="number" />
|
||||
</a-form-item>
|
||||
<a-form-item label="Request learn" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-form-item :label="$t('label.sticky.request-learn')" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-checkbox v-decorator="['requestLearn']" v-model="stickinessRequestLearn"></a-checkbox>
|
||||
</a-form-item>
|
||||
<a-form-item label="Prefix" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-form-item :label="$t('label.sticky.prefix')" v-show="stickinessPolicyMethod === 'AppCookie'">
|
||||
<a-checkbox v-decorator="['prefix']" v-model="stickinessPrefix"></a-checkbox>
|
||||
</a-form-item>
|
||||
<a-form-item label="Table size" v-show="stickinessPolicyMethod === 'SourceBased'">
|
||||
<a-form-item :label="$t('label.sticky.tablesize')" v-show="stickinessPolicyMethod === 'SourceBased'">
|
||||
<a-input v-decorator="['tablesize']" />
|
||||
</a-form-item>
|
||||
<a-form-item label="Expires" v-show="stickinessPolicyMethod === 'SourceBased'">
|
||||
<a-form-item :label="$t('label.sticky.expire')" v-show="stickinessPolicyMethod === 'SourceBased'">
|
||||
<a-input v-decorator="['expire']" />
|
||||
</a-form-item>
|
||||
<a-button type="primary" html-type="submit">OK</a-button>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
|
||||
<a-modal title="Edit rule" v-model="editRuleModalVisible" :afterClose="closeModal" @ok="handleSubmitEditForm">
|
||||
<a-modal :title="$t('label.edit.rule')" v-model="editRuleModalVisible" :afterClose="closeModal" @ok="handleSubmitEditForm">
|
||||
<span v-show="editRuleModalLoading" class="modal-loading">
|
||||
<a-icon type="loading"></a-icon>
|
||||
</span>
|
||||
|
||||
@ -28,10 +28,10 @@
|
||||
<a-tab-pane :tab="$t('label.networks')" key="tier">
|
||||
<VpcTiersTab :resource="resource" :loading="loading" />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="Public IP Addresses" key="ip" v-if="'listPublicIpAddresses' in $store.getters.apis">
|
||||
<a-tab-pane :tab="$t('label.public.ips')" key="ip" v-if="'listPublicIpAddresses' in $store.getters.apis">
|
||||
<IpAddressesTab :resource="resource" :loading="loading" />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="Network ACL Lists" key="acl" v-if="'listNetworkACLLists' in $store.getters.apis">
|
||||
<a-tab-pane :tab="$t('label.network.acl.lists')" key="acl" v-if="'listNetworkACLLists' in $store.getters.apis">
|
||||
<a-button
|
||||
type="dashed"
|
||||
icon="plus"
|
||||
@ -70,15 +70,15 @@
|
||||
@ok="handleNetworkAclFormSubmit">
|
||||
<a-form @submit.prevent="handleNetworkAclFormSubmit" :form="networkAclForm">
|
||||
<a-form-item :label="$t('label.add.list.name')">
|
||||
<a-input v-decorator="['name', {rules: [{ required: true, message: 'Required' }]}]"></a-input>
|
||||
<a-input v-decorator="['name', {rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.description')">
|
||||
<a-input v-decorator="['description', {rules: [{ required: true, message: 'Required' }]}]"></a-input>
|
||||
<a-input v-decorator="['description', {rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"></a-input>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="Private Gateways" key="pgw" v-if="'listPrivateGateways' in $store.getters.apis">
|
||||
<a-tab-pane :tab="$t('label.private.gateway')" key="pgw" v-if="'listPrivateGateways' in $store.getters.apis">
|
||||
<a-button
|
||||
type="dashed"
|
||||
icon="plus"
|
||||
@ -125,25 +125,25 @@
|
||||
<a-form-item :label="$t('label.vlan')" :required="true">
|
||||
<a-input
|
||||
:placeholder="placeholders.vlan"
|
||||
v-decorator="['vlan', {rules: [{ required: true, message: 'Required' }]}]"
|
||||
v-decorator="['vlan', {rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.publicip')" :required="true">
|
||||
<a-input
|
||||
:placeholder="placeholders.ipaddress"
|
||||
v-decorator="['ipaddress', {rules: [{ required: true, message: 'Required' }]}]"
|
||||
v-decorator="['ipaddress', {rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.gateway')" :required="true">
|
||||
<a-input
|
||||
:placeholder="placeholders.gateway"
|
||||
v-decorator="['gateway', {rules: [{ required: true, message: 'Required' }]}]"
|
||||
v-decorator="['gateway', {rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.netmask')" :required="true">
|
||||
<a-input
|
||||
:placeholder="placeholders.netmask"
|
||||
v-decorator="['netmask', {rules: [{ required: true, message: 'Required' }]}]"
|
||||
v-decorator="['netmask', {rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.sourcenat')">
|
||||
@ -160,7 +160,7 @@
|
||||
</a-spin>
|
||||
</a-modal>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="VPN Gateway" key="vpngw" v-if="'listVpnGateways' in $store.getters.apis">
|
||||
<a-tab-pane :tab="$t('label.vpn.gateway')" key="vpngw" v-if="'listVpnGateways' in $store.getters.apis">
|
||||
<a-button
|
||||
v-if="vpnGateways.length === 0"
|
||||
type="dashed"
|
||||
@ -184,7 +184,7 @@
|
||||
</a-list-item>
|
||||
</a-list>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="VPN Connections" key="vpnc" v-if="'listVpnConnections' in $store.getters.apis">
|
||||
<a-tab-pane :tab="$t('label.vpn.connection')" key="vpnc" v-if="'listVpnConnections' in $store.getters.apis">
|
||||
<a-button
|
||||
type="dashed"
|
||||
icon="plus"
|
||||
@ -236,7 +236,7 @@
|
||||
</a-spin>
|
||||
</a-modal>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="Virtual Routers" key="vr" v-if="'listRouters' in $store.getters.apis">
|
||||
<a-tab-pane :tab="$t('label.virtual.routers')" key="vr" v-if="'listRouters' in $store.getters.apis">
|
||||
<RoutersTab :resource="resource" :loading="loading" />
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
|
||||
@ -134,11 +134,11 @@
|
||||
<a-form-item :label="$t('label.name')">
|
||||
<a-input
|
||||
placeholder="A unique name of the tier"
|
||||
v-decorator="['name',{rules: [{ required: true, message: 'Required' }]}]"></a-input>
|
||||
v-decorator="['name',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.networkofferingid')">
|
||||
<a-select
|
||||
v-decorator="['networkOffering',{rules: [{ required: true, message: 'Required' }]}]">
|
||||
v-decorator="['networkOffering',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]">
|
||||
<a-select-option v-for="item in networkOfferings" :key="item.id" :value="item.id">
|
||||
{{ item.name }}
|
||||
</a-select-option>
|
||||
@ -147,12 +147,12 @@
|
||||
<a-form-item :label="$t('label.gateway')">
|
||||
<a-input
|
||||
placeholder="The gateway of the tier in the super CIDR range and not overlapping the CIDR of any other tier in this VPC."
|
||||
v-decorator="['gateway',{rules: [{ required: true, message: 'Required' }]}]"></a-input>
|
||||
v-decorator="['gateway',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.netmask')">
|
||||
<a-input
|
||||
placeholder="Netmask of the tier. For example, with VPC CIDR of 10.0.0.0/16 and network tier CIDR of 10.1.1.0/24, gateway is 10.1.1.1 and netmask is 255.255.255.0"
|
||||
v-decorator="['netmask',{rules: [{ required: true, message: 'Required' }]}]"></a-input>
|
||||
v-decorator="['netmask',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.externalid')">
|
||||
<a-input
|
||||
@ -201,7 +201,7 @@
|
||||
'algorithm',
|
||||
{
|
||||
initialValue: 'Source',
|
||||
rules: [{ required: true, message: 'required'}]
|
||||
rules: [{ required: true, message: `${this.$t('label.required')}`}]
|
||||
}]">
|
||||
<a-select-option v-for="(key, idx) in Object.keys(algorithms)" :key="idx" :value="algorithms[key]">
|
||||
{{ key }}
|
||||
|
||||
@ -170,7 +170,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
],
|
||||
initialValue: 0
|
||||
@ -313,7 +313,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -71,7 +71,7 @@
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please select option'
|
||||
message: `${this.$t('message.error.select')}`
|
||||
}
|
||||
]
|
||||
}]"
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
showSearch
|
||||
allowClear
|
||||
v-decorator="['zoneid', {
|
||||
rules: [{ required: true, message: 'Please select option' }]
|
||||
rules: [{ required: true, message: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:loading="zones.loading"
|
||||
@change="onChangeZone">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user