Updated Branches:
refs/heads/vpc 4dd71cb63 -> a1acfd3bf
Merge branch 'master' into vpc
Conflicts:
api/src/com/cloud/api/ApiConstants.java
api/src/com/cloud/network/Network.java
client/tomcatconf/components.xml.in
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
server/src/com/cloud/network/NetworkManagerImpl.java
server/src/com/cloud/network/guru/GuestNetworkGuru.java
server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
setup/db/create-schema.sql
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit:
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/a1acfd3b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/a1acfd3b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/a1acfd3b
Branch: refs/heads/vpc
Commit: a1acfd3bfa66adccb8a98a1f4457ef626cba8f8b
Parents: 4dd71cb 3d7f6a3
Author: Alena Prokharchyk <[email protected]>
Authored: Fri Jul 13 13:45:28 2012 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Fri Jul 13 13:52:58 2012 -0700
----------------------------------------------------------------------
api/src/com/cloud/agent/api/to/NicTO.java | 11 +
.../com/cloud/agent/api/to/VirtualMachineTO.java | 11 +
api/src/com/cloud/api/ApiConstants.java | 3 +
api/src/com/cloud/host/Host.java | 3 +-
api/src/com/cloud/network/Network.java | 2 +
api/src/com/cloud/network/Networks.java | 1 +
api/src/com/cloud/network/PhysicalNetwork.java | 3 +-
build/build-cloud-plugins.xml | 10 +-
build/package.xml | 1 +
client/tomcatconf/components.xml.in | 5 +
.../tomcatconf/nicira-nvp_commands.properties.in | 12 +
cloud.spec | 1 +
.../xen/resource/CitrixResourceBase.java | 10 +
.../network/lb/ElasticLoadBalancerManagerImpl.java | 8 +
plugins/network-elements/nicira-nvp/.classpath | 12 +
plugins/network-elements/nicira-nvp/.project | 17 +
.../nicira-nvp/README.NiciraIntegration | 68 ++
plugins/network-elements/nicira-nvp/build.xml | 129 ++++
.../cloud/agent/api/CreateLogicalSwitchAnswer.java | 20 +
.../agent/api/CreateLogicalSwitchCommand.java | 38 ++
.../agent/api/CreateLogicalSwitchPortAnswer.java | 20 +
.../agent/api/CreateLogicalSwitchPortCommand.java | 42 ++
.../cloud/agent/api/DeleteLogicalSwitchAnswer.java | 14 +
.../agent/api/DeleteLogicalSwitchCommand.java | 19 +
.../agent/api/DeleteLogicalSwitchPortAnswer.java | 14 +
.../agent/api/DeleteLogicalSwitchPortCommand.java | 25 +
.../cloud/agent/api/StartupNiciraNvpCommand.java | 11 +
.../cloud/api/commands/AddNiciraNvpDeviceCmd.java | 110 ++++
.../api/commands/DeleteNiciraNvpDeviceCmd.java | 76 +++
.../commands/ListNiciraNvpDeviceNetworksCmd.java | 85 +++
.../api/commands/ListNiciraNvpDevicesCmd.java | 90 +++
.../api/response/NiciraNvpDeviceResponse.java | 37 ++
.../src/com/cloud/network/NiciraNvpDeviceVO.java | 79 +++
.../com/cloud/network/NiciraNvpNicMappingVO.java | 65 ++
.../src/com/cloud/network/dao/NiciraNvpDao.java | 16 +
.../com/cloud/network/dao/NiciraNvpDaoImpl.java | 32 +
.../cloud/network/dao/NiciraNvpNicMappingDao.java | 13 +
.../network/dao/NiciraNvpNicMappingDaoImpl.java | 30 +
.../cloud/network/element/NiciraNvpElement.java | 502 +++++++++++++++
.../network/element/NiciraNvpElementService.java | 28 +
.../network/guru/NiciraNvpGuestNetworkGuru.java | 257 ++++++++
.../src/com/cloud/network/nicira/Attachment.java | 22 +
.../com/cloud/network/nicira/LogicalSwitch.java | 99 +++
.../cloud/network/nicira/LogicalSwitchPort.java | 118 ++++
.../src/com/cloud/network/nicira/NiciraNvpApi.java | 413 ++++++++++++
.../network/nicira/NiciraNvpApiException.java | 20 +
.../com/cloud/network/nicira/NiciraNvpList.java | 25 +
.../src/com/cloud/network/nicira/NiciraNvpTag.java | 47 ++
.../cloud/network/nicira/TransportZoneBinding.java | 47 ++
.../com/cloud/network/nicira/VifAttachment.java | 43 ++
.../cloud/network/resource/NiciraNvpResource.java | 240 +++++++
.../cloud/network/guru/OvsGuestNetworkGuru.java | 28 +
.../manager/allocator/impl/FirstFitAllocator.java | 8 +
.../AgentBasedConsoleProxyManager.java | 8 +
.../consoleproxy/ConsoleProxyManagerImpl.java | 9 +
server/src/com/cloud/host/dao/HostDaoImpl.java | 4 +-
.../com/cloud/hypervisor/HypervisorGuruBase.java | 15 +
.../network/ExternalNetworkDeviceManager.java | 2 +
.../src/com/cloud/network/NetworkManagerImpl.java | 6 +-
.../network/guru/ExternalGuestNetworkGuru.java | 30 +-
.../com/cloud/network/guru/GuestNetworkGuru.java | 53 ++-
.../router/VirtualNetworkApplianceManagerImpl.java | 14 +
server/src/com/cloud/server/StatsCollector.java | 1 +
server/src/com/cloud/storage/StorageManager.java | 2 +-
.../src/com/cloud/storage/StorageManagerImpl.java | 30 +-
.../secondary/SecondaryStorageManagerImpl.java | 9 +
server/src/com/cloud/vm/UserVmManagerImpl.java | 8 +
server/src/com/cloud/vm/VirtualMachineGuru.java | 2 +
.../com/cloud/vm/VirtualMachineManagerImpl.java | 9 +-
.../test/com/cloud/vm/MockUserVmManagerImpl.java | 6 +
setup/db/create-schema.sql | 22 +
tools/devcloud/devcloudsetup.sh | 10 +-
ui/css/cloudstack3.css | 100 +++-
ui/scripts/ui-custom/zoneWizard.js | 13 +-
ui/scripts/ui/widgets/detailView.js | 14 +-
ui/scripts/ui/widgets/listView.js | 10 +-
wscript_configure | 2 +-
77 files changed, 3373 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/api/src/com/cloud/api/ApiConstants.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/api/ApiConstants.java
index a504c48,e410576..732fe81
--- a/api/src/com/cloud/api/ApiConstants.java
+++ b/api/src/com/cloud/api/ApiConstants.java
@@@ -365,15 -361,10 +365,18 @@@ public class ApiConstants
public static final String RESOURCE_IDS = "resourceids";
public static final String RESOURCE_ID = "resourceid";
public static final String CUSTOMER = "customer";
+ public static final String S2S_VPN_GATEWAY_ID = "s2svpngatewayid";
+ public static final String S2S_CUSTOMER_GATEWAY_ID =
"s2scustomergatewayid";
+ public static final String IPSEC_PSK = "ipsecpsk";
+ public static final String GUEST_IP = "guestip";
+ public static final String REMOVED = "removed";
+ public static final String IKE_POLICY = "ikepolicy";
+ public static final String ESP_POLICY = "esppolicy";
+ public static final String LIFETIME = "lifetime";
+ public static final String FOR_VPC = "forvpc";
+ public static final String NICIRA_NVP_DEVICE_ID = "nvpdeviceid";
+ public static final String NICIRA_NVP_TRANSPORT_ZONE_UUID =
"transportzoneuuid";
+ public static final String NICIRA_NVP_DEVICE_NAME = "niciradevicename";
-
public enum HostDetails {
all, capacity, events, stats, min;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/api/src/com/cloud/network/Network.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/network/Network.java
index a46c266,459b05b..b3461b5
--- a/api/src/com/cloud/network/Network.java
+++ b/api/src/com/cloud/network/Network.java
@@@ -55,7 -52,7 +55,8 @@@ public interface Network extends Contro
public static final Service StaticNat = new Service("StaticNat",
Capability.ElasticIp);
public static final Service PortForwarding = new
Service("PortForwarding");
public static final Service SecurityGroup = new
Service("SecurityGroup");
+ public static final Service NetworkACL = new Service("NetworkACL",
Capability.SupportedProtocols);
+ public static final Service Connectivity = new
Service("Connectivity");
private String name;
private Capability[] caps;
@@@ -117,8 -114,8 +118,9 @@@
public static final Provider ExternalGateWay = new
Provider("ExternalGateWay", true);
public static final Provider ElasticLoadBalancerVm = new
Provider("ElasticLoadBalancerVm", false);
public static final Provider SecurityGroupProvider = new
Provider("SecurityGroupProvider", false);
+ public static final Provider VPCVirtualRouter = new
Provider("VpcVirtualRouter", false);
public static final Provider None = new Provider("None", false);
+ public static final Provider NiciraNvp = new Provider("NiciraNvp",
true);
private String name;
private boolean isExternal;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/client/tomcatconf/components.xml.in
----------------------------------------------------------------------
diff --cc client/tomcatconf/components.xml.in
index 69f896f,16d7b19..e9c4819
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@@ -78,7 -78,7 +78,8 @@@
<adapter name="DirectNetworkGuru"
class="com.cloud.network.guru.DirectNetworkGuru"/>
<adapter name="DirectPodBasedNetworkGuru"
class="com.cloud.network.guru.DirectPodBasedNetworkGuru"/>
<adapter name="OvsGuestNetworkGuru"
class="com.cloud.network.guru.OvsGuestNetworkGuru"/>
+ <adapter name="PrivateNetworkGuru"
class="com.cloud.network.guru.PrivateNetworkGuru"/>
+ <adapter name="NiciraNvpGuestNetworkGuru"
class="com.cloud.network.guru.NiciraNvpGuestNetworkGuru"/>
</adapters>
<adapters key="com.cloud.cluster.ClusterServiceAdapter">
<adapter name="ClusterService"
class="com.cloud.cluster.ClusterServiceServletAdapter"/>
@@@ -143,7 -143,7 +144,8 @@@
<adapter name="BareMetal"
class="com.cloud.network.element.BareMetalElement"/>
<adapter name="SecurityGroupProvider"
class="com.cloud.network.element.SecurityGroupElement"/>
<adapter name="CiscoNexus1000vVSM"
class="com.cloud.network.element.CiscoNexusVSMElement"/>
+ <adapter name="VpcVirtualRouter"
class="com.cloud.network.element.VpcVirtualRouterElement"/>
+ <adapter name="NiciraNvp"
class="com.cloud.network.element.NiciraNvpElement"/>
</adapters>
<adapters key="com.cloud.cluster.agentlb.AgentLoadBalancerPlanner">
<adapter name="ClusterBasedAgentLbPlanner"
class="com.cloud.cluster.agentlb.ClusterBasedAgentLoadBalancerPlanner"/>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --cc
plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index bbd456f,c81d461..83de224
---
a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++
b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@@ -797,7 -770,12 +802,12 @@@ public abstract class CitrixResourceBas
vifr.VM = vm;
vifr.device = Integer.toString(nic.getDeviceId());
vifr.MAC = nic.getMac();
-
+
+ // Nicira needs these IDs to find the NIC
+ vifr.otherConfig = new HashMap<String, String>();
+ vifr.otherConfig.put("nicira-iface-id", nic.getUuid());
+ vifr.otherConfig.put("nicira-vm-id", vm.getUuid(conn));
+
vifr.network = getNetwork(conn, nic);
if (nic.getNetworkRateMbps() != null &&
nic.getNetworkRateMbps().intValue() != -1) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------
diff --cc
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index 216c8f1,8d1963d..e4d52f5
---
a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
+++
b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
@@@ -1008,20 -987,13 +1008,28 @@@ public class ElasticLoadBalancerManager
return VirtualMachineName.getSystemVmId(vmName);
}
+
+ @Override
+ public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException,
+ InsufficientCapacityException {
+ //not supported
+ throw new UnsupportedOperationException("Plug nic is not supported
for vm of type " + vm.getType());
+ }
- @Override
- public boolean recreateNeeded(
- VirtualMachineProfile<DomainRouterVO> profile, long
hostId,
- Commands cmds, ReservationContext context) {
- // TODO Auto-generated method stub
- return false;
- }
+ @Override
+ public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException {
+ //not supported
+ throw new UnsupportedOperationException("Unplug nic is not supported
for vm of type " + vm.getType());
++ }
++
++
++ @Override
++ public boolean recreateNeeded(
++ VirtualMachineProfile<DomainRouterVO> profile, long hostId, Commands
cmds, ReservationContext context) {
++ // TODO Auto-generated method stub
++ return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
index b23476e,6d20fb2..1a09503
--- a/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
+++ b/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
@@@ -352,19 -346,11 +352,27 @@@ public class AgentBasedConsoleProxyMana
public void finalizeExpunge(ConsoleProxyVO proxy) {
}
- @Override
+ @Override
+ public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException,
+ InsufficientCapacityException {
+ //not supported
+ throw new UnsupportedOperationException("Plug nic is not supported
for vm of type " + vm.getType());
+ }
+
+
+ @Override
+ public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException {
+ //not supported
+ throw new UnsupportedOperationException("Unplug nic is not supported
for vm of type " + vm.getType());
+ }
++
++ @Override
+ public boolean recreateNeeded(
+ VirtualMachineProfile<ConsoleProxyVO> profile, long
hostId,
+ Commands cmds, ReservationContext context) {
+ // TODO Auto-generated method stub
+ return false;
- }
-}
++ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 1d160db,ec4f685..326dbb4
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@@ -2008,19 -2007,11 +2008,28 @@@ public class ConsoleProxyManagerImpl im
return _hashKey;
}
- @Override
- public boolean recreateNeeded(
+ @Override
+ public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException,
+ InsufficientCapacityException {
+ //not supported
+ throw new UnsupportedOperationException("Plug nic is not supported
for vm of type " + vm.getType());
+ }
+
+
+ @Override
+ public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException {
+ //not supported
+ throw new UnsupportedOperationException("Unplug nic is not supported
for vm of type " + vm.getType());
+ }
++
++
++ @Override
++ public boolean recreateNeeded(
+ VirtualMachineProfile<ConsoleProxyVO> profile, long
hostId,
+ Commands cmds, ReservationContext context) {
+ // TODO Auto-generated method stub
+ return false;
- }
++ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/network/guru/GuestNetworkGuru.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/guru/GuestNetworkGuru.java
index 714dd50,cd5f551..d1dc286
--- a/server/src/com/cloud/network/guru/GuestNetworkGuru.java
+++ b/server/src/com/cloud/network/guru/GuestNetworkGuru.java
@@@ -41,16 -42,19 +42,17 @@@ import com.cloud.exception.Insufficient
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.network.IPAddressVO;
import com.cloud.network.Network;
--import com.cloud.network.Network.GuestType;
import com.cloud.network.Network.State;
import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkProfile;
import com.cloud.network.NetworkVO;
-import com.cloud.network.PhysicalNetwork;
-import com.cloud.network.PhysicalNetwork.IsolationMethod;
-import com.cloud.network.PhysicalNetworkVO;
import com.cloud.network.Networks.AddressFormat;
import com.cloud.network.Networks.BroadcastDomainType;
-import com.cloud.network.Networks.IsolationType;
import com.cloud.network.Networks.Mode;
import com.cloud.network.Networks.TrafficType;
++import com.cloud.network.PhysicalNetwork;
++import com.cloud.network.PhysicalNetwork.IsolationMethod;
+import com.cloud.network.PhysicalNetworkVO;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.PhysicalNetworkDao;
@@@ -93,7 -97,10 +95,10 @@@ public abstract class GuestNetworkGuru
Random _rand = new Random(System.currentTimeMillis());
private static final TrafficType[] _trafficTypes = {TrafficType.Guest};
-
+
+ // Currently set to anything except STT for the Nicira integration.
+ protected IsolationMethod[] _isolationMethods;
+
String _defaultGateway;
String _defaultCidr;
@@@ -115,15 -123,44 +121,50 @@@
public TrafficType[] getSupportedTrafficType() {
return _trafficTypes;
}
-
+
- protected boolean canHandle(NetworkOffering offering, DataCenter dc) {
+ public boolean isMyIsolationMethod(PhysicalNetwork physicalNetwork) {
+ if (physicalNetwork == null) {
+ // Can't tell if there is no physical network
+ return false;
+ }
+
+ List<String> methods = physicalNetwork.getIsolationMethods();
+ if (methods.isEmpty()) {
+ // The empty isolation method is assumed to be VLAN
+ s_logger.debug("Empty physical isolation type for physical
network " + physicalNetwork.getUuid());
+ methods = new ArrayList<String>(1);
+ methods.add("VLAN");
+ }
+
+ for (IsolationMethod m : _isolationMethods) {
+ if (methods.contains(m.toString())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public IsolationMethod[] getIsolationMethods() {
+ return _isolationMethods;
+ }
+
+ protected abstract boolean canHandle(NetworkOffering offering, final
NetworkType networkType, PhysicalNetwork physicalNetwork);
+ /* protected boolean canHandle(NetworkOffering offering, final NetworkType
networkType, final List<String> isolationMethods) {
// This guru handles only Guest Isolated network that supports Source
nat service
++<<<<<<< HEAD
+ if (dc.getNetworkType() == NetworkType.Advanced &&
isMyTrafficType(offering.getTrafficType())
+ && offering.getGuestType() == Network.GuestType.Isolated &&
!offering.isSystemOnly()) {
++=======
+ if (networkType == NetworkType.Advanced
+ && isMyTrafficType(offering.getTrafficType())
+ && offering.getGuestType() == Network.GuestType.Isolated
+ && isMyIsolationMethod(isolationMethods)) {
++>>>>>>> master
return true;
} else {
- s_logger.trace("We only take care of Guest networks of type " +
GuestType.Isolated + " in zone of type " + NetworkType.Advanced);
+ s_logger.trace("We only take care of non-system Guest networks of
type " + GuestType.Isolated + " in zone of type "
+ + NetworkType.Advanced);
return false;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --cc
server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 544ca73,766c769..41ce6cc
---
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@@ -3185,26 -2972,17 +3185,40 @@@ public class VirtualNetworkApplianceMan
return routerControlIpAddress;
}
+
+
+ protected String getRouterIpInNetwork(long networkId, long instanceId) {
+ return _nicDao.getIpAddress(networkId, instanceId);
+ }
+
+ @Override
+ public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
ReservationContext context, DeployDestination dest)
+ throws ConcurrentOperationException, ResourceUnavailableException,
+ InsufficientCapacityException {
+ //not supported
+ throw new UnsupportedOperationException("Plug nic is not supported
for vm of type " + vm.getType());
+ }
+
++
+ @Override
+ public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
ReservationContext context, DeployDestination dest)
+ throws ConcurrentOperationException, ResourceUnavailableException
{
+ //not supported
+ throw new UnsupportedOperationException("Unplug nic is not supported
for vm of type " + vm.getType());
+ }
+
++
+ @Override
+ public boolean recreateNeeded(
+ VirtualMachineProfile<DomainRouterVO> profile, long
hostId,
+ Commands cmds, ReservationContext context) {
+ //asssume that if failed to ssh into router, meaning router is
crashed
+ CheckSshAnswer answer = (CheckSshAnswer)
cmds.getAnswer("checkSsh");
+ if (answer == null || !answer.getResult()) {
+ return true;
+ }
+
+ return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --cc
server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index 0dd1e42,1121bb1..df897d9
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@@ -1452,20 -1450,12 +1452,29 @@@ public class SecondaryStorageManagerImp
}
return null;
}
+
+ @Override
+ public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException,
+ InsufficientCapacityException {
+ //not supported
+ throw new UnsupportedOperationException("Plug nic is not supported
for vm of type " + vm.getType());
+ }
- @Override
- public boolean recreateNeeded(
+
+ @Override
+ public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
+ ReservationContext context, DeployDestination dest) throws
ConcurrentOperationException, ResourceUnavailableException {
+ //not supported
+ throw new UnsupportedOperationException("Unplug nic is not supported
for vm of type " + vm.getType());
+ }
++
++
++ @Override
++ public boolean recreateNeeded(
+ VirtualMachineProfile<SecondaryStorageVmVO> profile,
long hostId,
+ Commands cmds, ReservationContext context) {
+ // TODO Auto-generated method stub
+ return false;
- }
++ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/vm/UserVmManagerImpl.java
index 2c17fdc,649e215..917e3e6
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@@ -3552,6 -3534,12 +3552,14 @@@ public class UserVmManagerImpl implemen
s_logger.info("AssignVM: vm " + vm.getInstanceName() + " now belongs
to account " + cmd.getAccountName());
return vm;
}
++
++
+ @Override
+ public boolean recreateNeeded(VirtualMachineProfile<UserVmVO> profile,
+ long hostId, Commands cmds, ReservationContext
context) {
+ // TODO Auto-generated method stub
+ return false;
+ }
@Override
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/vm/VirtualMachineGuru.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index c85a80f,ac8fd2a..64efd87
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@@ -809,9 -808,13 +812,13 @@@ public class VirtualMachineManagerImpl
_haMgr.scheduleStop(vm, destHostId,
WorkType.ForceStop);
throw new ExecutionException("Unable to stop
" + vm + " so we are unable to retry the start operation");
}
+ if (vmGuru.recreateNeeded(vmProfile, destHostId,
cmds, ctx)) {
+ recreate = true;
+ } else {
- throw new ExecutionException("Unable to start "
+ vm + " due to error in finalizeStart, not retrying");
- }
+ throw new ExecutionException("Unable to start " +
vm + " due to error in finalizeStart, not retrying");
}
}
++ }
s_logger.info("Unable to start VM on " + dest.getHost() +
" due to " + (startAnswer == null ? " no start answer" :
startAnswer.getDetails()));
} catch (OperationTimedoutException e) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a1acfd3b/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --cc setup/db/create-schema.sql
index 7cd030d,a15222a..f73410c
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@@ -137,10 -137,10 +137,12 @@@ DROP TABLE IF EXISTS `cloud`.`op_dc_sto
DROP TABLE IF EXISTS `cloud`.`cluster_vsm_map`;
DROP TABLE IF EXISTS `cloud`.`virtual_supervisor_module`;
DROP TABLE IF EXISTS `cloud`.`port_profile`;
+DROP TABLE IF EXISTS `cloud`.`s2s_customer_gateway`;
+DROP TABLE IF EXISTS `cloud`.`s2s_vpn_gateway`;
+DROP TABLE IF EXISTS `cloud`.`s2s_vpn_connection`;
+ DROP TABLE IF EXISTS `cloud`,`external_nicira_nvp_devices`;
+ DROP TABLE IF EXISTS `cloud`,`nicira_nvp_nic_map`;
-
CREATE TABLE `cloud`.`version` (
`id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT COMMENT 'id',
`version` char(40) NOT NULL UNIQUE COMMENT 'version',
@@@ -2323,5 -2155,24 +2325,25 @@@ CREATE TABLE `cloud`.`resource_tags`
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ CREATE TABLE `cloud`.`external_nicira_nvp_devices` (
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `uuid` varchar(255) UNIQUE,
+ `physical_network_id` bigint unsigned NOT NULL COMMENT 'id of the physical
network in to which nicira nvp device is added',
+ `provider_name` varchar(255) NOT NULL COMMENT 'Service Provider name
corresponding to this nicira nvp device',
+ `device_name` varchar(255) NOT NULL COMMENT 'name of the nicira nvp device',
+ `host_id` bigint unsigned NOT NULL COMMENT 'host id coresponding to the
external nicira nvp device',
+ PRIMARY KEY (`id`),
+ CONSTRAINT `fk_external_nicira_nvp_devices__host_id` FOREIGN KEY
(`host_id`) REFERENCES `host`(`id`) ON DELETE CASCADE,
+ CONSTRAINT `fk_external_nicira_nvp_devices__physical_network_id` FOREIGN
KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE
CASCADE
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ CREATE TABLE `cloud`.`nicira_nvp_nic_map` (
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `logicalswitch` varchar(255) NOT NULL COMMENT 'nicira uuid of logical
switch this port is provisioned on',
+ `logicalswitchport` varchar(255) UNIQUE COMMENT 'nicira uuid of this
logical switch port',
+ `nic` varchar(255) UNIQUE COMMENT 'cloudstack uuid of the nic connected to
this logical switch port',
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
SET foreign_key_checks = 1;
+