Skip to content

Commit a5a6f58

Browse files
author
Alena Prokharchyk
committed
Resource details:
1) Fixed the way we build the response for resource details 2) Fixed the response name - should be generic "resourcedetail". The type is being carried in resourceType response parameter 3) Throw unsupported excpetion if unsupported resourceType is passed in. Before, user vm was returned
1 parent dc8f053 commit a5a6f58

1 file changed

Lines changed: 60 additions & 79 deletions

File tree

server/src/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 60 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,6 @@
2727
import javax.ejb.Local;
2828
import javax.inject.Inject;
2929

30-
import com.cloud.dc.DcDetailVO;
31-
import com.cloud.dc.dao.DcDetailsDao;
32-
import com.cloud.vm.UserVmDetailVO;
33-
import com.cloud.vm.dao.UserVmDetailsDao;
34-
import org.apache.log4j.Logger;
35-
import org.springframework.stereotype.Component;
3630
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
3731
import org.apache.cloudstack.affinity.AffinityGroupDomainMapVO;
3832
import org.apache.cloudstack.affinity.AffinityGroupResponse;
@@ -90,6 +84,8 @@
9084
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateState;
9185
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
9286
import org.apache.cloudstack.query.QueryService;
87+
import org.apache.log4j.Logger;
88+
import org.springframework.stereotype.Component;
9389

9490
import com.cloud.api.query.dao.AccountJoinDao;
9591
import com.cloud.api.query.dao.AffinityGroupJoinDao;
@@ -132,7 +128,9 @@
132128
import com.cloud.api.query.vo.UserAccountJoinVO;
133129
import com.cloud.api.query.vo.UserVmJoinVO;
134130
import com.cloud.api.query.vo.VolumeJoinVO;
131+
import com.cloud.dc.DcDetailVO;
135132
import com.cloud.dc.DedicatedResourceVO;
133+
import com.cloud.dc.dao.DcDetailsDao;
136134
import com.cloud.dc.dao.DedicatedResourceDao;
137135
import com.cloud.domain.Domain;
138136
import com.cloud.domain.DomainVO;
@@ -141,10 +139,9 @@
141139
import com.cloud.exception.CloudAuthenticationException;
142140
import com.cloud.exception.InvalidParameterValueException;
143141
import com.cloud.exception.PermissionDeniedException;
142+
import com.cloud.exception.UnsupportedServiceException;
144143
import com.cloud.ha.HighAvailabilityManager;
145144
import com.cloud.hypervisor.Hypervisor.HypervisorType;
146-
import com.cloud.network.dao.NetworkDomainVO;
147-
import com.cloud.network.dao.NetworkVO;
148145
import com.cloud.network.security.SecurityGroupVMMapVO;
149146
import com.cloud.network.security.dao.SecurityGroupVMMapDao;
150147
import com.cloud.org.Grouping;
@@ -189,11 +186,13 @@
189186
import com.cloud.utils.db.SearchCriteria.Op;
190187
import com.cloud.vm.DomainRouterVO;
191188
import com.cloud.vm.NicDetailVO;
189+
import com.cloud.vm.UserVmDetailVO;
192190
import com.cloud.vm.UserVmVO;
193191
import com.cloud.vm.VirtualMachine;
194192
import com.cloud.vm.dao.DomainRouterDao;
195193
import com.cloud.vm.dao.NicDetailDao;
196194
import com.cloud.vm.dao.UserVmDao;
195+
import com.cloud.vm.dao.UserVmDetailsDao;
197196

