You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/12/13 02:40:46 UTC
git commit: updated refs/heads/rbac to 312ff76
Updated Branches:
refs/heads/rbac a6d03cd82 -> 312ff76f6
Separate listZones cmd to use two different views, also renamed previous
listZonesByCmd to listZonesCmd.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/312ff76f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/312ff76f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/312ff76f
Branch: refs/heads/rbac
Commit: 312ff76f698653434d0043328a9caea0ef0b6a8f
Parents: a6d03cd
Author: Min Chen <mi...@citrix.com>
Authored: Thu Dec 12 17:40:30 2013 -0800
Committer: Min Chen <mi...@citrix.com>
Committed: Thu Dec 12 17:40:30 2013 -0800
----------------------------------------------------------------------
.../cloudstack/api/ResponseGenerator.java | 2 +-
.../api/command/admin/zone/CreateZoneCmd.java | 9 +-
.../command/admin/zone/ListZonesCmdByAdmin.java | 26 ++++
.../api/command/admin/zone/UpdateZoneCmd.java | 9 +-
.../api/command/user/zone/ListZonesByCmd.java | 132 ------------------
.../api/command/user/zone/ListZonesCmd.java | 134 +++++++++++++++++++
.../apache/cloudstack/query/QueryService.java | 4 +-
server/src/com/cloud/api/ApiDBUtils.java | 4 +-
server/src/com/cloud/api/ApiResponseHelper.java | 4 +-
server/src/com/cloud/api/ApiServer.java | 4 +-
.../com/cloud/api/query/QueryManagerImpl.java | 15 ++-
.../com/cloud/api/query/ViewResponseHelper.java | 4 +-
.../cloud/api/query/dao/DataCenterJoinDao.java | 3 +-
.../api/query/dao/DataCenterJoinDaoImpl.java | 14 +-
.../com/cloud/server/ManagementServerImpl.java | 4 +-
15 files changed, 204 insertions(+), 164 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/api/ResponseGenerator.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ResponseGenerator.java b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
index bd42f2b..efc1726 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);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java
----------------------------------------------------------------------
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 5799da1..3532422 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");
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/api/command/admin/zone/ListZonesCmdByAdmin.java
----------------------------------------------------------------------
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 0000000..772a4dc
--- /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 {
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java
----------------------------------------------------------------------
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 c888995..c7c95d2 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.");
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java b/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java
deleted file mode 100644
index 2a98cfb..0000000
--- a/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesByCmd.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// 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.user.zone;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-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.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());
-
- private static final String s_name = "listzonesresponse";
-
- /////////////////////////////////////////////////////
- //////////////// API parameters /////////////////////
- /////////////////////////////////////////////////////
- @Parameter(name=ApiConstants.ID, type=CommandType.UUID, entityType=ZoneResponse.class,
- description= "the ID of the zone")
- private Long id;
-
- @Parameter(name=ApiConstants.AVAILABLE, type=CommandType.BOOLEAN,
- description="true if you want to retrieve all available Zones. False if you only want to return the Zones" +
- " from which you have at least one VM. Default is false.")
- private Boolean available;
-
- @Parameter(name=ApiConstants.DOMAIN_ID, type=CommandType.UUID, entityType=DomainResponse.class,
- description="the ID of the domain associated with the zone")
- private Long domainId;
-
- @Parameter(name=ApiConstants.NAME, type=CommandType.STRING, description="the name of the zone")
- private String name;
-
- @Parameter(name=ApiConstants.NETWORK_TYPE, type=CommandType.STRING, description="the network type of the zone that the virtual machine belongs to")
- private String networkType;
-
- @Parameter(name=ApiConstants.SHOW_CAPACITIES, type=CommandType.BOOLEAN, description="flag to display the capacity of the zones")
- private Boolean showCapacities;
-
- @Parameter(name = ApiConstants.TAGS, type = CommandType.MAP, description = "List zones by resource tags (key/value pairs)", since="4.3")
- private Map tags;
-
- /////////////////////////////////////////////////////
- /////////////////// Accessors ///////////////////////
- /////////////////////////////////////////////////////
-
- public Long getId() {
- return id;
- }
-
- public Boolean isAvailable() {
- return available;
- }
-
- public Long getDomainId(){
- return domainId;
- }
-
- public String getName(){
- return name;
- }
-
- public String getNetworkType() {
- return networkType;
- }
-
- public Boolean getShowCapacities() {
- return showCapacities;
- }
-
- public Map<String, String> getTags() {
- Map<String, String> tagsMap = null;
- if (tags != null && !tags.isEmpty()) {
- tagsMap = new HashMap<String, String>();
- Collection<?> servicesCollection = tags.values();
- Iterator<?> iter = servicesCollection.iterator();
- while (iter.hasNext()) {
- HashMap<String, String> services = (HashMap<String, String>) iter.next();
- String key = services.get("key");
- String value = services.get("value");
- if (value == null) {
- throw new InvalidParameterValueException("No value is passed in for key " + key);
- }
- tagsMap.put(key, value);
- }
- }
- return tagsMap;
- }
-
- /////////////////////////////////////////////////////
- /////////////// API Implementation///////////////////
- /////////////////////////////////////////////////////
-
- @Override
- public String getCommandName() {
- return s_name;
- }
-
- @Override
- public void execute(){
-
- ListResponse<ZoneResponse> response = _queryService.listDataCenters(this);
- response.setResponseName(getCommandName());
- this.setResponseObject(response);
- }
-}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java b/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java
new file mode 100644
index 0000000..27f8b35
--- /dev/null
+++ b/api/src/org/apache/cloudstack/api/command/user/zone/ListZonesCmd.java
@@ -0,0 +1,134 @@
+// 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.user.zone;
+
+import java.util.Collection;
+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 com.cloud.exception.InvalidParameterValueException;
+
+@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";
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+ @Parameter(name=ApiConstants.ID, type=CommandType.UUID, entityType=ZoneResponse.class,
+ description= "the ID of the zone")
+ private Long id;
+
+ @Parameter(name=ApiConstants.AVAILABLE, type=CommandType.BOOLEAN,
+ description="true if you want to retrieve all available Zones. False if you only want to return the Zones" +
+ " from which you have at least one VM. Default is false.")
+ private Boolean available;
+
+ @Parameter(name=ApiConstants.DOMAIN_ID, type=CommandType.UUID, entityType=DomainResponse.class,
+ description="the ID of the domain associated with the zone")
+ private Long domainId;
+
+ @Parameter(name=ApiConstants.NAME, type=CommandType.STRING, description="the name of the zone")
+ private String name;
+
+ @Parameter(name=ApiConstants.NETWORK_TYPE, type=CommandType.STRING, description="the network type of the zone that the virtual machine belongs to")
+ private String networkType;
+
+ @Parameter(name=ApiConstants.SHOW_CAPACITIES, type=CommandType.BOOLEAN, description="flag to display the capacity of the zones")
+ private Boolean showCapacities;
+
+ @Parameter(name = ApiConstants.TAGS, type = CommandType.MAP, description = "List zones by resource tags (key/value pairs)", since="4.3")
+ private Map tags;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+ public Long getId() {
+ return id;
+ }
+
+ public Boolean isAvailable() {
+ return available;
+ }
+
+ public Long getDomainId(){
+ return domainId;
+ }
+
+ public String getName(){
+ return name;
+ }
+
+ public String getNetworkType() {
+ return networkType;
+ }
+
+ public Boolean getShowCapacities() {
+ return showCapacities;
+ }
+
+ public Map<String, String> getTags() {
+ Map<String, String> tagsMap = null;
+ if (tags != null && !tags.isEmpty()) {
+ tagsMap = new HashMap<String, String>();
+ Collection<?> servicesCollection = tags.values();
+ Iterator<?> iter = servicesCollection.iterator();
+ while (iter.hasNext()) {
+ HashMap<String, String> services = (HashMap<String, String>) iter.next();
+ String key = services.get("key");
+ String value = services.get("value");
+ if (value == null) {
+ throw new InvalidParameterValueException("No value is passed in for key " + key);
+ }
+ tagsMap.put(key, value);
+ }
+ }
+ return tagsMap;
+ }
+
+ /////////////////////////////////////////////////////
+ /////////////// API Implementation///////////////////
+ /////////////////////////////////////////////////////
+
+ @Override
+ public String getCommandName() {
+ return s_name;
+ }
+
+ @Override
+ public void execute(){
+
+ ListResponse<ZoneResponse> response = _queryService.listDataCenters(this);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/api/src/org/apache/cloudstack/query/QueryService.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/query/QueryService.java b/api/src/org/apache/cloudstack/query/QueryService.java
index 00df62e..9c9274f 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<ServiceOfferingResponse> searchForServiceOfferings(ListServiceOfferingsCmd cmd);
- public ListResponse<ZoneResponse> listDataCenters(ListZonesByCmd cmd);
+ public ListResponse<ZoneResponse> listDataCenters(ListZonesCmd cmd);
public ListResponse<TemplateResponse> listTemplates(ListTemplatesCmd cmd);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java
index 129f0ff..e54884b 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){
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java
index 556f3e5..1470d43 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<CapacityResponse> getDataCenterCapacityResponse(Long zoneId) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/ApiServer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java
index 672ad12..d28a51c 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);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java
index a304d22..64b606c 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<ZoneResponse> listDataCenters(ListZonesByCmd cmd) {
+ public ListResponse<ZoneResponse> listDataCenters(ListZonesCmd cmd) {
Pair<List<DataCenterJoinVO>, Integer> result = listDataCentersInternal(cmd);
ListResponse<ZoneResponse> response = new ListResponse<ZoneResponse>();
- List<ZoneResponse> dcResponses = ViewResponseHelper.createDataCenterResponse(cmd.getShowCapacities(), result
+
+ ResponseView respView = ResponseView.Restricted;
+ if (cmd instanceof ListZonesCmdByAdmin) {
+ respView = ResponseView.Full;
+ }
+
+ List<ZoneResponse> dcResponses = ViewResponseHelper.createDataCenterResponse(respView, cmd.getShowCapacities(), result
.first().toArray(new DataCenterJoinVO[result.first().size()]));
response.setResponses(dcResponses, result.second());
return response;
}
- private Pair<List<DataCenterJoinVO>, Integer> listDataCentersInternal(ListZonesByCmd cmd) {
+ private Pair<List<DataCenterJoinVO>, Integer> listDataCentersInternal(ListZonesCmd cmd) {
Account account = CallContext.current().getCallingAccount();
Long domainId = cmd.getDomainId();
Long id = cmd.getId();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/query/ViewResponseHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/ViewResponseHelper.java b/server/src/com/cloud/api/query/ViewResponseHelper.java
index 7e438f2..ae46328 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<ZoneResponse> createDataCenterResponse(Boolean showCapacities, DataCenterJoinVO... dcs) {
+ public static List<ZoneResponse> createDataCenterResponse(ResponseView view, Boolean showCapacities, DataCenterJoinVO... dcs) {
List<ZoneResponse> respList = new ArrayList<ZoneResponse>();
for (DataCenterJoinVO vt : dcs){
- respList.add(ApiDBUtils.newDataCenterResponse(vt, showCapacities));
+ respList.add(ApiDBUtils.newDataCenterResponse(view, vt, showCapacities));
}
return respList;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDao.java
index 340f86f..1c3ff1b 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<DataCenterJoinVO, Long> {
- ZoneResponse newDataCenterResponse(DataCenterJoinVO dof, Boolean showCapacities);
+ ZoneResponse newDataCenterResponse(ResponseView view, DataCenterJoinVO dof, Boolean showCapacities);
DataCenterJoinVO newDataCenterView(DataCenter dof);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java
index b28ace0..4bfad78 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<DataCenterJoinVO, Long
dofIdSearch.and("id", dofIdSearch.entity().getId(), SearchCriteria.Op.EQ);
dofIdSearch.done();
- this._count = "select count(distinct id) from data_center_view WHERE ";
+ _count = "select count(distinct id) from data_center_view WHERE ";
}
@Override
- public ZoneResponse newDataCenterResponse(DataCenterJoinVO dataCenter, Boolean showCapacities) {
+ public ZoneResponse newDataCenterResponse(ResponseView view, DataCenterJoinVO dataCenter, Boolean showCapacities) {
Account account = CallContext.current().getCallingAccount();
ZoneResponse zoneResponse = new ZoneResponse();
@@ -74,7 +76,7 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase<DataCenterJoinVO, Long
zoneResponse.setDescription(dataCenter.getDescription());
}
- if ((account == null) || (_accountMgr.isRootAdmin(account.getId()))) {
+ if (view == ResponseView.Full) {
zoneResponse.setDns1(dataCenter.getDns1());
zoneResponse.setDns2(dataCenter.getDns2());
zoneResponse.setIp6Dns1(dataCenter.getIp6Dns1());
@@ -104,7 +106,7 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase<DataCenterJoinVO, Long
// update tag information
List<ResourceTagJoinVO> resourceTags = ApiDBUtils.listResourceTagViewByResourceUUID(dataCenter.getUuid(), ResourceObjectType.Zone);
- for (ResourceTagJoinVO resourceTag : resourceTags) {
+ for (ResourceTagJoinVO resourceTag : resourceTags) {
ResourceTagResponse tagResponse = ApiDBUtils.newResourceTagResponse(resourceTag, false);
zoneResponse.addTag(tagResponse);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/312ff76f/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 12de4bd..d2caf67 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);