diff --git a/public/locales/en.json b/public/locales/en.json index 5b1cc6a95..83e307901 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -1592,6 +1592,10 @@ "label.portable.ip.ranges": "Portable IP Ranges", "label.portableipaddress": "Portable IPs", "label.portforwarding": "Port Forwarding", +"label.powerflex.gateway": "Gateway", +"label.powerflex.gateway.username": "Gateway Username", +"label.powerflex.gateway.password": "Gateway Password", +"label.powerflex.storage.pool": "Storage Pool", "label.powerstate": "Power State", "label.preferred": "Prefered", "label.presetup": "PreSetup", diff --git a/src/config/section/compute.js b/src/config/section/compute.js index 895014065..f87e28e62 100644 --- a/src/config/section/compute.js +++ b/src/config/section/compute.js @@ -156,7 +156,8 @@ export default { args: ['virtualmachineid', 'name', 'description', 'snapshotmemory', 'quiescevm'], show: (record) => { return ((['Running'].includes(record.state) && record.hypervisor !== 'LXC') || - (['Stopped'].includes(record.state) && record.hypervisor !== 'KVM' && record.hypervisor !== 'LXC')) + (['Stopped'].includes(record.state) && ((record.hypervisor !== 'KVM' && record.hypervisor !== 'LXC') || + (record.hypervisor === 'KVM' && record.pooltype === 'PowerFlex')))) }, mapping: { virtualmachineid: { diff --git a/src/views/infra/AddPrimaryStorage.vue b/src/views/infra/AddPrimaryStorage.vue index 8229abedd..c5ee8393a 100644 --- a/src/views/infra/AddPrimaryStorage.vue +++ b/src/views/infra/AddPrimaryStorage.vue @@ -202,13 +202,13 @@ + @change="updateProviderAndProtocol"> {{ provider }} -
+
{{ $t('label.ismanaged') }} @@ -248,6 +248,44 @@
+
+ + + {{ $t('label.powerflex.gateway') }} + + + + + + + + + {{ $t('label.powerflex.gateway.username') }} + + + + + + + + + {{ $t('label.powerflex.gateway.password') }} + + + + + + + + + {{ $t('label.powerflex.storage.pool') }} + + + + + + +
@@ -557,6 +595,23 @@ export default { } return url }, + powerflexURL (gateway, username, password, pool) { + var url = 'powerflex://' + encodeURIComponent(username) + ':' + encodeURIComponent(password) + '@' + + gateway + '/' + encodeURIComponent(pool) + return url + }, + updateProviderAndProtocol (value) { + if (value === 'PowerFlex') { + this.protocols = ['custom'] + this.protocolSelected = 'custom' + this.form.setFieldsValue({ + protocol: 'custom' + }) + } else { + this.fetchHypervisor(null) + } + this.providerSelected = value + }, closeModal () { this.$parent.$parent.close() }, @@ -649,7 +704,7 @@ export default { url = this.iscsiURL(server, iqn, lun) } params.url = url - if (values.provider !== 'DefaultPrimary') { + if (values.provider !== 'DefaultPrimary' && values.provider !== 'PowerFlex') { if (values.managed) { params.managed = true } else { @@ -665,6 +720,12 @@ export default { params.url = values.url } } + + if (values.provider === 'PowerFlex') { + params.url = this.powerflexURL(values.powerflexGateway, values.powerflexGatewayUsername, + values.powerflexGatewayPassword, values.powerflexStoragePool) + } + if (this.selectedTags.length > 0) { params.tags = this.selectedTags.join() }