198197
@Component
199198
@Local(value = { QueryService.class })
@@ -3222,108 +3221,90 @@ private List<AffinityGroupJoinVO> listDomainLevelAffinityGroups(
32223221

32233222
@Override
32243223
public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd) {
3225-
32263224
String key = cmd.getKey();
32273225
ResourceTag.TaggedResourceType resourceType = cmd.getResourceType();
32283226
String resourceId = cmd.getResourceId();
32293227
Long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
3230-
3228+
List<ResourceDetailResponse> responseList = new ArrayList<ResourceDetailResponse>();
3229+
32313230
if (resourceType == ResourceTag.TaggedResourceType.Volume) {
3232-
3233-
List<VolumeDetailVO> volumeDetailList;
3231+
List<VolumeDetailVO> detailList;
32343232
if (key == null) {
3235-
volumeDetailList = _volumeDetailDao.findDetails(id);
3233+
detailList = _volumeDetailDao.findDetails(id);
32363234
} else {
32373235
VolumeDetailVO volumeDetail = _volumeDetailDao.findDetail(id, key);
3238-
volumeDetailList = new LinkedList<VolumeDetailVO>();
3239-
volumeDetailList.add(volumeDetail);
3236+
detailList = new LinkedList<VolumeDetailVO>();
3237+
detailList.add(volumeDetail);
32403238
}
32413239

3242-
List<ResourceDetailResponse> volumeDetailResponseList = new ArrayList<ResourceDetailResponse>();
3243-
for (VolumeDetailVO volumeDetail : volumeDetailList) {
3244-
ResourceDetailResponse volumeDetailResponse = new ResourceDetailResponse();
3245-
volumeDetailResponse.setResourceId(id.toString());
3246-
volumeDetailResponse.setName(volumeDetail.getName());
3247-
volumeDetailResponse.setValue(volumeDetail.getValue());
3248-
volumeDetailResponse.setResourceType(ResourceTag.TaggedResourceType.Volume.toString());
3249-
volumeDetailResponse.setObjectName("volumedetail");
3250-
volumeDetailResponseList.add(volumeDetailResponse);
3240+
for (VolumeDetailVO detail : detailList) {
3241+
ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(),
3242+
ResourceTag.TaggedResourceType.Volume);
3243+
responseList.add(detailResponse);
32513244
}
32523245

3253-
return volumeDetailResponseList;
3254-
32553246
} else if (resourceType == ResourceTag.TaggedResourceType.Nic){
3256-
3257-
List<NicDetailVO> nicDetailList;
3247+
List<NicDetailVO> detailList;
32583248
if (key == null) {
3259-
nicDetailList = _nicDetailDao.findDetails(id);
3249+
detailList = _nicDetailDao.findDetails(id);
32603250
} else {
32613251
NicDetailVO nicDetail = _nicDetailDao.findDetail(id, key);
3262-
nicDetailList = new LinkedList<NicDetailVO>();
3263-
nicDetailList.add(nicDetail);
3252+
detailList = new LinkedList<NicDetailVO>();
3253+
detailList.add(nicDetail);
32643254
}
32653255

3266-
List<ResourceDetailResponse> nicDetailResponseList = new ArrayList<ResourceDetailResponse>();
3267-
for (NicDetailVO nicDetail : nicDetailList) {
3268-
ResourceDetailResponse nicDetailResponse = new ResourceDetailResponse();
3269-
// String uuid = ApiDBUtils.findN
3270-
nicDetailResponse.setName(nicDetail.getName());
3271-
nicDetailResponse.setValue(nicDetail.getValue());
3272-
nicDetailResponse.setResourceType(ResourceTag.TaggedResourceType.Nic.toString());
3273-
nicDetailResponse.setObjectName("nicdetail");
3274-
nicDetailResponseList.add(nicDetailResponse);
3256+
for (NicDetailVO detail : detailList) {
3257+
ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(),
3258+
ResourceTag.TaggedResourceType.Nic);
3259+
responseList.add(detailResponse);
32753260
}
3276-
3277-
return nicDetailResponseList;
3278-
3279-
} else if (resourceType == ResourceTag.TaggedResourceType.Zone){
3280-
3281-
List<DcDetailVO> dcDetailList;
3261+
} else if (resourceType == ResourceTag.TaggedResourceType.UserVm){
3262+
List<UserVmDetailVO> detailList;
32823263
if (key == null) {
3283-
dcDetailList = _dcDetailsDao.findDetailsList(id);
3264+
detailList = _userVmDetailDao.findDetailsList(id);
32843265
} else {
3285-
DcDetailVO nicDetail = _dcDetailsDao.findDetail(id, key);
3286-
dcDetailList = new LinkedList<DcDetailVO>();
3287-
dcDetailList.add(nicDetail);
3266+
UserVmDetailVO vmDetail = _userVmDetailDao.findDetail(id, key);
3267+
detailList = new LinkedList<UserVmDetailVO>();
3268+
detailList.add(vmDetail);
32883269
}
3289-
3290-
List<ResourceDetailResponse> dcDetailResponseList = new ArrayList<ResourceDetailResponse>();
3291-
for (DcDetailVO dcDetail : dcDetailList) {
3292-
ResourceDetailResponse dcDetailResponse = new ResourceDetailResponse();
3293-
// String uuid = ApiDBUtils.findN
3294-
dcDetailResponse.setName(dcDetail.getName());
3295-
dcDetailResponse.setValue(dcDetail.getValue());
3296-
dcDetailResponse.setResourceType(ResourceTag.TaggedResourceType.Nic.toString());
3297-
dcDetailResponse.setObjectName("zonedetail");
3298-
dcDetailResponseList.add(dcDetailResponse);
3270+
for (UserVmDetailVO detail : detailList) {
3271+
ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(),
3272+
ResourceTag.TaggedResourceType.UserVm);
3273+
responseList.add(detailResponse);
32993274
}
3275+
} else if (resourceType == ResourceTag.TaggedResourceType.Zone){
33003276

3301-
return dcDetailResponseList;
3302-
3303-
}else {
3304-
3305-
List<UserVmDetailVO> userVmDetailList;
3277+
List<DcDetailVO> details;
33063278
if (key == null) {
3307-
userVmDetailList = _userVmDetailDao.findDetailsList(id);
3279+
details = _dcDetailsDao.findDetailsList(id);
33083280
} else {
3309-
UserVmDetailVO nicDetail = _userVmDetailDao.findDetail(id, key);
3310-
userVmDetailList = new LinkedList<UserVmDetailVO>();
3311-
userVmDetailList.add(nicDetail);
3281+
DcDetailVO zoneDetail = _dcDetailsDao.findDetail(id, key);
3282+
details = new LinkedList<DcDetailVO>();
3283+
details.add(zoneDetail);
33123284
}
33133285

3314-
List<ResourceDetailResponse> userVmDetailResponseList = new ArrayList<ResourceDetailResponse>();
3315-
for (UserVmDetailVO nicDetail : userVmDetailList) {
3316-
ResourceDetailResponse userVmDetailResponse = new ResourceDetailResponse();
3317-
userVmDetailResponse.setName(nicDetail.getName());
3318-
userVmDetailResponse.setValue(nicDetail.getValue());
3319-
userVmDetailResponse.setResourceType(ResourceTag.TaggedResourceType.Nic.toString());
3320-
userVmDetailResponse.setObjectName("uservmdetail");
3321-
userVmDetailResponseList.add(userVmDetailResponse);
3286+
List<ResourceDetailResponse> dcDetailResponseList = new ArrayList<ResourceDetailResponse>();
3287+
for (DcDetailVO detail : details) {
3288+
ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(),
3289+
ResourceTag.TaggedResourceType.Zone);
3290+
responseList.add(detailResponse);
33223291
}
3323-
3324-
return userVmDetailResponseList;
3292+
} else {
3293+
throw new UnsupportedServiceException("Resource type " + resourceType + " is not supported by the cloudStack");
33253294
}
3295+
3296+
return responseList;
3297+
}
33263298

3299+
3300+
protected ResourceDetailResponse createResourceDetailsResponse(long resourceId, String key, String value, ResourceTag.TaggedResourceType type) {
3301+
ResourceDetailResponse resourceDetailResponse = new ResourceDetailResponse();
3302+
resourceDetailResponse.setResourceId(String.valueOf(resourceId));
3303+
resourceDetailResponse.setName(key);
3304+
resourceDetailResponse.setValue(value);
3305+
resourceDetailResponse.setResourceType(type.toString());
3306+
resourceDetailResponse.setObjectName("resourcedetail");
3307+
return resourceDetailResponse;
33273308
}
33283309

33293310
}

0 commit comments

Comments
 (0)