From 1e0da0b0cc31f4cb475dddf17bd72f6f9f660b31 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Wed, 18 Nov 2020 16:59:52 +0530 Subject: [PATCH 1/4] UI Changes to support new storage plugin for PowerFlex/ScaleIO storage pool - Generate URL from the UI inputs when adding "PowerFlex" Primary Storage - Allow VM Snapshot for stopped VM on KVM hypervisor and PowerFlex/ScaleIO storage pool --- public/locales/en.json | 4 ++++ src/config/section/compute.js | 3 ++- src/views/infra/AddPrimaryStorage.vue | 15 ++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) 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..f0a128235 100644 --- a/src/views/infra/AddPrimaryStorage.vue +++ b/src/views/infra/AddPrimaryStorage.vue @@ -208,7 +208,7 @@ -
+
{{ $t('label.ismanaged') }} @@ -248,6 +248,19 @@
+
+ + + + + + + + + + + +
From fb5e0f6da8c127db40401a4345651badee772f26 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 15 Dec 2020 14:53:36 +0530 Subject: [PATCH 2/4] Added powerflex support to create storage pool foem --- src/views/infra/AddPrimaryStorage.vue | 54 ++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/src/views/infra/AddPrimaryStorage.vue b/src/views/infra/AddPrimaryStorage.vue index f0a128235..fa3dff9e7 100644 --- a/src/views/infra/AddPrimaryStorage.vue +++ b/src/views/infra/AddPrimaryStorage.vue @@ -249,16 +249,41 @@
- - - - + + + {{ $t('label.powerflex.gateway') }} + + + + + - - + + + {{ $t('label.powerflex.gateway.username') }} + + + + + + + + + {{ $t('label.powerflex.gateway.password') }} + + + + + - - + + + {{ $t('label.powerflex.storage.pool') }} + + + + +
@@ -570,6 +595,11 @@ export default { } return url }, + powerflexURL (gateway, username, password, pool) { + var url = 'powerflex://' + encodeURIComponent(username) + ':' + encodeURIComponent(password) + '@' + + gateway + '/' + encodeURIComponent(pool) + return url + }, closeModal () { this.$parent.$parent.close() }, @@ -662,7 +692,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 { @@ -678,6 +708,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() } From 1867341a85f13fd2bda961ae7f7cf4f3fb37e478 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Wed, 16 Dec 2020 17:58:30 +0530 Subject: [PATCH 3/4] filter protocol based on the provider selected - PowerFlex --- src/views/infra/AddPrimaryStorage.vue | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/views/infra/AddPrimaryStorage.vue b/src/views/infra/AddPrimaryStorage.vue index fa3dff9e7..4303b5c3e 100644 --- a/src/views/infra/AddPrimaryStorage.vue +++ b/src/views/infra/AddPrimaryStorage.vue @@ -202,7 +202,7 @@ + @change="updateProviderAndProtocol"> {{ provider }} @@ -600,6 +600,14 @@ export default { gateway + '/' + encodeURIComponent(pool) return url }, + updateProviderAndProtocol (value) { + if (value === 'PowerFlex') { + this.protocols = ['custom'] + } else { + this.fetchHypervisor(null) + } + this.providerSelected = value + }, closeModal () { this.$parent.$parent.close() }, From 819aea8e57c50cbea7807729714f5bf77a383f95 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Wed, 27 Jan 2021 20:00:52 +0530 Subject: [PATCH 4/4] Updated protocol to "custom" for PowerFlex provider --- src/views/infra/AddPrimaryStorage.vue | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/views/infra/AddPrimaryStorage.vue b/src/views/infra/AddPrimaryStorage.vue index 4303b5c3e..c5ee8393a 100644 --- a/src/views/infra/AddPrimaryStorage.vue +++ b/src/views/infra/AddPrimaryStorage.vue @@ -603,6 +603,10 @@ export default { updateProviderAndProtocol (value) { if (value === 'PowerFlex') { this.protocols = ['custom'] + this.protocolSelected = 'custom' + this.form.setFieldsValue({ + protocol: 'custom' + }) } else { this.fetchHypervisor(null) }