From e49fab690302f5d98c9e01c312f2abb2ae4b5706 Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Wed, 8 Dec 2010 09:28:01 -0800 Subject: [PATCH] Renamed MauricMoss now that we're going public with this. --- .../com/cloud/vm/VirtualMachineManager.java | 120 ------------------ .../cloud/async/AsyncJobExecutorContext.java | 4 +- .../async/AsyncJobExecutorContextImpl.java | 10 +- .../DefaultComponentLibrary.java | 4 +- .../consoleproxy/ConsoleProxyManagerImpl.java | 7 +- .../cloud/ha/HighAvailabilityManagerImpl.java | 4 +- .../router/DomainRouterManagerImpl.java | 7 +- .../SecondaryStorageManagerImpl.java | 7 +- server/src/com/cloud/vm/UserVmManager.java | 2 +- .../src/com/cloud/vm/UserVmManagerImpl.java | 4 +- ...anager.java => VirtualMachineManager.java} | 2 +- ...ss.java => VirtualMachineManagerImpl.java} | 8 +- 12 files changed, 28 insertions(+), 151 deletions(-) delete mode 100644 core/src/com/cloud/vm/VirtualMachineManager.java rename server/src/com/cloud/vm/{VmManager.java => VirtualMachineManager.java} (98%) rename server/src/com/cloud/vm/{MauriceMoss.java => VirtualMachineManagerImpl.java} (98%) diff --git a/core/src/com/cloud/vm/VirtualMachineManager.java b/core/src/com/cloud/vm/VirtualMachineManager.java deleted file mode 100644 index c1ae3156e2b..00000000000 --- a/core/src/com/cloud/vm/VirtualMachineManager.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. - * - * This software is licensed under the GNU General Public License v3 or later. - * - * It is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -package com.cloud.vm; - -import com.cloud.agent.api.Command; -import com.cloud.exception.AgentUnavailableException; -import com.cloud.exception.ConcurrentOperationException; -import com.cloud.exception.InsufficientCapacityException; -import com.cloud.exception.OperationTimedoutException; -import com.cloud.exception.ResourceUnavailableException; -import com.cloud.exception.StorageUnavailableException; -import com.cloud.host.HostVO; -import com.cloud.utils.exception.ExecutionException; - -/** - * HighAvailabilityHandler specifies the methods that are used to control - * VMs during the sync process and the HA process. While different types of - * VMs have a lot in common, they allocate resources differently and it - * doesn't make sense to - * - */ -public interface VirtualMachineManager { - - /** - * Returns the id parsed from the name. If it cannot parse the name, - * then return null. This method is used to determine if this is - * the right handler for this vm. - * - * @param vmName vm name coming form the agent. - * @return id if the handler works for this vm and can parse id. null if not. - */ - Long convertToId(String vmName); - - /** - * Retrieves the vm based on the id given. - * - * @param id id of the vm. - * @return VMInstanceVO - */ - T get(long id); - - /** - * Complete the start command. HA calls this when it determines that - * a vm was starting but the state was not complete. - * - * @param vm vm to execute this on. - */ - void completeStartCommand(T vm); - - /** - * Complete the stop command. HA calls this when it determines that - * a vm was being stopped but it didn't complete. - * - * @param vm vm to stop. - */ - void completeStopCommand(T vm); - - /** - * start the vm - * - * @param vm to start. - * @return true if started. false if not. - * @throws InsufficientCapacityException if there's not enough capacity to start the vm. - * @throws StorageUnavailableException if the storage is unavailable. - * @throws ConcurrentOperationException there's multiple threads working on this vm. - * @throws ExecutionException - * @throws ResourceUnavailableException - */ - T start(long vmId, long startEventId) throws InsufficientCapacityException, StorageUnavailableException, ConcurrentOperationException, ExecutionException; - - /** - * stop the vm - * - * @param vm vm to Stop. - * @return true if stopped and false if not. - * @throws AgentUnavailableException if the agent is unavailable. - */ - boolean stop(T vm, long startEventId) throws AgentUnavailableException; - - /** - * Produce a cleanup command to be sent to the agent to cleanup anything - * out of the ordinary. - * @param vm vm to cleanup. It's possible this is null. - * @param vmName name of the vm from the agent. - * @return Command to clean it up. If not cleanup is needed, then return null. - */ - Command cleanup(T vm, String vmName); - - /** - * Prepare for migration. - * - * @param vm vm to migrate. - * @return HostVO if a host is found. - */ - HostVO prepareForMigration(T vm) throws InsufficientCapacityException, StorageUnavailableException; - - /** - * Migrate the vm. - */ - boolean migrate(T vm, HostVO host) throws AgentUnavailableException, OperationTimedoutException; - - boolean completeMigration(T vm, HostVO host) throws AgentUnavailableException, OperationTimedoutException; - - boolean destroy(T vm) throws AgentUnavailableException; -} diff --git a/server/src/com/cloud/async/AsyncJobExecutorContext.java b/server/src/com/cloud/async/AsyncJobExecutorContext.java index 47cab5bed85..13ea2a65d44 100644 --- a/server/src/com/cloud/async/AsyncJobExecutorContext.java +++ b/server/src/com/cloud/async/AsyncJobExecutorContext.java @@ -32,7 +32,7 @@ import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; import com.cloud.utils.component.Manager; import com.cloud.vm.UserVmManager; -import com.cloud.vm.VmManager; +import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.UserVmDao; @@ -52,5 +52,5 @@ public interface AsyncJobExecutorContext extends Manager { public IPAddressDao getIpAddressDao(); public AsyncJobDao getJobDao(); public UserDao getUserDao(); - public VmManager getItMgr(); + public VirtualMachineManager getItMgr(); } diff --git a/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java b/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java index 5f0f489b612..64e23fe5d5e 100644 --- a/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java +++ b/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java @@ -37,7 +37,7 @@ import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; import com.cloud.utils.component.ComponentLocator; import com.cloud.vm.UserVmManager; -import com.cloud.vm.VmManager; +import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.UserVmDao; @@ -59,7 +59,7 @@ public class AsyncJobExecutorContextImpl implements AsyncJobExecutorContext { private IPAddressDao _ipAddressDao; private AsyncJobDao _jobDao; private UserDao _userDao; - private VmManager _itMgr; + private VirtualMachineManager _itMgr; private ManagementServer _managementServer; @@ -142,7 +142,7 @@ public class AsyncJobExecutorContextImpl implements AsyncJobExecutorContext { } @Override - public VmManager getItMgr() { + public VirtualMachineManager getItMgr() { return _itMgr; } @@ -226,9 +226,9 @@ public class AsyncJobExecutorContextImpl implements AsyncJobExecutorContext { throw new ConfigurationException("unable to get " + UserDao.class.getName()); } - _itMgr = locator.getManager(VmManager.class); + _itMgr = locator.getManager(VirtualMachineManager.class); if (_itMgr == null) { - throw new ConfigurationException("unable to get " + VmManager.class.getName()); + throw new ConfigurationException("unable to get " + VirtualMachineManager.class.getName()); } return true; } diff --git a/server/src/com/cloud/configuration/DefaultComponentLibrary.java b/server/src/com/cloud/configuration/DefaultComponentLibrary.java index 4c6e99ccb7e..535f1ef5b35 100644 --- a/server/src/com/cloud/configuration/DefaultComponentLibrary.java +++ b/server/src/com/cloud/configuration/DefaultComponentLibrary.java @@ -117,7 +117,7 @@ import com.cloud.utils.component.ComponentLocator.ComponentInfo; import com.cloud.utils.component.Manager; import com.cloud.utils.db.GenericDao; import com.cloud.vm.ItWorkDaoImpl; -import com.cloud.vm.MauriceMoss; +import com.cloud.vm.VirtualMachineManagerImpl; import com.cloud.vm.UserVmManagerImpl; import com.cloud.vm.dao.ConsoleProxyDaoImpl; import com.cloud.vm.dao.DomainRouterDaoImpl; @@ -279,7 +279,7 @@ public class DefaultComponentLibrary implements ComponentLibrary { addManager("Snapshot Manager", SnapshotManagerImpl.class); addManager("SnapshotScheduler", SnapshotSchedulerImpl.class); addManager("NetworkGroupManager", NetworkGroupManagerImpl.class); - addManager("VmManager", MauriceMoss.class); + addManager("VmManager", VirtualMachineManagerImpl.class); addManager("DomainRouterManager", DomainRouterManagerImpl.class); addManager("EntityManager", EntityManagerImpl.class); addManager("LoadBalancingRulesManager", LoadBalancingRulesManagerImpl.class); diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 209401ddd27..af1f7cd716b 100644 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -158,10 +158,9 @@ import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineGuru; -import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; import com.cloud.vm.VirtualMachineProfile; -import com.cloud.vm.VmManager; +import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.VMInstanceDao; @@ -187,7 +186,7 @@ import com.google.gson.GsonBuilder; // because sooner or later, it will be driven into Running state // @Local(value = { ConsoleProxyManager.class, ConsoleProxyService.class }) -public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProxyService, Manager, VirtualMachineManager, AgentHook, VirtualMachineGuru { +public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProxyService, Manager, AgentHook, VirtualMachineGuru { private static final Logger s_logger = Logger.getLogger(ConsoleProxyManagerImpl.class); private static final int DEFAULT_FIND_HOST_RETRY_COUNT = 2; @@ -266,7 +265,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx private AsyncJobManager _asyncMgr; @Inject - private VmManager _itMgr; + private VirtualMachineManager _itMgr; @Inject private ClusterManager _clMgr; diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java index 75c64f1a85c..245bffcc561 100644 --- a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java +++ b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java @@ -71,7 +71,7 @@ import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; import com.cloud.vm.VirtualMachineGuru; -import com.cloud.vm.VmManager; +import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.VMInstanceDao; /** @@ -131,7 +131,7 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager { @Inject StorageManager _storageMgr; @Inject GuestOSDao _guestOSDao; @Inject GuestOSCategoryDao _guestOSCategoryDao; - @Inject VmManager _itMgr; + @Inject VirtualMachineManager _itMgr; String _instance; ScheduledExecutorService _executor; diff --git a/server/src/com/cloud/network/router/DomainRouterManagerImpl.java b/server/src/com/cloud/network/router/DomainRouterManagerImpl.java index ba7376087fc..576d11a8dad 100644 --- a/server/src/com/cloud/network/router/DomainRouterManagerImpl.java +++ b/server/src/com/cloud/network/router/DomainRouterManagerImpl.java @@ -176,10 +176,9 @@ import com.cloud.vm.State; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineGuru; -import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; import com.cloud.vm.VirtualMachineProfile; -import com.cloud.vm.VmManager; +import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; @@ -188,7 +187,7 @@ import com.cloud.vm.dao.UserVmDao; * NetworkManagerImpl implements NetworkManager. */ @Local(value={DomainRouterManager.class, DomainRouterService.class}) -public class DomainRouterManagerImpl implements DomainRouterManager, DomainRouterService, VirtualMachineManager, VirtualMachineGuru { +public class DomainRouterManagerImpl implements DomainRouterManager, DomainRouterService, VirtualMachineGuru { private static final Logger s_logger = Logger.getLogger(DomainRouterManagerImpl.class); String _name; @@ -233,7 +232,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute @Inject NicDao _nicDao; @Inject GuestOSDao _guestOSDao = null; @Inject NetworkManager _networkMgr; - @Inject VmManager _itMgr; + @Inject VirtualMachineManager _itMgr; @Inject VpnUserDao _vpnUsersDao; @Inject RemoteAccessVpnDao _remoteAccessVpnDao; @Inject RulesManager _rulesMgr; diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index e28bd23d6af..439aeb9b78f 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -137,10 +137,9 @@ import com.cloud.vm.SecondaryStorageVmVO; import com.cloud.vm.State; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineGuru; -import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; import com.cloud.vm.VirtualMachineProfile; -import com.cloud.vm.VmManager; +import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.SecondaryStorageVmDao; import com.cloud.vm.dao.UserVmDao; @@ -165,7 +164,7 @@ import com.cloud.vm.dao.VMInstanceDao; // because sooner or later, it will be driven into Running state // @Local(value={SecondaryStorageVmManager.class}) -public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, VirtualMachineManager, VirtualMachineGuru { +public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, VirtualMachineGuru { private static final Logger s_logger = Logger.getLogger(SecondaryStorageManagerImpl.class); private static final int DEFAULT_FIND_HOST_RETRY_COUNT = 2; @@ -222,7 +221,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V @Inject private ServiceOfferingDao _offeringDao; @Inject private AccountService _accountMgr; @Inject GuestOSDao _guestOSDao = null; - @Inject private VmManager _itMgr; + @Inject private VirtualMachineManager _itMgr; @Inject private NicDao _nicDao; @Inject private NetworkDao _networkDao; diff --git a/server/src/com/cloud/vm/UserVmManager.java b/server/src/com/cloud/vm/UserVmManager.java index 0d28e60a492..19f529cf2be 100644 --- a/server/src/com/cloud/vm/UserVmManager.java +++ b/server/src/com/cloud/vm/UserVmManager.java @@ -45,7 +45,7 @@ import com.cloud.vm.VirtualMachine.Event; * UserVmManager contains all of the code to work with user VMs. * */ -public interface UserVmManager extends VirtualMachineManager { +public interface UserVmManager extends VirtualMachineGuru{ static final int MAX_USER_DATA_LENGTH_BYTES = 2048; /** diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 31b2feb03be..b8a7ae85d33 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -207,7 +207,7 @@ import com.cloud.vm.dao.InstanceGroupVMMapDao; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; @Local(value={UserVmManager.class, UserVmService.class}) -public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualMachineGuru, Manager, VirtualMachineManager { +public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualMachineGuru, Manager { private static final Logger s_logger = Logger.getLogger(UserVmManagerImpl.class); private static final int ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION = 3; // 3 seconds @@ -255,7 +255,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, VirtualM @Inject EventDao _eventDao = null; @Inject InstanceGroupDao _vmGroupDao; @Inject InstanceGroupVMMapDao _groupVMMapDao; - @Inject VmManager _itMgr; + @Inject VirtualMachineManager _itMgr; @Inject NetworkDao _networkDao; @Inject DomainRouterManager _routerMgr; @Inject NicDao _nicDao; diff --git a/server/src/com/cloud/vm/VmManager.java b/server/src/com/cloud/vm/VirtualMachineManager.java similarity index 98% rename from server/src/com/cloud/vm/VmManager.java rename to server/src/com/cloud/vm/VirtualMachineManager.java index 28e92b92e22..0ee38597a8e 100644 --- a/server/src/com/cloud/vm/VmManager.java +++ b/server/src/com/cloud/vm/VirtualMachineManager.java @@ -38,7 +38,7 @@ import com.cloud.vm.VirtualMachine.Event; /** * Manages allocating resources to vms. */ -public interface VmManager extends Manager { +public interface VirtualMachineManager extends Manager { T allocate(T vm, VMTemplateVO template, diff --git a/server/src/com/cloud/vm/MauriceMoss.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java similarity index 98% rename from server/src/com/cloud/vm/MauriceMoss.java rename to server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 67964a9f78a..f1723c831e3 100644 --- a/server/src/com/cloud/vm/MauriceMoss.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -95,9 +95,9 @@ import com.cloud.vm.dao.SecondaryStorageVmDao; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDao; -@Local(value=VmManager.class) -public class MauriceMoss implements VmManager, ClusterManagerListener { - private static final Logger s_logger = Logger.getLogger(MauriceMoss.class); +@Local(value=VirtualMachineManager.class) +public class VirtualMachineManagerImpl implements VirtualMachineManager, ClusterManagerListener { + private static final Logger s_logger = Logger.getLogger(VirtualMachineManagerImpl.class); String _name; @Inject private StorageManager _storageMgr; @@ -317,7 +317,7 @@ public class MauriceMoss implements VmManager, ClusterManagerListener { return _name; } - protected MauriceMoss() { + protected VirtualMachineManagerImpl() { } @Override