|
19 | 19 | import java.util.ArrayList; |
20 | 20 | import java.util.Date; |
21 | 21 | import java.util.HashSet; |
22 | | -import java.util.LinkedList; |
23 | 22 | import java.util.List; |
24 | 23 | import java.util.Map; |
25 | 24 | import java.util.Set; |
|
34 | 33 | import org.apache.cloudstack.affinity.dao.AffinityGroupDomainMapDao; |
35 | 34 | import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; |
36 | 35 | import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; |
| 36 | +import org.apache.cloudstack.api.ResourceDetail; |
37 | 37 | import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; |
38 | 38 | import org.apache.cloudstack.api.command.admin.internallb.ListInternalLBVMsCmd; |
39 | 39 | import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd; |
|
128 | 128 | import com.cloud.api.query.vo.UserAccountJoinVO; |
129 | 129 | import com.cloud.api.query.vo.UserVmJoinVO; |
130 | 130 | import com.cloud.api.query.vo.VolumeJoinVO; |
131 | | -import com.cloud.dc.DcDetailVO; |
132 | 131 | import com.cloud.dc.DedicatedResourceVO; |
133 | 132 | import com.cloud.dc.dao.DcDetailsDao; |
134 | 133 | import com.cloud.dc.dao.DedicatedResourceDao; |
|
166 | 165 | import com.cloud.storage.Storage.TemplateType; |
167 | 166 | import com.cloud.storage.VMTemplateVO; |
168 | 167 | import com.cloud.storage.Volume; |
169 | | -import com.cloud.storage.VolumeDetailVO; |
170 | 168 | import com.cloud.storage.dao.VMTemplateDao; |
171 | 169 | import com.cloud.storage.dao.VolumeDetailsDao; |
172 | 170 | import com.cloud.template.VirtualMachineTemplate.TemplateFilter; |
|
185 | 183 | import com.cloud.utils.db.SearchCriteria.Func; |
186 | 184 | import com.cloud.utils.db.SearchCriteria.Op; |
187 | 185 | import com.cloud.vm.DomainRouterVO; |
188 | | -import com.cloud.vm.NicDetailVO; |
189 | | -import com.cloud.vm.UserVmDetailVO; |
190 | 186 | import com.cloud.vm.UserVmVO; |
191 | 187 | import com.cloud.vm.VirtualMachine; |
192 | 188 | import com.cloud.vm.dao.DomainRouterDao; |
@@ -3226,71 +3222,48 @@ public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd) { |
3226 | 3222 | String resourceId = cmd.getResourceId(); |
3227 | 3223 | Long id = _taggedResourceMgr.getResourceId(resourceId, resourceType); |
3228 | 3224 | List<ResourceDetailResponse> responseList = new ArrayList<ResourceDetailResponse>(); |
| 3225 | + List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>(); |
| 3226 | + ResourceDetail requestedDetail = null; |
| 3227 | + |
3229 | 3228 |
|
3230 | 3229 | if (resourceType == ResourceTag.TaggedResourceType.Volume) { |
3231 | | - List<VolumeDetailVO> detailList; |
3232 | 3230 | if (key == null) { |
3233 | 3231 | detailList = _volumeDetailDao.findDetails(id); |
3234 | 3232 | } else { |
3235 | | - VolumeDetailVO volumeDetail = _volumeDetailDao.findDetail(id, key); |
3236 | | - detailList = new LinkedList<VolumeDetailVO>(); |
3237 | | - detailList.add(volumeDetail); |
3238 | | - } |
3239 | | - |
3240 | | - for (VolumeDetailVO detail : detailList) { |
3241 | | - ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(), |
3242 | | - ResourceTag.TaggedResourceType.Volume); |
3243 | | - responseList.add(detailResponse); |
| 3233 | + requestedDetail = _volumeDetailDao.findDetail(id, key); |
3244 | 3234 | } |
3245 | | - |
3246 | 3235 | } else if (resourceType == ResourceTag.TaggedResourceType.Nic){ |
3247 | | - List<NicDetailVO> detailList; |
3248 | 3236 | if (key == null) { |
3249 | 3237 | detailList = _nicDetailDao.findDetails(id); |
3250 | 3238 | } else { |
3251 | | - NicDetailVO nicDetail = _nicDetailDao.findDetail(id, key); |
3252 | | - detailList = new LinkedList<NicDetailVO>(); |
3253 | | - detailList.add(nicDetail); |
3254 | | - } |
3255 | | - |
3256 | | - for (NicDetailVO detail : detailList) { |
3257 | | - ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(), |
3258 | | - ResourceTag.TaggedResourceType.Nic); |
3259 | | - responseList.add(detailResponse); |
| 3239 | + requestedDetail = _nicDetailDao.findDetail(id, key); |
3260 | 3240 | } |
3261 | 3241 | } else if (resourceType == ResourceTag.TaggedResourceType.UserVm){ |
3262 | | - List<UserVmDetailVO> detailList; |
3263 | 3242 | if (key == null) { |
3264 | 3243 | detailList = _userVmDetailDao.findDetailsList(id); |
3265 | 3244 | } else { |
3266 | | - UserVmDetailVO vmDetail = _userVmDetailDao.findDetail(id, key); |
3267 | | - detailList = new LinkedList<UserVmDetailVO>(); |
3268 | | - detailList.add(vmDetail); |
3269 | | - } |
3270 | | - for (UserVmDetailVO detail : detailList) { |
3271 | | - ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(), |
3272 | | - ResourceTag.TaggedResourceType.UserVm); |
3273 | | - responseList.add(detailResponse); |
| 3245 | + requestedDetail = _userVmDetailDao.findDetail(id, key); |
3274 | 3246 | } |
3275 | 3247 | } else if (resourceType == ResourceTag.TaggedResourceType.Zone){ |
3276 | | - |
3277 | | - List<DcDetailVO> details; |
3278 | 3248 | if (key == null) { |
3279 | | - details = _dcDetailsDao.findDetailsList(id); |
| 3249 | + detailList = _dcDetailsDao.findDetailsList(id); |
3280 | 3250 | } else { |
3281 | | - DcDetailVO zoneDetail = _dcDetailsDao.findDetail(id, key); |
3282 | | - details = new LinkedList<DcDetailVO>(); |
3283 | | - details.add(zoneDetail); |
| 3251 | + requestedDetail = _dcDetailsDao.findDetail(id, key); |
3284 | 3252 | } |
3285 | | - |
3286 | | - List<ResourceDetailResponse> dcDetailResponseList = new ArrayList<ResourceDetailResponse>(); |
3287 | | - for (DcDetailVO detail : details) { |
| 3253 | + } else { |
| 3254 | + throw new UnsupportedServiceException("Resource type " + resourceType + " is not supported by the cloudStack"); |
| 3255 | + } |
| 3256 | + |
| 3257 | + if (requestedDetail != null) { |
| 3258 | + ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, requestedDetail.getName(), requestedDetail.getValue(), |
| 3259 | + resourceType); |
| 3260 | + responseList.add(detailResponse); |
| 3261 | + } else { |
| 3262 | + for (ResourceDetail detail : detailList) { |
3288 | 3263 | ResourceDetailResponse detailResponse = createResourceDetailsResponse(id, detail.getName(), detail.getValue(), |
3289 | | - ResourceTag.TaggedResourceType.Zone); |
| 3264 | + resourceType); |
3290 | 3265 | responseList.add(detailResponse); |
3291 | 3266 | } |
3292 | | - } else { |
3293 | | - throw new UnsupportedServiceException("Resource type " + resourceType + " is not supported by the cloudStack"); |
3294 | 3267 | } |
3295 | 3268 |
|
3296 | 3269 | return responseList; |
|
0 commit comments