Updated Branches: refs/heads/internallb a3321ce61 -> 69b23f700
InternalLb: create/configure/listInternalLoadBalancerElement - fixes to the API response Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/69b23f70 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/69b23f70 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/69b23f70 Branch: refs/heads/internallb Commit: 69b23f700348a56f97bc2118166799332a47b3a5 Parents: a3321ce Author: Alena Prokharchyk <[email protected]> Authored: Thu Apr 18 14:01:10 2013 -0700 Committer: Alena Prokharchyk <[email protected]> Committed: Thu Apr 18 14:02:48 2013 -0700 ---------------------------------------------------------------------- .../apache/cloudstack/api/ResponseGenerator.java | 3 + .../ConfigureInternalLoadBalancerElementCmd.java | 8 +- .../CreateInternalLoadBalancerElementCmd.java | 6 +- .../ListInternalLoadBalancerElementsCmd.java | 12 ++-- .../InternalLoadBalancerElementResponse.java | 51 +++++++++++++++ .../response/VirtualRouterProviderResponse.java | 7 -- server/src/com/cloud/api/ApiResponseHelper.java | 24 +++++++- 7 files changed, 90 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/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 2fc14a4..0dce13b 100644 --- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java +++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java @@ -51,6 +51,7 @@ import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.HypervisorCapabilitiesResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.InstanceGroupResponse; +import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; import org.apache.cloudstack.api.response.IpForwardingRuleResponse; import org.apache.cloudstack.api.response.LBHealthCheckResponse; import org.apache.cloudstack.api.response.LBStickinessResponse; @@ -415,4 +416,6 @@ public interface ResponseGenerator { AffinityGroupResponse createAffinityGroupResponse(AffinityGroup group); Long getAffinityGroupId(String name, long entityOwnerId); + + InternalLoadBalancerElementResponse createInternalLbElementResponse(VirtualRouterProvider result); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java index 1bd6bda..7c3d1e9 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java @@ -27,7 +27,7 @@ import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; -import org.apache.cloudstack.api.response.VirtualRouterProviderResponse; +import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; import org.apache.log4j.Logger; @@ -39,7 +39,7 @@ import com.cloud.network.VirtualRouterProvider; import com.cloud.user.Account; import com.cloud.user.UserContext; -@APICommand(name = "configureInternalLoadBalancerElement", responseObject=VirtualRouterProviderResponse.class, +@APICommand(name = "configureInternalLoadBalancerElement", responseObject=InternalLoadBalancerElementResponse.class, description="Configures an Internal Load Balancer element.", since="4.2.0") public class ConfigureInternalLoadBalancerElementCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(ConfigureInternalLoadBalancerElementCmd.class.getName()); @@ -52,7 +52,7 @@ public class ConfigureInternalLoadBalancerElementCmd extends BaseAsyncCmd { //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// - @Parameter(name=ApiConstants.ID, type=CommandType.UUID, entityType = VirtualRouterProviderResponse.class, + @Parameter(name=ApiConstants.ID, type=CommandType.UUID, entityType = InternalLoadBalancerElementResponse.class, required=true, description="the ID of the internal lb provider") private Long id; @@ -104,7 +104,7 @@ public class ConfigureInternalLoadBalancerElementCmd extends BaseAsyncCmd { VirtualRouterProvider result = _service.get(0).configureInternalLoadBalancerElement(getId(), getEnabled()); s_logger.debug("hello alena"); if (result != null){ - VirtualRouterProviderResponse routerResponse = _responseGenerator.createVirtualRouterProviderResponse(result); + InternalLoadBalancerElementResponse routerResponse = _responseGenerator.createInternalLbElementResponse(result); routerResponse.setResponseName(getCommandName()); this.setResponseObject(routerResponse); } else { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java index 32c47bc..2902f7a 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java @@ -26,8 +26,8 @@ import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseAsyncCreateCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; import org.apache.cloudstack.api.response.ProviderResponse; -import org.apache.cloudstack.api.response.VirtualRouterProviderResponse; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; import org.apache.log4j.Logger; @@ -37,7 +37,7 @@ import com.cloud.network.VirtualRouterProvider; import com.cloud.user.Account; import com.cloud.user.UserContext; -@APICommand(name = "createInternalLoadBalancerElement", responseObject=VirtualRouterProviderResponse.class, description="Create an Internal Load Balancer element.",since="4.2.0") +@APICommand(name = "createInternalLoadBalancerElement", responseObject=InternalLoadBalancerElementResponse.class, description="Create an Internal Load Balancer element.",since="4.2.0") public class CreateInternalLoadBalancerElementCmd extends BaseAsyncCreateCmd { public static final Logger s_logger = Logger.getLogger(CreateInternalLoadBalancerElementCmd.class.getName()); private static final String s_name = "createinternalloadbalancerelementresponse"; @@ -85,7 +85,7 @@ public class CreateInternalLoadBalancerElementCmd extends BaseAsyncCreateCmd { UserContext.current().setEventDetails("Virtual router element Id: "+getEntityId()); VirtualRouterProvider result = _service.get(0).getInternalLoadBalancerElement(getEntityId()); if (result != null) { - VirtualRouterProviderResponse response = _responseGenerator.createVirtualRouterProviderResponse(result); + InternalLoadBalancerElementResponse response = _responseGenerator.createInternalLbElementResponse(result); response.setResponseName(getCommandName()); this.setResponseObject(response); }else { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/api/src/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java index 9ef15ff..1853619 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java @@ -26,9 +26,9 @@ import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ProviderResponse; -import org.apache.cloudstack.api.response.VirtualRouterProviderResponse; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; import org.apache.log4j.Logger; @@ -39,7 +39,7 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.VirtualRouterProvider; @APICommand(name = "listInternalLoadBalancerElements", description="Lists all available Internal Load Balancer elements.", - responseObject=VirtualRouterProviderResponse.class, since="4.2.0") + responseObject=InternalLoadBalancerElementResponse.class, since="4.2.0") public class ListInternalLoadBalancerElementsCmd extends BaseListCmd { public static final Logger s_logger = Logger.getLogger(ListInternalLoadBalancerElementsCmd.class.getName()); private static final String _name = "listinternalloadbalancerelementsresponse"; @@ -50,7 +50,7 @@ public class ListInternalLoadBalancerElementsCmd extends BaseListCmd { ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// - @Parameter(name=ApiConstants.ID, type=CommandType.UUID, entityType = VirtualRouterProviderResponse.class, + @Parameter(name=ApiConstants.ID, type=CommandType.UUID, entityType = InternalLoadBalancerElementResponse.class, description="list internal load balancer elements by id") private Long id; @@ -85,10 +85,10 @@ public class ListInternalLoadBalancerElementsCmd extends BaseListCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException { List<? extends VirtualRouterProvider> providers = _service.searchForInternalLoadBalancerElements(getId(), getNspId(), getEnabled()); - ListResponse<VirtualRouterProviderResponse> response = new ListResponse<VirtualRouterProviderResponse>(); - List<VirtualRouterProviderResponse> providerResponses = new ArrayList<VirtualRouterProviderResponse>(); + ListResponse<InternalLoadBalancerElementResponse> response = new ListResponse<InternalLoadBalancerElementResponse>(); + List<InternalLoadBalancerElementResponse> providerResponses = new ArrayList<InternalLoadBalancerElementResponse>(); for (VirtualRouterProvider provider : providers) { - VirtualRouterProviderResponse providerResponse = _responseGenerator.createVirtualRouterProviderResponse(provider); + InternalLoadBalancerElementResponse providerResponse = _responseGenerator.createInternalLbElementResponse(provider); providerResponses.add(providerResponse); } response.setResponses(providerResponses); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/api/src/org/apache/cloudstack/api/response/InternalLoadBalancerElementResponse.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/response/InternalLoadBalancerElementResponse.java b/api/src/org/apache/cloudstack/api/response/InternalLoadBalancerElementResponse.java new file mode 100644 index 0000000..b7e8634 --- /dev/null +++ b/api/src/org/apache/cloudstack/api/response/InternalLoadBalancerElementResponse.java @@ -0,0 +1,51 @@ +// 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.response; + +import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.BaseResponse; +import org.apache.cloudstack.api.EntityReference; + +import com.cloud.network.VirtualRouterProvider; +import com.cloud.serializer.Param; +import com.google.gson.annotations.SerializedName; + +@EntityReference(value=VirtualRouterProvider.class) +@SuppressWarnings("unused") +public class InternalLoadBalancerElementResponse extends BaseResponse { + @SerializedName(ApiConstants.ID) @Param(description="the id of the internal load balancer element") + private String id; + + @SerializedName(ApiConstants.NSP_ID) @Param(description="the physical network service provider id of the element") + private String nspId; + + @SerializedName(ApiConstants.ENABLED) @Param(description="Enabled/Disabled the element") + private Boolean enabled; + + + public void setId(String id) { + this.id = id; + } + + public void setNspId(String nspId) { + this.nspId = nspId; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/api/src/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java b/api/src/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java index 14532dd..de355bd 100644 --- a/api/src/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java +++ b/api/src/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java @@ -50,9 +50,6 @@ public class VirtualRouterProviderResponse extends BaseResponse implements Contr @SerializedName(ApiConstants.DOMAIN) @Param(description="the domain associated with the provider") private String domainName; - - @SerializedName(ApiConstants.TYPE) @Param(description="Type of the service provider") - private String type; @Override public void setAccountName(String accountName) { @@ -90,8 +87,4 @@ public class VirtualRouterProviderResponse extends BaseResponse implements Contr public void setEnabled(Boolean enabled) { this.enabled = enabled; } - - public void setType(String type) { - this.type = type; - } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/69b23f70/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 101106e..909eab1 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -73,6 +73,7 @@ import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.HypervisorCapabilitiesResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.InstanceGroupResponse; +import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; import org.apache.cloudstack.api.response.IpForwardingRuleResponse; import org.apache.cloudstack.api.response.LBHealthCheckPolicyResponse; import org.apache.cloudstack.api.response.LBHealthCheckResponse; @@ -2777,6 +2778,11 @@ public class ApiResponseHelper implements ResponseGenerator { @Override public VirtualRouterProviderResponse createVirtualRouterProviderResponse(VirtualRouterProvider result) { + //generate only response of the VR/VPCVR provider type + if (!(result.getType() == VirtualRouterProvider.VirtualRouterProviderType.VirtualRouter) + || (result.getType() == VirtualRouterProvider.VirtualRouterProviderType.VPCVirtualRouter)) { + return null; + } VirtualRouterProviderResponse response = new VirtualRouterProviderResponse(); response.setId(result.getUuid()); PhysicalNetworkServiceProvider nsp = ApiDBUtils.findPhysicalNetworkServiceProviderById(result.getNspId()); @@ -2784,7 +2790,6 @@ public class ApiResponseHelper implements ResponseGenerator { response.setNspId(nsp.getUuid()); } response.setEnabled(result.isEnabled()); - response.setType(result.getType().toString()); response.setObjectName("virtualrouterelement"); return response; @@ -3734,4 +3739,21 @@ public class ApiResponseHelper implements ResponseGenerator { return ag.getId(); } } + + @Override + public InternalLoadBalancerElementResponse createInternalLbElementResponse(VirtualRouterProvider result) { + if (result.getType() != VirtualRouterProvider.VirtualRouterProviderType.InternalLbVm) { + return null; + } + InternalLoadBalancerElementResponse response = new InternalLoadBalancerElementResponse(); + response.setId(result.getUuid()); + PhysicalNetworkServiceProvider nsp = ApiDBUtils.findPhysicalNetworkServiceProviderById(result.getNspId()); + if (nsp != null) { + response.setNspId(nsp.getUuid()); + } + response.setEnabled(result.isEnabled()); + + response.setObjectName("internalloadbalancerelement"); + return response; + } }
