diff --git a/api/src/org/apache/cloudstack/api/ResponseGenerator.java b/api/src/org/apache/cloudstack/api/ResponseGenerator.java index bd42f2b7425..efc17266e8c 100644 --- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java +++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java @@ -253,7 +253,7 @@ public interface ResponseGenerator { PodResponse createPodResponse(Pod pod, Boolean showCapacities); - ZoneResponse createZoneResponse(DataCenter dataCenter, Boolean showCapacities); + ZoneResponse createZoneResponse(ResponseView view, DataCenter dataCenter, Boolean showCapacities); VolumeResponse createVolumeResponse(ResponseView view, Volume volume); diff --git a/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java b/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java index 5799da1f867..35324224296 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java @@ -16,18 +16,19 @@ // under the License. package org.apache.cloudstack.api.command.admin.zone; +import org.apache.log4j.Logger; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; +import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.context.CallContext; -import org.apache.log4j.Logger; - import com.cloud.dc.DataCenter; import com.cloud.user.Account; @@ -167,9 +168,9 @@ public class CreateZoneCmd extends BaseCmd { CallContext.current().setEventDetails("Zone Name: "+getZoneName()); DataCenter result = _configService.createZone(this); if (result != null){ - ZoneResponse response = _responseGenerator.createZoneResponse(result,false); + ZoneResponse response = _responseGenerator.createZoneResponse(ResponseView.Full, result, false); response.setResponseName(getCommandName()); - this.setResponseObject(response); + setResponseObject(response); } else { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create a zone"); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/zone/ListZonesCmdByAdmin.java b/api/src/org/apache/cloudstack/api/command/admin/zone/ListZonesCmdByAdmin.java new file mode 100644 index 00000000000..772a4dcfeb3 --- /dev/null +++ b/api/src/org/apache/cloudstack/api/command/admin/zone/ListZonesCmdByAdmin.java @@ -0,0 +1,26 @@ +// 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.api.command.admin.zone; + +import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.api.ResponseObject.ResponseView; +import org.apache.cloudstack.api.command.user.zone.ListZonesCmd; +import org.apache.cloudstack.api.response.ZoneResponse; + +@APICommand(name = "listZones", description = "Lists zones", responseObject = ZoneResponse.class, responseView = ResponseView.Full) +public class ListZonesCmdByAdmin extends ListZonesCmd { +} diff --git a/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java b/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java index c888995890b..c7c95d2b21e 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java @@ -19,17 +19,18 @@ package org.apache.cloudstack.api.command.admin.zone; import java.util.List; import java.util.Map; +import org.apache.log4j.Logger; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; +import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.context.CallContext; -import org.apache.log4j.Logger; - import com.cloud.dc.DataCenter; import com.cloud.user.Account; @@ -179,9 +180,9 @@ public class UpdateZoneCmd extends BaseCmd { CallContext.current().setEventDetails("Zone Id: "+getId()); DataCenter result = _configService.editZone(this); if (result != null) { - ZoneResponse response = _responseGenerator.createZoneResponse(result, false); + ZoneResponse response = _responseGenerator.createZoneResponse(ResponseView.Full, result, false); response.setResponseName(getCommandName()); - this.setResponseObject(response); + setResponseObject(response); } else { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update zone; internal error."); } diff --git a/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java b/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java similarity index 93% rename from api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java rename to api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java index 2a98cfbe928..27f8b35fc1e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java @@ -21,20 +21,22 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import org.apache.log4j.Logger; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListCmd; import org.apache.cloudstack.api.Parameter; +import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ZoneResponse; -import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; -@APICommand(name = "listZones", description="Lists zones", responseObject=ZoneResponse.class) -public class ListZonesByCmd extends BaseListCmd { - public static final Logger s_logger = Logger.getLogger(ListZonesByCmd.class.getName()); +@APICommand(name = "listZones", description = "Lists zones", responseObject = ZoneResponse.class, responseView = ResponseView.Restricted) +public class ListZonesCmd extends BaseListCmd { + public static final Logger s_logger = Logger.getLogger(ListZonesCmd.class.getName()); private static final String s_name = "listzonesresponse"; @@ -127,6 +129,6 @@ public class ListZonesByCmd extends BaseListCmd { ListResponse response = _queryService.listDataCenters(this); response.setResponseName(getCommandName()); - this.setResponseObject(response); + setResponseObject(response); } } diff --git a/api/src/org/apache/cloudstack/query/QueryService.java b/api/src/org/apache/cloudstack/query/QueryService.java index 00df62e96ca..9c9274f6242 100644 --- a/api/src/org/apache/cloudstack/query/QueryService.java +++ b/api/src/org/apache/cloudstack/query/QueryService.java @@ -42,7 +42,7 @@ import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd; import org.apache.cloudstack.api.command.user.volume.ListResourceDetailsCmd; import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; -import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd; +import org.apache.cloudstack.api.command.user.zone.ListZonesCmd; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.AclGroupResponse; import org.apache.cloudstack.api.response.AclPolicyResponse; @@ -114,7 +114,7 @@ public interface QueryService { public ListResponse searchForServiceOfferings(ListServiceOfferingsCmd cmd); - public ListResponse listDataCenters(ListZonesByCmd cmd); + public ListResponse listDataCenters(ListZonesCmd cmd); public ListResponse listTemplates(ListTemplatesCmd cmd); diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 129f0ff548c..e54884bfe94 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -1643,8 +1643,8 @@ public class ApiDBUtils { return _serviceOfferingJoinDao.newServiceOfferingView(offering); } - public static ZoneResponse newDataCenterResponse(DataCenterJoinVO dc, Boolean showCapacities) { - return _dcJoinDao.newDataCenterResponse(dc, showCapacities); + public static ZoneResponse newDataCenterResponse(ResponseView view, DataCenterJoinVO dc, Boolean showCapacities) { + return _dcJoinDao.newDataCenterResponse(view, dc, showCapacities); } public static DataCenterJoinVO newDataCenterView(DataCenter dc){ diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 556f3e55020..1470d43a461 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -859,9 +859,9 @@ public class ApiResponseHelper implements ResponseGenerator { } @Override - public ZoneResponse createZoneResponse(DataCenter dataCenter, Boolean showCapacities) { + public ZoneResponse createZoneResponse(ResponseView view, DataCenter dataCenter, Boolean showCapacities) { DataCenterJoinVO vOffering = ApiDBUtils.newDataCenterView(dataCenter); - return ApiDBUtils.newDataCenterResponse(vOffering, showCapacities); + return ApiDBUtils.newDataCenterResponse(view, vOffering, showCapacities); } public static List getDataCenterCapacityResponse(Long zoneId) { diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 672ad129832..d28a51ca105 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -114,7 +114,7 @@ import org.apache.cloudstack.api.command.user.tag.ListTagsCmd; import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd; import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; -import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd; +import org.apache.cloudstack.api.command.user.zone.ListZonesCmd; import org.apache.cloudstack.api.response.AsyncJobResponse; import org.apache.cloudstack.api.response.CreateCmdResponse; import org.apache.cloudstack.api.response.ExceptionResponse; @@ -684,7 +684,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer && !(cmdObj instanceof ListStoragePoolsCmd) && !(cmdObj instanceof ListDiskOfferingsCmd) && !(cmdObj instanceof ListServiceOfferingsCmd) - && !(cmdObj instanceof ListZonesByCmd) + && !(cmdObj instanceof ListZonesCmd) ) { buildAsyncListResponse((BaseListCmd) cmdObj, caller); } diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index a304d22de10..64b606c0f75 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -54,6 +54,7 @@ import org.apache.cloudstack.api.command.admin.template.ListTemplatesCmdByAdmin; import org.apache.cloudstack.api.command.admin.user.ListUsersCmd; import org.apache.cloudstack.api.command.admin.vm.ListVMsCmdByAdmin; import org.apache.cloudstack.api.command.admin.volume.ListVolumesCmdByAdmin; +import org.apache.cloudstack.api.command.admin.zone.ListZonesCmdByAdmin; import org.apache.cloudstack.api.command.user.account.ListAccountsCmd; import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd; import org.apache.cloudstack.api.command.user.event.ListEventsCmd; @@ -70,7 +71,7 @@ import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd; import org.apache.cloudstack.api.command.user.volume.ListResourceDetailsCmd; import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; -import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd; +import org.apache.cloudstack.api.command.user.zone.ListZonesCmd; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.AclGroupResponse; import org.apache.cloudstack.api.response.AclPolicyResponse; @@ -2510,16 +2511,22 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } @Override - public ListResponse listDataCenters(ListZonesByCmd cmd) { + public ListResponse listDataCenters(ListZonesCmd cmd) { Pair, Integer> result = listDataCentersInternal(cmd); ListResponse response = new ListResponse(); - List dcResponses = ViewResponseHelper.createDataCenterResponse(cmd.getShowCapacities(), result + + ResponseView respView = ResponseView.Restricted; + if (cmd instanceof ListZonesCmdByAdmin) { + respView = ResponseView.Full; + } + + List dcResponses = ViewResponseHelper.createDataCenterResponse(respView, cmd.getShowCapacities(), result .first().toArray(new DataCenterJoinVO[result.first().size()])); response.setResponses(dcResponses, result.second()); return response; } - private Pair, Integer> listDataCentersInternal(ListZonesByCmd cmd) { + private Pair, Integer> listDataCentersInternal(ListZonesCmd cmd) { Account account = CallContext.current().getCallingAccount(); Long domainId = cmd.getDomainId(); Long id = cmd.getId(); diff --git a/server/src/com/cloud/api/query/ViewResponseHelper.java b/server/src/com/cloud/api/query/ViewResponseHelper.java index 7e438f26609..ae4632865d1 100644 --- a/server/src/com/cloud/api/query/ViewResponseHelper.java +++ b/server/src/com/cloud/api/query/ViewResponseHelper.java @@ -370,10 +370,10 @@ public class ViewResponseHelper { return respList; } - public static List createDataCenterResponse(Boolean showCapacities, DataCenterJoinVO... dcs) { + public static List createDataCenterResponse(ResponseView view, Boolean showCapacities, DataCenterJoinVO... dcs) { List respList = new ArrayList(); for (DataCenterJoinVO vt : dcs){ - respList.add(ApiDBUtils.newDataCenterResponse(vt, showCapacities)); + respList.add(ApiDBUtils.newDataCenterResponse(view, vt, showCapacities)); } return respList; } diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java index 340f86f247d..1c3ff1b2741 100644 --- a/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java +++ b/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java @@ -16,6 +16,7 @@ // under the License. package com.cloud.api.query.dao; +import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.response.ZoneResponse; import com.cloud.api.query.vo.DataCenterJoinVO; @@ -24,7 +25,7 @@ import com.cloud.utils.db.GenericDao; public interface DataCenterJoinDao extends GenericDao { - ZoneResponse newDataCenterResponse(DataCenterJoinVO dof, Boolean showCapacities); + ZoneResponse newDataCenterResponse(ResponseView view, DataCenterJoinVO dof, Boolean showCapacities); DataCenterJoinVO newDataCenterView(DataCenter dof); } diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java index b28ace05b1f..4bfad78599e 100644 --- a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java @@ -21,11 +21,13 @@ import java.util.List; import javax.ejb.Local; import javax.inject.Inject; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + +import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.response.ResourceTagResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.context.CallContext; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiResponseHelper; @@ -55,13 +57,13 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase resourceTags = ApiDBUtils.listResourceTagViewByResourceUUID(dataCenter.getUuid(), ResourceObjectType.Zone); - for (ResourceTagJoinVO resourceTag : resourceTags) { + for (ResourceTagJoinVO resourceTag : resourceTags) { ResourceTagResponse tagResponse = ApiDBUtils.newResourceTagResponse(resourceTag, false); zoneResponse.addTag(tagResponse); } diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 12de4bdd650..d2caf67ed1b 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -438,7 +438,7 @@ import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd; import org.apache.cloudstack.api.command.user.vpn.RemoveVpnUserCmd; import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd; import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd; -import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd; +import org.apache.cloudstack.api.command.user.zone.ListZonesCmd; import org.apache.cloudstack.config.Configuration; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService; @@ -2823,7 +2823,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe cmdList.add(RemoveVpnUserCmd.class); cmdList.add(ResetVpnConnectionCmd.class); cmdList.add(UpdateVpnCustomerGatewayCmd.class); - cmdList.add(ListZonesByCmd.class); + cmdList.add(ListZonesCmd.class); cmdList.add(ListVMSnapshotCmd.class); cmdList.add(CreateVMSnapshotCmd.class); cmdList.add(RevertToVMSnapshotCmd.class);