Updated Branches: refs/heads/master 4c0eecc19 -> b29449b4b
CLOUDSTACK-129: added new API - listNetworkIsolationMethods - for displaying isolation methods supported by the cloudStack Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b29449b4 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b29449b4 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b29449b4 Branch: refs/heads/master Commit: b29449b4b7a5edb000c4ba58a8a0be145d105bf6 Parents: 4c0eecc Author: Alena Prokharchyk <[email protected]> Authored: Mon May 6 11:45:19 2013 -0700 Committer: Alena Prokharchyk <[email protected]> Committed: Mon May 6 11:46:43 2013 -0700 ---------------------------------------------------------------------- api/src/com/cloud/network/NetworkModel.java | 2 + api/src/org/apache/cloudstack/api/BaseCmd.java | 2 + .../apache/cloudstack/api/ResponseGenerator.java | 4 + .../network/ListNetworkIsolationMethodsCmd.java | 58 +++++++++++++++ .../api/response/IsolationMethodResponse.java | 33 ++++++++ client/tomcatconf/commands.properties.in | 2 + server/src/com/cloud/api/ApiResponseHelper.java | 58 ++++++-------- server/src/com/cloud/network/NetworkModelImpl.java | 7 ++ .../src/com/cloud/server/ManagementServerImpl.java | 1 + .../com/cloud/network/MockNetworkModelImpl.java | 7 ++ .../test/com/cloud/vpc/MockNetworkModelImpl.java | 7 ++ 11 files changed, 148 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/api/src/com/cloud/network/NetworkModel.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/NetworkModel.java b/api/src/com/cloud/network/NetworkModel.java index d81b2d7..555a09f 100644 --- a/api/src/com/cloud/network/NetworkModel.java +++ b/api/src/com/cloud/network/NetworkModel.java @@ -263,4 +263,6 @@ public interface NetworkModel { boolean isProviderEnabledInZone(long zoneId, String provider); Nic getPlaceholderNicForRouter(Network network, Long podId); + + Networks.IsolationType[] listNetworkIsolationMethods(); } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/api/src/org/apache/cloudstack/api/BaseCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/BaseCmd.java b/api/src/org/apache/cloudstack/api/BaseCmd.java index 200675d..48d18d0 100644 --- a/api/src/org/apache/cloudstack/api/BaseCmd.java +++ b/api/src/org/apache/cloudstack/api/BaseCmd.java @@ -42,6 +42,7 @@ import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.NetworkModel; import com.cloud.network.NetworkService; import com.cloud.network.NetworkUsageService; import com.cloud.network.StorageNetworkService; @@ -139,6 +140,7 @@ public abstract class BaseCmd { @Inject public DataStoreProviderApiService dataStoreProviderApiService; @Inject public VpcProvisioningService _vpcProvSvc; @Inject public AffinityGroupService _affinityGroupService; + @Inject public NetworkModel _ntwkModel; public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/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 8466bd8..3433003 100644 --- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java +++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java @@ -50,6 +50,7 @@ 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.IpForwardingRuleResponse; +import org.apache.cloudstack.api.response.IsolationMethodResponse; import org.apache.cloudstack.api.response.LBHealthCheckResponse; import org.apache.cloudstack.api.response.LBStickinessResponse; import org.apache.cloudstack.api.response.LDAPConfigResponse; @@ -120,6 +121,7 @@ import com.cloud.host.Host; import com.cloud.hypervisor.HypervisorCapabilities; import com.cloud.network.*; import com.cloud.network.Network.Service; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.as.*; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.FirewallRule; @@ -398,4 +400,6 @@ public interface ResponseGenerator { AffinityGroupResponse createAffinityGroupResponse(AffinityGroup group); Long getAffinityGroupId(String name, long entityOwnerId); + + IsolationMethodResponse createIsolationMethodResponse(IsolationType method); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/api/src/org/apache/cloudstack/api/command/admin/network/ListNetworkIsolationMethodsCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/admin/network/ListNetworkIsolationMethodsCmd.java b/api/src/org/apache/cloudstack/api/command/admin/network/ListNetworkIsolationMethodsCmd.java new file mode 100644 index 0000000..7eef22a --- /dev/null +++ b/api/src/org/apache/cloudstack/api/command/admin/network/ListNetworkIsolationMethodsCmd.java @@ -0,0 +1,58 @@ +// 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.network; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.api.BaseListCmd; +import org.apache.cloudstack.api.response.IsolationMethodResponse; +import org.apache.cloudstack.api.response.ListResponse; + +import com.cloud.network.Networks; + +@APICommand(name = "listNetworkIsolationMethods", description="Lists supported methods of network isolation", +responseObject=IsolationMethodResponse.class, since="4.2.0") +public class ListNetworkIsolationMethodsCmd extends BaseListCmd{ + + private static final String s_name = "listnetworkisolationmethodsresponse"; + + @Override + public void execute() { + Networks.IsolationType[] methods = _ntwkModel.listNetworkIsolationMethods(); + + ListResponse<IsolationMethodResponse> response = new ListResponse<IsolationMethodResponse>(); + List<IsolationMethodResponse> isolationResponses = new ArrayList<IsolationMethodResponse>(); + if (methods != null) { + for (Networks.IsolationType method : methods) { + IsolationMethodResponse isolationMethod = _responseGenerator.createIsolationMethodResponse(method); + isolationResponses.add(isolationMethod); + } + } + response.setResponses(isolationResponses, methods.length); + response.setResponseName(getCommandName()); + this.setResponseObject(response); + + } + + @Override + public String getCommandName() { + return s_name; + } + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/api/src/org/apache/cloudstack/api/response/IsolationMethodResponse.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/response/IsolationMethodResponse.java b/api/src/org/apache/cloudstack/api/response/IsolationMethodResponse.java new file mode 100644 index 0000000..3aaa7a4 --- /dev/null +++ b/api/src/org/apache/cloudstack/api/response/IsolationMethodResponse.java @@ -0,0 +1,33 @@ +// 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 com.cloud.serializer.Param; +import com.google.gson.annotations.SerializedName; + +@SuppressWarnings("unused") +public class IsolationMethodResponse extends BaseResponse{ + @SerializedName(ApiConstants.NAME) @Param(description="Network isolation method name") + private String name; + + public void setIsolationMethodName(String isolationMethodName) { + this.name = isolationMethodName; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/client/tomcatconf/commands.properties.in ---------------------------------------------------------------------- diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in index 7d950fe..6e3a5e4 100644 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@ -591,3 +591,5 @@ addCiscoAsa1000vResource=1 deleteCiscoAsa1000vResource=1 listCiscoAsa1000vResources=1 +### Network Isolation methods listing +listNetworkIsolationMethods=1 http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/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 2804d1e..d7eaa26 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -34,9 +34,10 @@ import java.util.TimeZone; import javax.inject.Inject; -import com.cloud.vm.*; import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity.ACLType; +import org.apache.cloudstack.affinity.AffinityGroup; +import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.api.ApiConstants.HostDetails; import org.apache.cloudstack.api.ApiConstants.VMDetails; import org.apache.cloudstack.api.BaseCmd; @@ -65,12 +66,14 @@ import org.apache.cloudstack.api.response.FirewallResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse; import org.apache.cloudstack.api.response.GuestOSResponse; -import org.apache.cloudstack.api.response.HostResponse; +import org.apache.cloudstack.api.response.GuestVlanRangeResponse; import org.apache.cloudstack.api.response.HostForMigrationResponse; +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.IpForwardingRuleResponse; +import org.apache.cloudstack.api.response.IsolationMethodResponse; import org.apache.cloudstack.api.response.LBHealthCheckPolicyResponse; import org.apache.cloudstack.api.response.LBHealthCheckResponse; import org.apache.cloudstack.api.response.LBStickinessPolicyResponse; @@ -180,14 +183,14 @@ import com.cloud.event.Event; import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.hypervisor.HypervisorCapabilities; -import com.cloud.network.dao.AccountGuestVlanMapVO; -import com.cloud.network.IpAddress; import com.cloud.network.GuestVlan; +import com.cloud.network.IpAddress; import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.NetworkProfile; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.PhysicalNetwork; import com.cloud.network.PhysicalNetworkServiceProvider; @@ -267,38 +270,17 @@ import com.cloud.uservm.UserVm; import com.cloud.utils.Pair; import com.cloud.utils.StringUtils; import com.cloud.utils.net.NetUtils; +import com.cloud.vm.ConsoleProxyVO; +import com.cloud.vm.InstanceGroup; +import com.cloud.vm.Nic; +import com.cloud.vm.NicProfile; +import com.cloud.vm.NicSecondaryIp; +import com.cloud.vm.NicVO; +import com.cloud.vm.VMInstanceVO; +import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.dao.NicSecondaryIpVO; import com.cloud.vm.snapshot.VMSnapshot; -import org.apache.cloudstack.acl.ControlledEntity; -import org.apache.cloudstack.acl.ControlledEntity.ACLType; -import org.apache.cloudstack.affinity.AffinityGroup; -import org.apache.cloudstack.affinity.AffinityGroupResponse; -import org.apache.cloudstack.api.ApiConstants.HostDetails; -import org.apache.cloudstack.api.ApiConstants.VMDetails; -import org.apache.cloudstack.api.BaseCmd; -import org.apache.cloudstack.api.ResponseGenerator; -import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd; -import org.apache.cloudstack.api.response.*; -import org.apache.cloudstack.region.Region; -import org.apache.cloudstack.usage.Usage; -import org.apache.cloudstack.usage.UsageService; -import org.apache.cloudstack.usage.UsageTypes; -import com.cloud.vm.dao.UserVmData; -import com.cloud.vm.dao.UserVmData.NicData; -import com.cloud.vm.dao.UserVmData.SecurityGroupData; -import com.cloud.vm.snapshot.VMSnapshot; -import org.apache.cloudstack.api.ResponseGenerator; -import org.apache.cloudstack.api.response.VMSnapshotResponse; -import org.apache.log4j.Logger; - -import java.text.DecimalFormat; -import java.util.*; - -import javax.inject.Inject; - -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; @Component public class ApiResponseHelper implements ResponseGenerator { @@ -3736,4 +3718,14 @@ public class ApiResponseHelper implements ResponseGenerator { return ag.getId(); } } + + + + @Override + public IsolationMethodResponse createIsolationMethodResponse(IsolationType method) { + IsolationMethodResponse response = new IsolationMethodResponse(); + response.setIsolationMethodName(method.toString()); + response.setObjectName("isolationmethod"); + return response; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/server/src/com/cloud/network/NetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index fdf722c..eaec6a6 100755 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -58,6 +58,7 @@ import com.cloud.network.Network.Capability; import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.addr.PublicIp; import com.cloud.network.dao.FirewallRulesDao; @@ -2049,4 +2050,10 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel { } return null; } + + + @Override + public Networks.IsolationType[] listNetworkIsolationMethods() { + return Networks.IsolationType.values(); + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/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 5ddae88..da8f30e 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -2547,6 +2547,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe cmdList.add(ListAffinityGroupsCmd.class); cmdList.add(UpdateVMAffinityGroupCmd.class); cmdList.add(ListAffinityGroupTypesCmd.class); + cmdList.add(ListNetworkIsolationMethodsCmd.class); return cmdList; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/server/test/com/cloud/network/MockNetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/network/MockNetworkModelImpl.java b/server/test/com/cloud/network/MockNetworkModelImpl.java index 9d5d4ff..7df45a0 100644 --- a/server/test/com/cloud/network/MockNetworkModelImpl.java +++ b/server/test/com/cloud/network/MockNetworkModelImpl.java @@ -33,6 +33,7 @@ import com.cloud.network.Network.Capability; import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.dao.IPAddressVO; import com.cloud.network.dao.NetworkVO; @@ -850,4 +851,10 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { // TODO Auto-generated method stub return null; } + + @Override + public IsolationType[] listNetworkIsolationMethods() { + // TODO Auto-generated method stub + return null; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b29449b4/server/test/com/cloud/vpc/MockNetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vpc/MockNetworkModelImpl.java b/server/test/com/cloud/vpc/MockNetworkModelImpl.java index 14cd09d..c9d043a 100644 --- a/server/test/com/cloud/vpc/MockNetworkModelImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkModelImpl.java @@ -37,6 +37,7 @@ import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.NetworkModel; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.PhysicalNetwork; import com.cloud.network.PhysicalNetworkSetupInfo; @@ -863,4 +864,10 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { return null; } + @Override + public IsolationType[] listNetworkIsolationMethods() { + // TODO Auto-generated method stub + return null; + } + }
