You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2013/04/26 01:36:24 UTC
[2/2] git commit: updated refs/heads/internallb to 4f9c47c
InternalLb: create internal lb vm specific service offering
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4f9c47ce
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4f9c47ce
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4f9c47ce
Branch: refs/heads/internallb
Commit: 4f9c47ce54915f9c9eb8042936f3a1b19553399d
Parents: 408ee59
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Thu Apr 25 14:46:42 2013 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Thu Apr 25 16:02:58 2013 -0700
----------------------------------------------------------------------
api/src/com/cloud/offering/ServiceOffering.java | 1 +
.../network/lb/InternalLoadBalancerVMManager.java | 3 +
.../lb/InternalLoadBalancerVMManagerImpl.java | 83 +++++++--------
server/src/com/cloud/configuration/Config.java | 5 +-
.../configuration/ConfigurationManagerImpl.java | 2 +
setup/db/db/schema-410to420.sql | 5 +-
6 files changed, 55 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f9c47ce/api/src/com/cloud/offering/ServiceOffering.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/offering/ServiceOffering.java b/api/src/com/cloud/offering/ServiceOffering.java
index d6c215f..165369c 100755
--- a/api/src/com/cloud/offering/ServiceOffering.java
+++ b/api/src/com/cloud/offering/ServiceOffering.java
@@ -30,6 +30,7 @@ public interface ServiceOffering extends InfrastructureEntity, InternalIdentity,
public static final String ssvmDefaultOffUniqueName = "Cloud.com-SecondaryStorage";
public static final String routerDefaultOffUniqueName = "Cloud.Com-SoftwareRouter";
public static final String elbVmDefaultOffUniqueName = "Cloud.Com-ElasticLBVm";
+ public static final String internalLbVmDefaultOffUniqueName = "Cloud.Com-InternalLBVm";
public enum StorageType {
local,
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f9c47ce/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManager.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManager.java b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManager.java
index 351e021..4706019 100644
--- a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManager.java
+++ b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManager.java
@@ -32,6 +32,9 @@ import com.cloud.utils.net.Ip;
import com.cloud.vm.VirtualMachineProfile.Param;
public interface InternalLoadBalancerVMManager extends Manager, InternalLoadBalancerVMService{
+ public static final int DEFAULT_INTERNALLB_VM_RAMSIZE = 128; // 128 MB
+ public static final int DEFAULT_INTERNALLB_VM_CPU_MHZ = 256; // 256 MHz
+
/**
* Destroys Internal LB vm instance
* @param vmId
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f9c47ce/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
index b4645e9..e9c4afb 100644
--- a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
+++ b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
@@ -79,7 +79,6 @@ import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy;
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
import com.cloud.network.lb.LoadBalancingRulesManager;
-import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.router.VirtualRouter;
import com.cloud.network.router.VirtualRouter.RedundantState;
import com.cloud.network.router.VirtualRouter.Role;
@@ -95,7 +94,6 @@ import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.User;
-import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.DB;
@@ -123,15 +121,15 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
private static final Logger s_logger = Logger
.getLogger(InternalLoadBalancerVMManagerImpl.class);
+ static final private String _internalLbVmNamePrefix = "b";
+
private String _instance;
private String _mgmtHost;
private String _mgmtCidr;
- int _internalLbVmRamSize;
- int _internalLbVmCpuMHz;
- private ServiceOfferingVO _internalLbVmOffering;
+ private long _internalLbVmOfferingId;
@Inject VirtualMachineManager _itMgr;
- @Inject DomainRouterDao _routerDao;
+ @Inject DomainRouterDao _internalLbVmDao;
@Inject ConfigurationDao _configDao;
@Inject AgentManager _agentMgr;
@Inject DataCenterDao _dcDao;
@@ -151,21 +149,21 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
@Override
public DomainRouterVO findByName(String name) {
- if (!VirtualMachineName.isValidRouterName(name)) {
+ if (!VirtualMachineName.isValidSystemVmName(name, _instance, _internalLbVmNamePrefix)) {
return null;
}
- return _routerDao.findById(VirtualMachineName.getRouterId(name));
+ return _internalLbVmDao.findById(VirtualMachineName.getRouterId(name));
}
@Override
public DomainRouterVO findById(long id) {
- return _routerDao.findById(id);
+ return _internalLbVmDao.findById(id);
}
@Override
public DomainRouterVO persist(DomainRouterVO vm) {
- DomainRouterVO virtualRouter = _routerDao.persist(vm);
+ DomainRouterVO virtualRouter = _internalLbVmDao.persist(vm);
return virtualRouter;
}
@@ -173,6 +171,10 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
public boolean finalizeVirtualMachineProfile(VirtualMachineProfile<DomainRouterVO> profile,
DeployDestination dest, ReservationContext context) {
+ //Internal LB vm starts up with 2 Nics
+ //Nic #1 - Guest Nic with IP address that would act as the LB entry point
+ //Nic #2 - Control/Management Nic
+
StringBuilder buf = profile.getBootArgsBuilder();
buf.append(" template=domP");
buf.append(" name=").append(profile.getHostName());
@@ -257,7 +259,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
internalLbVm.setPrivateMacAddress(nic.getMacAddress());
}
}
- _routerDao.update(internalLbVm.getId(), internalLbVm);
+ _internalLbVmDao.update(internalLbVm.getId(), internalLbVm);
finalizeCommandsOnStart(cmds, profile);
return true;
@@ -285,9 +287,9 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
//Get guest network info
List<Network> guestNetworks = new ArrayList<Network>();
- List<? extends Nic> internalLbNics = _nicDao.listByVmId(profile.getId());
- for (Nic routerNic : internalLbNics) {
- Network network = _ntwkModel.getNetwork(routerNic.getNetworkId());
+ List<? extends Nic> internalLbVmNics = _nicDao.listByVmId(profile.getId());
+ for (Nic internalLbVmNic : internalLbVmNics) {
+ Network network = _ntwkModel.getNetwork(internalLbVmNic.getNetworkId());
if (network.getTrafficType() == TrafficType.Guest) {
guestNetworks.add(network);
}
@@ -303,7 +305,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
} else {
internalLbVm.setTemplateVersion(versionAnswer.getTemplateVersion());
internalLbVm.setScriptsVersion(versionAnswer.getScriptsVersion());
- internalLbVm = _routerDao.persist(internalLbVm, guestNetworks);
+ internalLbVm = _internalLbVmDao.persist(internalLbVm, guestNetworks);
}
} else {
result = false;
@@ -359,7 +361,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
@Override
public Long convertToId(String vmName) {
- if (!VirtualMachineName.isValidRouterName(vmName, _instance)) {
+ if (!VirtualMachineName.isValidSystemVmName(vmName, _instance, _internalLbVmNamePrefix)) {
return null;
}
@@ -392,17 +394,19 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
}
_mgmtHost = configs.get("host");
-
_mgmtCidr = _configDao.getValue(Config.ManagementNetwork.key());
- _internalLbVmRamSize = NumbersUtil.parseInt(configs.get("router.ram.size"), VirtualNetworkApplianceManager.DEFAULT_ROUTER_VM_RAMSIZE);
- _internalLbVmCpuMHz = NumbersUtil.parseInt(configs.get("router.cpu.mhz"), VirtualNetworkApplianceManager.DEFAULT_ROUTER_CPU_MHZ);
-
- boolean useLocalStorage = Boolean.parseBoolean(configs.get(Config.SystemVMUseLocalStorage.key()));
- _internalLbVmOffering = new ServiceOfferingVO("System Offering For Software Router", 1, _internalLbVmRamSize, _internalLbVmCpuMHz, null,
- null, true, null, useLocalStorage, true, null, true, VirtualMachine.Type.DomainRouter, true);
- _internalLbVmOffering.setUniqueName(ServiceOffering.routerDefaultOffUniqueName);
- _internalLbVmOffering = _serviceOfferingDao.persistSystemServiceOffering(_internalLbVmOffering);
+ String offIdStr = configs.get(Config.InternalLbVmServiceOfferingId.key());
+ if (offIdStr != null && !offIdStr.isEmpty()) {
+ _internalLbVmOfferingId = Long.parseLong(offIdStr);
+ } else {
+ boolean useLocalStorage = Boolean.parseBoolean(configs.get(Config.SystemVMUseLocalStorage.key()));
+ ServiceOfferingVO newOff = new ServiceOfferingVO("System Offering For Internal LB VM", 1, InternalLoadBalancerVMManager.DEFAULT_INTERNALLB_VM_RAMSIZE, InternalLoadBalancerVMManager.DEFAULT_INTERNALLB_VM_CPU_MHZ, null,
+ null, true, null, useLocalStorage, true, null, true, VirtualMachine.Type.InternalLoadBalancerVm, true);
+ newOff.setUniqueName(ServiceOffering.internalLbVmDefaultOffUniqueName);
+ newOff = _serviceOfferingDao.persistSystemServiceOffering(newOff);
+ _internalLbVmOfferingId = newOff.getId();
+ }
_itMgr.registerGuru(VirtualMachine.Type.InternalLoadBalancerVm, this);
@@ -516,7 +520,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
if(controlIpAddress == null) {
s_logger.warn("Unable to find Internal LB control ip in its attached NICs!. Internal LB vm: " + internalLbVmId);
- DomainRouterVO internalLbVm = _routerDao.findById(internalLbVmId);
+ DomainRouterVO internalLbVm = _internalLbVmDao.findById(internalLbVmId);
return internalLbVm.getPrivateIpAddress();
}
@@ -530,7 +534,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
s_logger.debug("Attempting to destroy Internal LB vm " + vmId);
}
- DomainRouterVO internalLbVm = _routerDao.findById(vmId);
+ DomainRouterVO internalLbVm = _internalLbVmDao.findById(vmId);
if (internalLbVm == null) {
return true;
}
@@ -544,7 +548,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
@Override
public VirtualRouter stopInternalLbVm(long vmId, boolean forced, Account caller, long callerUserId) throws ConcurrentOperationException,
ResourceUnavailableException {
- DomainRouterVO internalLbVm = _routerDao.findById(vmId);
+ DomainRouterVO internalLbVm = _internalLbVmDao.findById(vmId);
if (internalLbVm == null || internalLbVm.getRole() != Role.INTERNAL_LB_VM) {
throw new InvalidParameterValueException("Can't find internal lb vm by id");
}
@@ -556,7 +560,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
s_logger.debug("Stopping internal lb vm " + internalLbVm);
try {
if (_itMgr.advanceStop((DomainRouterVO) internalLbVm, forced, _accountMgr.getActiveUser(callerUserId), caller)) {
- return _routerDao.findById(internalLbVm.getId());
+ return _internalLbVmDao.findById(internalLbVm.getId());
} else {
return null;
}
@@ -631,11 +635,6 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
+ guestNetwork;
assert guestNetwork.getTrafficType() == TrafficType.Guest;
- Long offeringId = _networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()).getServiceOfferingId();
- if (offeringId == null) {
- offeringId = _internalLbVmOffering.getId();
- }
-
// 3) deploy internal lb vm
Pair<DeploymentPlan, List<DomainRouterVO>> planAndInternalLbVms = getDeploymentPlanAndInternalLbVms(dest, guestNetwork.getId(), requestedGuestIp);
internalLbs = planAndInternalLbVms.second();
@@ -648,10 +647,10 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
List<Pair<NetworkVO, NicProfile>> networks = createInternalLbVmNetworks(guestNetwork, plan, requestedGuestIp);
//don't start the internal lb as we are holding the network lock that needs to be released at the end of router allocation
- DomainRouterVO internalLbVm = deployInternalLbVm(owner, dest, plan, params, internalLbProvider, offeringId, guestNetwork.getVpcId(),
+ DomainRouterVO internalLbVm = deployInternalLbVm(owner, dest, plan, params, internalLbProvider, _internalLbVmOfferingId, guestNetwork.getVpcId(),
networks, false);
if (internalLbVm != null) {
- _routerDao.addRouterToGuestNetwork(internalLbVm, guestNetwork);
+ _internalLbVmDao.addRouterToGuestNetwork(internalLbVm, guestNetwork);
internalLbs.add(internalLbVm);
}
} finally {
@@ -713,7 +712,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
@Override
public List<DomainRouterVO> findInternalLbVms(long guestNetworkId, Ip requestedGuestIp) {
- List<DomainRouterVO> internalLbVms = _routerDao.listByNetworkAndRole(guestNetworkId, Role.INTERNAL_LB_VM);
+ List<DomainRouterVO> internalLbVms = _internalLbVmDao.listByNetworkAndRole(guestNetworkId, Role.INTERNAL_LB_VM);
if (requestedGuestIp != null) {
Iterator<DomainRouterVO> it = internalLbVms.iterator();
while (it.hasNext()) {
@@ -734,7 +733,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
InsufficientAddressCapacityException, InsufficientServerCapacityException, InsufficientCapacityException,
StorageUnavailableException, ResourceUnavailableException {
- long id = _routerDao.getNextInSequence(Long.class, "id");
+ long id = _internalLbVmDao.getNextInSequence(Long.class, "id");
if (s_logger.isDebugEnabled()) {
s_logger.debug("Creating the internal lb vm " + id + " in datacenter " + dest.getDataCenter());
}
@@ -760,7 +759,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
}
internalLbVm = new DomainRouterVO(id, routerOffering.getId(), internalLbProvider.getId(),
- VirtualMachineName.getRouterName(id, _instance), template.getId(), template.getHypervisorType(),
+ VirtualMachineName.getSystemVmName(id, _instance, _internalLbVmNamePrefix), template.getId(), template.getHypervisorType(),
template.getGuestOSId(), owner.getDomainId(), owner.getId(), false, 0, false,
RedundantState.UNKNOWN, false, false, VirtualMachine.Type.InternalLoadBalancerVm, vpcId);
internalLbVm.setRole(Role.INTERNAL_LB_VM);
@@ -811,9 +810,9 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
if (internalLbVm.isStopPending()) {
s_logger.info("Clear the stop pending flag of Internal LB VM " + internalLbVm.getHostName() + " after start router successfully!");
internalLbVm.setStopPending(false);
- internalLbVm = _routerDao.persist(internalLbVm);
+ internalLbVm = _internalLbVmDao.persist(internalLbVm);
}
- return _routerDao.findById(internalLbVm.getId());
+ return _internalLbVmDao.findById(internalLbVm.getId());
} else {
return null;
}
@@ -914,7 +913,7 @@ InternalLoadBalancerVMManager, VirtualMachineGuru<DomainRouterVO> {
throws StorageUnavailableException, InsufficientCapacityException,
ConcurrentOperationException, ResourceUnavailableException {
- DomainRouterVO internalLbVm = _routerDao.findById(internalLbVmId);
+ DomainRouterVO internalLbVm = _internalLbVmDao.findById(internalLbVmId);
if (internalLbVm == null || internalLbVm.getRole() != Role.INTERNAL_LB_VM) {
throw new InvalidParameterValueException("Can't find internal lb vm by id specified");
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f9c47ce/server/src/com/cloud/configuration/Config.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java
index dbcbc53..084a96f 100755
--- a/server/src/com/cloud/configuration/Config.java
+++ b/server/src/com/cloud/configuration/Config.java
@@ -403,7 +403,10 @@ public enum Config {
CloudDnsName("Advanced", ManagementServer.class, String.class, "cloud.dns.name", "default", " DNS name of the cloud", null),
BlacklistedRoutes("Advanced", VpcManager.class, String.class, "blacklisted.routes", null, "Routes that are blacklisted, can not be used for Static Routes creation for the VPC Private Gateway",
- "routes", ConfigurationParameterScope.zone.toString());
+ "routes", ConfigurationParameterScope.zone.toString()),
+
+ InternalLbVmServiceOfferingId("Advanced", ManagementServer.class, Long.class, "internallbvm.service.offering", null, "Uuid of the service offering used by internal lb vm; if NULL - default system internal lb offering will be used", null);
+
private final String _category;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f9c47ce/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 144c48e..f281b14 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -1857,6 +1857,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
vmType = VirtualMachine.Type.ConsoleProxy;
} else if (VirtualMachine.Type.SecondaryStorageVm.toString().toLowerCase().equals(vmTypeString)) {
vmType = VirtualMachine.Type.SecondaryStorageVm;
+ } else if (VirtualMachine.Type.InternalLoadBalancerVm.toString().toLowerCase().equals(vmTypeString)) {
+ vmType = VirtualMachine.Type.InternalLoadBalancerVm;
} else {
throw new InvalidParameterValueException("Invalid systemVmType. Supported types are: " + VirtualMachine.Type.DomainRouter + ", " + VirtualMachine.Type.ConsoleProxy + ", "
+ VirtualMachine.Type.SecondaryStorageVm);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f9c47ce/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index 4558f90..2ba5165 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -1243,4 +1243,7 @@ ALTER TABLE `cloud`.`network_offerings` ADD COLUMN `internal_lb` int(1) unsigned
ALTER TABLE `cloud`.`network_offerings` ADD COLUMN `public_lb` int(1) unsigned NOT NULL DEFAULT '0' COMMENT 'true if the network offering supports Public lb service';
UPDATE `cloud`.`network_offerings` SET public_lb=1 where id IN (SELECT DISTINCT network_offering_id FROM `cloud`.`ntwk_offering_service_map` WHERE service='Lb');
-alter table `cloud_usage`.`usage_network_offering` add column nic_id bigint(20) unsigned NOT NULL;
+alter table `cloud_usage`.`usage_network_offering` add column nic_id bigint(20) unsigned NOT NULL;
+
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'NetworkManager', 'internallbvm.service.offering', null, 'Uuid of the service offering used by internal lb vm; if NULL - default system internal lb offering will be used');
+