Divided NetworkManagerImpl into two files: NetworkManagerImpl and IpAddressManagerImpl

This commit is contained in:
Alex Huang 2013-08-15 17:06:17 -07:00
parent 564502abd7
commit 092e20204a
28 changed files with 502 additions and 2417 deletions

View File

@ -1,41 +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.engine.cloud.entity.api;
import com.cloud.utils.component.ComponentContext;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;
@Component
public class VirtualMachineEntityFactory implements FactoryBean<VirtualMachineEntityImpl>{
@Override
public VirtualMachineEntityImpl getObject() throws Exception {
return ComponentContext.inject(VirtualMachineEntityImpl.class.newInstance());
}
@Override
public Class<?> getObjectType() {
return VirtualMachineEntityImpl.class;
}
@Override
public boolean isSingleton() {
return false;
}
}

View File

@ -23,9 +23,10 @@ import java.net.URI;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.cloudstack.api.ApiConstants;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod; import com.cloud.dc.Pod;
import com.cloud.dc.PodVlanMapVO; import com.cloud.dc.PodVlanMapVO;
@ -41,6 +42,7 @@ import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.AddressFormat;
@ -54,7 +56,6 @@ import com.cloud.offerings.dao.NetworkOfferingDao;
import com.cloud.utils.db.Transaction; import com.cloud.utils.db.Transaction;
import com.cloud.vm.NicProfile; import com.cloud.vm.NicProfile;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
@Local(value = { NetworkGuru.class }) @Local(value = { NetworkGuru.class })
@ -74,6 +75,8 @@ public class BaremetaNetworkGuru extends DirectPodBasedNetworkGuru {
NetworkOfferingDao _networkOfferingDao; NetworkOfferingDao _networkOfferingDao;
@Inject @Inject
PodVlanMapDao _podVlanDao; PodVlanMapDao _podVlanDao;
@Inject
IpAddressManager _ipAddrMgr;
@Override @Override
public void reserve(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) public void reserve(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context)
@ -106,7 +109,7 @@ public class BaremetaNetworkGuru extends DirectPodBasedNetworkGuru {
txn.start(); txn.start();
// release the old ip here // release the old ip here
_networkMgr.markIpAsUnavailable(ipVO.getId()); _ipAddrMgr.markIpAsUnavailable(ipVO.getId());
_ipAddressDao.unassignIpAddress(ipVO.getId()); _ipAddressDao.unassignIpAddress(ipVO.getId());
txn.commit(); txn.commit();
@ -154,7 +157,7 @@ public class BaremetaNetworkGuru extends DirectPodBasedNetworkGuru {
DataCenter dc = _dcDao.findById(pod.getDataCenterId()); DataCenter dc = _dcDao.findById(pod.getDataCenterId());
if (nic.getIp4Address() == null) { if (nic.getIp4Address() == null) {
s_logger.debug(String.format("Requiring ip address: %s", nic.getIp4Address())); s_logger.debug(String.format("Requiring ip address: %s", nic.getIp4Address()));
PublicIp ip = _networkMgr.assignPublicIpAddress(dc.getId(), pod.getId(), vm.getOwner(), VlanType.DirectAttached, network.getId(), requiredIp, false); PublicIp ip = _ipAddrMgr.assignPublicIpAddress(dc.getId(), pod.getId(), vm.getOwner(), VlanType.DirectAttached, network.getId(), requiredIp, false);
nic.setIp4Address(ip.getAddress().toString()); nic.setIp4Address(ip.getAddress().toString());
nic.setFormat(AddressFormat.Ip4); nic.setFormat(AddressFormat.Ip4);
nic.setGateway(ip.getGateway()); nic.setGateway(ip.getGateway());

View File

@ -28,11 +28,11 @@ import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice; import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
import com.cloud.agent.api.AssociateAsaWithLogicalEdgeFirewallCommand; import com.cloud.agent.api.AssociateAsaWithLogicalEdgeFirewallCommand;
@ -62,8 +62,8 @@ import com.cloud.configuration.ConfigurationManager;
import com.cloud.dc.ClusterVO; import com.cloud.dc.ClusterVO;
import com.cloud.dc.ClusterVSMMapVO; import com.cloud.dc.ClusterVSMMapVO;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.Vlan;
import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.Vlan;
import com.cloud.dc.VlanVO; import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.ClusterVSMMapDao; import com.cloud.dc.dao.ClusterVSMMapDao;
@ -81,15 +81,15 @@ import com.cloud.host.dao.HostDao;
import com.cloud.host.dao.HostDetailsDao; import com.cloud.host.dao.HostDetailsDao;
import com.cloud.network.CiscoNexusVSMDeviceVO; import com.cloud.network.CiscoNexusVSMDeviceVO;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkModel;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.dao.PhysicalNetworkVO;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkModel;
import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress; import com.cloud.network.PublicIpAddress;
import com.cloud.network.addr.PublicIp; import com.cloud.network.addr.PublicIp;
import com.cloud.network.cisco.CiscoAsa1000vDevice; import com.cloud.network.cisco.CiscoAsa1000vDevice;
@ -107,6 +107,7 @@ import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.PhysicalNetworkDao; import com.cloud.network.dao.PhysicalNetworkDao;
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao; import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
import com.cloud.network.dao.PhysicalNetworkServiceProviderVO; import com.cloud.network.dao.PhysicalNetworkServiceProviderVO;
import com.cloud.network.dao.PhysicalNetworkVO;
import com.cloud.network.resource.CiscoVnmcResource; import com.cloud.network.resource.CiscoVnmcResource;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.TrafficType; import com.cloud.network.rules.FirewallRule.TrafficType;
@ -125,7 +126,6 @@ import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.NetUtils; import com.cloud.utils.net.NetUtils;
import com.cloud.vm.NicProfile; import com.cloud.vm.NicProfile;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.VirtualMachine.Type;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
@ -146,6 +146,8 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
NetworkManager _networkMgr; NetworkManager _networkMgr;
@Inject @Inject
NetworkModel _networkModel; NetworkModel _networkModel;
@Inject
IpAddressManager _ipAddrMgr;
@Inject @Inject
PhysicalNetworkDao _physicalNetworkDao; PhysicalNetworkDao _physicalNetworkDao;
@ -336,7 +338,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
HostVO ciscoVnmcHost = _hostDao.findById(ciscoVnmcDevice.getHostId()); HostVO ciscoVnmcHost = _hostDao.findById(ciscoVnmcDevice.getHostId());
_hostDao.loadDetails(ciscoVnmcHost); _hostDao.loadDetails(ciscoVnmcHost);
Account owner = context.getAccount(); Account owner = context.getAccount();
PublicIp sourceNatIp = _networkMgr.assignSourceNatIpAddressToGuestNetwork(owner, network); PublicIp sourceNatIp = _ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(owner, network);
String vlan = network.getBroadcastUri().getHost(); String vlan = network.getBroadcastUri().getHost();
long vlanId = Long.parseLong(vlan); long vlanId = Long.parseLong(vlan);
@ -362,14 +364,14 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
try { try {
Account caller = CallContext.current().getCallingAccount(); Account caller = CallContext.current().getCallingAccount();
long callerUserId = CallContext.current().getCallingUserId(); long callerUserId = CallContext.current().getCallingUserId();
outsideIp = _networkMgr.allocateIp(owner, false, caller, callerUserId, zone); outsideIp = _ipAddrMgr.allocateIp(owner, false, caller, callerUserId, zone);
} catch (ResourceAllocationException e) { } catch (ResourceAllocationException e) {
s_logger.error("Unable to allocate additional public Ip address. Exception details " + e); s_logger.error("Unable to allocate additional public Ip address. Exception details " + e);
return false; return false;
} }
try { try {
outsideIp = _networkMgr.associateIPToGuestNetwork(outsideIp.getId(), network.getId(), true); outsideIp = _ipAddrMgr.associateIPToGuestNetwork(outsideIp.getId(), network.getId(), true);
} catch (ResourceAllocationException e) { } catch (ResourceAllocationException e) {
s_logger.error("Unable to assign allocated additional public Ip " + outsideIp.getAddress().addr() + " to network with vlan " + vlanId + ". Exception details " + e); s_logger.error("Unable to assign allocated additional public Ip " + outsideIp.getAddress().addr() + " to network with vlan " + vlanId + ". Exception details " + e);
return false; return false;

View File

@ -16,6 +16,13 @@
// under the License. // under the License.
package com.cloud.network.element; package com.cloud.network.element;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -25,7 +32,6 @@ import javax.naming.ConfigurationException;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.internal.matchers.Any;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
@ -40,8 +46,8 @@ import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ConfigurationManager;
import com.cloud.dc.ClusterVSMMapVO; import com.cloud.dc.ClusterVSMMapVO;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.VlanVO;
import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.ClusterVSMMapDao; import com.cloud.dc.dao.ClusterVSMMapDao;
import com.cloud.dc.dao.VlanDao; import com.cloud.dc.dao.VlanDao;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
@ -51,12 +57,13 @@ import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.network.CiscoNexusVSMDeviceVO;
import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.CiscoNexusVSMDeviceVO;
import com.cloud.network.IpAddress;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkModel; import com.cloud.network.NetworkModel;
import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.BroadcastDomainType;
@ -73,16 +80,12 @@ import com.cloud.network.dao.NetworkServiceMapDao;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.PortForwardingRule; import com.cloud.network.rules.PortForwardingRule;
import com.cloud.network.rules.StaticNat; import com.cloud.network.rules.StaticNat;
import com.cloud.network.rules.StaticNatRule;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.utils.net.Ip; import com.cloud.utils.net.Ip;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
public class CiscoVnmcElementTest { public class CiscoVnmcElementTest {
CiscoVnmcElement _element = new CiscoVnmcElement(); CiscoVnmcElement _element = new CiscoVnmcElement();
@ -98,6 +101,7 @@ public class CiscoVnmcElementTest {
ClusterVSMMapDao _clusterVsmMapDao = mock(ClusterVSMMapDao.class); ClusterVSMMapDao _clusterVsmMapDao = mock(ClusterVSMMapDao.class);
CiscoNexusVSMDeviceDao _vsmDeviceDao = mock(CiscoNexusVSMDeviceDao.class); CiscoNexusVSMDeviceDao _vsmDeviceDao = mock(CiscoNexusVSMDeviceDao.class);
VlanDao _vlanDao = mock(VlanDao.class); VlanDao _vlanDao = mock(VlanDao.class);
IpAddressManager _ipAddrMgr = mock(IpAddressManager.class);
@Before @Before
public void setUp() throws ConfigurationException { public void setUp() throws ConfigurationException {
@ -206,7 +210,7 @@ public class CiscoVnmcElementTest {
when(publicIp.getNetmask()).thenReturn("1.1.1.1"); when(publicIp.getNetmask()).thenReturn("1.1.1.1");
when(publicIp.getMacAddress()).thenReturn(null); when(publicIp.getMacAddress()).thenReturn(null);
when(publicIp.isOneToOneNat()).thenReturn(true); when(publicIp.isOneToOneNat()).thenReturn(true);
when(_networkMgr.assignSourceNatIpAddressToGuestNetwork(acc, network)).thenReturn(publicIp); when(_ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(acc, network)).thenReturn(publicIp);
VlanVO vlanVO = mock(VlanVO.class); VlanVO vlanVO = mock(VlanVO.class);
when(vlanVO.getVlanGateway()).thenReturn("1.1.1.1"); when(vlanVO.getVlanGateway()).thenReturn("1.1.1.1");

View File

@ -75,6 +75,7 @@ import com.cloud.exception.ResourceUnavailableException;
import com.cloud.exception.StorageUnavailableException; import com.cloud.exception.StorageUnavailableException;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.ElasticLbVmMapVO; import com.cloud.network.ElasticLbVmMapVO;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
@ -164,6 +165,8 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements Elast
@Inject @Inject
DataCenterDao _dcDao = null; DataCenterDao _dcDao = null;
@Inject @Inject
IpAddressManager _ipAddrMgr;
@Inject
protected NetworkDao _networkDao; protected NetworkDao _networkDao;
@Inject @Inject
protected NetworkOfferingDao _networkOfferingDao; protected NetworkOfferingDao _networkOfferingDao;
@ -585,7 +588,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements Elast
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
PublicIp ip = _networkMgr.assignPublicIpAddress(frontEndNetwork.getDataCenterId(), null, account, VlanType.DirectAttached, frontEndNetwork.getId(), null, true); PublicIp ip = _ipAddrMgr.assignPublicIpAddress(frontEndNetwork.getDataCenterId(), null, account, VlanType.DirectAttached, frontEndNetwork.getId(), null, true);
IPAddressVO ipvo = _ipAddressDao.findById(ip.getId()); IPAddressVO ipvo = _ipAddressDao.findById(ip.getId());
ipvo.setAssociatedWithNetworkId(frontEndNetwork.getId()); ipvo.setAssociatedWithNetworkId(frontEndNetwork.getId());
_ipAddressDao.update(ipvo.getId(), ipvo); _ipAddressDao.update(ipvo.getId(), ipvo);
@ -600,7 +603,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements Elast
IPAddressVO ipvo = _ipAddressDao.findById(ipId); IPAddressVO ipvo = _ipAddressDao.findById(ipId);
ipvo.setAssociatedWithNetworkId(null); ipvo.setAssociatedWithNetworkId(null);
_ipAddressDao.update(ipvo.getId(), ipvo); _ipAddressDao.update(ipvo.getId(), ipvo);
_networkMgr.disassociatePublicIpAddress(ipId, userId, caller); _ipAddrMgr.disassociatePublicIpAddress(ipId, userId, caller);
_ipAddressDao.unassignIpAddress(ipId); _ipAddressDao.unassignIpAddress(ipId);
} }

View File

@ -61,6 +61,7 @@ import com.cloud.exception.OperationTimedoutException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.exception.StorageUnavailableException; import com.cloud.exception.StorageUnavailableException;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
@ -130,6 +131,8 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
private String _mgmtCidr; private String _mgmtCidr;
private long _internalLbVmOfferingId = 0L; private long _internalLbVmOfferingId = 0L;
@Inject
IpAddressManager _ipAddrMgr;
@Inject VirtualMachineManager _itMgr; @Inject VirtualMachineManager _itMgr;
@Inject DomainRouterDao _internalLbVmDao; @Inject DomainRouterDao _internalLbVmDao;
@Inject ConfigurationDao _configDao; @Inject ConfigurationDao _configDao;
@ -661,7 +664,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
if (guestIp != null) { if (guestIp != null) {
guestNic.setIp4Address(guestIp.addr()); guestNic.setIp4Address(guestIp.addr());
} else { } else {
guestNic.setIp4Address(_ntwkMgr.acquireGuestIpAddress(guestNetwork, null)); guestNic.setIp4Address(_ipAddrMgr.acquireGuestIpAddress(guestNetwork, null));
} }
guestNic.setGateway(guestNetwork.getGateway()); guestNic.setGateway(guestNetwork.getGateway());
guestNic.setBroadcastUri(guestNetwork.getBroadcastUri()); guestNic.setBroadcastUri(guestNetwork.getBroadcastUri());

View File

@ -18,6 +18,13 @@
*/ */
package com.cloud.network.guru; package com.cloud.network.guru;
import java.net.URI;
import javax.ejb.Local;
import javax.inject.Inject;
import org.apache.log4j.Logger;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.Vlan; import com.cloud.dc.Vlan;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
@ -25,25 +32,26 @@ import com.cloud.deploy.DeploymentPlan;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.network.*; import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.NetworkModel;
import com.cloud.network.NetworkProfile;
import com.cloud.network.Networks;
import com.cloud.network.addr.PublicIp; import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.IPAddressVO;
import com.cloud.network.dao.NetworkVO;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.user.AccountVO;
import com.cloud.user.dao.AccountDao;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
import com.cloud.utils.db.Transaction; import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.NetUtils; import com.cloud.vm.Nic;
import com.cloud.user.AccountVO; import com.cloud.vm.NicProfile;
import com.cloud.user.dao.AccountDao; import com.cloud.vm.ReservationContext;
import com.cloud.network.dao.NetworkVO; import com.cloud.vm.VirtualMachine;
import com.cloud.network.dao.IPAddressVO; import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.*;
import org.apache.log4j.Logger;
import java.net.URI;
import javax.ejb.Local;
import javax.inject.Inject;
@Local(value = NetworkGuru.class) @Local(value = NetworkGuru.class)
public class MidoNetPublicNetworkGuru extends PublicNetworkGuru { public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
@ -54,6 +62,8 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
NetworkModel _networkModel; NetworkModel _networkModel;
@Inject @Inject
AccountDao _accountDao; AccountDao _accountDao;
@Inject
IpAddressManager _ipAddrMgr;
// Don't need to change traffic type stuff, public is fine // Don't need to change traffic type stuff, public is fine
@ -78,10 +88,11 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
super(); super();
} }
@Override
protected void getIp(NicProfile nic, DataCenter dc, VirtualMachineProfile vm, Network network) throws InsufficientVirtualNetworkCapcityException, protected void getIp(NicProfile nic, DataCenter dc, VirtualMachineProfile vm, Network network) throws InsufficientVirtualNetworkCapcityException,
InsufficientAddressCapacityException, ConcurrentOperationException { InsufficientAddressCapacityException, ConcurrentOperationException {
if (nic.getIp4Address() == null) { if (nic.getIp4Address() == null) {
PublicIp ip = _networkMgr.assignPublicIpAddress(dc.getId(), null, vm.getOwner(), Vlan.VlanType.VirtualNetwork, null, null, false); PublicIp ip = _ipAddrMgr.assignPublicIpAddress(dc.getId(), null, vm.getOwner(), Vlan.VlanType.VirtualNetwork, null, null, false);
nic.setIp4Address(ip.getAddress().toString()); nic.setIp4Address(ip.getAddress().toString());
nic.setGateway(ip.getGateway()); nic.setGateway(ip.getGateway());
@ -201,7 +212,7 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
_networkMgr.markIpAsUnavailable(ip.getId()); _ipAddrMgr.markIpAsUnavailable(ip.getId());
_ipAddressDao.unassignIpAddress(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId());
txn.commit(); txn.commit();

View File

@ -28,10 +28,11 @@ import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
import com.cloud.agent.api.ConfigurePortForwardingRulesOnLogicalRouterAnswer; import com.cloud.agent.api.ConfigurePortForwardingRulesOnLogicalRouterAnswer;
import com.cloud.agent.api.ConfigurePortForwardingRulesOnLogicalRouterCommand; import com.cloud.agent.api.ConfigurePortForwardingRulesOnLogicalRouterCommand;
@ -74,6 +75,7 @@ import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.host.dao.HostDetailsDao; import com.cloud.host.dao.HostDetailsDao;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
@ -117,7 +119,6 @@ import com.cloud.utils.net.NetUtils;
import com.cloud.vm.NicProfile; import com.cloud.vm.NicProfile;
import com.cloud.vm.NicVO; import com.cloud.vm.NicVO;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicDao;
@ -166,6 +167,8 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer {
NetworkServiceMapDao _ntwkSrvcDao; NetworkServiceMapDao _ntwkSrvcDao;
@Inject @Inject
VlanDao _vlanDao; VlanDao _vlanDao;
@Inject
IpAddressManager _ipAddrMgr;
@Override @Override
public Map<Service, Map<Capability, String>> getCapabilities() { public Map<Service, Map<Capability, String>> getCapabilities() {
@ -259,7 +262,7 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer {
network.getId(), Service.SourceNat, Provider.NiciraNvp)) { network.getId(), Service.SourceNat, Provider.NiciraNvp)) {
s_logger.debug("Apparently we are supposed to provide SourceNat on this network"); s_logger.debug("Apparently we are supposed to provide SourceNat on this network");
PublicIp sourceNatIp = _networkManager PublicIp sourceNatIp = _ipAddrMgr
.assignSourceNatIpAddressToGuestNetwork(owner, network); .assignSourceNatIpAddressToGuestNetwork(owner, network);
String publicCidr = sourceNatIp.getAddress().addr() + "/" String publicCidr = sourceNatIp.getAddress().addr() + "/"
+ NetUtils.getCidrSize(sourceNatIp.getVlanNetmask()); + NetUtils.getCidrSize(sourceNatIp.getVlanNetmask());

View File

@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -132,6 +133,7 @@ import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
@ -203,8 +205,6 @@ import com.cloud.vm.dao.NicIpAliasDao;
import com.cloud.vm.dao.NicIpAliasVO; import com.cloud.vm.dao.NicIpAliasVO;
import com.cloud.vm.dao.NicSecondaryIpDao; import com.cloud.vm.dao.NicSecondaryIpDao;
import java.util.Arrays;
@Local(value = { ConfigurationManager.class, ConfigurationService.class }) @Local(value = { ConfigurationManager.class, ConfigurationService.class })
public class ConfigurationManagerImpl extends ManagerBase implements ConfigurationManager, ConfigurationService { public class ConfigurationManagerImpl extends ManagerBase implements ConfigurationManager, ConfigurationService {
public static final Logger s_logger = Logger.getLogger(ConfigurationManagerImpl.class.getName()); public static final Logger s_logger = Logger.getLogger(ConfigurationManagerImpl.class.getName());
@ -303,6 +303,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
public ManagementService _mgr; public ManagementService _mgr;
@Inject @Inject
DedicatedResourceDao _dedicatedDao; DedicatedResourceDao _dedicatedDao;
@Inject
IpAddressManager _ipAddrMgr;
// FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao? // FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao?
@Inject @Inject
@ -3208,7 +3210,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
+ " belonging to the range has firewall rules applied. Cleanup the rules first"); + " belonging to the range has firewall rules applied. Cleanup the rules first");
} }
// release public ip address here // release public ip address here
success = success && _networkMgr.disassociatePublicIpAddress(ip.getId(), userId, caller); success = success && _ipAddrMgr.disassociatePublicIpAddress(ip.getId(), userId, caller);
} }
if (!success) { if (!success) {
s_logger.warn("Some ip addresses failed to be released as a part of vlan " + vlanDbId s_logger.warn("Some ip addresses failed to be released as a part of vlan " + vlanDbId
@ -3391,7 +3393,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
s_logger.debug("Releasing Public IP addresses" + ip + " of vlan " + vlanDbId s_logger.debug("Releasing Public IP addresses" + ip + " of vlan " + vlanDbId
+ " as part of Public IP" + " range release to the system pool"); + " as part of Public IP" + " range release to the system pool");
} }
success = success && _networkMgr.disassociatePublicIpAddress(ip.getId(), userId, caller); success = success && _ipAddrMgr.disassociatePublicIpAddress(ip.getId(), userId, caller);
} else { } else {
ipsInUse.add(ip); ipsInUse.add(ip);
} }

View File

@ -26,13 +26,13 @@ import java.util.UUID;
import javax.inject.Inject; import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.response.ExternalLoadBalancerResponse; import org.apache.cloudstack.api.response.ExternalLoadBalancerResponse;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice; import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupCommand;
@ -184,6 +184,8 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
ExternalFirewallDeviceDao _externalFirewallDeviceDao; ExternalFirewallDeviceDao _externalFirewallDeviceDao;
@Inject @Inject
protected HostPodDao _podDao = null; protected HostPodDao _podDao = null;
@Inject
IpAddressManager _ipAddrMgr;
private long _defaultLbCapacity; private long _defaultLbCapacity;
private static final org.apache.log4j.Logger s_logger = Logger.getLogger(ExternalLoadBalancerDeviceManagerImpl.class); private static final org.apache.log4j.Logger s_logger = Logger.getLogger(ExternalLoadBalancerDeviceManagerImpl.class);
@ -507,7 +509,13 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
// acquire a public IP to associate with lb appliance (used as subnet IP to make the // acquire a public IP to associate with lb appliance (used as subnet IP to make the
// appliance part of private network) // appliance part of private network)
PublicIp publicIp = _networkMgr.assignPublicIpAddress(guestConfig.getDataCenterId(), null, _accountMgr.getSystemAccount(), VlanType.VirtualNetwork, null, null, false); PublicIp publicIp = _ipAddrMgr.assignPublicIpAddress(guestConfig.getDataCenterId(),
null,
_accountMgr.getSystemAccount(),
VlanType.VirtualNetwork,
null,
null,
false);
String publicIPNetmask = publicIp.getVlanNetmask(); String publicIPNetmask = publicIp.getVlanNetmask();
String publicIPgateway = publicIp.getVlanGateway(); String publicIPgateway = publicIp.getVlanGateway();
String publicIPVlanTag = publicIp.getVlanTag(); String publicIPVlanTag = publicIp.getVlanTag();
@ -544,7 +552,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
// release the public & private IP back to dc pool, as the load balancer // release the public & private IP back to dc pool, as the load balancer
// appliance is now destroyed // appliance is now destroyed
_dcDao.releasePrivateIpAddress(lbIP, guestConfig.getDataCenterId(), null); _dcDao.releasePrivateIpAddress(lbIP, guestConfig.getDataCenterId(), null);
_networkMgr.disassociatePublicIpAddress(publicIp.getId(), _accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount()); _ipAddrMgr.disassociatePublicIpAddress(publicIp.getId(), _accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount());
} }
} catch (Exception e) { } catch (Exception e) {
s_logger.warn("Failed to destroy load balancer appliance created for the network" + guestConfig.getId() + " due to " + e.getMessage()); s_logger.warn("Failed to destroy load balancer appliance created for the network" + guestConfig.getId() + " due to " + e.getMessage());
@ -696,7 +704,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
// release the public IP allocated for this LB appliance // release the public IP allocated for this LB appliance
DetailVO publicIpDetail = _hostDetailDao.findDetail(lbHost.getId(), "publicip"); DetailVO publicIpDetail = _hostDetailDao.findDetail(lbHost.getId(), "publicip");
IPAddressVO ipVo = _ipAddressDao.findByIpAndDcId(guestConfig.getDataCenterId(), publicIpDetail.toString()); IPAddressVO ipVo = _ipAddressDao.findByIpAndDcId(guestConfig.getDataCenterId(), publicIpDetail.toString());
_networkMgr.disassociatePublicIpAddress(ipVo.getId(), _accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount()); _ipAddrMgr.disassociatePublicIpAddress(ipVo.getId(), _accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount());
} else { } else {
deviceMapLock.unlock(); deviceMapLock.unlock();
} }
@ -763,7 +771,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
String loadBalancingIpAddress = existedGuestIp; String loadBalancingIpAddress = existedGuestIp;
if (loadBalancingIpAddress == null) { if (loadBalancingIpAddress == null) {
loadBalancingIpAddress = _networkMgr.acquireGuestIpAddress(network, null); loadBalancingIpAddress = _ipAddrMgr.acquireGuestIpAddress(network, null);
} }
if (loadBalancingIpAddress == null) { if (loadBalancingIpAddress == null) {
@ -803,7 +811,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
// Find the NIC that the mapping refers to // Find the NIC that the mapping refers to
loadBalancingIpNic = _nicDao.findById(mapping.getNicId()); loadBalancingIpNic = _nicDao.findById(mapping.getNicId());
int count = _networkMgr.getRuleCountForIp(sourceIpId, Purpose.LoadBalancing, FirewallRule.State.Active); int count = _ipAddrMgr.getRuleCountForIp(sourceIpId, Purpose.LoadBalancing, FirewallRule.State.Active);
if (count == 0) { if (count == 0) {
// On the firewall provider for the network, delete the static NAT rule between the source IP // On the firewall provider for the network, delete the static NAT rule between the source IP
// address and the load balancing IP address // address and the load balancing IP address
@ -984,7 +992,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
} }
// Acquire a self-ip address from the guest network IP address range // Acquire a self-ip address from the guest network IP address range
selfIp = _networkMgr.acquireGuestIpAddress(guestConfig, null); selfIp = _ipAddrMgr.acquireGuestIpAddress(guestConfig, null);
if (selfIp == null) { if (selfIp == null) {
String msg = "failed to acquire guest IP address so not implementing the network on the external load balancer "; String msg = "failed to acquire guest IP address so not implementing the network on the external load balancer ";
s_logger.error(msg); s_logger.error(msg);

View File

@ -22,9 +22,6 @@ import java.util.Map;
import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.deploy.DataCenterDeployment; import com.cloud.deploy.DataCenterDeployment;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
import com.cloud.deploy.DeploymentPlan; import com.cloud.deploy.DeploymentPlan;
@ -36,17 +33,13 @@ import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.IPAddressVO;
import com.cloud.network.dao.NetworkVO; import com.cloud.network.dao.NetworkVO;
import com.cloud.network.element.DhcpServiceProvider; import com.cloud.network.element.DhcpServiceProvider;
import com.cloud.network.element.LoadBalancingServiceProvider; import com.cloud.network.element.LoadBalancingServiceProvider;
import com.cloud.network.element.StaticNatServiceProvider; import com.cloud.network.element.StaticNatServiceProvider;
import com.cloud.network.element.UserDataServiceProvider; import com.cloud.network.element.UserDataServiceProvider;
import com.cloud.network.guru.NetworkGuru; import com.cloud.network.guru.NetworkGuru;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.network.rules.StaticNat;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -65,37 +58,7 @@ import com.cloud.vm.VirtualMachineProfile;
* *
*/ */
public interface NetworkManager { public interface NetworkManager {
/**
* Assigns a new public ip address.
*
* @param dcId
* @param podId
* TODO
* @param owner
* @param type
* @param networkId
* @param requestedIp
* TODO
* @param allocatedBy
* TODO
* @return
* @throws InsufficientAddressCapacityException
*/
PublicIp assignPublicIpAddress(long dcId, Long podId, Account owner, VlanType type, Long networkId, String requestedIp,
boolean isSystem) throws InsufficientAddressCapacityException;
/**
* Do all of the work of releasing public ip addresses. Note that if this method fails, there can be side effects.
*
* @param userId
* @param caller
* TODO
* @param IpAddress
* @return true if it did; false if it didn't
*/
public boolean disassociatePublicIpAddress(long id, long userId, Account caller);
List<NetworkVO> setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault) List<NetworkVO> setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault)
throws ConcurrentOperationException; throws ConcurrentOperationException;
@ -117,8 +80,6 @@ public interface NetworkManager {
List<NicProfile> getNicProfiles(VirtualMachine vm); List<NicProfile> getNicProfiles(VirtualMachine vm);
boolean applyRules(List<? extends FirewallRule> rules, FirewallRule.Purpose purpose, NetworkRuleApplier applier, boolean continueOnError) throws ResourceUnavailableException;
Pair<NetworkGuru, NetworkVO> implementNetwork(long networkId, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, Pair<NetworkGuru, NetworkVO> implementNetwork(long networkId, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException,
InsufficientCapacityException; InsufficientCapacityException;
@ -161,62 +122,14 @@ public interface NetworkManager {
Boolean displayNetworkEnabled, String isolatedPvlan) Boolean displayNetworkEnabled, String isolatedPvlan)
throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException; throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException;
/**
* @throws ResourceAllocationException TODO
* @throws InsufficientCapacityException
* Associates an ip address list to an account. The list of ip addresses are all addresses associated
* with the
* given vlan id.
* @param userId
* @param accountId
* @param zoneId
* @param vlanId
* @throws InsufficientAddressCapacityException
* @throws
*/
boolean associateIpAddressListToAccount(long userId, long accountId, long zoneId, Long vlanId, Network guestNetwork) throws InsufficientCapacityException, ConcurrentOperationException,
ResourceUnavailableException, ResourceAllocationException;
UserDataServiceProvider getPasswordResetProvider(Network network); UserDataServiceProvider getPasswordResetProvider(Network network);
UserDataServiceProvider getSSHKeyResetProvider(Network network); UserDataServiceProvider getSSHKeyResetProvider(Network network);
boolean applyIpAssociations(Network network, boolean continueOnError) throws ResourceUnavailableException;
boolean applyIpAssociations(Network network, boolean rulesRevoked, boolean continueOnError, List<? extends PublicIpAddress> publicIps) throws ResourceUnavailableException;
boolean startNetwork(long networkId, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException; boolean startNetwork(long networkId, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
IPAddressVO markIpAsUnavailable(long addrId);
public String acquireGuestIpAddress(Network network, String requestedIp);
boolean applyStaticNats(List<? extends StaticNat> staticNats, boolean continueOnError, boolean forRevoke) throws ResourceUnavailableException;
boolean reallocate(VirtualMachineProfile vm, DataCenterDeployment dest) throws InsufficientCapacityException, ConcurrentOperationException; boolean reallocate(VirtualMachineProfile vm, DataCenterDeployment dest) throws InsufficientCapacityException, ConcurrentOperationException;
IpAddress assignSystemIp(long networkId, Account owner,
boolean forElasticLb, boolean forElasticIp)
throws InsufficientAddressCapacityException;
boolean handleSystemIpRelease(IpAddress ip);
void allocateDirectIp(NicProfile nic, DataCenter dc,
VirtualMachineProfile vm,
Network network, String requestedIpv4, String requestedIpv6)
throws InsufficientVirtualNetworkCapcityException,
InsufficientAddressCapacityException;
/**
* @param owner
* @param guestNetwork
* @return
* @throws ConcurrentOperationException
* @throws InsufficientAddressCapacityException
*/
PublicIp assignSourceNatIpAddressToGuestNetwork(Account owner, Network guestNetwork) throws InsufficientAddressCapacityException, ConcurrentOperationException;
/** /**
* @param requested * @param requested
* @param network * @param network
@ -258,30 +171,6 @@ public interface NetworkManager {
void removeNic(VirtualMachineProfile vm, Nic nic); void removeNic(VirtualMachineProfile vm, Nic nic);
/**
* @param ipAddrId
* @param networkId
* @param releaseOnFailure TODO
*/
IPAddressVO associateIPToGuestNetwork(long ipAddrId, long networkId, boolean releaseOnFailure) throws ResourceAllocationException, ResourceUnavailableException,
InsufficientAddressCapacityException, ConcurrentOperationException;
IpAddress allocatePortableIp(Account ipOwner, Account caller, long dcId, Long networkId, Long vpcID)
throws ConcurrentOperationException, ResourceAllocationException, InsufficientAddressCapacityException;
boolean releasePortableIpAddress(long addrId);
IPAddressVO associatePortableIPToGuestNetwork(long ipAddrId, long networkId, boolean releaseOnFailure) throws ResourceAllocationException, ResourceUnavailableException,
InsufficientAddressCapacityException, ConcurrentOperationException;
IPAddressVO disassociatePortableIPToGuestNetwork(long ipAddrId, long networkId) throws ResourceAllocationException, ResourceUnavailableException,
InsufficientAddressCapacityException, ConcurrentOperationException;
boolean isPortableIpTransferableFromNetwork(long ipAddrId, long networkId);
void transferPortableIP(long ipAddrId, long currentNetworkId, long newNetworkId) throws ResourceAllocationException, ResourceUnavailableException,
InsufficientAddressCapacityException, ConcurrentOperationException;;
/** /**
* @param network * @param network
* @param provider * @param provider
@ -318,24 +207,6 @@ public interface NetworkManager {
InsufficientAddressCapacityException, ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException; InsufficientAddressCapacityException, ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException;
/**
* @param addr
*/
void markPublicIpAsAllocated(IPAddressVO addr);
/**
* @param owner
* @param guestNtwkId
* @param vpcId
* @param dcId
* @param isSourceNat
* @return
* @throws ConcurrentOperationException
* @throws InsufficientAddressCapacityException
*/
PublicIp assignDedicateIpAddress(Account owner, Long guestNtwkId, Long vpcId, long dcId, boolean isSourceNat) throws ConcurrentOperationException, InsufficientAddressCapacityException;
NetworkProfile convertNetworkToNetworkProfile(long networkId); NetworkProfile convertNetworkToNetworkProfile(long networkId);
/** /**
@ -357,9 +228,6 @@ public interface NetworkManager {
NetworkOfferingVO findById) throws ConcurrentOperationException, InsufficientAddressCapacityException, ResourceUnavailableException, InsufficientCapacityException; NetworkOfferingVO findById) throws ConcurrentOperationException, InsufficientAddressCapacityException, ResourceUnavailableException, InsufficientCapacityException;
IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller, long callerId,
DataCenter zone) throws ConcurrentOperationException, ResourceAllocationException, InsufficientAddressCapacityException;
Map<String, String> finalizeServicesAndProvidersForNetwork(NetworkOffering offering, Map<String, String> finalizeServicesAndProvidersForNetwork(NetworkOffering offering,
Long physicalNetworkId); Long physicalNetworkId);
@ -369,23 +237,14 @@ public interface NetworkManager {
boolean isNetworkInlineMode(Network network); boolean isNetworkInlineMode(Network network);
int getRuleCountForIp(Long addressId, FirewallRule.Purpose purpose, FirewallRule.State state);
LoadBalancingServiceProvider getLoadBalancingProviderForNetwork(Network network, Scheme lbScheme); LoadBalancingServiceProvider getLoadBalancingProviderForNetwork(Network network, Scheme lbScheme);
boolean isSecondaryIpSetForNic(long nicId); boolean isSecondaryIpSetForNic(long nicId);
public String allocateGuestIP(Account ipOwner, boolean isSystem, long zoneId, Long networkId, String requestedIp) throws InsufficientAddressCapacityException;
List<? extends Nic> listVmNics(Long vmId, Long nicId); List<? extends Nic> listVmNics(Long vmId, Long nicId);
String allocatePublicIpForGuestNic(Long networkId, DataCenter dc, Pod pod, Account caller, String requestedIp) throws InsufficientAddressCapacityException;
NicVO savePlaceholderNic(Network network, String ip4Address, String ip6Address, Type vmType); NicVO savePlaceholderNic(Network network, String ip4Address, String ip6Address, Type vmType);
DhcpServiceProvider getDhcpServiceProvider(Network network); DhcpServiceProvider getDhcpServiceProvider(Network network);
PublicIp assignPublicIpAddressFromVlans(long dcId, Long podId, Account owner, VlanType type, List<Long> vlanDbIds, Long networkId, String requestedIp, boolean isSystem) throws InsufficientAddressCapacityException;
void removeDhcpServiceInSubnet(NicVO nic); void removeDhcpServiceInSubnet(NicVO nic);
} }

File diff suppressed because it is too large Load Diff

View File

@ -40,7 +40,6 @@ import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.acl.SecurityChecker.AccessType;
@ -180,7 +179,6 @@ import com.cloud.vm.dao.VMInstanceDao;
/** /**
* NetworkServiceImpl implements NetworkService. * NetworkServiceImpl implements NetworkService.
*/ */
@Component
@Local(value = { NetworkService.class }) @Local(value = { NetworkService.class })
public class NetworkServiceImpl extends ManagerBase implements NetworkService { public class NetworkServiceImpl extends ManagerBase implements NetworkService {
private static final Logger s_logger = Logger.getLogger(NetworkServiceImpl.class); private static final Logger s_logger = Logger.getLogger(NetworkServiceImpl.class);
@ -289,6 +287,8 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
VpcDao _vpcDao; VpcDao _vpcDao;
@Inject @Inject
NetworkACLDao _networkACLDao; NetworkACLDao _networkACLDao;
@Inject
IpAddressManager _ipAddrMgr;
int _cidrLimit; int _cidrLimit;
boolean _allowSubdomainNetworkAccess; boolean _allowSubdomainNetworkAccess;
@ -526,7 +526,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {
s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId()); s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId());
} }
return _networkMgr.allocateIp(ipOwner, false, caller, callerUserId, zone); return _ipAddrMgr.allocateIp(ipOwner, false, caller, callerUserId, zone);
} else { } else {
throw new InvalidParameterValueException("Associate IP address can only be called on the shared networks in the advanced zone" + throw new InvalidParameterValueException("Associate IP address can only be called on the shared networks in the advanced zone" +
" with Firewall/Source Nat/Static Nat/Port Forwarding/Load balancing services enabled"); " with Firewall/Source Nat/Static Nat/Port Forwarding/Load balancing services enabled");
@ -537,7 +537,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
_accountMgr.checkAccess(caller, null, false, ipOwner); _accountMgr.checkAccess(caller, null, false, ipOwner);
} }
return _networkMgr.allocateIp(ipOwner, false, caller, callerUserId, zone); return _ipAddrMgr.allocateIp(ipOwner, false, caller, callerUserId, zone);
} }
@Override @Override
@ -569,7 +569,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {
s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId()); s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId());
} }
return _networkMgr.allocatePortableIp(ipOwner, caller, zoneId, networkId, null); return _ipAddrMgr.allocatePortableIp(ipOwner, caller, zoneId, networkId, null);
} else { } else {
throw new InvalidParameterValueException("Associate IP address can only be called on the shared networks in the advanced zone" + throw new InvalidParameterValueException("Associate IP address can only be called on the shared networks in the advanced zone" +
" with Firewall/Source Nat/Static Nat/Port Forwarding/Load balancing services enabled"); " with Firewall/Source Nat/Static Nat/Port Forwarding/Load balancing services enabled");
@ -587,7 +587,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
_accountMgr.checkAccess(caller, null, false, ipOwner); _accountMgr.checkAccess(caller, null, false, ipOwner);
return _networkMgr.allocatePortableIp(ipOwner, caller, zoneId, null, null); return _ipAddrMgr.allocatePortableIp(ipOwner, caller, zoneId, null, null);
} }
@Override @Override
@ -680,7 +680,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
s_logger.debug("Calling the ip allocation ..."); s_logger.debug("Calling the ip allocation ...");
if (dc.getNetworkType() == NetworkType.Advanced && network.getGuestType() == Network.GuestType.Isolated) { if (dc.getNetworkType() == NetworkType.Advanced && network.getGuestType() == Network.GuestType.Isolated) {
try { try {
ipaddr = _networkMgr.allocateGuestIP(ipOwner, false, zoneId, networkId, requestedIp); ipaddr = _ipAddrMgr.allocateGuestIP(ipOwner, false, zoneId, networkId, requestedIp);
} catch (InsufficientAddressCapacityException e) { } catch (InsufficientAddressCapacityException e) {
throw new InvalidParameterValueException("Allocating guest ip for nic failed"); throw new InvalidParameterValueException("Allocating guest ip for nic failed");
} }
@ -697,7 +697,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
} }
try { try {
ipaddr = _networkMgr.allocatePublicIpForGuestNic(networkId, dc, pod, caller, requestedIp); ipaddr = _ipAddrMgr.allocatePublicIpForGuestNic(networkId, dc, pod, caller, requestedIp);
if (ipaddr == null) { if (ipaddr == null) {
throw new InvalidParameterValueException("Allocating ip to guest nic " + nicId + " failed"); throw new InvalidParameterValueException("Allocating ip to guest nic " + nicId + " failed");
} }
@ -803,7 +803,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
if (ip != null) { if (ip != null) {
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
_networkMgr.markIpAsUnavailable(ip.getId()); _ipAddrMgr.markIpAsUnavailable(ip.getId());
_ipAddressDao.unassignIpAddress(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId());
txn.commit(); txn.commit();
} }
@ -885,7 +885,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw ex; throw ex;
} }
boolean success = _networkMgr.disassociatePublicIpAddress(ipAddressId, userId, caller); boolean success = _ipAddrMgr.disassociatePublicIpAddress(ipAddressId, userId, caller);
if (success) { if (success) {
Long networkId = ipVO.getAssociatedWithNetworkId(); Long networkId = ipVO.getAssociatedWithNetworkId();
@ -2681,6 +2681,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
public String generateVnetString(List<String> vnetList) { public String generateVnetString(List<String> vnetList) {
Collections.sort(vnetList, new Comparator<String>() { Collections.sort(vnetList, new Comparator<String>() {
@Override
public int compare(String s1, String s2) { public int compare(String s1, String s2) {
return Integer.valueOf(s1).compareTo(Integer.valueOf(s2)); return Integer.valueOf(s1).compareTo(Integer.valueOf(s2));
} }
@ -3794,7 +3795,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new InvalidParameterValueException("Can't assign ip to the network directly when network belongs" + throw new InvalidParameterValueException("Can't assign ip to the network directly when network belongs" +
" to VPC.Specify vpcId to associate ip address to VPC"); " to VPC.Specify vpcId to associate ip address to VPC");
} }
return _networkMgr.associateIPToGuestNetwork(ipId, networkId, true); return _ipAddrMgr.associateIPToGuestNetwork(ipId, networkId, true);
} }

View File

@ -27,17 +27,14 @@ import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.api.command.user.firewall.ListEgressFirewallRulesCmd; import org.apache.cloudstack.api.command.user.firewall.ListEgressFirewallRulesCmd;
import com.cloud.network.dao.*;
import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd; import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.configuration.Config; import com.cloud.configuration.Config;
import com.cloud.domain.dao.DomainDao; import com.cloud.domain.dao.DomainDao;
import com.cloud.event.ActionEvent; import com.cloud.event.ActionEvent;
@ -49,12 +46,19 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkModel; import com.cloud.network.NetworkModel;
import com.cloud.network.NetworkRuleApplier; import com.cloud.network.NetworkRuleApplier;
import com.cloud.network.dao.FirewallRulesCidrsDao;
import com.cloud.network.dao.FirewallRulesDao;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.IPAddressVO;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.NetworkVO;
import com.cloud.network.element.FirewallServiceProvider; import com.cloud.network.element.FirewallServiceProvider;
import com.cloud.network.element.NetworkACLServiceProvider; import com.cloud.network.element.NetworkACLServiceProvider;
import com.cloud.network.element.PortForwardingServiceProvider; import com.cloud.network.element.PortForwardingServiceProvider;
@ -136,6 +140,8 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
@Inject List<StaticNatServiceProvider> _staticNatElements; @Inject List<StaticNatServiceProvider> _staticNatElements;
@Inject List<NetworkACLServiceProvider> _networkAclElements; @Inject List<NetworkACLServiceProvider> _networkAclElements;
@Inject
IpAddressManager _ipAddrMgr;
private boolean _elbEnabled = false; private boolean _elbEnabled = false;
@ -510,7 +516,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
return true; return true;
} }
Purpose purpose = rules.get(0).getPurpose(); Purpose purpose = rules.get(0).getPurpose();
if (!_networkMgr.applyRules(rules, purpose, this, continueOnError)) { if (!_ipAddrMgr.applyRules(rules, purpose, this, continueOnError)) {
s_logger.warn("Rules are not completely applied"); s_logger.warn("Rules are not completely applied");
return false; return false;
} else { } else {
@ -917,7 +923,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
if (rule.getSourceCidrList() == null && (rule.getPurpose() == Purpose.Firewall || rule.getPurpose() == Purpose.NetworkACL)) { if (rule.getSourceCidrList() == null && (rule.getPurpose() == Purpose.Firewall || rule.getPurpose() == Purpose.NetworkACL)) {
_firewallDao.loadSourceCidrs(rule); _firewallDao.loadSourceCidrs(rule);
} }
this.createFirewallRule(ip.getId(), acct, rule.getXid(), rule.getSourcePortStart(), rule.getSourcePortEnd(), rule.getProtocol(), createFirewallRule(ip.getId(), acct, rule.getXid(), rule.getSourcePortStart(), rule.getSourcePortEnd(), rule.getProtocol(),
rule.getSourceCidrList(), rule.getIcmpCode(), rule.getIcmpType(), rule.getRelated(), FirewallRuleType.System, rule.getNetworkId(), rule.getTrafficType()); rule.getSourceCidrList(), rule.getIcmpCode(), rule.getIcmpType(), rule.getRelated(), FirewallRuleType.System, rule.getNetworkId(), rule.getTrafficType());
} catch (Exception e) { } catch (Exception e) {
s_logger.debug("Failed to add system wide firewall rule, due to:" + e.toString()); s_logger.debug("Failed to add system wide firewall rule, due to:" + e.toString());

View File

@ -33,6 +33,7 @@ import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Ipv6AddressManager; import com.cloud.network.Ipv6AddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
@ -88,6 +89,8 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
NicSecondaryIpDao _nicSecondaryIpDao; NicSecondaryIpDao _nicSecondaryIpDao;
@Inject @Inject
NicDao _nicDao; NicDao _nicDao;
@Inject
IpAddressManager _ipAddrMgr;
private static final TrafficType[] _trafficTypes = {TrafficType.Guest}; private static final TrafficType[] _trafficTypes = {TrafficType.Guest};
@ -223,7 +226,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
_networkMgr.allocateDirectIp(nic, dc, vm, network, requestedIp4Addr, requestedIp6Addr); _ipAddrMgr.allocateDirectIp(nic, dc, vm, network, requestedIp4Addr, requestedIp6Addr);
//save the placeholder nic if the vm is the Virtual router //save the placeholder nic if the vm is the Virtual router
if (vm.getType() == VirtualMachine.Type.DomainRouter) { if (vm.getType() == VirtualMachine.Type.DomainRouter) {
Nic placeholderNic = _networkModel.getPlaceholderNicForRouter(network, null); Nic placeholderNic = _networkModel.getPlaceholderNicForRouter(network, null);
@ -262,7 +265,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
if (placeholderNic != null && placeholderNic.getIp4Address().equalsIgnoreCase(ip.getAddress().addr())) { if (placeholderNic != null && placeholderNic.getIp4Address().equalsIgnoreCase(ip.getAddress().addr())) {
s_logger.debug("Not releasing direct ip " + ip.getId() +" yet as its ip is saved in the placeholder"); s_logger.debug("Not releasing direct ip " + ip.getId() +" yet as its ip is saved in the placeholder");
} else { } else {
_networkMgr.markIpAsUnavailable(ip.getId()); _ipAddrMgr.markIpAsUnavailable(ip.getId());
_ipAddressDao.unassignIpAddress(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId());
} }
@ -272,7 +275,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
nicSecIps = _nicSecondaryIpDao.getSecondaryIpAddressesForNic(nic.getId()); nicSecIps = _nicSecondaryIpDao.getSecondaryIpAddressesForNic(nic.getId());
for (String secIp: nicSecIps) { for (String secIp: nicSecIps) {
IPAddressVO pubIp = _ipAddressDao.findByIpAndSourceNetworkId(nic.getNetworkId(), secIp); IPAddressVO pubIp = _ipAddressDao.findByIpAndSourceNetworkId(nic.getNetworkId(), secIp);
_networkMgr.markIpAsUnavailable(pubIp.getId()); _ipAddrMgr.markIpAsUnavailable(pubIp.getId());
_ipAddressDao.unassignIpAddress(pubIp.getId()); _ipAddressDao.unassignIpAddress(pubIp.getId());
} }
@ -301,7 +304,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
if (nic.getIp4Address() != null) { if (nic.getIp4Address() != null) {
s_logger.debug("Releasing ip " + nic.getIp4Address() + " of placeholder nic " + nic); s_logger.debug("Releasing ip " + nic.getIp4Address() + " of placeholder nic " + nic);
IPAddressVO ip = _ipAddressDao.findByIpAndSourceNetworkId(nic.getNetworkId(), nic.getIp4Address()); IPAddressVO ip = _ipAddressDao.findByIpAndSourceNetworkId(nic.getNetworkId(), nic.getIp4Address());
_networkMgr.markIpAsUnavailable(ip.getId()); _ipAddrMgr.markIpAsUnavailable(ip.getId());
_ipAddressDao.unassignIpAddress(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId());
s_logger.debug("Removing placeholder nic " + nic); s_logger.debug("Removing placeholder nic " + nic);
_nicDao.remove(nic.getId()); _nicDao.remove(nic.getId());

View File

@ -40,6 +40,7 @@ import com.cloud.deploy.DeployDestination;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.AddressFormat;
@ -75,6 +76,8 @@ public class DirectPodBasedNetworkGuru extends DirectNetworkGuru {
NetworkOfferingDao _networkOfferingDao; NetworkOfferingDao _networkOfferingDao;
@Inject @Inject
PodVlanMapDao _podVlanDao; PodVlanMapDao _podVlanDao;
@Inject
IpAddressManager _ipAddrMgr;
@Override @Override
protected boolean canHandle(NetworkOffering offering, DataCenter dc) { protected boolean canHandle(NetworkOffering offering, DataCenter dc) {
@ -137,7 +140,7 @@ public class DirectPodBasedNetworkGuru extends DirectNetworkGuru {
txn.start(); txn.start();
//release the old ip here //release the old ip here
_networkMgr.markIpAsUnavailable(ipVO.getId()); _ipAddrMgr.markIpAsUnavailable(ipVO.getId());
_ipAddressDao.unassignIpAddress(ipVO.getId()); _ipAddressDao.unassignIpAddress(ipVO.getId());
txn.commit(); txn.commit();
@ -183,7 +186,7 @@ public class DirectPodBasedNetworkGuru extends DirectNetworkGuru {
} }
if (ip == null) { if (ip == null) {
ip = _networkMgr.assignPublicIpAddress(dc.getId(), pod.getId(), vm.getOwner(), VlanType.DirectAttached, network.getId(), null, false); ip = _ipAddrMgr.assignPublicIpAddress(dc.getId(), pod.getId(), vm.getOwner(), VlanType.DirectAttached, network.getId(), null, false);
} }
nic.setIp4Address(ip.getAddress().toString()); nic.setIp4Address(ip.getAddress().toString());

View File

@ -21,10 +21,6 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import com.cloud.event.ActionEventUtils;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.IPAddressVO;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
@ -35,10 +31,12 @@ import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DataCenterDao;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
import com.cloud.deploy.DeploymentPlan; import com.cloud.deploy.DeploymentPlan;
import com.cloud.event.ActionEventUtils;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.event.EventVO; import com.cloud.event.EventVO;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
import com.cloud.network.Network.State; import com.cloud.network.Network.State;
@ -46,6 +44,8 @@ import com.cloud.network.NetworkManager;
import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.PhysicalNetwork; import com.cloud.network.PhysicalNetwork;
import com.cloud.network.PhysicalNetwork.IsolationMethod; import com.cloud.network.PhysicalNetwork.IsolationMethod;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.IPAddressVO;
import com.cloud.network.dao.NetworkDao; import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.NetworkVO; import com.cloud.network.dao.NetworkVO;
import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.PortForwardingRuleVO;
@ -60,7 +60,6 @@ import com.cloud.vm.Nic.ReservationStrategy;
import com.cloud.vm.NicProfile; import com.cloud.vm.NicProfile;
import com.cloud.vm.NicVO; import com.cloud.vm.NicVO;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
@Local(value = NetworkGuru.class) @Local(value = NetworkGuru.class)
@ -76,6 +75,8 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
PortForwardingRulesDao _pfRulesDao; PortForwardingRulesDao _pfRulesDao;
@Inject @Inject
IPAddressDao _ipAddressDao; IPAddressDao _ipAddressDao;
@Inject
IpAddressManager _ipAddrMgr;
public ExternalGuestNetworkGuru() { public ExternalGuestNetworkGuru() {
@ -83,6 +84,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
_isolationMethods = new IsolationMethod[] { IsolationMethod.GRE, IsolationMethod.L3, IsolationMethod.VLAN }; _isolationMethods = new IsolationMethod[] { IsolationMethod.GRE, IsolationMethod.L3, IsolationMethod.VLAN };
} }
@Override
protected boolean canHandle(NetworkOffering offering, protected boolean canHandle(NetworkOffering offering,
final NetworkType networkType, final PhysicalNetwork physicalNetwork) { final NetworkType networkType, final PhysicalNetwork physicalNetwork) {
// This guru handles only Guest Isolated network that supports Source // This guru handles only Guest Isolated network that supports Source
@ -278,7 +280,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
nic.setGateway(config.getGateway()); nic.setGateway(config.getGateway());
if (nic.getIp4Address() == null) { if (nic.getIp4Address() == null) {
String guestIp = _networkMgr.acquireGuestIpAddress(config, null); String guestIp = _ipAddrMgr.acquireGuestIpAddress(config, null);
if (guestIp == null) { if (guestIp == null) {
throw new InsufficientVirtualNetworkCapcityException("Unable to acquire guest IP address for network " + config, DataCenter.class, dc.getId()); throw new InsufficientVirtualNetworkCapcityException("Unable to acquire guest IP address for network " + config, DataCenter.class, dc.getId());
} }

View File

@ -19,16 +19,10 @@ package com.cloud.network.guru;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import com.cloud.event.ActionEventUtils;
import com.cloud.server.ConfigurationServer;
import com.cloud.utils.Pair;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
@ -41,12 +35,16 @@ import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.VlanDao; import com.cloud.dc.dao.VlanDao;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
import com.cloud.deploy.DeploymentPlan; import com.cloud.deploy.DeploymentPlan;
import com.cloud.event.ActionEventUtils;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.event.EventVO; import com.cloud.event.EventVO;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service;
import com.cloud.network.Network.State; import com.cloud.network.Network.State;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkModel; import com.cloud.network.NetworkModel;
@ -64,12 +62,13 @@ import com.cloud.network.dao.NetworkVO;
import com.cloud.network.dao.PhysicalNetworkDao; import com.cloud.network.dao.PhysicalNetworkDao;
import com.cloud.network.dao.PhysicalNetworkVO; import com.cloud.network.dao.PhysicalNetworkVO;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.server.ConfigurationServer;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.utils.Pair;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
import com.cloud.utils.db.Transaction; import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.Ip4Address;
import com.cloud.utils.net.NetUtils; import com.cloud.utils.net.NetUtils;
import com.cloud.vm.Nic.ReservationStrategy; import com.cloud.vm.Nic.ReservationStrategy;
import com.cloud.vm.NicProfile; import com.cloud.vm.NicProfile;
@ -77,8 +76,6 @@ import com.cloud.vm.ReservationContext;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicDao;
import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service;
@Local(value = NetworkGuru.class) @Local(value = NetworkGuru.class)
public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGuru { public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGuru {
@ -103,6 +100,8 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur
protected PhysicalNetworkDao _physicalNetworkDao; protected PhysicalNetworkDao _physicalNetworkDao;
@Inject @Inject
ConfigurationServer _configServer; ConfigurationServer _configServer;
@Inject
IpAddressManager _ipAddrMgr;
Random _rand = new Random(System.currentTimeMillis()); Random _rand = new Random(System.currentTimeMillis());
private static final TrafficType[] _trafficTypes = {TrafficType.Guest}; private static final TrafficType[] _trafficTypes = {TrafficType.Guest};
@ -226,7 +225,7 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur
if (ip != null) { if (ip != null) {
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
_networkMgr.markIpAsUnavailable(ip.getId()); _ipAddrMgr.markIpAsUnavailable(ip.getId());
_ipAddressDao.unassignIpAddress(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId());
txn.commit(); txn.commit();
} }
@ -336,7 +335,7 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur
String guestIp = null; String guestIp = null;
if (network.getSpecifyIpRanges()) { if (network.getSpecifyIpRanges()) {
_networkMgr.allocateDirectIp(nic, dc, vm, network, nic.getRequestedIpv4(), null); _ipAddrMgr.allocateDirectIp(nic, dc, vm, network, nic.getRequestedIpv4(), null);
} else { } else {
//if Vm is router vm and source nat is enabled in the network, set ip4 to the network gateway //if Vm is router vm and source nat is enabled in the network, set ip4 to the network gateway
boolean isGateway = false; boolean isGateway = false;
@ -355,7 +354,7 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur
if (isGateway) { if (isGateway) {
guestIp = network.getGateway(); guestIp = network.getGateway();
} else { } else {
guestIp = _networkMgr.acquireGuestIpAddress(network, nic.getRequestedIpv4()); guestIp = _ipAddrMgr.acquireGuestIpAddress(network, nic.getRequestedIpv4());
if (guestIp == null) { if (guestIp == null) {
throw new InsufficientVirtualNetworkCapcityException("Unable to acquire Guest IP" + throw new InsufficientVirtualNetworkCapcityException("Unable to acquire Guest IP" +
" address for network " + network, DataCenter.class, dc.getId()); " address for network " + network, DataCenter.class, dc.getId());

View File

@ -30,6 +30,7 @@ import com.cloud.deploy.DeploymentPlan;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.State; import com.cloud.network.Network.State;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
@ -67,6 +68,8 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru {
NetworkManager _networkMgr; NetworkManager _networkMgr;
@Inject @Inject
IPAddressDao _ipAddressDao; IPAddressDao _ipAddressDao;
@Inject
IpAddressManager _ipAddrMgr;
private static final TrafficType[] _trafficTypes = {TrafficType.Public}; private static final TrafficType[] _trafficTypes = {TrafficType.Public};
@ -110,7 +113,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru {
protected void getIp(NicProfile nic, DataCenter dc, VirtualMachineProfile vm, Network network) throws InsufficientVirtualNetworkCapcityException, protected void getIp(NicProfile nic, DataCenter dc, VirtualMachineProfile vm, Network network) throws InsufficientVirtualNetworkCapcityException,
InsufficientAddressCapacityException, ConcurrentOperationException { InsufficientAddressCapacityException, ConcurrentOperationException {
if (nic.getIp4Address() == null) { if (nic.getIp4Address() == null) {
PublicIp ip = _networkMgr.assignPublicIpAddress(dc.getId(), null, vm.getOwner(), VlanType.VirtualNetwork, null, null, false); PublicIp ip = _ipAddrMgr.assignPublicIpAddress(dc.getId(), null, vm.getOwner(), VlanType.VirtualNetwork, null, null, false);
nic.setIp4Address(ip.getAddress().toString()); nic.setIp4Address(ip.getAddress().toString());
nic.setGateway(ip.getGateway()); nic.setGateway(ip.getGateway());
nic.setNetmask(ip.getNetmask()); nic.setNetmask(ip.getNetmask());
@ -194,7 +197,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru {
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
_networkMgr.markIpAsUnavailable(ip.getId()); _ipAddrMgr.markIpAsUnavailable(ip.getId());
_ipAddressDao.unassignIpAddress(ip.getId()); _ipAddressDao.unassignIpAddress(ip.getId());
txn.commit(); txn.commit();

View File

@ -30,12 +30,11 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import com.cloud.network.ExternalDeviceUsageManager; import org.apache.log4j.Logger;
import com.cloud.network.IpAddress; import org.springframework.stereotype.Component;
import com.cloud.network.LBHealthCheckPolicyVO;
import com.cloud.network.Network; import com.google.gson.Gson;
import com.cloud.network.NetworkManager; import com.google.gson.reflect.TypeToken;
import com.cloud.network.NetworkModel;
import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBHealthCheckPolicyCmd; import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBHealthCheckPolicyCmd;
@ -51,9 +50,6 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.agent.api.to.LoadBalancerTO; import com.cloud.agent.api.to.LoadBalancerTO;
import com.cloud.configuration.Config; import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ConfigurationManager;
@ -72,9 +68,16 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.ExternalDeviceUsageManager;
import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.LBHealthCheckPolicyVO;
import com.cloud.network.Network;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkModel;
import com.cloud.network.addr.PublicIp; import com.cloud.network.addr.PublicIp;
import com.cloud.network.as.AutoScalePolicy; import com.cloud.network.as.AutoScalePolicy;
import com.cloud.network.as.AutoScalePolicyConditionMapVO; import com.cloud.network.as.AutoScalePolicyConditionMapVO;
@ -158,9 +161,6 @@ import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.UserVmDao;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@Component @Component
@Local(value = { LoadBalancingRulesManager.class, LoadBalancingRulesService.class }) @Local(value = { LoadBalancingRulesManager.class, LoadBalancingRulesService.class })
public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements LoadBalancingRulesManager, public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements LoadBalancingRulesManager,
@ -247,6 +247,8 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
@Inject @Inject
List<LoadBalancingServiceProvider> _lbProviders; List<LoadBalancingServiceProvider> _lbProviders;
@Inject ApplicationLoadBalancerRuleDao _appLbRuleDao; @Inject ApplicationLoadBalancerRuleDao _appLbRuleDao;
@Inject
IpAddressManager _ipAddrMgr;
// Will return a string. For LB Stickiness this will be a json, for // Will return a string. For LB Stickiness this will be a json, for
// autoscale this will be "," separated values // autoscale this will be "," separated values
@ -901,7 +903,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
if (lbrules.size() > 0) { if (lbrules.size() > 0) {
isHandled = false; isHandled = false;
for (LoadBalancingServiceProvider lbElement : _lbProviders) { for (LoadBalancingServiceProvider lbElement : _lbProviders) {
stateRules = lbElement.updateHealthChecks(network, (List<LoadBalancingRule>) lbrules); stateRules = lbElement.updateHealthChecks(network, lbrules);
if (stateRules != null && stateRules.size() > 0) { if (stateRules != null && stateRules.size() > 0) {
for (LoadBalancerTO lbto : stateRules) { for (LoadBalancerTO lbto : stateRules) {
LoadBalancerVO ulb = _lbDao.findByUuid(lbto.getUuid()); LoadBalancerVO ulb = _lbDao.findByUuid(lbto.getUuid());
@ -1325,7 +1327,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
IpAddress systemIp = null; IpAddress systemIp = null;
NetworkOffering off = _configMgr.getNetworkOffering(network.getNetworkOfferingId()); NetworkOffering off = _configMgr.getNetworkOffering(network.getNetworkOfferingId());
if (off.getElasticLb() && ipVO == null && network.getVpcId() == null) { if (off.getElasticLb() && ipVO == null && network.getVpcId() == null) {
systemIp = _networkMgr.assignSystemIp(networkId, lbOwner, true, false); systemIp = _ipAddrMgr.assignSystemIp(networkId, lbOwner, true, false);
ipVO = _ipAddressDao.findById(systemIp.getId()); ipVO = _ipAddressDao.findById(systemIp.getId());
} }
@ -1348,7 +1350,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
s_logger.debug("The ip is not associated with the VPC network id=" + networkId s_logger.debug("The ip is not associated with the VPC network id=" + networkId
+ " so assigning"); + " so assigning");
ipVO = _networkMgr.associateIPToGuestNetwork(ipAddrId, networkId, false); ipVO = _ipAddrMgr.associateIPToGuestNetwork(ipAddrId, networkId, false);
performedIpAssoc = true; performedIpAssoc = true;
} }
} else { } else {
@ -1370,7 +1372,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
if (result == null && systemIp != null) { if (result == null && systemIp != null) {
s_logger.debug("Releasing system IP address " + systemIp s_logger.debug("Releasing system IP address " + systemIp
+ " as corresponding lb rule failed to create"); + " as corresponding lb rule failed to create");
_networkMgr.handleSystemIpRelease(systemIp); _ipAddrMgr.handleSystemIpRelease(systemIp);
} }
// release ip address if ipassoc was perfored // release ip address if ipassoc was perfored
if (performedIpAssoc) { if (performedIpAssoc) {
@ -1677,7 +1679,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
boolean success = true; boolean success = true;
if (ip.getSystem()) { if (ip.getSystem()) {
s_logger.debug("Releasing system ip address " + lb.getSourceIpAddressId() + " as a part of delete lb rule"); s_logger.debug("Releasing system ip address " + lb.getSourceIpAddressId() + " as a part of delete lb rule");
if (!_networkMgr.disassociatePublicIpAddress(lb.getSourceIpAddressId(), CallContext.current() if (!_ipAddrMgr.disassociatePublicIpAddress(lb.getSourceIpAddressId(), CallContext.current()
.getCallingUserId(), CallContext.current().getCallingAccount())) { .getCallingUserId(), CallContext.current().getCallingAccount())) {
s_logger.warn("Unable to release system ip address id=" + lb.getSourceIpAddressId() s_logger.warn("Unable to release system ip address id=" + lb.getSourceIpAddressId()
+ " as a part of delete lb rule"); + " as a part of delete lb rule");
@ -2085,7 +2087,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
// service provider, so run IP assoication for // service provider, so run IP assoication for
// the network so as to ensure IP is associated before applying // the network so as to ensure IP is associated before applying
// rules (in add state) // rules (in add state)
_networkMgr.applyIpAssociations(network, false, continueOnError, publicIps); _ipAddrMgr.applyIpAssociations(network, false, continueOnError, publicIps);
try { try {
@ -2100,7 +2102,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
// if all the rules configured on public IP are revoked then // if all the rules configured on public IP are revoked then
// dis-associate IP with network service provider // dis-associate IP with network service provider
_networkMgr.applyIpAssociations(network, true, continueOnError, publicIps); _ipAddrMgr.applyIpAssociations(network, true, continueOnError, publicIps);
return success; return success;
} }

View File

@ -134,6 +134,7 @@ import com.cloud.host.Status;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
@ -359,6 +360,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
UserIpv6AddressDao _ipv6Dao; UserIpv6AddressDao _ipv6Dao;
@Inject @Inject
NetworkService _networkSvc; NetworkService _networkSvc;
@Inject
IpAddressManager _ipAddrMgr;
int _routerRamSize; int _routerRamSize;
@ -1530,7 +1533,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
PublicIp sourceNatIp = null; PublicIp sourceNatIp = null;
if (publicNetwork) { if (publicNetwork) {
sourceNatIp = _networkMgr.assignSourceNatIpAddressToGuestNetwork(owner, guestNetwork); sourceNatIp = _ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(owner, guestNetwork);
} }
// 3) deploy virtual router(s) // 3) deploy virtual router(s)
@ -1791,7 +1794,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
NicProfile gatewayNic = new NicProfile(defaultNetworkStartIp, defaultNetworkStartIpv6); NicProfile gatewayNic = new NicProfile(defaultNetworkStartIp, defaultNetworkStartIpv6);
if (setupPublicNetwork) { if (setupPublicNetwork) {
if (isRedundant) { if (isRedundant) {
gatewayNic.setIp4Address(_networkMgr.acquireGuestIpAddress(guestNetwork, null)); gatewayNic.setIp4Address(_ipAddrMgr.acquireGuestIpAddress(guestNetwork, null));
} else { } else {
gatewayNic.setIp4Address(guestNetwork.getGateway()); gatewayNic.setIp4Address(guestNetwork.getGateway());
} }
@ -2817,10 +2820,24 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
vlanDbIdList.add(vlan.getId()); vlanDbIdList.add(vlan.getId());
} }
if (dc.getNetworkType() == NetworkType.Basic) { if (dc.getNetworkType() == NetworkType.Basic) {
routerPublicIP = _networkMgr.assignPublicIpAddressFromVlans(router.getDataCenterId(), vm.getPodIdToDeployIn(), caller, Vlan.VlanType.DirectAttached, vlanDbIdList, nic.getNetworkId(), null, false); routerPublicIP = _ipAddrMgr.assignPublicIpAddressFromVlans(router.getDataCenterId(),
vm.getPodIdToDeployIn(),
caller,
Vlan.VlanType.DirectAttached,
vlanDbIdList,
nic.getNetworkId(),
null,
false);
} }
else { else {
routerPublicIP = _networkMgr.assignPublicIpAddressFromVlans(router.getDataCenterId(), null, caller, Vlan.VlanType.DirectAttached, vlanDbIdList, nic.getNetworkId(), null, false); routerPublicIP = _ipAddrMgr.assignPublicIpAddressFromVlans(router.getDataCenterId(),
null,
caller,
Vlan.VlanType.DirectAttached,
vlanDbIdList,
nic.getNetworkId(),
null,
false);
} }
routerAliasIp = routerPublicIP.getAddress().addr(); routerAliasIp = routerPublicIP.getAddress().addr();

View File

@ -25,12 +25,12 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd;
import org.apache.cloudstack.context.CallContext;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd;
import org.apache.cloudstack.context.CallContext;
import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ConfigurationManager;
import com.cloud.domain.dao.DomainDao; import com.cloud.domain.dao.DomainDao;
import com.cloud.event.ActionEvent; import com.cloud.event.ActionEvent;
@ -43,6 +43,7 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
@ -96,6 +97,9 @@ import com.cloud.vm.dao.VMInstanceDao;
public class RulesManagerImpl extends ManagerBase implements RulesManager, RulesService { public class RulesManagerImpl extends ManagerBase implements RulesManager, RulesService {
private static final Logger s_logger = Logger.getLogger(RulesManagerImpl.class); private static final Logger s_logger = Logger.getLogger(RulesManagerImpl.class);
@Inject
IpAddressManager _ipAddrMgr;
@Inject @Inject
PortForwardingRulesDao _portForwardingDao; PortForwardingRulesDao _portForwardingDao;
@Inject @Inject
@ -219,7 +223,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
s_logger.debug("The ip is not associated with the VPC network id="+ networkId + ", so assigning"); s_logger.debug("The ip is not associated with the VPC network id="+ networkId + ", so assigning");
try { try {
ipAddress = _networkMgr.associateIPToGuestNetwork(ipAddrId, networkId, false); ipAddress = _ipAddrMgr.associateIPToGuestNetwork(ipAddrId, networkId, false);
performedIpAssoc = true; performedIpAssoc = true;
} catch (Exception ex) { } catch (Exception ex) {
throw new CloudRuntimeException("Failed to associate ip to VPC network as " + throw new CloudRuntimeException("Failed to associate ip to VPC network as " +
@ -487,7 +491,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
s_logger.debug("The ip is not associated with the VPC network id="+ networkId + ", so assigning"); s_logger.debug("The ip is not associated with the VPC network id="+ networkId + ", so assigning");
try { try {
ipAddress = _networkMgr.associateIPToGuestNetwork(ipId, networkId, false); ipAddress = _ipAddrMgr.associateIPToGuestNetwork(ipId, networkId, false);
} catch (Exception ex) { } catch (Exception ex) {
s_logger.warn("Failed to associate ip id=" + ipId + " to VPC network id=" + networkId + " as " + s_logger.warn("Failed to associate ip id=" + ipId + " to VPC network id=" + networkId + " as " +
"a part of enable static nat"); "a part of enable static nat");
@ -506,7 +510,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
} }
// associate portable IP with guest network // associate portable IP with guest network
ipAddress = _networkMgr.associatePortableIPToGuestNetwork(ipId, networkId, false); ipAddress = _ipAddrMgr.associatePortableIPToGuestNetwork(ipId, networkId, false);
} catch (Exception e) { } catch (Exception e) {
s_logger.warn("Failed to associate portable id=" + ipId + " to network id=" + networkId + " as " + s_logger.warn("Failed to associate portable id=" + ipId + " to network id=" + networkId + " as " +
"a part of enable static nat"); "a part of enable static nat");
@ -519,10 +523,10 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
_networkModel.checkIpForService(ipAddress, Service.StaticNat, networkId); _networkModel.checkIpForService(ipAddress, Service.StaticNat, networkId);
// check if portable IP can be transferred across the networks // check if portable IP can be transferred across the networks
if (_networkMgr.isPortableIpTransferableFromNetwork(ipId, ipAddress.getAssociatedWithNetworkId() )) { if (_ipAddrMgr.isPortableIpTransferableFromNetwork(ipId, ipAddress.getAssociatedWithNetworkId())) {
try { try {
// transfer the portable IP and refresh IP details // transfer the portable IP and refresh IP details
_networkMgr.transferPortableIP(ipId, ipAddress.getAssociatedWithNetworkId(), networkId); _ipAddrMgr.transferPortableIP(ipId, ipAddress.getAssociatedWithNetworkId(), networkId);
ipAddress = _ipAddressDao.findById(ipId); ipAddress = _ipAddressDao.findById(ipId);
} catch (Exception e) { } catch (Exception e) {
s_logger.warn("Failed to associate portable id=" + ipId + " to network id=" + networkId + " as " + s_logger.warn("Failed to associate portable id=" + ipId + " to network id=" + networkId + " as " +
@ -972,7 +976,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
} }
try { try {
if (!_networkMgr.applyStaticNats(staticNats, continueOnError, false)) { if (!_ipAddrMgr.applyStaticNats(staticNats, continueOnError, false)) {
return false; return false;
} }
} catch (ResourceUnavailableException ex) { } catch (ResourceUnavailableException ex) {
@ -1264,7 +1268,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
_ipAddressDao.update(ipAddress.getId(), ipAddress); _ipAddressDao.update(ipAddress.getId(), ipAddress);
_vpcMgr.unassignIPFromVpcNetwork(ipAddress.getId(), networkId); _vpcMgr.unassignIPFromVpcNetwork(ipAddress.getId(), networkId);
if (isIpSystem && releaseIpIfElastic && !_networkMgr.handleSystemIpRelease(ipAddress)) { if (isIpSystem && releaseIpIfElastic && !_ipAddrMgr.handleSystemIpRelease(ipAddress)) {
s_logger.warn("Failed to release system ip address " + ipAddress); s_logger.warn("Failed to release system ip address " + ipAddress);
success = false; success = false;
} }
@ -1315,7 +1319,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
if (staticNats != null && !staticNats.isEmpty()) { if (staticNats != null && !staticNats.isEmpty()) {
try { try {
if (!_networkMgr.applyStaticNats(staticNats, continueOnError, forRevoke)) { if (!_ipAddrMgr.applyStaticNats(staticNats, continueOnError, forRevoke)) {
return false; return false;
} }
} catch (ResourceUnavailableException ex) { } catch (ResourceUnavailableException ex) {
@ -1342,7 +1346,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
s_logger.debug("Found " + staticNats.size() + " static nats to disable for network id " + networkId); s_logger.debug("Found " + staticNats.size() + " static nats to disable for network id " + networkId);
} }
try { try {
if (!_networkMgr.applyStaticNats(staticNats, continueOnError, forRevoke)) { if (!_ipAddrMgr.applyStaticNats(staticNats, continueOnError, forRevoke)) {
return false; return false;
} }
} catch (ResourceUnavailableException ex) { } catch (ResourceUnavailableException ex) {
@ -1422,7 +1426,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
} }
s_logger.debug("Allocating system ip and enabling static nat for it for the vm " + vm + " in guest network " + guestNetwork); s_logger.debug("Allocating system ip and enabling static nat for it for the vm " + vm + " in guest network " + guestNetwork);
IpAddress ip = _networkMgr.assignSystemIp(guestNetwork.getId(), _accountMgr.getAccount(vm.getAccountId()), false, true); IpAddress ip = _ipAddrMgr.assignSystemIp(guestNetwork.getId(), _accountMgr.getAccount(vm.getAccountId()), false, true);
if (ip == null) { if (ip == null) {
throw new CloudRuntimeException("Failed to allocate system ip for vm " + vm + " in guest network " + guestNetwork); throw new CloudRuntimeException("Failed to allocate system ip for vm " + vm + " in guest network " + guestNetwork);
} }
@ -1443,7 +1447,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
if (!success) { if (!success) {
s_logger.warn("Failed to enable static nat on system ip " + ip + " for the vm " + vm + ", releasing the ip..."); s_logger.warn("Failed to enable static nat on system ip " + ip + " for the vm " + vm + ", releasing the ip...");
_networkMgr.handleSystemIpRelease(ip); _ipAddrMgr.handleSystemIpRelease(ip);
throw new CloudRuntimeException("Failed to enable static nat on system ip for the vm " + vm); throw new CloudRuntimeException("Failed to enable static nat on system ip for the vm " + vm);
} else { } else {
s_logger.warn("Succesfully enabled static nat on system ip " + ip + " for the vm " + vm); s_logger.warn("Succesfully enabled static nat on system ip " + ip + " for the vm " + vm);

View File

@ -16,6 +16,30 @@
// under the License. // under the License.
package com.cloud.network.vpc; package com.cloud.network.vpc;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.ejb.Local;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd;
import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import com.cloud.configuration.Config; import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ConfigurationManager;
import com.cloud.configuration.Resource.ResourceType; import com.cloud.configuration.Resource.ResourceType;
@ -37,6 +61,7 @@ import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
@ -99,30 +124,6 @@ import com.cloud.vm.ReservationContext;
import com.cloud.vm.ReservationContextImpl; import com.cloud.vm.ReservationContextImpl;
import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.DomainRouterDao;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd;
import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import javax.ejb.Local;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Component @Component
@Local(value = { VpcManager.class, VpcService.class, VpcProvisioningService.class }) @Local(value = { VpcManager.class, VpcService.class, VpcProvisioningService.class })
@ -184,6 +185,8 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
ConfigurationServer _configServer; ConfigurationServer _configServer;
@Inject @Inject
NetworkACLDao _networkAclDao; NetworkACLDao _networkAclDao;
@Inject
IpAddressManager _ipAddrMgr;
private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("VpcChecker")); private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("VpcChecker"));
private List<VpcProvider> vpcElements = null; private List<VpcProvider> vpcElements = null;
@ -1239,7 +1242,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
_ipAddressDao.update(ipToRelease.getId(), ipToRelease); _ipAddressDao.update(ipToRelease.getId(), ipToRelease);
s_logger.debug("Portable IP address " + ipToRelease + " is no longer associated with any VPC"); s_logger.debug("Portable IP address " + ipToRelease + " is no longer associated with any VPC");
} else { } else {
success = success && _ntwkMgr.disassociatePublicIpAddress(ipToRelease.getId(), callerUserId, caller); success = success && _ipAddrMgr.disassociatePublicIpAddress(ipToRelease.getId(), callerUserId, caller);
if (!success) { if (!success) {
s_logger.warn("Failed to cleanup ip " + ipToRelease + " as a part of vpc id=" + vpcId + " cleanup"); s_logger.warn("Failed to cleanup ip " + ipToRelease + " as a part of vpc id=" + vpcId + " cleanup");
} }
@ -1977,7 +1980,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
_ipAddressDao.update(ipId, ip); _ipAddressDao.update(ipId, ip);
//mark ip as allocated //mark ip as allocated
_ntwkMgr.markPublicIpAsAllocated(ip); _ipAddrMgr.markPublicIpAsAllocated(ip);
txn.commit(); txn.commit();
s_logger.debug("Successfully assigned ip " + ipToAssoc + " to vpc " + vpc); s_logger.debug("Successfully assigned ip " + ipToAssoc + " to vpc " + vpc);
@ -2003,7 +2006,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
boolean success = false; boolean success = false;
try { try {
//unassign ip from the VPC router //unassign ip from the VPC router
success = _ntwkMgr.applyIpAssociations(_ntwkModel.getNetwork(networkId), true); success = _ipAddrMgr.applyIpAssociations(_ntwkModel.getNetwork(networkId), true);
} catch (ResourceUnavailableException ex) { } catch (ResourceUnavailableException ex) {
throw new CloudRuntimeException("Failed to apply ip associations for network id=" + networkId + throw new CloudRuntimeException("Failed to apply ip associations for network id=" + networkId +
" as a part of unassigning ip " + ipId + " from vpc", ex); " as a part of unassigning ip " + ipId + " from vpc", ex);
@ -2113,7 +2116,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
if (sourceNatIp != null) { if (sourceNatIp != null) {
ipToReturn = PublicIp.createFromAddrAndVlan(sourceNatIp, _vlanDao.findById(sourceNatIp.getVlanId())); ipToReturn = PublicIp.createFromAddrAndVlan(sourceNatIp, _vlanDao.findById(sourceNatIp.getVlanId()));
} else { } else {
ipToReturn = _ntwkMgr.assignDedicateIpAddress(owner, null, vpc.getId(), dcId, true); ipToReturn = _ipAddrMgr.assignDedicateIpAddress(owner, null, vpc.getId(), dcId, true);
} }
return ipToReturn; return ipToReturn;

View File

@ -82,6 +82,7 @@ import com.cloud.exception.OperationTimedoutException;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.IpAddress; import com.cloud.network.IpAddress;
import com.cloud.network.IpAddressManager;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.VpnUserVO; import com.cloud.network.VpnUserVO;
import com.cloud.network.as.AutoScaleManager; import com.cloud.network.as.AutoScaleManager;
@ -248,6 +249,8 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
private List<UserAuthenticator> _userAuthenticators; private List<UserAuthenticator> _userAuthenticators;
List<UserAuthenticator> _userPasswordEncoders; List<UserAuthenticator> _userPasswordEncoders;
protected IpAddressManager _ipAddrMgr;
private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("AccountChecker")); private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("AccountChecker"));
int _allowedLoginAttempts; int _allowedLoginAttempts;
@ -696,7 +699,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
List<? extends IpAddress> ipsToRelease = _ipAddressDao.listByAccount(accountId); List<? extends IpAddress> ipsToRelease = _ipAddressDao.listByAccount(accountId);
for (IpAddress ip : ipsToRelease) { for (IpAddress ip : ipsToRelease) {
s_logger.debug("Releasing ip " + ip + " as a part of account id=" + accountId + " cleanup"); s_logger.debug("Releasing ip " + ip + " as a part of account id=" + accountId + " cleanup");
if (!_networkMgr.disassociatePublicIpAddress(ip.getId(), callerUserId, caller)) { if (!_ipAddrMgr.disassociatePublicIpAddress(ip.getId(), callerUserId, caller)) {
s_logger.warn("Failed to release ip address " + ip + " as a part of account id=" + accountId + " clenaup"); s_logger.warn("Failed to release ip address " + ip + " as a part of account id=" + accountId + " clenaup");
accountCleanupNeeded = true; accountCleanupNeeded = true;
} }
@ -740,7 +743,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
List<? extends IpAddress> portableIpsToRelease = _ipAddressDao.listByAccount(accountId); List<? extends IpAddress> portableIpsToRelease = _ipAddressDao.listByAccount(accountId);
for (IpAddress ip : portableIpsToRelease) { for (IpAddress ip : portableIpsToRelease) {
s_logger.debug("Releasing portable ip " + ip + " as a part of account id=" + accountId + " cleanup"); s_logger.debug("Releasing portable ip " + ip + " as a part of account id=" + accountId + " cleanup");
_networkMgr.releasePortableIpAddress(ip.getId()); _ipAddrMgr.releasePortableIpAddress(ip.getId());
} }
//release dedication if any //release dedication if any
List<DedicatedResourceVO> dedicatedResources = _dedicatedDao.listByAccountId(accountId); List<DedicatedResourceVO> dedicatedResources = _dedicatedDao.listByAccountId(accountId);

View File

@ -24,15 +24,15 @@ import java.util.Map;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.command.user.loadbalancer.ListApplicationLoadBalancersCmd; import org.apache.cloudstack.api.command.user.loadbalancer.ListApplicationLoadBalancersCmd;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.event.ActionEvent; import com.cloud.event.ActionEvent;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.event.UsageEventUtils; import com.cloud.event.UsageEventUtils;
@ -41,6 +41,7 @@ import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.UnsupportedServiceException; import com.cloud.exception.UnsupportedServiceException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
@ -86,6 +87,8 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A
@Inject FirewallRulesDao _firewallDao; @Inject FirewallRulesDao _firewallDao;
@Inject ResourceTagDao _resourceTagDao; @Inject ResourceTagDao _resourceTagDao;
@Inject NetworkManager _ntwkMgr; @Inject NetworkManager _ntwkMgr;
@Inject
IpAddressManager _ipAddrMgr;
@Override @Override
@ -284,7 +287,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A
* @return * @return
*/ */
protected String allocateSourceIpForInternalLbRule(Network sourceIpNtwk, String requestedIp) { protected String allocateSourceIpForInternalLbRule(Network sourceIpNtwk, String requestedIp) {
return _ntwkMgr.acquireGuestIpAddress(sourceIpNtwk, requestedIp); return _ipAddrMgr.acquireGuestIpAddress(sourceIpNtwk, requestedIp);
} }

View File

@ -52,6 +52,7 @@ import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.AccountVlanMapDao; import com.cloud.dc.dao.AccountVlanMapDao;
import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.VlanDao; import com.cloud.dc.dao.VlanDao;
import com.cloud.network.IpAddressManager;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.dao.FirewallRulesDao; import com.cloud.network.dao.FirewallRulesDao;
import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.IPAddressDao;
@ -88,6 +89,8 @@ public class ConfigurationManagerTest {
@Mock IPAddressDao _publicIpAddressDao; @Mock IPAddressDao _publicIpAddressDao;
@Mock DataCenterDao _zoneDao; @Mock DataCenterDao _zoneDao;
@Mock FirewallRulesDao _firewallDao; @Mock FirewallRulesDao _firewallDao;
@Mock
IpAddressManager _ipAddrMgr;
VlanVO vlan = new VlanVO(Vlan.VlanType.VirtualNetwork, "vlantag", "vlangateway","vlannetmask", 1L, "iprange", 1L, 1L, null, null, null); VlanVO vlan = new VlanVO(Vlan.VlanType.VirtualNetwork, "vlantag", "vlangateway","vlannetmask", 1L, "iprange", 1L, 1L, null, null, null);
@ -368,7 +371,7 @@ public class ConfigurationManagerTest {
when(configurationMgr._firewallDao.countRulesByIpId(anyLong())).thenReturn(0L); when(configurationMgr._firewallDao.countRulesByIpId(anyLong())).thenReturn(0L);
when(configurationMgr._networkMgr.disassociatePublicIpAddress(anyLong(), anyLong(), any(Account.class))).thenReturn(true); when(configurationMgr._ipAddrMgr.disassociatePublicIpAddress(anyLong(), anyLong(), any(Account.class))).thenReturn(true);
when(configurationMgr._vlanDao.releaseFromLockTable(anyLong())).thenReturn(true); when(configurationMgr._vlanDao.releaseFromLockTable(anyLong())).thenReturn(true);

View File

@ -39,6 +39,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network; import com.cloud.network.Network;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkRuleApplier; import com.cloud.network.NetworkRuleApplier;
@ -113,11 +114,12 @@ public class FirewallManagerTest {
FirewallManagerImpl firewallMgr = (FirewallManagerImpl)_firewallMgr; FirewallManagerImpl firewallMgr = (FirewallManagerImpl)_firewallMgr;
NetworkManager netMgr = mock(NetworkManager.class); NetworkManager netMgr = mock(NetworkManager.class);
IpAddressManager addrMgr = mock(IpAddressManager.class);
firewallMgr._networkMgr = netMgr; firewallMgr._networkMgr = netMgr;
try { try {
firewallMgr.applyRules(ruleList, false, false); firewallMgr.applyRules(ruleList, false, false);
verify(netMgr) verify(addrMgr)
.applyRules(any(List.class), .applyRules(any(List.class),
any(FirewallRule.Purpose.class), any(FirewallRule.Purpose.class),
any(NetworkRuleApplier.class), any(NetworkRuleApplier.class),

View File

@ -37,9 +37,6 @@ import org.apache.cloudstack.api.command.user.network.ListNetworksCmd;
import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd; import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
import org.apache.cloudstack.api.command.user.vm.ListNicsCmd; import org.apache.cloudstack.api.command.user.vm.ListNicsCmd;
import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.deploy.DataCenterDeployment; import com.cloud.deploy.DataCenterDeployment;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
import com.cloud.deploy.DeploymentPlan; import com.cloud.deploy.DeploymentPlan;
@ -56,15 +53,11 @@ import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.NetworkManager; import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkProfile; import com.cloud.network.NetworkProfile;
import com.cloud.network.NetworkRuleApplier;
import com.cloud.network.NetworkService; import com.cloud.network.NetworkService;
import com.cloud.network.Networks.TrafficType; import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PhysicalNetwork; import com.cloud.network.PhysicalNetwork;
import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PhysicalNetworkTrafficType; import com.cloud.network.PhysicalNetworkTrafficType;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.IPAddressVO;
import com.cloud.network.dao.NetworkServiceMapDao; import com.cloud.network.dao.NetworkServiceMapDao;
import com.cloud.network.dao.NetworkVO; import com.cloud.network.dao.NetworkVO;
import com.cloud.network.element.DhcpServiceProvider; import com.cloud.network.element.DhcpServiceProvider;
@ -73,11 +66,7 @@ import com.cloud.network.element.NetworkElement;
import com.cloud.network.element.StaticNatServiceProvider; import com.cloud.network.element.StaticNatServiceProvider;
import com.cloud.network.element.UserDataServiceProvider; import com.cloud.network.element.UserDataServiceProvider;
import com.cloud.network.guru.NetworkGuru; import com.cloud.network.guru.NetworkGuru;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.FirewallRule.State;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.network.rules.StaticNat;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
@ -198,12 +187,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
return null; return null;
} }
@Override
public IpAddress allocatePortableIp(Account ipOwner, Account caller, long dcId, Long networkId, Long vpcID)
throws ConcurrentOperationException, ResourceAllocationException, InsufficientAddressCapacityException {
return null;// TODO Auto-generated method stub
}
@Override @Override
public IpAddress allocatePortableIP(Account ipOwner, int regionId, Long zoneId, Long networkId, Long vpcId) throws ResourceAllocationException, public IpAddress allocatePortableIP(Account ipOwner, int regionId, Long zoneId, Long networkId, Long vpcId) throws ResourceAllocationException,
InsufficientAddressCapacityException, ConcurrentOperationException { InsufficientAddressCapacityException, ConcurrentOperationException {
@ -214,17 +197,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
public boolean releasePortableIpAddress(long ipAddressId) { public boolean releasePortableIpAddress(long ipAddressId) {
return false;// TODO Auto-generated method stub return false;// TODO Auto-generated method stub
} }
@Override
public boolean isPortableIpTransferableFromNetwork(long ipAddrId, long networkId) {
return false;
}
@Override
public void transferPortableIP(long ipAddrId, long currentNetworkId, long newNetworkId) throws ResourceAllocationException, ResourceUnavailableException,
InsufficientAddressCapacityException, ConcurrentOperationException {
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkService#releaseIpAddress(long) * @see com.cloud.network.NetworkService#releaseIpAddress(long)
*/ */
@ -679,33 +651,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#assignPublicIpAddress(long, java.lang.Long, com.cloud.user.Account, com.cloud.dc.Vlan.VlanType, java.lang.Long, java.lang.String, boolean)
*/
@Override
public PublicIp assignPublicIpAddress(long dcId, Long podId, Account owner, VlanType type, Long networkId,
String requestedIp, boolean isSystem) throws InsufficientAddressCapacityException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#disassociatePublicIpAddress(long, long, com.cloud.user.Account)
*/
@Override
public boolean disassociatePublicIpAddress(long id, long userId, Account caller) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#setupNetwork(com.cloud.user.Account, com.cloud.offerings.NetworkOfferingVO, com.cloud.deploy.DeploymentPlan, java.lang.String, java.lang.String, boolean) * @see com.cloud.network.NetworkManager#setupNetwork(com.cloud.user.Account, com.cloud.offerings.NetworkOfferingVO, com.cloud.deploy.DeploymentPlan, java.lang.String, java.lang.String, boolean)
*/ */
@ -816,21 +761,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#applyRules(java.util.List, com.cloud.network.rules.FirewallRule.Purpose, com.cloud.network.NetworkRuleApplier, boolean)
*/
@Override
public boolean applyRules(List<? extends FirewallRule> rules, Purpose purpose, NetworkRuleApplier applier,
boolean continueOnError) throws ResourceUnavailableException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#implementNetwork(long, com.cloud.deploy.DeployDestination, com.cloud.vm.ReservationContext) * @see com.cloud.network.NetworkManager#implementNetwork(long, com.cloud.deploy.DeployDestination, com.cloud.vm.ReservationContext)
*/ */
@ -886,21 +816,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
return null; return null;
} }
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#associateIpAddressListToAccount(long, long, long, java.lang.Long, com.cloud.network.Network)
*/
@Override
public boolean associateIpAddressListToAccount(long userId, long accountId, long zoneId, Long vlanId,
Network guestNetwork) throws InsufficientCapacityException, ConcurrentOperationException,
ResourceUnavailableException, ResourceAllocationException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#getPasswordResetProvider(com.cloud.network.Network) * @see com.cloud.network.NetworkManager#getPasswordResetProvider(com.cloud.network.Network)
*/ */
@ -917,30 +832,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
} }
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#applyIpAssociations(com.cloud.network.Network, boolean)
*/
@Override
public boolean applyIpAssociations(Network network, boolean continueOnError) throws ResourceUnavailableException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#applyIpAssociations(com.cloud.network.Network, boolean, boolean, java.util.List)
*/
@Override
public boolean applyIpAssociations(Network network, boolean rulesRevoked, boolean continueOnError,
List<? extends PublicIpAddress> publicIps) throws ResourceUnavailableException {
// TODO Auto-generated method stub
return false;
}
@ -958,46 +849,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#markIpAsUnavailable(long)
*/
@Override
public IPAddressVO markIpAsUnavailable(long addrId) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#acquireGuestIpAddress(com.cloud.network.Network, java.lang.String)
*/
@Override
public String acquireGuestIpAddress(Network network, String requestedIp) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#applyStaticNats(java.util.List, boolean)
*/
@Override
public boolean applyStaticNats(List<? extends StaticNat> staticNats, boolean continueOnError, boolean forRevoke)
throws ResourceUnavailableException {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#reallocate(com.cloud.vm.VirtualMachineProfile, com.cloud.deploy.DataCenterDeployment) * @see com.cloud.network.NetworkManager#reallocate(com.cloud.vm.VirtualMachineProfile, com.cloud.deploy.DataCenterDeployment)
*/ */
@ -1007,66 +858,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
// TODO Auto-generated method stub // TODO Auto-generated method stub
return false; return false;
} }
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#assignSystemIp(long, com.cloud.user.Account, boolean, boolean)
*/
@Override
public IpAddress assignSystemIp(long networkId, Account owner, boolean forElasticLb, boolean forElasticIp)
throws InsufficientAddressCapacityException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#handleSystemIpRelease(com.cloud.network.IpAddress)
*/
@Override
public boolean handleSystemIpRelease(IpAddress ip) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#allocateDirectIp(com.cloud.vm.NicProfile, com.cloud.dc.DataCenter, com.cloud.vm.VirtualMachineProfile, com.cloud.network.Network, java.lang.String)
*/
@Override
public void allocateDirectIp(NicProfile nic, DataCenter dc, VirtualMachineProfile vm,
Network network, String requestedIpv4, String requestedIpv6) throws InsufficientVirtualNetworkCapcityException,
InsufficientAddressCapacityException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#assignSourceNatIpAddressToGuestNetwork(com.cloud.user.Account, com.cloud.network.Network)
*/
@Override
public PublicIp assignSourceNatIpAddressToGuestNetwork(Account owner, Network guestNetwork)
throws InsufficientAddressCapacityException, ConcurrentOperationException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#allocateNic(com.cloud.vm.NicProfile, com.cloud.network.Network, java.lang.Boolean, int, com.cloud.vm.VirtualMachineProfile) * @see com.cloud.network.NetworkManager#allocateNic(com.cloud.vm.NicProfile, com.cloud.network.Network, java.lang.Boolean, int, com.cloud.vm.VirtualMachineProfile)
*/ */
@ -1107,33 +898,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#associateIPToGuestNetwork(long, long, boolean)
*/
@Override
public IPAddressVO associateIPToGuestNetwork(long ipAddrId, long networkId, boolean releaseOnFailure)
throws ResourceAllocationException, ResourceUnavailableException, InsufficientAddressCapacityException,
ConcurrentOperationException {
// TODO Auto-generated method stub
return null;
}
@Override
public IPAddressVO associatePortableIPToGuestNetwork(long ipAddrId, long networkId, boolean releaseOnFailure) throws ResourceAllocationException, ResourceUnavailableException {
return null;// TODO Auto-generated method stub
}
@Override
public IPAddressVO disassociatePortableIPToGuestNetwork(long ipAddrId, long networkId) throws ResourceAllocationException, ResourceUnavailableException, InsufficientAddressCapacityException, ConcurrentOperationException {
return null;// TODO Auto-generated method stub
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#setupDns(com.cloud.network.Network, com.cloud.network.Network.Provider) * @see com.cloud.network.NetworkManager#setupDns(com.cloud.network.Network, com.cloud.network.Network.Provider)
*/ */
@ -1166,31 +930,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
return null; return null;
} }
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#markPublicIpAsAllocated(com.cloud.network.IPAddressVO)
*/
@Override
public void markPublicIpAsAllocated(IPAddressVO addr) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#assignDedicateIpAddress(com.cloud.user.Account, java.lang.Long, java.lang.Long, long, boolean)
*/
@Override
public PublicIp assignDedicateIpAddress(Account owner, Long guestNtwkId, Long vpcId, long dcId, boolean isSourceNat)
throws ConcurrentOperationException, InsufficientAddressCapacityException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#convertNetworkToNetworkProfile(long) * @see com.cloud.network.NetworkManager#convertNetworkToNetworkProfile(long)
*/ */
@ -1256,20 +995,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#allocateIp(com.cloud.user.Account, boolean, com.cloud.user.Account, com.cloud.dc.DataCenter)
*/
@Override
public IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller, long callerId, DataCenter zone)
throws ConcurrentOperationException, ResourceAllocationException, InsufficientAddressCapacityException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.network.NetworkManager#finalizeServicesAndProvidersForNetwork(com.cloud.offering.NetworkOffering, java.lang.Long) * @see com.cloud.network.NetworkManager#finalizeServicesAndProvidersForNetwork(com.cloud.offering.NetworkOffering, java.lang.Long)
*/ */
@ -1296,13 +1021,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@Override
public int getRuleCountForIp(Long addressId, Purpose purpose, State state) {
// TODO Auto-generated method stub
return 0;
}
@Override @Override
public LoadBalancingServiceProvider getLoadBalancingProviderForNetwork(Network network, Scheme lbScheme) { public LoadBalancingServiceProvider getLoadBalancingProviderForNetwork(Network network, Scheme lbScheme) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -1351,22 +1069,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
@Override
public String allocateGuestIP(Account ipOwner, boolean isSystem,
long zoneId, Long networkId, String requestedIp)
throws InsufficientAddressCapacityException {
// TODO Auto-generated method stub
return null;
}
@Override @Override
public List<? extends Nic> listVmNics(Long vmId, Long nicId) { public List<? extends Nic> listVmNics(Long vmId, Long nicId) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -1389,15 +1091,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
} }
@Override
public String allocatePublicIpForGuestNic(Long networkId, DataCenter dc,
Pod pod, Account caller, String requestedIp)
throws InsufficientAddressCapacityException {
// TODO Auto-generated method stub
return null;
}
@Override @Override
public NicVO savePlaceholderNic(Network network, String ip4Address, String ip6Address, Type vmType) { public NicVO savePlaceholderNic(Network network, String ip4Address, String ip6Address, Type vmType) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -1409,11 +1102,6 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
return null; //To change body of implemented methods use File | Settings | File Templates. return null; //To change body of implemented methods use File | Settings | File Templates.
} }
@Override
public PublicIp assignPublicIpAddressFromVlans(long dcId, Long podId, Account owner, VlanType type, List<Long> vlanDbIds, Long networkId, String requestedIp, boolean isSystem) throws InsufficientAddressCapacityException {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@Override @Override
public void removeDhcpServiceInSubnet(NicVO nic) { public void removeDhcpServiceInSubnet(NicVO nic) {
//To change body of implemented methods use File | Settings | File Templates. //To change body of implemented methods use File | Settings | File Templates.