From 973f5e23f085d579472118318edf5cc79f2fa860 Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 11:41:45 +0530 Subject: [PATCH 1/7] CSTACKEX-34: Upgrade to framework classes design --- .../storage/feign/client/SvmFeignClient.java | 3 - .../storage/feign/model/OntapStorage.java | 48 +++--- .../OntapPrimaryDatastoreLifecycle.java | 2 +- .../provider/StorageProviderFactory.java | 1 - .../storage/service/NASStrategy.java | 4 - .../storage/service/SANStrategy.java | 4 - .../storage/service/StorageStrategy.java | 158 +++++++++++++++++- .../storage/service/UnifiedNASStrategy.java | 49 +++++- .../storage/service/UnifiedSANStrategy.java | 49 +++++- 9 files changed, 264 insertions(+), 54 deletions(-) diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/client/SvmFeignClient.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/client/SvmFeignClient.java index 753595713c25..c0091c8733e9 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/client/SvmFeignClient.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/client/SvmFeignClient.java @@ -26,10 +26,7 @@ import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; - import java.net.URI; -import java.util.Map; @FeignClient(name = "SvmClient", url = "https://{clusterIP}/api/svm/svms", configuration = FeignConfiguration.class) public interface SvmFeignClient { diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java index af986e5fdc39..4043048870c8 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java @@ -22,67 +22,67 @@ import org.apache.cloudstack.storage.utils.Constants.ProtocolType; public class OntapStorage { - public static String _username; - public static String _password; - public static String _managementLIF; - public static String _svmName; - public static ProtocolType _protocolType; - public static Boolean _isDisaggregated; + public static String username; + public static String password; + public static String managementLIF; + public static String svmName; + public static ProtocolType protocolType; + public static Boolean isDisaggregated; public OntapStorage(String username, String password, String managementLIF, String svmName, ProtocolType protocolType, Boolean isDisaggregated) { - _username = username; - _password = password; - _managementLIF = managementLIF; - _svmName = svmName; - _protocolType = protocolType; - _isDisaggregated = isDisaggregated; + username = username; + password = password; + managementLIF = managementLIF; + svmName = svmName; + protocolType = protocolType; + isDisaggregated = isDisaggregated; } public String getUsername() { - return _username; + return username; } public void setUsername(String username) { - _username = username; + username = username; } public String getPassword() { - return _password; + return password; } public void setPassword(String password) { - _password = password; + password = password; } public String getManagementLIF() { - return _managementLIF; + return managementLIF; } public void setManagementLIF(String managementLIF) { - _managementLIF = managementLIF; + managementLIF = managementLIF; } public String getSvmName() { - return _svmName; + return svmName; } public void setSvmName(String svmName) { - _svmName = svmName; + svmName = svmName; } public ProtocolType getProtocol() { - return _protocolType; + return protocolType; } public void setProtocol(ProtocolType protocolType) { - _protocolType = protocolType; + protocolType = protocolType; } public Boolean getIsDisaggregated() { - return _isDisaggregated; + return isDisaggregated; } public void setIsDisaggregated(Boolean isDisaggregated) { - _isDisaggregated = isDisaggregated; + isDisaggregated = isDisaggregated; } } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java index 722ed1e8c707..830f115a9bcf 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java @@ -145,7 +145,7 @@ public DataStore initialize(Map dsInfos) { boolean isValid = storageStrategy.connect(); if (isValid) { // String volumeName = storagePoolName + "_vol"; //TODO: Figure out a better naming convention - storageStrategy.createVolume(storagePoolName, Long.parseLong((details.get("size")))); // TODO: size should be in bytes, so see if conversion is needed + storageStrategy.createStorageVolume(storagePoolName, Long.parseLong((details.get("size")))); // TODO: size should be in bytes, so see if conversion is needed } else { throw new CloudRuntimeException("ONTAP details validation failed, cannot create primary storage"); } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java index 1bc6f51798ba..3fd3f4e850d8 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java @@ -24,7 +24,6 @@ import org.apache.cloudstack.storage.service.StorageStrategy; import org.apache.cloudstack.storage.service.UnifiedNASStrategy; import org.apache.cloudstack.storage.service.UnifiedSANStrategy; -import org.apache.cloudstack.storage.utils.Constants; import org.apache.cloudstack.storage.utils.Constants.ProtocolType; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java index 4e03daae4b4a..e0651ea3f433 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java @@ -26,9 +26,5 @@ public NASStrategy(OntapStorage ontapStorage) { super(ontapStorage); } - public abstract String createExportPolicy(String svmName, String policyName); - public abstract String addExportRule(String policyName, String clientMatch, String[] protocols, String[] roRule, String[] rwRule); - public abstract String assignExportPolicyToVolume(String volumeUuid, String policyName); - public abstract String enableNFS(String svmUuid); } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/SANStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/SANStrategy.java index 4e6846ef7610..ce3b2806ef75 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/SANStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/SANStrategy.java @@ -26,8 +26,4 @@ public SANStrategy(OntapStorage ontapStorage) { super(ontapStorage); } - public abstract String createLUN(String svmName, String volumeName, String lunName, long sizeBytes, String osType); - public abstract String createIgroup(String svmName, String igroupName, String[] initiators); - public abstract String mapLUNToIgroup(String lunName, String igroupName); - public abstract String enableISCSI(String svmUuid); } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java index c608f039b381..d41bd367880e 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java @@ -42,6 +42,13 @@ import java.util.List; import java.util.Objects; +/** + * Storage Strategy represents the communication path for all the ONTAP storage options + * + * ONTAP storage operation would vary based on + * Supported protocols: NFS3.0, NFS4.1, FC, iSCSI, Nvme/TCP and Nvme/FC + * Supported platform: Unified and Disaggregated + */ public abstract class StorageStrategy { @Inject private Utility utils; @@ -57,10 +64,21 @@ public abstract class StorageStrategy { private final OntapStorage storage; + /** + * Presents aggregate object for the unified storage, not eligible for disaggregated + */ private List aggregates; private static final Logger s_logger = (Logger) LogManager.getLogger(StorageStrategy.class); + protected enum PROTOCOLS + { NFS30, + NFS41, + FC, + iSCSI, + NvmeTCP, + NvmeFC }; + public StorageStrategy(OntapStorage ontapStorage) { storage = ontapStorage; } @@ -108,7 +126,16 @@ public boolean connect() { } // Common methods like create/delete etc., should be here - public void createVolume(String volumeName, Long size) { + + /** + * Creates ONTAP Flex-Volume + * Eligible only for Unified ONTAP storage + * throw exception in case of disaggregated ONTAP storage + * + * @param volumeName + * @param size + */ + public void createStorageVolume(String volumeName, Long size) { s_logger.info("Creating volume: " + volumeName + " of size: " + size + " bytes"); String svmName = storage.getSvmName(); @@ -169,4 +196,133 @@ public void createVolume(String volumeName, Long size) { } s_logger.info("Volume created successfully: " + volumeName); } + + /** + * Updates ONTAP Flex-Volume + * Eligible only for Unified ONTAP storage + * throw exception in case of disaggregated ONTAP storage + * + * @param values + */ + public void updateStorageVolume(Map values) + { + //TODO + } + + /** + * Delete ONTAP Flex-Volume + * Eligible only for Unified ONTAP storage + * throw exception in case of disaggregated ONTAP storage + * + * @param values + */ + public void deleteStorageVolume(Map values) + { + //TODO + } + + /** + * Updates ONTAP Flex-Volume + * Eligible only for Unified ONTAP storage + * throw exception in case of disaggregated ONTAP storage + * + * @param values + */ + public void getStorageVolume(Map values) + { + //TODO + } + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses. + * it is going to mimic + * createLun for iSCSI, FC protocols + * createFile for NFS3.0 and NFS4.1 protocols + * createNameSpace for Nvme/TCP and Nvme/FC protocol + * @param values + */ + abstract public void createCloudStackVolume(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses. + * it is going to mimic + * updateLun for iSCSI, FC protocols + * updateFile for NFS3.0 and NFS4.1 protocols + * updateNameSpace for Nvme/TCP and Nvme/FC protocol + * @param values + */ + abstract void updateCloudStackVolume(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses. + * it is going to mimic + * deleteLun for iSCSI, FC protocols + * deleteFile for NFS3.0 and NFS4.1 protocols + * deleteNameSpace for Nvme/TCP and Nvme/FC protocol + * @param values + */ + abstract void deleteCloudStackVolume(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses. + * it is going to mimic + * getLun for iSCSI, FC protocols + * getFile for NFS3.0 and NFS4.1 protocols + * getNameSpace for Nvme/TCP and Nvme/FC protocol + * @param values + */ + abstract void getCloudStackVolume(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses + * createiGroup for iSCSI and FC protocols + * createExportPolicy for NFS 3.0 and NFS 4.1 protocols + * createSubsystem for Nvme/TCP and Nvme/FC protocols + * @param values + */ + abstract void enableAccess(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses + * deleteiGroup for iSCSI and FC protocols + * deleteExportPolicy for NFS 3.0 and NFS 4.1 protocols + * deleteSubsystem for Nvme/TCP and Nvme/FC protocols + * @param values + */ + abstract void disableAccess(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses + * updateiGroup example add/remove-Iqn for iSCSI and FC protocols + * updateExportPolicy example add/remove-Rule for NFS 3.0 and NFS 4.1 protocols + * //TODO for Nvme/TCP and Nvme/FC protocols + * @param values + */ + abstract void updateAccess(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses + * getiGroup for iSCSI and FC protocols + * getExportPolicy for NFS 3.0 and NFS 4.1 protocols + * getNameSpace for Nvme/TCP and Nvme/FC protocols + * @param values + */ + abstract void getAccess(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses + * lunMap for iSCSI and FC protocols + * //TODO for Nvme/TCP and Nvme/FC protocols + * @param values + */ + abstract void enableLogicalAccess(Map values); + + /** + * Method encapsulates the behavior based on the opted protocol in subclasses + * lunUnmap for iSCSI and FC protocols + * //TODO for Nvme/TCP and Nvme/FC protocols + * @param values + */ + abstract void disableLogicalAccess(Map values); + } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java index 6c9a8735c4c1..74f345b7a9eb 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java @@ -21,28 +21,61 @@ import org.apache.cloudstack.storage.feign.model.OntapStorage; +import java.util.Map; + public class UnifiedNASStrategy extends NASStrategy{ public UnifiedNASStrategy(OntapStorage ontapStorage) { super(ontapStorage); } @Override - public String createExportPolicy(String svmName, String policyName) { - return ""; + public void createCloudStackVolume(Map values) { + + } + + @Override + void updateCloudStackVolume(Map values) { + + } + + @Override + void deleteCloudStackVolume(Map values) { + + } + + @Override + void getCloudStackVolume(Map values) { + + } + + @Override + void enableAccess(Map values) { + } @Override - public String addExportRule(String policyName, String clientMatch, String[] protocols, String[] roRule, String[] rwRule) { - return ""; + void disableAccess(Map values) { + } @Override - public String assignExportPolicyToVolume(String volumeUuid, String policyName) { - return ""; + void updateAccess(Map values) { + } @Override - public String enableNFS(String svmUuid) { - return ""; + void getAccess(Map values) { + } + + @Override + void enableLogicalAccess(Map values) { + + } + + @Override + void disableLogicalAccess(Map values) { + + } + } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java index e954ec312006..22ab48693598 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java @@ -21,28 +21,61 @@ import org.apache.cloudstack.storage.feign.model.OntapStorage; +import java.util.Map; + public class UnifiedSANStrategy extends SANStrategy{ public UnifiedSANStrategy(OntapStorage ontapStorage) { super(ontapStorage); } @Override - public String createLUN(String svmName, String volumeName, String lunName, long sizeBytes, String osType) { - return ""; + public void createCloudStackVolume(Map values) { + + } + + @Override + void updateCloudStackVolume(Map values) { + + } + + @Override + void deleteCloudStackVolume(Map values) { + + } + + @Override + void getCloudStackVolume(Map values) { + + } + + @Override + void enableAccess(Map values) { + } @Override - public String createIgroup(String svmName, String igroupName, String[] initiators) { - return ""; + void disableAccess(Map values) { + } @Override - public String mapLUNToIgroup(String lunName, String igroupName) { - return ""; + void updateAccess(Map values) { + } @Override - public String enableISCSI(String svmUuid) { - return ""; + void getAccess(Map values) { + } + + @Override + void enableLogicalAccess(Map values) { + + } + + @Override + void disableLogicalAccess(Map values) { + + } + } From 686a892f1475064e9b2dd2e653813052c6a41948 Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 14:33:51 +0530 Subject: [PATCH 2/7] CSTACKEX-34: incorporating the review comments --- .../storage/service/StorageStrategy.java | 26 ++++++++++++------- .../storage/service/model/AccessGroup.java | 26 +++++++++++++++++++ .../service/model/CloudStackVolume.java | 26 +++++++++++++++++++ 3 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java create mode 100644 plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java index d41bd367880e..549a4646dcd8 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java @@ -31,6 +31,8 @@ import org.apache.cloudstack.storage.feign.model.Volume; import org.apache.cloudstack.storage.feign.model.response.JobResponse; import org.apache.cloudstack.storage.feign.model.response.OntapResponse; +import org.apache.cloudstack.storage.service.model.AccessGroup; +import org.apache.cloudstack.storage.service.model.CloudStackVolume; import org.apache.cloudstack.storage.utils.Constants; import org.apache.cloudstack.storage.utils.Utility; import org.apache.logging.log4j.LogManager; @@ -81,6 +83,7 @@ protected enum PROTOCOLS public StorageStrategy(OntapStorage ontapStorage) { storage = ontapStorage; + } // Connect method to validate ONTAP cluster, credentials, protocol, and SVM @@ -135,7 +138,7 @@ public boolean connect() { * @param volumeName * @param size */ - public void createStorageVolume(String volumeName, Long size) { + public Volume createStorageVolume(String volumeName, Long size) { s_logger.info("Creating volume: " + volumeName + " of size: " + size + " bytes"); String svmName = storage.getSvmName(); @@ -195,6 +198,8 @@ public void createStorageVolume(String volumeName, Long size) { throw new CloudRuntimeException("Failed to create volume: " + e.getMessage()); } s_logger.info("Volume created successfully: " + volumeName); + //TODO + return null; } /** @@ -204,7 +209,7 @@ public void createStorageVolume(String volumeName, Long size) { * * @param values */ - public void updateStorageVolume(Map values) + public Volume updateStorageVolume(Map values) { //TODO } @@ -228,9 +233,10 @@ public void deleteStorageVolume(Map values) * * @param values */ - public void getStorageVolume(Map values) + public Volume getStorageVolume(Map values) { //TODO + return null; } /** @@ -241,7 +247,7 @@ public void getStorageVolume(Map values) * createNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract public void createCloudStackVolume(Map values); + abstract public CloudStackVolume createCloudStackVolume(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses. @@ -251,7 +257,7 @@ public void getStorageVolume(Map values) * updateNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract void updateCloudStackVolume(Map values); + abstract CloudStackVolume updateCloudStackVolume(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses. @@ -271,7 +277,7 @@ public void getStorageVolume(Map values) * getNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract void getCloudStackVolume(Map values); + abstract CloudStackVolume getCloudStackVolume(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -280,7 +286,7 @@ public void getStorageVolume(Map values) * createSubsystem for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract void enableAccess(Map values); + abstract AccessGroup createAccessGroup(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -289,7 +295,7 @@ public void getStorageVolume(Map values) * deleteSubsystem for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract void disableAccess(Map values); + abstract void deleteAccessGroup(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -298,7 +304,7 @@ public void getStorageVolume(Map values) * //TODO for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract void updateAccess(Map values); + abstract AccessGroup updateAccessGroup(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -307,7 +313,7 @@ public void getStorageVolume(Map values) * getNameSpace for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract void getAccess(Map values); + abstract AccessGroup getAccessGroup(Map values); /** * Method encapsulates the behavior based on the opted protocol in subclasses diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java new file mode 100644 index 000000000000..853b114ccd4e --- /dev/null +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java @@ -0,0 +1,26 @@ +package org.apache.cloudstack.storage.service.model; + +import org.apache.cloudstack.storage.feign.model.Igroup; +import org.apache.cloudstack.storage.feign.model.Policy; + +public class AccessGroup { + + Igroup igroup; + Policy policy; + + public Igroup getIgroup() { + return igroup; + } + + public void setIgroup(Igroup igroup) { + this.igroup = igroup; + } + + public Policy getPolicy() { + return policy; + } + + public void setPolicy(Policy policy) { + this.policy = policy; + } +} diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java new file mode 100644 index 000000000000..bbe3bfd2a593 --- /dev/null +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java @@ -0,0 +1,26 @@ +package org.apache.cloudstack.storage.service.model; + +import org.apache.cloudstack.storage.feign.model.FileInfo; +import org.apache.cloudstack.storage.feign.model.Lun; + +public class CloudStackVolume { + + FileInfo file; + Lun lun; + + public FileInfo getFile() { + return file; + } + + public void setFile(FileInfo file) { + this.file = file; + } + + public Lun getLun() { + return lun; + } + + public void setLun(Lun lun) { + this.lun = lun; + } +} From edfcdde7c3c4696a5cb4fadddead134b0c3ac8f0 Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 14:43:55 +0530 Subject: [PATCH 3/7] CSTACKEX-34: transient changes to the review comments --- .../storage/service/StorageStrategy.java | 1 + .../storage/service/UnifiedNASStrategy.java | 36 +++++++++++-------- .../storage/service/UnifiedSANStrategy.java | 34 +++++++++++------- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java index 549a4646dcd8..d595c4ec4713 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java @@ -212,6 +212,7 @@ public Volume createStorageVolume(String volumeName, Long size) { public Volume updateStorageVolume(Map values) { //TODO + return null; } /** diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java index 74f345b7a9eb..4e4a9619c160 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java @@ -20,6 +20,8 @@ package org.apache.cloudstack.storage.service; import org.apache.cloudstack.storage.feign.model.OntapStorage; +import org.apache.cloudstack.storage.service.model.AccessGroup; +import org.apache.cloudstack.storage.service.model.CloudStackVolume; import java.util.Map; @@ -29,43 +31,49 @@ public UnifiedNASStrategy(OntapStorage ontapStorage) { } @Override - public void createCloudStackVolume(Map values) { - + public CloudStackVolume createCloudStackVolume(Map values) { + //TODO + return null; } @Override - void updateCloudStackVolume(Map values) { - + public CloudStackVolume updateCloudStackVolume(Map values) { + //TODO + return null; } @Override - void deleteCloudStackVolume(Map values) { + public void deleteCloudStackVolume(Map values) { } @Override - void getCloudStackVolume(Map values) { - + public CloudStackVolume getCloudStackVolume(Map values) { + //TODO + return null; } @Override - void enableAccess(Map values) { - + public AccessGroup createAccessGroup(Map values) { + //TODO + return null; } @Override - void disableAccess(Map values) { + public void deleteAccessGroup(Map values) { } @Override - void updateAccess(Map values) { - + public AccessGroup updateAccessGroup(Map values) { + //TODO + return null; } @Override - void getAccess(Map values) { - + public AccessGroup getAccessGroup(Map values) { + //TODO + return null; } @Override diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java index 22ab48693598..18da6674f749 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java @@ -20,6 +20,8 @@ package org.apache.cloudstack.storage.service; import org.apache.cloudstack.storage.feign.model.OntapStorage; +import org.apache.cloudstack.storage.service.model.AccessGroup; +import org.apache.cloudstack.storage.service.model.CloudStackVolume; import java.util.Map; @@ -29,13 +31,15 @@ public UnifiedSANStrategy(OntapStorage ontapStorage) { } @Override - public void createCloudStackVolume(Map values) { - + public CloudStackVolume createCloudStackVolume(Map values) { + //TODO + return null; } @Override - void updateCloudStackVolume(Map values) { - + CloudStackVolume updateCloudStackVolume(Map values) { + //TODO + return null; } @Override @@ -44,28 +48,32 @@ void deleteCloudStackVolume(Map values) { } @Override - void getCloudStackVolume(Map values) { - + CloudStackVolume getCloudStackVolume(Map values) { + //TODO + return null; } @Override - void enableAccess(Map values) { - + public AccessGroup createAccessGroup(Map values) { + //TODO + return null; } @Override - void disableAccess(Map values) { + public void deleteAccessGroup(Map values) { } @Override - void updateAccess(Map values) { - + public AccessGroup updateAccessGroup(Map values) { + //TODO + return null; } @Override - void getAccess(Map values) { - + public AccessGroup getAccessGroup(Map values) { + //TODO + return null; } @Override From 73eb9f576e0135a3c6106ad1369d6ea7a6172308 Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 14:47:46 +0530 Subject: [PATCH 4/7] CSTACKEX-34: Unable to get checkstyle pass hence fixing this as well --- .../storage/feign/model/OntapStorage.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java index 4043048870c8..853ee66737a1 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java @@ -22,20 +22,20 @@ import org.apache.cloudstack.storage.utils.Constants.ProtocolType; public class OntapStorage { - public static String username; - public static String password; - public static String managementLIF; - public static String svmName; - public static ProtocolType protocolType; - public static Boolean isDisaggregated; + private String username; + private String password; + private String managementLIF; + private String svmName; + private ProtocolType protocolType; + private Boolean isDisaggregated; public OntapStorage(String username, String password, String managementLIF, String svmName, ProtocolType protocolType, Boolean isDisaggregated) { - username = username; - password = password; - managementLIF = managementLIF; - svmName = svmName; - protocolType = protocolType; - isDisaggregated = isDisaggregated; + this.username = username; + this.password = password; + this.managementLIF = managementLIF; + this.svmName = svmName; + this.protocolType = protocolType; + this.isDisaggregated = isDisaggregated; } public String getUsername() { From 465fffedcf18420297108df4956bbc38febf8f95 Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 15:18:02 +0530 Subject: [PATCH 5/7] CSTACKEX-34: further review comments incorporations --- .../storage/feign/model/OntapStorage.java | 5 ++-- .../OntapPrimaryDatastoreLifecycle.java | 2 +- .../provider/StorageProviderFactory.java | 2 +- .../storage/service/StorageStrategy.java | 30 +++++++------------ .../storage/service/UnifiedNASStrategy.java | 16 +++++----- .../storage/service/UnifiedSANStrategy.java | 16 +++++----- .../storage/service/model/AccessGroup.java | 14 ++++----- .../service/model/CloudStackVolume.java | 4 +-- .../storage/service/model/ProtocolType.java | 6 ++++ .../cloudstack/storage/utils/Constants.java | 4 --- 10 files changed, 47 insertions(+), 52 deletions(-) create mode 100644 plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java index 853ee66737a1..017dfff23d27 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/OntapStorage.java @@ -19,14 +19,15 @@ package org.apache.cloudstack.storage.feign.model; -import org.apache.cloudstack.storage.utils.Constants.ProtocolType; + +import org.apache.cloudstack.storage.service.model.ProtocolType; public class OntapStorage { private String username; private String password; private String managementLIF; private String svmName; - private ProtocolType protocolType; + private ProtocolType protocolType; private Boolean isDisaggregated; public OntapStorage(String username, String password, String managementLIF, String svmName, ProtocolType protocolType, Boolean isDisaggregated) { diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java index 830f115a9bcf..1538cebfd373 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/lifecycle/OntapPrimaryDatastoreLifecycle.java @@ -42,8 +42,8 @@ import org.apache.cloudstack.storage.feign.model.OntapStorage; import org.apache.cloudstack.storage.provider.StorageProviderFactory; import org.apache.cloudstack.storage.service.StorageStrategy; +import org.apache.cloudstack.storage.service.model.ProtocolType; import org.apache.cloudstack.storage.utils.Constants; -import org.apache.cloudstack.storage.utils.Constants.ProtocolType; import org.apache.cloudstack.storage.volume.datastore.PrimaryDataStoreHelper; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java index 3fd3f4e850d8..bbc7ad0947e4 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java @@ -24,7 +24,7 @@ import org.apache.cloudstack.storage.service.StorageStrategy; import org.apache.cloudstack.storage.service.UnifiedNASStrategy; import org.apache.cloudstack.storage.service.UnifiedSANStrategy; -import org.apache.cloudstack.storage.utils.Constants.ProtocolType; +import org.apache.cloudstack.storage.service.model.ProtocolType; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Component; diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java index d595c4ec4713..dde5ab5b7a44 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java @@ -73,14 +73,6 @@ public abstract class StorageStrategy { private static final Logger s_logger = (Logger) LogManager.getLogger(StorageStrategy.class); - protected enum PROTOCOLS - { NFS30, - NFS41, - FC, - iSCSI, - NvmeTCP, - NvmeFC }; - public StorageStrategy(OntapStorage ontapStorage) { storage = ontapStorage; @@ -209,7 +201,7 @@ public Volume createStorageVolume(String volumeName, Long size) { * * @param values */ - public Volume updateStorageVolume(Map values) + public Volume updateStorageVolume(Volume volume) { //TODO return null; @@ -222,7 +214,7 @@ public Volume updateStorageVolume(Map values) * * @param values */ - public void deleteStorageVolume(Map values) + public void deleteStorageVolume(Volume volume) { //TODO } @@ -234,7 +226,7 @@ public void deleteStorageVolume(Map values) * * @param values */ - public Volume getStorageVolume(Map values) + public Volume getStorageVolume(Volume volume) { //TODO return null; @@ -248,7 +240,7 @@ public Volume getStorageVolume(Map values) * createNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract public CloudStackVolume createCloudStackVolume(Map values); + abstract public CloudStackVolume createCloudStackVolume(CloudStackVolume cloudstackVolume); /** * Method encapsulates the behavior based on the opted protocol in subclasses. @@ -258,7 +250,7 @@ public Volume getStorageVolume(Map values) * updateNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract CloudStackVolume updateCloudStackVolume(Map values); + abstract CloudStackVolume updateCloudStackVolume(CloudStackVolume cloudstackVolume); /** * Method encapsulates the behavior based on the opted protocol in subclasses. @@ -268,7 +260,7 @@ public Volume getStorageVolume(Map values) * deleteNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract void deleteCloudStackVolume(Map values); + abstract void deleteCloudStackVolume(CloudStackVolume cloudstackVolume); /** * Method encapsulates the behavior based on the opted protocol in subclasses. @@ -278,7 +270,7 @@ public Volume getStorageVolume(Map values) * getNameSpace for Nvme/TCP and Nvme/FC protocol * @param values */ - abstract CloudStackVolume getCloudStackVolume(Map values); + abstract CloudStackVolume getCloudStackVolume(CloudStackVolume cloudstackVolume); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -287,7 +279,7 @@ public Volume getStorageVolume(Map values) * createSubsystem for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract AccessGroup createAccessGroup(Map values); + abstract AccessGroup createAccessGroup(AccessGroup accessGroup); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -296,7 +288,7 @@ public Volume getStorageVolume(Map values) * deleteSubsystem for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract void deleteAccessGroup(Map values); + abstract void deleteAccessGroup(AccessGroup accessGroup); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -305,7 +297,7 @@ public Volume getStorageVolume(Map values) * //TODO for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract AccessGroup updateAccessGroup(Map values); + abstract AccessGroup updateAccessGroup(AccessGroup accessGroup); /** * Method encapsulates the behavior based on the opted protocol in subclasses @@ -314,7 +306,7 @@ public Volume getStorageVolume(Map values) * getNameSpace for Nvme/TCP and Nvme/FC protocols * @param values */ - abstract AccessGroup getAccessGroup(Map values); + abstract AccessGroup getAccessGroup(AccessGroup accessGroup); /** * Method encapsulates the behavior based on the opted protocol in subclasses diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java index 4e4a9619c160..865a5925168f 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java @@ -31,47 +31,47 @@ public UnifiedNASStrategy(OntapStorage ontapStorage) { } @Override - public CloudStackVolume createCloudStackVolume(Map values) { + public CloudStackVolume createCloudStackVolume(CloudStackVolume cloudstackVolume) { //TODO return null; } @Override - public CloudStackVolume updateCloudStackVolume(Map values) { + public CloudStackVolume updateCloudStackVolume(CloudStackVolume cloudstackVolume) { //TODO return null; } @Override - public void deleteCloudStackVolume(Map values) { + public void deleteCloudStackVolume(CloudStackVolume cloudstackVolume) { } @Override - public CloudStackVolume getCloudStackVolume(Map values) { + public CloudStackVolume getCloudStackVolume(CloudStackVolume cloudstackVolume) { //TODO return null; } @Override - public AccessGroup createAccessGroup(Map values) { + public AccessGroup createAccessGroup(AccessGroup accessGroup) { //TODO return null; } @Override - public void deleteAccessGroup(Map values) { + public void deleteAccessGroup(AccessGroup accessGroup) { } @Override - public AccessGroup updateAccessGroup(Map values) { + public AccessGroup updateAccessGroup(AccessGroup accessGroup) { //TODO return null; } @Override - public AccessGroup getAccessGroup(Map values) { + public AccessGroup getAccessGroup(AccessGroup accessGroup) { //TODO return null; } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java index 18da6674f749..7b654d8d0e98 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedSANStrategy.java @@ -31,47 +31,47 @@ public UnifiedSANStrategy(OntapStorage ontapStorage) { } @Override - public CloudStackVolume createCloudStackVolume(Map values) { + public CloudStackVolume createCloudStackVolume(CloudStackVolume cloudstackVolume) { //TODO return null; } @Override - CloudStackVolume updateCloudStackVolume(Map values) { + CloudStackVolume updateCloudStackVolume(CloudStackVolume cloudstackVolume) { //TODO return null; } @Override - void deleteCloudStackVolume(Map values) { + void deleteCloudStackVolume(CloudStackVolume cloudstackVolume) { } @Override - CloudStackVolume getCloudStackVolume(Map values) { + CloudStackVolume getCloudStackVolume(CloudStackVolume cloudstackVolume) { //TODO return null; } @Override - public AccessGroup createAccessGroup(Map values) { + public AccessGroup createAccessGroup(AccessGroup accessGroup) { //TODO return null; } @Override - public void deleteAccessGroup(Map values) { + public void deleteAccessGroup(AccessGroup accessGroup) { } @Override - public AccessGroup updateAccessGroup(Map values) { + public AccessGroup updateAccessGroup(AccessGroup accessGroup) { //TODO return null; } @Override - public AccessGroup getAccessGroup(Map values) { + public AccessGroup getAccessGroup(AccessGroup accessGroup) { //TODO return null; } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java index 853b114ccd4e..fa948250df84 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java @@ -1,12 +1,12 @@ package org.apache.cloudstack.storage.service.model; +import org.apache.cloudstack.storage.feign.model.ExportPolicy; import org.apache.cloudstack.storage.feign.model.Igroup; -import org.apache.cloudstack.storage.feign.model.Policy; public class AccessGroup { - Igroup igroup; - Policy policy; + private Igroup igroup; + private ExportPolicy exportPolicy; public Igroup getIgroup() { return igroup; @@ -16,11 +16,11 @@ public void setIgroup(Igroup igroup) { this.igroup = igroup; } - public Policy getPolicy() { - return policy; + public ExportPolicy getPolicy() { + return exportPolicy; } - public void setPolicy(Policy policy) { - this.policy = policy; + public void setPolicy(ExportPolicy policy) { + this.exportPolicy = policy; } } diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java index bbe3bfd2a593..d0bd497a4bac 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java @@ -5,8 +5,8 @@ public class CloudStackVolume { - FileInfo file; - Lun lun; + private FileInfo file; + private Lun lun; public FileInfo getFile() { return file; diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java new file mode 100644 index 000000000000..1a7b4e021bec --- /dev/null +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java @@ -0,0 +1,6 @@ +package org.apache.cloudstack.storage.service.model; + +public enum ProtocolType { + NFS, + ISCSI +} diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/utils/Constants.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/utils/Constants.java index 4fe55eb2e1fd..a5b1a45bbb74 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/utils/Constants.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/utils/Constants.java @@ -20,10 +20,6 @@ package org.apache.cloudstack.storage.utils; public class Constants { - public enum ProtocolType { - NFS, - ISCSI - } public static final String NFS = "nfs"; public static final String ISCSI = "iscsi"; From 3d6bd91a7157e10358bfcd41c918ed063ac5b730 Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 15:31:45 +0530 Subject: [PATCH 6/7] CSTACKEX-34: addressing checkstyle issues --- .../provider/StorageProviderFactory.java | 2 +- .../storage/service/model/ProtocolType.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java index bbc7ad0947e4..f5b1b25aa2cc 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/provider/StorageProviderFactory.java @@ -32,7 +32,7 @@ @Component public class StorageProviderFactory { private final StorageStrategy storageStrategy; - private static final Logger s_logger = (Logger) LogManager.getLogger(StorageProviderFactory.class); + private static final Logger s_logger = LogManager.getLogger(StorageProviderFactory.class); private StorageProviderFactory(OntapStorage ontapStorage) { ProtocolType protocol = ontapStorage.getProtocol(); diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java index 1a7b4e021bec..47b55ec29bb7 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/ProtocolType.java @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + package org.apache.cloudstack.storage.service.model; public enum ProtocolType { From 5815ebd162a9e29db3bd71e655e66eda866eb40f Mon Sep 17 00:00:00 2001 From: "Jain, Rajiv" Date: Tue, 28 Oct 2025 15:38:29 +0530 Subject: [PATCH 7/7] CSTACKEX-34: fix checksyle issues --- .../feign/model/response/OntapResponse.java | 2 +- .../storage/service/NASStrategy.java | 1 - .../storage/service/model/AccessGroup.java | 19 +++++++++++++++++++ .../service/model/CloudStackVolume.java | 19 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/response/OntapResponse.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/response/OntapResponse.java index 87af68fe378e..1a77991f435b 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/response/OntapResponse.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/response/OntapResponse.java @@ -59,4 +59,4 @@ public void setRecords(List records) { this.records = records; this.numRecords = (records != null) ? records.size() : 0; } -} \ No newline at end of file +} diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java index e0651ea3f433..27a4f3d2ce7d 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/NASStrategy.java @@ -27,4 +27,3 @@ public NASStrategy(OntapStorage ontapStorage) { } } - diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java index fa948250df84..c4dfce7ce51c 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/AccessGroup.java @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + package org.apache.cloudstack.storage.service.model; import org.apache.cloudstack.storage.feign.model.ExportPolicy; diff --git a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java index d0bd497a4bac..a7f5d8659d03 100644 --- a/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java +++ b/plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/model/CloudStackVolume.java @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + package org.apache.cloudstack.storage.service.model; import org.apache.cloudstack.storage.feign.model.FileInfo;