Skip to content

Commit a2d32ce

Browse files
author
Mike Tutkowski
committed
Return a list of VAG IDs instead of a single VAG ID
1 parent 69e8e5a commit a2d32ce

File tree

6 files changed

+52
-28
lines changed

6 files changed

+52
-28
lines changed

plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/api/command/admin/solidfire/GetSolidFireVolumeAccessGroupIdCmd.java renamed to plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/api/command/admin/solidfire/GetSolidFireVolumeAccessGroupIdsCmd.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@
2626
import org.apache.cloudstack.api.APICommand;
2727
import org.apache.cloudstack.api.BaseCmd;
2828
import org.apache.cloudstack.api.Parameter;
29-
import org.apache.cloudstack.api.response.solidfire.ApiSolidFireVolumeAccessGroupIdResponse;
29+
import org.apache.cloudstack.api.response.solidfire.ApiSolidFireVolumeAccessGroupIdsResponse;
3030
import org.apache.cloudstack.context.CallContext;
3131
import org.apache.cloudstack.solidfire.SolidFireIntegrationTestManager;
3232
import org.apache.cloudstack.util.solidfire.SolidFireIntegrationTestUtil;
3333

34-
@APICommand(name = "getSolidFireVolumeAccessGroupId", responseObject = ApiSolidFireVolumeAccessGroupIdResponse.class, description = "Get the SF Volume Access Group ID",
34+
@APICommand(name = "getSolidFireVolumeAccessGroupIds", responseObject = ApiSolidFireVolumeAccessGroupIdsResponse.class, description = "Get the SF Volume Access Group IDs",
3535
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
36-
public class GetSolidFireVolumeAccessGroupIdCmd extends BaseCmd {
37-
private static final Logger LOGGER = Logger.getLogger(GetSolidFireVolumeAccessGroupIdCmd.class.getName());
38-
private static final String NAME = "getsolidfirevolumeaccessgroupidresponse";
36+
public class GetSolidFireVolumeAccessGroupIdsCmd extends BaseCmd {
37+
private static final Logger LOGGER = Logger.getLogger(GetSolidFireVolumeAccessGroupIdsCmd.class.getName());
38+
private static final String NAME = "getsolidfirevolumeaccessgroupidsresponse";
3939

4040
@Parameter(name = ApiConstants.CLUSTER_ID, type = CommandType.STRING, description = "Cluster UUID", required = true)
4141
private String clusterUuid;
@@ -67,14 +67,14 @@ public long getEntityOwnerId() {
6767

6868
@Override
6969
public void execute() {
70-
LOGGER.info("'GetSolidFireVolumeAccessGroupIdCmd.execute' method invoked");
70+
LOGGER.info("'GetSolidFireVolumeAccessGroupIdsCmd.execute' method invoked");
7171

72-
long sfVagId = manager.getSolidFireVolumeAccessGroupId(clusterUuid, storagePoolUuid);
72+
long[] sfVagIds = manager.getSolidFireVolumeAccessGroupIds(clusterUuid, storagePoolUuid);
7373

74-
ApiSolidFireVolumeAccessGroupIdResponse response = new ApiSolidFireVolumeAccessGroupIdResponse(sfVagId);
74+
ApiSolidFireVolumeAccessGroupIdsResponse response = new ApiSolidFireVolumeAccessGroupIdsResponse(sfVagIds);
7575

7676
response.setResponseName(getCommandName());
77-
response.setObjectName("apisolidfirevolumeaccessgroupid");
77+
response.setObjectName("apisolidfirevolumeaccessgroupids");
7878

7979
this.setResponseObject(response);
8080
}

plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/api/response/solidfire/ApiSolidFireVolumeAccessGroupIdResponse.java renamed to plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/api/response/solidfire/ApiSolidFireVolumeAccessGroupIdsResponse.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222

2323
import org.apache.cloudstack.api.BaseResponse;
2424

25-
public class ApiSolidFireVolumeAccessGroupIdResponse extends BaseResponse {
26-
@SerializedName("solidFireVolumeAccessGroupId")
27-
@Param(description = "SolidFire Volume Access Group Id")
28-
private long solidFireVolumeAccessGroupId;
25+
public class ApiSolidFireVolumeAccessGroupIdsResponse extends BaseResponse {
26+
@SerializedName("solidFireVolumeAccessGroupIds")
27+
@Param(description = "SolidFire Volume Access Group Ids")
28+
private long[] solidFireVolumeAccessGroupIds;
2929

30-
public ApiSolidFireVolumeAccessGroupIdResponse(long sfVolumeAccessGroupId) {
31-
solidFireVolumeAccessGroupId = sfVolumeAccessGroupId;
30+
public ApiSolidFireVolumeAccessGroupIdsResponse(long[] sfVolumeAccessGroupIds) {
31+
solidFireVolumeAccessGroupIds = sfVolumeAccessGroupIds;
3232
}
3333
}

plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/api/solidfire/ApiSolidFireIntegrationTestServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.apache.cloudstack.api.command.admin.solidfire.GetPathForVolumeCmd;
2323
// import org.apache.log4j.Logger;
2424
import org.apache.cloudstack.api.command.admin.solidfire.GetSolidFireAccountIdCmd;
25-
import org.apache.cloudstack.api.command.admin.solidfire.GetSolidFireVolumeAccessGroupIdCmd;
25+
import org.apache.cloudstack.api.command.admin.solidfire.GetSolidFireVolumeAccessGroupIdsCmd;
2626
import org.apache.cloudstack.api.command.admin.solidfire.GetVolumeSnapshotDetailsCmd;
2727
import org.apache.cloudstack.api.command.admin.solidfire.GetVolumeiScsiNameCmd;
2828
import org.apache.cloudstack.api.command.admin.solidfire.GetSolidFireVolumeSizeCmd;
@@ -38,7 +38,7 @@ public List<Class<?>> getCommands() {
3838

3939
cmdList.add(GetPathForVolumeCmd.class);
4040
cmdList.add(GetSolidFireAccountIdCmd.class);
41-
cmdList.add(GetSolidFireVolumeAccessGroupIdCmd.class);
41+
cmdList.add(GetSolidFireVolumeAccessGroupIdsCmd.class);
4242
cmdList.add(GetVolumeiScsiNameCmd.class);
4343
cmdList.add(GetSolidFireVolumeSizeCmd.class);
4444
cmdList.add(GetVolumeSnapshotDetailsCmd.class);

plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/solidfire/SolidFireIntegrationTestManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@
1818

1919
public interface SolidFireIntegrationTestManager {
2020
long getSolidFireAccountId(String csAccountUuid, String storagePoolUuid);
21-
long getSolidFireVolumeAccessGroupId(String csClusterUuid, String storagePoolUuid);
21+
long[] getSolidFireVolumeAccessGroupIds(String csClusterUuid, String storagePoolUuid);
2222
long getSolidFireVolumeSize(String volumeUuid);
2323
}

plugins/api/solidfire-intg-test/src/main/java/org/apache/cloudstack/solidfire/SolidFireIntegrationTestManagerImpl.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
// under the License.
1717
package org.apache.cloudstack.solidfire;
1818

19-
import com.cloud.dc.ClusterDetailsDao;
20-
import com.cloud.dc.ClusterDetailsVO;
19+
import com.cloud.host.HostVO;
20+
import com.cloud.host.dao.HostDao;
2121
import com.cloud.storage.VolumeDetailVO;
2222
import com.cloud.storage.VolumeVO;
2323
import com.cloud.storage.dao.VolumeDao;
@@ -26,18 +26,21 @@
2626
import com.cloud.user.AccountDetailsDao;
2727
import com.cloud.utils.exception.CloudRuntimeException;
2828

29+
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
2930
import org.apache.cloudstack.storage.datastore.util.SolidFireUtil;
3031
import org.apache.cloudstack.util.solidfire.SolidFireIntegrationTestUtil;
3132
import org.springframework.stereotype.Component;
3233

34+
import java.util.ArrayList;
35+
import java.util.List;
3336
import javax.inject.Inject;
3437

3538
@Component
3639
public class SolidFireIntegrationTestManagerImpl implements SolidFireIntegrationTestManager {
37-
3840
@Inject private AccountDetailsDao accountDetailsDao;
39-
@Inject private ClusterDetailsDao clusterDetailsDao;
41+
@Inject private HostDao hostDao;
4042
@Inject private SolidFireIntegrationTestUtil util;
43+
@Inject private StoragePoolDetailsDao storagePoolDetailsDao;
4144
@Inject private VolumeDao volumeDao;
4245
@Inject private VolumeDetailsDao volumeDetailsDao;
4346

@@ -58,14 +61,35 @@ public long getSolidFireAccountId(String csAccountUuid, String storagePoolUuid)
5861
}
5962

6063
@Override
61-
public long getSolidFireVolumeAccessGroupId(String csClusterUuid, String storagePoolUuid) {
62-
long csClusterId = util.getClusterIdForClusterUuid(csClusterUuid);
64+
public long[] getSolidFireVolumeAccessGroupIds(String csClusterUuid, String storagePoolUuid) {
6365
long storagePoolId = util.getStoragePoolIdForStoragePoolUuid(storagePoolUuid);
6466

65-
ClusterDetailsVO clusterDetails = clusterDetailsDao.findDetail(csClusterId, SolidFireUtil.getVagKey(storagePoolId));
66-
String sfVagId = clusterDetails.getValue();
67+
SolidFireUtil.SolidFireConnection sfConnection = SolidFireUtil.getSolidFireConnection(storagePoolId, storagePoolDetailsDao);
68+
69+
List<SolidFireUtil.SolidFireVag> sfVags = SolidFireUtil.getAllVags(sfConnection);
70+
71+
long csClusterId = util.getClusterIdForClusterUuid(csClusterUuid);
72+
List<HostVO> hosts = hostDao.findByClusterId(csClusterId);
73+
74+
if (hosts == null) {
75+
return new long[0];
76+
}
77+
78+
List<Long> vagIds = new ArrayList<>(hosts.size());
79+
80+
for (HostVO host : hosts) {
81+
String iqn = host.getStorageUrl();
82+
83+
SolidFireUtil.SolidFireVag sfVag = SolidFireUtil.getVolumeAccessGroup(iqn, sfVags);
84+
85+
if (sfVag != null) {
86+
if (!vagIds.contains(sfVag.getId())) {
87+
vagIds.add(sfVag.getId());
88+
}
89+
}
90+
}
6791

68-
return Long.parseLong(sfVagId);
92+
return vagIds.stream().mapToLong(l -> l).toArray();
6993
}
7094

7195
@Override

plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/util/SolidFireUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ public static void placeVolumeInVolumeAccessGroups(SolidFireConnection sfConnect
725725
}
726726
}
727727

728-
private static SolidFireUtil.SolidFireVag getVolumeAccessGroup(String hostIqn, List<SolidFireUtil.SolidFireVag> sfVags) {
728+
public static SolidFireUtil.SolidFireVag getVolumeAccessGroup(String hostIqn, List<SolidFireUtil.SolidFireVag> sfVags) {
729729
if (hostIqn == null) {
730730
return null;
731731
}

0 commit comments

Comments
 (0)