Moved NetworkManagerImpl to NetworkOrchestrator
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2e5bb63f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2e5bb63f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2e5bb63f Branch: refs/heads/master Commit: 2e5bb63f77c3bdd807d686d3899b4e5a94fa67f0 Parents: 8e5249d Author: Alex Huang <alex.hu...@citrix.com> Authored: Mon Aug 19 21:33:31 2013 -0700 Committer: Alex Huang <alex.hu...@citrix.com> Committed: Fri Sep 6 15:40:32 2013 -0700 ---------------------------------------------------------------------- .../com/cloud/network/NetworkRuleApplier.java | 28 + api/src/com/cloud/network/guru/NetworkGuru.java | 4 +- .../service/VolumeOrchestrationService.java | 3 + engine/components-api/pom.xml | 10 + .../cloud/deploy/DeploymentPlanningManager.java | 50 + .../src/com/cloud/event/UsageEventUtils.java | 168 + .../src/com/cloud/network/IpAddressManager.java | 181 + .../src/com/cloud/network/addr/PublicIp.java | 235 ++ .../network/lb/LoadBalancingRulesManager.java | 62 + .../src/com/cloud/template/TemplateManager.java | 115 + .../com/cloud/vm/ReservationContextImpl.java | 96 + .../com/cloud/vm/VirtualMachineProfileImpl.java | 258 ++ engine/orchestration/pom.xml | 8 +- .../orchestration/NetworkOrchestrator.java | 3155 +++++++++++++++++ .../orchestration/VolumeOrchestrator.java | 102 +- engine/schema/pom.xml | 10 - .../cloud/storage/dao/GuestOSHypervisorDao.java | 27 + .../storage/dao/GuestOSHypervisorDaoImpl.java | 49 + .../cloud/storage/dao/VMTemplateDaoImpl.java | 11 +- .../com/cloud/storage/dao/VolumeDetailsDao.java | 36 + .../cloud/storage/dao/VolumeDetailsDaoImpl.java | 114 + engine/schema/src/com/cloud/vm/NicDetailVO.java | 85 + .../src/com/cloud/vm/dao/NicDetailDao.java | 35 + .../src/com/cloud/vm/dao/NicDetailDaoImpl.java | 110 + .../src/com/cloud/vm/dao/NicIpAliasDao.java | 60 + .../src/com/cloud/vm/dao/NicIpAliasDaoImpl.java | 177 + .../src/com/cloud/vm/dao/NicIpAliasVO.java | 226 ++ .../guru/BigSwitchVnsGuestNetworkGuru.java | 5 +- .../network/guru/MidoNetGuestNetworkGuru.java | 5 +- .../network/guru/MidoNetPublicNetworkGuru.java | 2 +- .../network/guru/NiciraNvpGuestNetworkGuru.java | 5 +- server/pom.xml | 12 + .../cloud/deploy/DeploymentPlanningManager.java | 50 - server/src/com/cloud/event/UsageEventUtils.java | 165 - .../src/com/cloud/network/IpAddressManager.java | 181 - .../com/cloud/network/NetworkManagerImpl.java | 3172 ------------------ .../com/cloud/network/NetworkRuleApplier.java | 28 - server/src/com/cloud/network/addr/PublicIp.java | 235 -- .../cloud/network/guru/ControlNetworkGuru.java | 2 +- .../cloud/network/guru/DirectNetworkGuru.java | 2 +- .../cloud/network/guru/GuestNetworkGuru.java | 2 +- .../cloud/network/guru/PodBasedNetworkGuru.java | 2 +- .../cloud/network/guru/PrivateNetworkGuru.java | 2 +- .../cloud/network/guru/PublicNetworkGuru.java | 2 +- .../cloud/network/guru/StorageNetworkGuru.java | 2 +- .../network/lb/LoadBalancingRulesManager.java | 62 - .../lb/LoadBalancingRulesManagerImpl.java | 2 - .../src/com/cloud/resource/ResourceManager.java | 16 - .../com/cloud/resource/ResourceManagerImpl.java | 27 - .../com/cloud/storage/VolumeApiServiceImpl.java | 58 +- .../cloud/storage/dao/GuestOSHypervisorDao.java | 27 - .../storage/dao/GuestOSHypervisorDaoImpl.java | 49 - .../com/cloud/storage/dao/VolumeDetailsDao.java | 36 - .../cloud/storage/dao/VolumeDetailsDaoImpl.java | 114 - .../src/com/cloud/template/TemplateManager.java | 117 - .../com/cloud/template/TemplateManagerImpl.java | 2 - server/src/com/cloud/vm/NicDetailVO.java | 85 - .../com/cloud/vm/ReservationContextImpl.java | 96 - .../com/cloud/vm/VirtualMachineProfileImpl.java | 258 -- server/src/com/cloud/vm/dao/NicDetailDao.java | 35 - .../src/com/cloud/vm/dao/NicDetailDaoImpl.java | 110 - server/src/com/cloud/vm/dao/NicIpAliasDao.java | 60 - .../src/com/cloud/vm/dao/NicIpAliasDaoImpl.java | 177 - server/src/com/cloud/vm/dao/NicIpAliasVO.java | 226 -- .../lb/ApplicationLoadBalancerManagerImpl.java | 5 +- .../com/cloud/network/NetworkManagerTest.java | 69 - .../cloud/resource/MockResourceManagerImpl.java | 16 - .../lb/ApplicationLoadBalancerTest.java | 7 +- 68 files changed, 5389 insertions(+), 5554 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/api/src/com/cloud/network/NetworkRuleApplier.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/NetworkRuleApplier.java b/api/src/com/cloud/network/NetworkRuleApplier.java new file mode 100644 index 0000000..31763d0 --- /dev/null +++ b/api/src/com/cloud/network/NetworkRuleApplier.java @@ -0,0 +1,28 @@ +// 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 com.cloud.network; + +import java.util.List; + +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.rules.FirewallRule; + +public interface NetworkRuleApplier { + public boolean applyRules(Network network, FirewallRule.Purpose purpose, List<? extends FirewallRule> rules) throws ResourceUnavailableException; + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/api/src/com/cloud/network/guru/NetworkGuru.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/guru/NetworkGuru.java b/api/src/com/cloud/network/guru/NetworkGuru.java index 4127233..57ffef8 100755 --- a/api/src/com/cloud/network/guru/NetworkGuru.java +++ b/api/src/com/cloud/network/guru/NetworkGuru.java @@ -29,7 +29,6 @@ import com.cloud.user.Account; import com.cloud.utils.component.Adapter; import com.cloud.vm.NicProfile; import com.cloud.vm.ReservationContext; -import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; /** @@ -196,10 +195,9 @@ public interface NetworkGuru extends Adapter { * * @param network guest network being destroyed. * @param offering network offering the guest network was created with. - * @param owner owner of the network. * @return true if trash was successful; false if not. */ - boolean trash(Network network, NetworkOffering offering, Account owner); + boolean trash(Network network, NetworkOffering offering); void updateNetworkProfile(NetworkProfile networkProfile); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/api/src/org/apache/cloudstack/engine/orchestration/service/VolumeOrchestrationService.java ---------------------------------------------------------------------- diff --git a/engine/api/src/org/apache/cloudstack/engine/orchestration/service/VolumeOrchestrationService.java b/engine/api/src/org/apache/cloudstack/engine/orchestration/service/VolumeOrchestrationService.java index 5f21eb5..a773ac4 100644 --- a/engine/api/src/org/apache/cloudstack/engine/orchestration/service/VolumeOrchestrationService.java +++ b/engine/api/src/org/apache/cloudstack/engine/orchestration/service/VolumeOrchestrationService.java @@ -33,6 +33,7 @@ import com.cloud.exception.StorageUnavailableException; import com.cloud.host.Host; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.offering.DiskOffering; +import com.cloud.storage.Snapshot; import com.cloud.storage.StoragePool; import com.cloud.storage.Volume; import com.cloud.storage.Volume.Type; @@ -61,6 +62,8 @@ public interface VolumeOrchestrationService { String getVmNameOnVolume(Volume volume); + VolumeInfo createVolumeFromSnapshot(Volume volume, Snapshot snapshot) throws StorageUnavailableException; + Volume migrateVolume(Volume volume, StoragePool destPool) throws StorageUnavailableException; void destroyVolume(Volume volume); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/pom.xml ---------------------------------------------------------------------- diff --git a/engine/components-api/pom.xml b/engine/components-api/pom.xml index fdcac6a..55af5ee 100644 --- a/engine/components-api/pom.xml +++ b/engine/components-api/pom.xml @@ -35,11 +35,21 @@ </dependency> <dependency> <groupId>org.apache.cloudstack</groupId> + <artifactId>cloud-engine-schema</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.cloudstack</groupId> <artifactId>cloud-framework-ipc</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.cloudstack</groupId> + <artifactId>cloud-framework-events</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.cloudstack</groupId> <artifactId>cloud-framework-jobs</artifactId> <version>${project.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/deploy/DeploymentPlanningManager.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/deploy/DeploymentPlanningManager.java b/engine/components-api/src/com/cloud/deploy/DeploymentPlanningManager.java new file mode 100644 index 0000000..7dde815 --- /dev/null +++ b/engine/components-api/src/com/cloud/deploy/DeploymentPlanningManager.java @@ -0,0 +1,50 @@ +// 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 com.cloud.deploy; + +import com.cloud.deploy.DeploymentPlanner.ExcludeList; +import com.cloud.exception.AffinityConflictException; +import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.utils.component.Manager; +import com.cloud.vm.VirtualMachineProfile; + +public interface DeploymentPlanningManager extends Manager { + + /** + * Manages vm deployment stages: First Process Affinity/Anti-affinity - Call + * the chain of AffinityGroupProcessor adapters to set deploymentplan scope + * and exclude list Secondly, Call DeploymentPlanner - to use heuristics to + * find the best spot to place the vm/volume. Planner will drill down to the + * write set of clusters to look for placement based on various heuristics. + * Lastly, Call Allocators - Given a cluster, allocators matches the + * requirements to capabilities of the physical resource (host, storage + * pool). + * + * @throws AffinityConflictException + * + * + * + */ + DeployDestination planDeployment(VirtualMachineProfile vmProfile, DeploymentPlan plan, + ExcludeList avoids) throws InsufficientServerCapacityException, AffinityConflictException; + + String finalizeReservation(DeployDestination plannedDestination, + VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoids) + throws InsufficientServerCapacityException, AffinityConflictException; + + void cleanupVMReservations(); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/event/UsageEventUtils.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/event/UsageEventUtils.java b/engine/components-api/src/com/cloud/event/UsageEventUtils.java new file mode 100644 index 0000000..b44ed32 --- /dev/null +++ b/engine/components-api/src/com/cloud/event/UsageEventUtils.java @@ -0,0 +1,168 @@ +// 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 com.cloud.event; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; + +import org.apache.cloudstack.framework.events.Event; +import org.apache.cloudstack.framework.events.EventBus; +import org.apache.cloudstack.framework.events.EventBusException; + +import com.cloud.dc.DataCenterVO; +import com.cloud.dc.dao.DataCenterDao; +import com.cloud.event.dao.UsageEventDao; +import com.cloud.user.Account; +import com.cloud.user.dao.AccountDao; +import com.cloud.utils.component.ComponentContext; + +public class UsageEventUtils { + + private static UsageEventDao _usageEventDao; + private static AccountDao _accountDao; + private static DataCenterDao _dcDao; + private static final Logger s_logger = Logger.getLogger(UsageEventUtils.class); + protected static EventBus _eventBus = null; + + @Inject UsageEventDao usageEventDao; + @Inject AccountDao accountDao; + @Inject DataCenterDao dcDao; + + public UsageEventUtils() { + } + + @PostConstruct + void init() { + _usageEventDao = usageEventDao; + _accountDao = accountDao; + _dcDao = dcDao; + } + + public static void publishUsageEvent(String usageType, long accountId, long zoneId, + long resourceId, String resourceName, + Long offeringId, Long templateId, Long size, + String entityType, String entityUUID) { + saveUsageEvent(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, size); + publishUsageEvent(usageType, accountId, zoneId, entityType, entityUUID); + } + + public static void publishUsageEvent(String usageType, long accountId, long zoneId, + long resourceId, String resourceName, + Long offeringId, Long templateId, Long size, Long virtualSize, + String entityType, String entityUUID) { + saveUsageEvent(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, size, virtualSize); + publishUsageEvent(usageType, accountId, zoneId, entityType, entityUUID); + } + + public static void publishUsageEvent(String usageType, long accountId, long zoneId, long resourceId, + String resourceName, String entityType, String entityUUID) { + saveUsageEvent(usageType, accountId, zoneId, resourceId, resourceName); + publishUsageEvent(usageType, accountId, zoneId, entityType, entityUUID); + } + + public static void publishUsageEvent(String usageType, long accountId, long zoneId, + long ipAddressId, String ipAddress, boolean isSourceNat, + String guestType, boolean isSystem, String entityType, String entityUUID) { + saveUsageEvent(usageType, accountId, zoneId, ipAddressId, ipAddress, isSourceNat, guestType, isSystem); + publishUsageEvent(usageType, accountId, zoneId, entityType, entityUUID); + } + + public static void publishUsageEvent(String usageType, long accountId, long zoneId, long resourceId, + String resourceName, Long offeringId, Long templateId, String resourceType, + String entityType, String entityUUID) { + saveUsageEvent(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, resourceType); + publishUsageEvent(usageType, accountId, zoneId, entityType, entityUUID); + } + + public static void publishUsageEvent(String usageType, long accountId,long zoneId, long vmId, + long securityGroupId, String entityType, String entityUUID) { + saveUsageEvent(usageType, accountId, zoneId, vmId, securityGroupId); + publishUsageEvent(usageType, accountId, zoneId, entityType, entityUUID); + } + + public static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, Long size) { + _usageEventDao.persist( new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, size)); + } + + public static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, Long size, Long virtualSize) { + _usageEventDao.persist( new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, size, virtualSize)); + } + public static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName) { + _usageEventDao.persist( new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName)); + } + + public static void saveUsageEvent(String usageType, long accountId, long zoneId, long ipAddressId, String ipAddress, boolean isSourceNat, String guestType, boolean isSystem) { + _usageEventDao.persist( new UsageEventVO(usageType, accountId, zoneId, ipAddressId, ipAddress, isSourceNat, guestType, isSystem)); + } + + public static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, String resourceType) { + _usageEventDao.persist( new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, resourceType)); + } + + public static void saveUsageEvent(String usageType, long accountId,long zoneId, long vmId, long securityGroupId) { + _usageEventDao.persist( new UsageEventVO( usageType, accountId, zoneId, vmId, securityGroupId)); + } + + private static void publishUsageEvent(String usageEventType, Long accountId, Long zoneId, String resourceType, String resourceUUID) { + + try { + _eventBus = ComponentContext.getComponent(EventBus.class); + } catch(NoSuchBeanDefinitionException nbe) { + return; // no provider is configured to provide events bus, so just return + } + + Account account = _accountDao.findById(accountId); + DataCenterVO dc = _dcDao.findById(zoneId); + + // if account has been deleted, this might be called during cleanup of resources and results in null pointer + if (account == null) + return; + + Event event = new Event(Name, EventCategory.USAGE_EVENT.getName(), usageEventType, + resourceType, resourceUUID); + + Map<String, String> eventDescription = new HashMap<String, String>(); + eventDescription.put("account", account.getUuid()); + eventDescription.put("zone", dc.getUuid()); + eventDescription.put("event", usageEventType); + eventDescription.put("resource", resourceType); + eventDescription.put("id", resourceUUID); + + String eventDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").format(new Date()); + eventDescription.put("eventDateTime", eventDate); + + event.setDescription(eventDescription); + + try { + _eventBus.publish(event); + } catch (EventBusException e) { + s_logger.warn("Failed to publish usage event on the the event bus."); + } + } + + static final String Name = "management-server"; + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/network/IpAddressManager.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/network/IpAddressManager.java b/engine/components-api/src/com/cloud/network/IpAddressManager.java new file mode 100644 index 0000000..0394ebb --- /dev/null +++ b/engine/components-api/src/com/cloud/network/IpAddressManager.java @@ -0,0 +1,181 @@ +// 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 com.cloud.network; + +import java.util.List; + +import com.cloud.dc.DataCenter; +import com.cloud.dc.Pod; +import com.cloud.dc.Vlan.VlanType; +import com.cloud.exception.ConcurrentOperationException; +import com.cloud.exception.InsufficientAddressCapacityException; +import com.cloud.exception.InsufficientCapacityException; +import com.cloud.exception.InsufficientVirtualNetworkCapcityException; +import com.cloud.exception.ResourceAllocationException; +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.addr.PublicIp; +import com.cloud.network.dao.IPAddressVO; +import com.cloud.network.rules.FirewallRule; +import com.cloud.network.rules.StaticNat; +import com.cloud.user.Account; +import com.cloud.vm.NicProfile; +import com.cloud.vm.VirtualMachineProfile; + +public interface IpAddressManager { + /** + * 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 + */ + boolean disassociatePublicIpAddress(long id, long userId, Account caller); + + boolean applyRules(List<? extends FirewallRule> rules, FirewallRule.Purpose purpose, NetworkRuleApplier applier, boolean continueOnError) throws ResourceUnavailableException; + + /** + * @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; + + boolean applyIpAssociations(Network network, boolean continueOnError) throws ResourceUnavailableException; + + boolean applyIpAssociations(Network network, boolean rulesRevoked, boolean continueOnError, List<? extends PublicIpAddress> publicIps) throws ResourceUnavailableException; + + IPAddressVO markIpAsUnavailable(long addrId); + + public String acquireGuestIpAddress(Network network, String requestedIp); + + boolean applyStaticNats(List<? extends StaticNat> staticNats, boolean continueOnError, boolean forRevoke) throws ResourceUnavailableException; + + 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 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 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; + + IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller, long callerId, DataCenter zone) throws ConcurrentOperationException, + ResourceAllocationException, + InsufficientAddressCapacityException; + + PublicIp + assignPublicIpAddressFromVlans(long dcId, Long podId, Account owner, VlanType type, List<Long> vlanDbIds, Long networkId, String requestedIp, boolean isSystem) throws InsufficientAddressCapacityException; + + int getRuleCountForIp(Long addressId, FirewallRule.Purpose purpose, FirewallRule.State state); + + public String allocateGuestIP(Account ipOwner, boolean isSystem, long zoneId, Long networkId, String requestedIp) throws InsufficientAddressCapacityException; + + String allocatePublicIpForGuestNic(Long networkId, DataCenter dc, Pod pod, Account caller, String requestedIp) throws InsufficientAddressCapacityException; + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/network/addr/PublicIp.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/network/addr/PublicIp.java b/engine/components-api/src/com/cloud/network/addr/PublicIp.java new file mode 100644 index 0000000..b18c691 --- /dev/null +++ b/engine/components-api/src/com/cloud/network/addr/PublicIp.java @@ -0,0 +1,235 @@ +// 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 com.cloud.network.addr; + +import java.util.Date; + +import com.cloud.dc.VlanVO; +import com.cloud.network.PublicIpAddress; +import com.cloud.network.dao.IPAddressVO; +import com.cloud.utils.net.Ip; +import com.cloud.utils.net.NetUtils; + +/** + */ +public class PublicIp implements PublicIpAddress { + IPAddressVO _addr; + VlanVO _vlan; + String macAddress; + + public PublicIp(IPAddressVO addr, VlanVO vlan, long macAddress) { + _addr = addr; + _vlan = vlan; + this.macAddress = NetUtils.long2Mac(macAddress); + } + + public static PublicIp createFromAddrAndVlan(IPAddressVO addr, VlanVO vlan) { + return new PublicIp(addr, vlan, NetUtils.createSequenceBasedMacAddress(addr.getMacAddress())); + } + + @Override + public Ip getAddress() { + return _addr.getAddress(); + } + + @Override + public String getNetmask() { + return _vlan.getVlanNetmask(); + } + + @Override + public String getGateway() { + return _vlan.getVlanGateway(); + } + + @Override + public String getVlanTag() { + return _vlan.getVlanTag(); + } + + @Override + public long getDataCenterId() { + return _addr.getDataCenterId(); + } + + @Override + public boolean readyToUse() { + return _addr.getAllocatedTime() != null && _addr.getState() == State.Allocated; + } + + @Override + public boolean isSourceNat() { + return _addr.isSourceNat(); + } + + @Override + public boolean isOneToOneNat() { + return _addr.isOneToOneNat(); + } + + @Override + public Long getAssociatedWithVmId() { + return _addr.getAssociatedWithVmId(); + } + + @Override + public Date getAllocatedTime() { + return _addr.getAllocatedTime(); + } + + @Override + public long getAccountId() { + return _addr.getAccountId(); + } + + @Override + public long getDomainId() { + return _addr.getDomainId(); + } + + @Override + public long getVlanId() { + return _vlan.getId(); + } + + @Override + public State getState() { + return _addr.getState(); + } + + public IPAddressVO ip() { + return _addr; + } + + public VlanVO vlan() { + return _vlan; + } + + @Override + public String getMacAddress() { + return macAddress; + } + + @Override + public Long getAssociatedWithNetworkId() { + return _addr.getAssociatedWithNetworkId(); + } + + @Override + public Long getNetworkId() { + return _vlan.getNetworkId(); + } + + @Override + public String getVlanGateway() { + return _vlan.getVlanGateway(); + } + + @Override + public String getVlanNetmask() { + return _vlan.getVlanNetmask(); + } + + @Override + public String getIpRange() { + return _vlan.getIpRange(); + } + + @Override + public VlanType getVlanType() { + return _vlan.getVlanType(); + } + + @Override + public long getId() { + return _addr.getId(); + } + + + @Override + public String getUuid() { + return _addr.getUuid(); + } + + @Override + public String toString() { + return _addr.getAddress().toString(); + } + + @Override + public Long getPhysicalNetworkId() { + return _vlan.getPhysicalNetworkId(); + } + + @Override + public void setState(State state) { + _addr.setState(state); + } + + @Override + public Long getAllocatedToAccountId() { + return _addr.getAllocatedToAccountId(); + } + + @Override + public Long getAllocatedInDomainId() { + return _addr.getAllocatedInDomainId(); + } + + @Override + public boolean getSystem() { + return _addr.getSystem(); + } + + @Override + public Long getVpcId() { + return _addr.getVpcId(); + } + + @Override + public String getIp6Gateway() { + return _vlan.getIp6Gateway(); + } + + @Override + public String getIp6Cidr() { + return _vlan.getIp6Cidr(); + } + + @Override + public String getIp6Range() { + return _vlan.getIp6Range(); + } + + @Override + public String getVmIp() { + return _addr.getVmIp(); + } + + @Override + public boolean isPortable() { + return _addr.isPortable(); + } + + public void setPortable(boolean portable) { + _addr.setPortable(portable); + } + + public Long getIpMacAddress() { + return _addr.getMacAddress(); + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/network/lb/LoadBalancingRulesManager.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/network/lb/LoadBalancingRulesManager.java b/engine/components-api/src/com/cloud/network/lb/LoadBalancingRulesManager.java new file mode 100644 index 0000000..3e32585 --- /dev/null +++ b/engine/components-api/src/com/cloud/network/lb/LoadBalancingRulesManager.java @@ -0,0 +1,62 @@ +// 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 com.cloud.network.lb; + +import java.util.List; + +import org.apache.cloudstack.context.CallContext; + +import com.cloud.exception.NetworkRuleConflictException; +import com.cloud.exception.ResourceUnavailableException; +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.rules.LbStickinessMethod; +import com.cloud.network.rules.LoadBalancer; +import com.cloud.network.rules.LoadBalancerContainer.Scheme; +import com.cloud.user.Account; + +public interface LoadBalancingRulesManager { + + LoadBalancer createPublicLoadBalancer(String xId, String name, String description, + int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, CallContext caller) + throws NetworkRuleConflictException; + + boolean removeAllLoadBalanacersForIp(long ipId, Account caller, long callerUserId); + boolean removeAllLoadBalanacersForNetwork(long networkId, Account caller, long callerUserId); + List<LbDestination> getExistingDestinations(long lbId); + List<LbStickinessPolicy> getStickinessPolicies(long lbId); + List<LbStickinessMethod> getStickinessMethods(long networkid); + List<LbHealthCheckPolicy> getHealthCheckPolicies(long lbId); + + /** + * Remove vm from all load balancers + * @param vmId + * @return true if removal is successful + */ + boolean removeVmFromLoadBalancers(long vmId); + boolean applyLoadBalancersForNetwork(long networkId, Scheme scheme) throws ResourceUnavailableException; + String getLBCapability(long networkid, String capabilityName); + boolean configureLbAutoScaleVmGroup(long vmGroupid, String currentState) throws ResourceUnavailableException; + boolean revokeLoadBalancersForNetwork(long networkId, Scheme scheme) throws ResourceUnavailableException; + + boolean validateLbRule(LoadBalancingRule lbRule); + + void removeLBRule(LoadBalancer rule); + + void isLbServiceSupportedInNetwork(long networkId, Scheme scheme); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/template/TemplateManager.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/template/TemplateManager.java b/engine/components-api/src/com/cloud/template/TemplateManager.java new file mode 100755 index 0000000..4c42ab7 --- /dev/null +++ b/engine/components-api/src/com/cloud/template/TemplateManager.java @@ -0,0 +1,115 @@ +// 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 com.cloud.template; + +import java.util.List; + +import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; +import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; +import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; + +import com.cloud.dc.DataCenterVO; +import com.cloud.exception.InternalErrorException; +import com.cloud.exception.ResourceAllocationException; +import com.cloud.exception.StorageUnavailableException; +import com.cloud.storage.StoragePool; +import com.cloud.storage.VMTemplateHostVO; +import com.cloud.storage.VMTemplateStoragePoolVO; +import com.cloud.storage.VMTemplateVO; +import com.cloud.utils.Pair; + +/** + * TemplateManager manages the templates stored on secondary storage. It is responsible for creating private/public templates. + */ +public interface TemplateManager { + + /** + * Prepares a template for vm creation for a certain storage pool. + * + * @param template + * template to prepare + * @param pool + * pool to make sure the template is ready in. + * @return VMTemplateStoragePoolVO if preparation is complete; null if not. + */ + VMTemplateStoragePoolVO prepareTemplateForCreate(VMTemplateVO template, StoragePool pool); + + boolean resetTemplateDownloadStateOnPool(long templateStoragePoolRefId); + + /** + * Copies a template from its current secondary storage server to the secondary storage server in the specified zone. + * + * @param template + * @param srcSecStore + * @param destZone + * @return true if success + * @throws InternalErrorException + * @throws StorageUnavailableException + * @throws ResourceAllocationException + */ + boolean copy(long userId, VMTemplateVO template, DataStore srcSecStore, DataCenterVO dstZone) throws StorageUnavailableException, ResourceAllocationException; + + /** + * Deletes a template from secondary storage servers + * + * @param userId + * @param templateId + * @param zoneId + * - optional. If specified, will only delete the template from the specified zone's secondary storage server. + * @return true if success + */ + boolean delete(long userId, long templateId, Long zoneId); + + /** + * Lists templates in the specified storage pool that are not being used by any VM. + * + * @param pool + * @return list of VMTemplateStoragePoolVO + */ + List<VMTemplateStoragePoolVO> getUnusedTemplatesInPool(StoragePoolVO pool); + + /** + * Deletes a template in the specified storage pool. + * + * @param templatePoolVO + */ + void evictTemplateFromStoragePool(VMTemplateStoragePoolVO templatePoolVO); + + boolean templateIsDeleteable(VMTemplateHostVO templateHostRef); + + boolean templateIsDeleteable(long templateId); + + Pair<String, String> getAbsoluteIsoPath(long templateId, long dataCenterId); + + String getSecondaryStorageURL(long zoneId); + + DataStore getImageStore(long zoneId, long tmpltId); + + Long getTemplateSize(long templateId, long zoneId); + + DataStore getImageStore(String storeUuid, Long zoneId); + + String getChecksum(DataStore store, String templatePath); + + List<DataStore> getImageStoreByTemplate(long templateId, Long zoneId); + + TemplateInfo prepareIso(long isoId, long dcId); + + + + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/vm/ReservationContextImpl.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/vm/ReservationContextImpl.java b/engine/components-api/src/com/cloud/vm/ReservationContextImpl.java new file mode 100644 index 0000000..b53841c --- /dev/null +++ b/engine/components-api/src/com/cloud/vm/ReservationContextImpl.java @@ -0,0 +1,96 @@ +// 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 com.cloud.vm; + +import com.cloud.domain.Domain; +import com.cloud.user.Account; +import com.cloud.user.User; +import com.cloud.utils.Journal; +import com.cloud.utils.db.EntityManager; + +public class ReservationContextImpl implements ReservationContext { + User _caller; + Account _account; + Domain _domain; + Journal _journal; + String _reservationId; + + public ReservationContextImpl(String reservationId, Journal journal, User caller) { + this(reservationId, journal, caller, null, null); + } + + public ReservationContextImpl(String reservationId, Journal journal, User caller, Account account) { + this(reservationId, journal, caller, account, null); + + } + + public ReservationContextImpl(String reservationId, Journal journal, User caller, Account account, Domain domain) { + _caller = caller; + _account = account; + _domain = domain; + _journal = journal; + _reservationId = reservationId; + } + + @Override + public long getDomainId() { + return 0; + } + + @Override + public long getAccountId() { + return _caller.getAccountId(); + } + + @Override + public User getCaller() { + return _caller; + } + + @Override + public Account getAccount() { + if (_account == null) { + _account = s_entityMgr.findById(Account.class, _caller.getId()); + } + return _account; + } + + @Override + public Domain getDomain() { + if (_domain == null) { + getAccount(); + _domain = s_entityMgr.findById(Domain.class, _account.getDomainId()); + } + return _domain; + } + + @Override + public Journal getJournal() { + return _journal; + } + + @Override + public String getReservationId() { + return _reservationId; + } + + static EntityManager s_entityMgr; + + static public void init(EntityManager entityMgr) { + s_entityMgr = entityMgr; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/components-api/src/com/cloud/vm/VirtualMachineProfileImpl.java ---------------------------------------------------------------------- diff --git a/engine/components-api/src/com/cloud/vm/VirtualMachineProfileImpl.java b/engine/components-api/src/com/cloud/vm/VirtualMachineProfileImpl.java new file mode 100644 index 0000000..8282b16 --- /dev/null +++ b/engine/components-api/src/com/cloud/vm/VirtualMachineProfileImpl.java @@ -0,0 +1,258 @@ +// 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 com.cloud.vm; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.cloud.agent.api.to.DiskTO; +import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.offering.ServiceOffering; +import com.cloud.service.ServiceOfferingVO; +import com.cloud.template.VirtualMachineTemplate; +import com.cloud.template.VirtualMachineTemplate.BootloaderType; +import com.cloud.user.Account; +import com.cloud.utils.db.EntityManager; + +/** + * Implementation of VirtualMachineProfile. + * + */ +public class VirtualMachineProfileImpl implements VirtualMachineProfile { + + VirtualMachine _vm; + ServiceOffering _offering; + VirtualMachineTemplate _template; + UserVmDetailVO _userVmDetails; + Map<Param, Object> _params; + List<NicProfile> _nics = new ArrayList<NicProfile>(); + List<DiskTO> _disks = new ArrayList<DiskTO>(); + StringBuilder _bootArgs = new StringBuilder(); + Account _owner; + BootloaderType _bootloader; + Float cpuOvercommitRatio = 1.0f; + Float memoryOvercommitRatio = 1.0f; + + VirtualMachine.Type _type; + + public VirtualMachineProfileImpl(VirtualMachine vm, VirtualMachineTemplate template, ServiceOffering offering, Account owner, Map<Param, Object> params) { + _vm = vm; + _template = template; + _offering = offering; + _params = params; + _owner = owner; + if (_params == null) { + _params = new HashMap<Param, Object>(); + } + if (vm != null) + _type = vm.getType(); + } + + public VirtualMachineProfileImpl(VirtualMachine vm) { + this(vm, null, null, null, null); + } + + public VirtualMachineProfileImpl(VirtualMachine.Type type) { + _type = type; + } + + @Override + public String toString() { + return _vm.toString(); + } + + @Override + public VirtualMachine getVirtualMachine() { + return _vm; + } + + @Override + public ServiceOffering getServiceOffering() { + if (_offering == null) { + _offering = s_entityMgr.findById(ServiceOffering.class, _vm.getServiceOfferingId()); + } + return _offering; + } + + @Override + public void setParameter(Param name, Object value) { + _params.put(name, value); + } + + @Override + public void setBootLoaderType(BootloaderType bootLoader) { + _bootloader = bootLoader; + } + + @Override + public VirtualMachineTemplate getTemplate() { + if (_template == null && _vm != null) { + _template = s_entityMgr.findById(VirtualMachineTemplate.class, _vm.getTemplateId()); + } + return _template; + } + + @Override + public HypervisorType getHypervisorType() { + return _vm.getHypervisorType(); + } + + @Override + public long getTemplateId() { + return _vm.getTemplateId(); + } + + @Override + public long getServiceOfferingId() { + return _vm.getServiceOfferingId(); + } + + @Override + public long getId() { + return _vm.getId(); + } + + @Override + public String getUuid() { + return _vm.getUuid(); + } + + public void setNics(List<NicProfile> nics) { + _nics = nics; + } + + public void setDisks(List<DiskTO> disks) { + _disks = disks; + } + + @Override + public List<NicProfile> getNics() { + return _nics; + } + + @Override + public List<DiskTO> getDisks() { + return _disks; + } + + @Override + public void addNic(int index, NicProfile nic) { + _nics.add(index, nic); + } + + @Override + public void addDisk(int index, DiskTO disk) { + _disks.add(index, disk); + } + + @Override + public StringBuilder getBootArgsBuilder() { + return _bootArgs; + } + + @Override + public void addBootArgs(String... args) { + for (String arg : args) { + _bootArgs.append(arg).append(" "); + } + } + + @Override + public VirtualMachine.Type getType() { + return _type; + } + + @Override + public Account getOwner() { + if (_owner == null) { + _owner = s_entityMgr.findById(Account.class, _vm.getAccountId()); + } + return _owner; + } + + @Override + public String getBootArgs() { + return _bootArgs.toString(); + } + + static EntityManager s_entityMgr; + + static void init(EntityManager entityMgr) { + s_entityMgr = entityMgr; + } + + @Override + public void addNic(NicProfile nic) { + _nics.add(nic); + } + + @Override + public void addDisk(DiskTO disk) { + _disks.add(disk); + } + + @Override + public Object getParameter(Param name) { + return _params.get(name); + } + + @Override + public String getHostName() { + return _vm.getHostName(); + } + + @Override + public String getInstanceName() { + return _vm.getInstanceName(); + } + + @Override + public BootloaderType getBootLoaderType() { + return _bootloader; + } + + @Override + public Map<Param, Object> getParameters() { + return _params; + } + + public void setServiceOffering(ServiceOfferingVO offering) { + _offering = offering; + } + + public void setCpuOvercommitRatio(Float cpuOvercommitRatio) { + this.cpuOvercommitRatio = cpuOvercommitRatio; + + } + + public void setMemoryOvercommitRatio(Float memoryOvercommitRatio) { + this.memoryOvercommitRatio = memoryOvercommitRatio; + + } + + @Override + public Float getCpuOvercommitRatio() { + return cpuOvercommitRatio; + } + + @Override + public Float getMemoryOvercommitRatio() { + return memoryOvercommitRatio; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2e5bb63f/engine/orchestration/pom.xml ---------------------------------------------------------------------- diff --git a/engine/orchestration/pom.xml b/engine/orchestration/pom.xml index 4f8e5d7..290a4d4 100755 --- a/engine/orchestration/pom.xml +++ b/engine/orchestration/pom.xml @@ -45,6 +45,11 @@ </dependency> <dependency> <groupId>org.apache.cloudstack</groupId> + <artifactId>cloud-framework-events</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.cloudstack</groupId> <artifactId>cloud-engine-components-api</artifactId> <version>${project.version}</version> </dependency> @@ -57,10 +62,9 @@ <groupId>org.apache.cloudstack</groupId> <artifactId>cloud-server</artifactId> <version>${project.version}</version> - </dependency> + </dependency> </dependencies> <build> - <defaultGoal>install</defaultGoal> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId>