Skip to content

Commit 0174636

Browse files
CSTACKEX-18: pulling the reversed code of delete access group
1 parent 7826d98 commit 0174636

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
3030
import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
3131
import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector;
32+
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
3233
import org.apache.cloudstack.storage.command.CreateObjectCommand;
34+
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
3335
import org.apache.cloudstack.storage.feign.FeignClientFactory;
3436
import org.apache.cloudstack.storage.feign.client.JobFeignClient;
3537
import org.apache.cloudstack.storage.feign.client.NASFeignClient;
@@ -68,6 +70,7 @@ public class UnifiedNASStrategy extends NASStrategy {
6870
private final JobFeignClient jobFeignClient;
6971
@Inject private VolumeDao volumeDao;
7072
@Inject private EndPointSelector epSelector;
73+
@Inject private StoragePoolDetailsDao storagePoolDetailsDao;
7174

7275
public UnifiedNASStrategy(OntapStorage ontapStorage) {
7376
super(ontapStorage);
@@ -196,6 +199,9 @@ public AccessGroup createAccessGroup(AccessGroup accessGroup) {
196199
s_logger.info("ExportPolicy created: {}, now attaching this policy to storage pool volume", createdPolicy.getName());
197200
// attach export policy to volume of storage pool
198201
assignExportPolicyToVolume(volumeUUID,createdPolicy.getName());
202+
// save the export policy details in storage pool details
203+
storagePoolDetailsDao.addDetail(accessGroup.getPrimaryDataStoreInfo().getId(), Constants.EXPORT_POLICY_ID, String.valueOf(createdPolicy.getId()), true);
204+
storagePoolDetailsDao.addDetail(accessGroup.getPrimaryDataStoreInfo().getId(), Constants.EXPORT_POLICY_NAME, createdPolicy.getName(), true);
199205
s_logger.info("Successfully assigned exportPolicy {} to volume {}", policyRequest.getName(), volumeName);
200206
accessGroup.setPolicy(policyRequest);
201207
return accessGroup;
@@ -207,7 +213,36 @@ public AccessGroup createAccessGroup(AccessGroup accessGroup) {
207213

208214
@Override
209215
public void deleteAccessGroup(AccessGroup accessGroup) {
210-
//TODO
216+
s_logger.info("deleteAccessGroup: Deleting export policy");
217+
218+
if (accessGroup == null) {
219+
throw new CloudRuntimeException("deleteAccessGroup: Invalid accessGroup object - accessGroup is null");
220+
}
221+
222+
// Get PrimaryDataStoreInfo from accessGroup
223+
PrimaryDataStoreInfo primaryDataStoreInfo = accessGroup.getPrimaryDataStoreInfo();
224+
if (primaryDataStoreInfo == null) {
225+
throw new CloudRuntimeException("deleteAccessGroup: PrimaryDataStoreInfo is null in accessGroup");
226+
}
227+
s_logger.info("deleteAccessGroup: Deleting export policy for the storage pool {}", primaryDataStoreInfo.getName());
228+
try {
229+
String authHeader = Utility.generateAuthHeader(storage.getUsername(), storage.getPassword());
230+
String svmName = storage.getSvmName();
231+
// Determine export policy attached to the storage pool
232+
String exportPolicyName = primaryDataStoreInfo.getDetails().get(Constants.EXPORT_POLICY_NAME);
233+
String exportPolicyId = primaryDataStoreInfo.getDetails().get(Constants.EXPORT_POLICY_ID);
234+
235+
try {
236+
nasFeignClient.deleteExportPolicyById(authHeader,exportPolicyId);
237+
s_logger.info("deleteAccessGroup: Successfully deleted export policy '{}'", exportPolicyName);
238+
} catch (Exception e) {
239+
s_logger.error("deleteAccessGroup: Failed to delete export policy. Exception: {}", e.getMessage(), e);
240+
throw new CloudRuntimeException("Failed to delete export policy: " + e.getMessage(), e);
241+
}
242+
} catch (Exception e) {
243+
s_logger.error("deleteAccessGroup: Failed to delete export policy. Exception: {}", e.getMessage(), e);
244+
throw new CloudRuntimeException("Failed to delete export policy: " + e.getMessage(), e);
245+
}
211246
}
212247

213248
@Override
@@ -404,13 +439,10 @@ private boolean updateFile(String volumeUuid, String filePath, FileInfo fileInfo
404439
}
405440
}
406441

407-
private String generateExportPolicyName(String svmName, String volumeName){
408-
return Constants.EXPORT + Constants.HYPHEN + svmName + Constants.HYPHEN + volumeName;
409-
}
410442

411443
private ExportPolicy createExportPolicyRequest(AccessGroup accessGroup,String svmName , String volumeName){
412444

413-
String exportPolicyName = generateExportPolicyName(svmName,volumeName);
445+
String exportPolicyName = Utility.generateExportPolicyName(svmName,volumeName);
414446
ExportPolicy exportPolicy = new ExportPolicy();
415447

416448
List<ExportRule> rules = new ArrayList<>();

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/utils/Constants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public class Constants {
3333
public static final String MANAGEMENT_LIF = "managementLIF";
3434
public static final String VOLUME_NAME = "volumeName";
3535
public static final String VOLUME_UUID = "volumeUUID";
36+
public static final String EXPORT_POLICY_ID = "exportPolicyId";
37+
public static final String EXPORT_POLICY_NAME = "exportPolicyName";
3638
public static final String IS_DISAGGREGATED = "isDisaggregated";
3739
public static final String RUNNING = "running";
3840
public static final String EXPORT = "export";

0 commit comments

Comments
 (0)