diff --git a/engine/schema/src/main/resources/META-INF/db/schema-42300to2400.sql b/engine/schema/src/main/resources/META-INF/db/schema-42300to2400.sql
index 4e7d4c242d5e..541caae23c11 100644
--- a/engine/schema/src/main/resources/META-INF/db/schema-42300to2400.sql
+++ b/engine/schema/src/main/resources/META-INF/db/schema-42300to2400.sql
@@ -268,3 +268,6 @@ CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.nics', 'multi_network', 'tinyint(1)
CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_network_offering', 'network_id', 'bigint(20) unsigned DEFAULT NULL COMMENT "associated network this usage row belongs to"');
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.disk_offering', 'error_policy', 'VARCHAR(16) DEFAULT ''report'' COMMENT ''disk error policy (report/stop/ignore/enospace) used by KVM hypervisor''');
+
+-- Rename persisted FlashArray provider name (plugin getName() changed from 'Flash Array' to 'FlashArray')
+UPDATE `cloud`.`storage_pool` SET `storage_provider_name` = 'FlashArray' WHERE `storage_provider_name` = 'Flash Array';
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
index 13dab6942f8b..cabb77f30e3b 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
@@ -58,7 +58,7 @@ public abstract class MultipathSCSIAdapterBase implements StorageAdaptor {
*/
static String[] SUPPORTED_OUI_LIST = {
"0002ac", // HPE Primera 3PAR
- "24a937" // Pure Flasharray
+ "24a937" // Pure Storage FlashArray
};
/**
diff --git a/plugins/storage/volume/flasharray/pom.xml b/plugins/storage/volume/flasharray/pom.xml
index f26d29916f95..2479757ae5c6 100644
--- a/plugins/storage/volume/flasharray/pom.xml
+++ b/plugins/storage/volume/flasharray/pom.xml
@@ -20,7 +20,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
cloud-plugin-storage-volume-flasharray
- Apache CloudStack Plugin - Storage Volume - Pure Flash Array
+ Apache CloudStack Plugin - Storage Volume - Pure Storage FlashArray
org.apache.cloudstack
cloudstack-plugins
diff --git a/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapter.java b/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapter.java
index 4e12e3eb18d6..50606e26e09b 100644
--- a/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapter.java
+++ b/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapter.java
@@ -328,7 +328,7 @@ public ProviderVolume getVolume(ProviderAdapterContext context, ProviderAdapterD
return volume;
} catch (Exception e) {
- // assume any exception is a not found. Flash returns 400's for most errors
+ // assume any exception is a not found. FlashArray returns 400's for most errors
return null;
}
}
@@ -391,7 +391,7 @@ public ProviderVolume getVolumeByAddress(ProviderAdapterContext context, Address
return volume;
} catch (Exception e) {
- // assume any exception is a not found. Flash returns 400's for most errors
+ // assume any exception is a not found. FlashArray returns 400's for most errors
return null;
}
}
@@ -451,7 +451,7 @@ public ProviderVolume revert(ProviderAdapterContext context, ProviderAdapterData
String origVolumeName = snapshot.getSource().getName();
// now "create" a new volume with the snapshot volume as its source (basically a
- // Flash array copy)
+ // FlashArray copy)
// and overwrite to true (volume already exists, we are recreating it)
FlashArrayVolume input = new FlashArrayVolume();
input.setExternalName(origVolumeName);
@@ -509,7 +509,7 @@ public ProviderVolume copy(ProviderAdapterContext context, ProviderAdapterDataOb
}
// now "create" a new volume with the snapshot volume as its source (basically a
- // Flash array copy)
+ // FlashArray copy)
// and overwrite to true (volume already exists, we are recreating it)
FlashArrayVolume payload = new FlashArrayVolume();
payload.setExternalName(normalizeName(pod, destDataObject.getExternalName()));
diff --git a/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapterFactory.java b/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapterFactory.java
index de55b27884eb..c0edcfe08e19 100644
--- a/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapterFactory.java
+++ b/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray/FlashArrayAdapterFactory.java
@@ -25,7 +25,7 @@ public class FlashArrayAdapterFactory implements ProviderAdapterFactory {
@Override
public String getProviderName() {
- return "Flash Array";
+ return "FlashArray";
}
@Override
diff --git a/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/provider/FlashArrayPrimaryDatastoreProviderImpl.java b/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/provider/FlashArrayPrimaryDatastoreProviderImpl.java
index 0750ef2cc27d..e76d5b3e7f61 100644
--- a/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/provider/FlashArrayPrimaryDatastoreProviderImpl.java
+++ b/plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/provider/FlashArrayPrimaryDatastoreProviderImpl.java
@@ -26,7 +26,7 @@ public FlashArrayPrimaryDatastoreProviderImpl() {
@Override
public String getName() {
- return "Flash Array";
+ return "FlashArray";
}
}
diff --git a/ui/public/locales/el_GR.json b/ui/public/locales/el_GR.json
index ea86c1ad13ae..b99a2bae95d3 100644
--- a/ui/public/locales/el_GR.json
+++ b/ui/public/locales/el_GR.json
@@ -2087,7 +2087,7 @@
"label.primera.username.tooltip": "Το όνομα χρήστη με δικαιώματα επεξεργασίας",
"label.primera.url.tooltip": "URL που ορίζει το τελικό σημείο της συστοιχίας αποθήκευσης Primera, με μορφή: http[s]://HOSTNAME:PORT?cpg=NAME&hostset=NAME[&skipTlsValidation=true][&snapCPG=NAME][&taskWaitTimeoutMs=#][&keyttl=#][&connectTimeoutMs=#] όπου οι τιμές σε [] είναι προαιρετικές.",
"label.flashArray.username.tooltip": "Το όνομα χρήστη με δικαιώματα επεξεργασίας",
-"label.flashArray.url.tooltip": "URL που ορίζει το τελικό σημείο του Flash Array, με μορφή: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVersion=#][&apiVersion=#] όπου οι τιμές σε [] είναι προαιρετικές.",
+"label.flashArray.url.tooltip": "URL που ορίζει το τελικό σημείο του FlashArray, με μορφή: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVersion=#][&apiVersion=#] όπου οι τιμές σε [] είναι προαιρετικές.",
"label.primary": "Πρωτεύουσα",
"label.primary.storage": "Πρωτεύουσα αποθήκευση",
"label.primary.storage.allocated": "Εκχωρημένη πρωτεύουσα αποθήκευση",
diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 720a62c494c0..1c193e96d490 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -2102,7 +2102,7 @@
"label.primera.username.tooltip": "The username with edit privileges",
"label.primera.url.tooltip": "URL designating the Primera storage array endpoint, formatted as: http[s]://HOSTNAME:PORT?cpg=NAME&hostset=NAME[&skipTlsValidation=true][&snapCPG=NAME][&taskWaitTimeoutMs=#][&keyttl=#][&connectTimeoutMs=#] where values in [] are optional.",
"label.flashArray.username.tooltip": "The username with edit privileges",
-"label.flashArray.url.tooltip": "URL designating the Flash Array endpoint, formatted as: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVersion=#][&apiVersion=#] where values in [] are optional.",
+"label.flashArray.url.tooltip": "URL designating the FlashArray endpoint, formatted as: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVersion=#][&apiVersion=#] where values in [] are optional.",
"label.primary": "Primary",
"label.primary.storage": "Primary Storage",
"label.primary.storage.allocated": "Primary Storage allocated",
diff --git a/ui/public/locales/pt_BR.json b/ui/public/locales/pt_BR.json
index c80c2c9a02c2..09259496da5d 100644
--- a/ui/public/locales/pt_BR.json
+++ b/ui/public/locales/pt_BR.json
@@ -1783,7 +1783,7 @@
"label.primera.url.tooltip": "URL designando o endpoint do array de armazenamento Primera, formatado como: http[s]://HOSTNAME:PORT?cpg=NAME&hostset=NAME[&skipTlsValidation=true][&snapCPG=NAME][&taskWaitTimeoutMs=#][&keyttl=#][&connectTimeoutMs=#] onde valores em [] s\u00e3o opcionais.",
"label.primera.username.tooltip": "O nome de usu\u00e1rio com privil\u00e9gios de edi\u00e7\u00e3o",
"label.flashArray.username.tooltip": "O nome de us\u00e1rio com privil\u00e9gios de edi\u00e7\u00e3o",
-"label.flashArray.url.tooltip": "URL designando o endpoint Flash Array, formatado como: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVersion=#][&apiVersion=#] onde valores em [] s\u00e3o opcionais.",
+"label.flashArray.url.tooltip": "URL designando o endpoint FlashArray, formatado como: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVersion=#][&apiVersion=#] onde valores em [] s\u00e3o opcionais.",
"label.primary": "Prim\u00e1rio",
"label.primary.storage": "Armazenamento prim\u00e1rio",
"label.primary.storage.allocated": "Armazenamento prim\u00e1rio alocado",
diff --git a/ui/public/locales/te.json b/ui/public/locales/te.json
index e298a5352d13..cf3b4a9978fd 100644
--- a/ui/public/locales/te.json
+++ b/ui/public/locales/te.json
@@ -1718,7 +1718,7 @@
"label.primera.username.tooltip": "సవరణ అధికారాలతో వినియోగదారు పేరు",
"label.primera.url.tooltip": "ప్రైమెరా స్టోరేజ్ అర్రే ఎండ్పాయింట్ని నిర్దేశించే URL, ఇలా ఫార్మాట్ చేయబడింది: http[s]://HOSTNAME:PORT?cpg=NAME&hostset=NAME[&skipTlsValidation=true][&snapCPG=NAME][&taskWaitTimeoutMs=#][&keyttl=#][&connectTimeoutMs= ",
"label.flashArray.username.tooltip": "సవరణ అధికారాలతో వినియోగదారు పేరు",
- "label.flashArray.url.tooltip": "Flash Array ముగింపు బిందువును నిర్దేశించే URL, ఇలా ఫార్మాట్ చేయబడింది: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVers ",
+ "label.flashArray.url.tooltip": "FlashArray ముగింపు బిందువును నిర్దేశించే URL, ఇలా ఫార్మాట్ చేయబడింది: http[s]://HOSTNAME:PORT?pod=NAME&hostgroup=NAME[&skipTlsValidation=true][&postCopyWaitMs=#][&keyttl=#][&connectTimeoutMs=#][&apiLoginVers ",
"label.primary": "ప్రాథమిక",
"label.primary.storage": "ప్రాథమిక నిల్వ",
"label.primary.storage.allocated": "ప్రాథమిక నిల్వ కేటాయించబడింది",
diff --git a/ui/src/views/infra/AddPrimaryStorage.vue b/ui/src/views/infra/AddPrimaryStorage.vue
index eeb3ebdd22c6..91efa31f3778 100644
--- a/ui/src/views/infra/AddPrimaryStorage.vue
+++ b/ui/src/views/infra/AddPrimaryStorage.vue
@@ -360,7 +360,7 @@
-
+
@@ -829,7 +829,7 @@ export default {
if (value === 'PowerFlex') {
this.protocols = ['custom']
this.form.protocol = 'custom'
- } else if (value === 'Flash Array') {
+ } else if (value === 'FlashArray') {
this.protocols = ['FiberChannel', 'NVMeTCP']
this.form.protocol = 'FiberChannel'
} else if (value === 'Primera') {
@@ -959,7 +959,7 @@ export default {
params['details[0].api_username'] = values.primeraUsername
params['details[0].api_password'] = values.primeraPassword
url = values.primeraURL
- } else if (values.provider === 'Flash Array') {
+ } else if (values.provider === 'FlashArray') {
params['details[0].api_username'] = values.flashArrayUsername
params['details[0].api_password'] = values.flashArrayPassword
url = values.flashArrayURL