all built with the latest
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/0bcb6460 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/0bcb6460 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/0bcb6460 Branch: refs/heads/javelin Commit: 0bcb64605f7e8ebb86017dbc4b9d26ddc5dcf199 Parents: 14bd345 ff26a42 Author: Alex Huang <[email protected]> Authored: Wed Jan 9 05:02:39 2013 -0800 Committer: Alex Huang <[email protected]> Committed: Wed Jan 9 05:02:39 2013 -0800 ---------------------------------------------------------------------- api/src/com/cloud/user/UserContext.java | 10 +- api/src/com/cloud/user/UserContextInitializer.java | 40 + client/tomcatconf/applicationContext.xml.in | 2 + .../cloud/entity/api/VMEntityManagerImpl.java | 21 + .../cloud/entity/api/VirtualMachineEntityImpl.java | 5 +- .../platform/orchestration/CloudOrchestrator.java | 3 +- .../manager/allocator/impl/RandomAllocator.java | 12 +- .../hypervisor/vmware/VmwareServerDiscoverer.java | 7 - .../vmware/manager/VmwareManagerImpl.java | 58 +- .../cloud/server/auth/LDAPUserAuthenticator.java | 10 +- .../cloud/server/auth/MD5UserAuthenticator.java | 5 +- .../server/auth/PlainTextUserAuthenticator.java | 5 +- .../com/cloud/agent/manager/AgentManagerImpl.java | 8 +- .../agent/manager/ClusteredAgentManagerImpl.java | 4 +- .../manager/allocator/impl/FirstFitAllocator.java | 4 - .../manager/allocator/impl/TestingAllocator.java | 7 +- server/src/com/cloud/alert/AlertManagerImpl.java | 10 +- .../src/com/cloud/alert/ClusterAlertAdapter.java | 22 +- .../com/cloud/alert/ConsoleProxyAlertAdapter.java | 24 +- server/src/com/cloud/api/ApiServer.java | 10 +- .../cloud/async/AsyncJobExecutorContextImpl.java | 114 +--- .../src/com/cloud/async/AsyncJobManagerImpl.java | 51 +- .../src/com/cloud/async/SyncQueueManagerImpl.java | 19 +- .../com/cloud/baremetal/BareMetalResourceBase.java | 2 - .../cloud/baremetal/BareMetalVmManagerImpl.java | 13 +- .../com/cloud/cluster/CheckPointManagerImpl.java | 7 +- .../src/com/cloud/cluster/ClusterManagerImpl.java | 44 +- .../cluster/ClusterServiceServletAdapter.java | 25 +- .../com/cloud/cluster/DummyClusterManagerImpl.java | 1 - .../AgentBasedConsoleProxyManager.java | 11 +- .../consoleproxy/ConsoleProxyBalanceAllocator.java | 8 - .../consoleproxy/ConsoleProxyManagerImpl.java | 10 +- .../consoleproxy/StaticConsoleProxyManager.java | 6 +- server/src/com/cloud/dao/EntityManagerImpl.java | 1 - server/src/com/cloud/dc/dao/VlanDaoImpl.java | 14 +- server/src/com/cloud/event/EventUtils.java | 19 +- .../cloud/ha/HighAvailabilityManagerExtImpl.java | 13 +- .../com/cloud/ha/HighAvailabilityManagerImpl.java | 14 +- .../kvm/discoverer/KvmServerDiscoverer.java | 573 +++++++-------- server/src/com/cloud/maint/UpgradeManagerImpl.java | 17 +- .../cloud/network/ExteralIpAddressAllocator.java | 2 - .../cloud/network/dao/FirewallRulesDaoImpl.java | 3 +- .../com/cloud/network/guru/ControlNetworkGuru.java | 6 +- .../router/VirtualNetworkApplianceManagerImpl.java | 7 - .../network/security/SecurityGroupManagerImpl.java | 6 +- .../src/com/cloud/network/vpc/VpcManagerImpl.java | 4 +- .../network/vpn/RemoteAccessVpnManagerImpl.java | 5 +- .../cloud/network/vpn/Site2SiteVpnManagerImpl.java | 5 +- server/src/com/cloud/resource/DiscovererBase.java | 3 +- .../src/com/cloud/storage/StorageManagerImpl.java | 32 +- .../GarbageCollectingStoragePoolAllocator.java | 15 +- .../secondary/SecondaryStorageManagerImpl.java | 16 +- .../storage/snapshot/SnapshotManagerImpl.java | 25 +- .../storage/snapshot/SnapshotSchedulerImpl.java | 26 +- .../com/cloud/template/TemplateManagerImpl.java | 2 - server/src/com/cloud/user/AccountManagerImpl.java | 4 +- server/src/com/cloud/vm/UserVmManagerImpl.java | 3 - .../com/cloud/vm/VirtualMachineManagerImpl.java | 10 +- server/src/com/cloud/vm/dao/UserVmDaoImpl.java | 1 - .../src/com/cloud/usage/UsageAlertManagerImpl.java | 24 +- usage/src/com/cloud/usage/UsageManagerImpl.java | 2 +- .../cloud/utils/component/ComponentContext.java | 19 +- .../cloud/utils/component/ComponentLocator.java | 1 - 63 files changed, 578 insertions(+), 872 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/plugins/user-authenticators/ldap/src/com/cloud/server/auth/LDAPUserAuthenticator.java ---------------------------------------------------------------------- diff --cc plugins/user-authenticators/ldap/src/com/cloud/server/auth/LDAPUserAuthenticator.java index dba92d0,8b7e8a9..23b7a85 --- a/plugins/user-authenticators/ldap/src/com/cloud/server/auth/LDAPUserAuthenticator.java +++ b/plugins/user-authenticators/ldap/src/com/cloud/server/auth/LDAPUserAuthenticator.java @@@ -21,6 -20,8 +21,7 @@@ import java.util.Hashtable import java.util.Map; import javax.ejb.Local; + import javax.inject.Inject; -import javax.naming.AuthenticationException; import javax.naming.ConfigurationException; import javax.naming.Context; import javax.naming.NamingEnumeration; @@@ -30,17 -31,17 +31,15 @@@ import javax.naming.directory.InitialDi import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; +import org.apache.cloudstack.api.ApiConstants.LDAPParams; import org.apache.log4j.Logger; +import org.bouncycastle.util.encoders.Base64; import org.springframework.stereotype.Component; -import com.cloud.api.ApiConstants.LDAPParams; -import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; --import com.cloud.server.ManagementServer; import com.cloud.user.UserAccount; import com.cloud.user.dao.UserAccountDao; --import com.cloud.utils.component.ComponentLocator; -import com.cloud.utils.crypt.DBEncryptionUtil; +import com.cloud.utils.exception.CloudRuntimeException; @Component @@@ -48,9 -49,9 +47,9 @@@ public class LDAPUserAuthenticator extends DefaultUserAuthenticator { public static final Logger s_logger = Logger.getLogger(LDAPUserAuthenticator.class); - private ConfigurationDao _configDao; - private UserAccountDao _userAccountDao; + @Inject private ConfigurationDao _configDao; + @Inject private UserAccountDao _userAccountDao; - + @Override public boolean authenticate(String username, String password, Long domainId, Map<String, Object[]> requestParameters ) { if (s_logger.isDebugEnabled()) { @@@ -157,22 -157,6 +156,19 @@@ public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { super.configure(name, params); - ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name); - _configDao = locator.getDao(ConfigurationDao.class); - _userAccountDao = locator.getDao(UserAccountDao.class); return true; } + + @Override + public String encode(String password) { + // Password is not used, so set to a random string + try { + SecureRandom randomGen = SecureRandom.getInstance("SHA1PRNG"); + byte bytes[] = new byte[20]; + randomGen.nextBytes(bytes); + return Base64.encode(bytes).toString(); + } catch (NoSuchAlgorithmException e) { + throw new CloudRuntimeException("Failed to generate random password",e); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/plugins/user-authenticators/md5/src/com/cloud/server/auth/MD5UserAuthenticator.java ---------------------------------------------------------------------- diff --cc plugins/user-authenticators/md5/src/com/cloud/server/auth/MD5UserAuthenticator.java index ab89c92,64d3be6..9d217e6 --- a/plugins/user-authenticators/md5/src/com/cloud/server/auth/MD5UserAuthenticator.java +++ b/plugins/user-authenticators/md5/src/com/cloud/server/auth/MD5UserAuthenticator.java @@@ -65,29 -86,6 +66,27 @@@ public class MD5UserAuthenticator exten public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { super.configure(name, params); - ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name); - _userAccountDao = locator.getDao(UserAccountDao.class); return true; } + + @Override + public String encode(String password) { + MessageDigest md5 = null; + try { + md5 = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + throw new CloudRuntimeException("Unable to hash password", e); + } + + md5.reset(); + BigInteger pwInt = new BigInteger(1, md5.digest(password.getBytes())); + String pwStr = pwInt.toString(16); + int padding = 32 - pwStr.length(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < padding; i++) { + sb.append('0'); // make sure the MD5 password is 32 digits long + } + sb.append(pwStr); + return sb.toString(); + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/plugins/user-authenticators/plain-text/src/com/cloud/server/auth/PlainTextUserAuthenticator.java ---------------------------------------------------------------------- diff --cc plugins/user-authenticators/plain-text/src/com/cloud/server/auth/PlainTextUserAuthenticator.java index bc18e9f,9368673..0bf650b --- a/plugins/user-authenticators/plain-text/src/com/cloud/server/auth/PlainTextUserAuthenticator.java +++ b/plugins/user-authenticators/plain-text/src/com/cloud/server/auth/PlainTextUserAuthenticator.java @@@ -85,14 -86,6 +86,12 @@@ public class PlainTextUserAuthenticato public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { super.configure(name, params); - ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name); - _userAccountDao = locator.getDao(UserAccountDao.class); return true; } + + @Override + public String encode(String password) { + // Plaintext so no encoding at all + return password; + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/agent/manager/AgentManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/alert/AlertManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/api/ApiServer.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/api/ApiServer.java index 6faaa4a,1b42e97..c5cee13 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@@ -119,7 -99,7 +119,6 @@@ import com.cloud.event.EventUtils import com.cloud.exception.CloudAuthenticationException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException; --import com.cloud.server.ManagementServer; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; @@@ -127,10 -107,12 +126,10 @@@ import com.cloud.user.User import com.cloud.user.UserAccount; import com.cloud.user.UserContext; import com.cloud.user.UserVO; -import com.cloud.utils.IdentityProxy; import com.cloud.utils.Pair; -import com.cloud.utils.PropertiesUtil; +import com.cloud.utils.StringUtils; import com.cloud.utils.component.ComponentContext; --import com.cloud.utils.component.ComponentLocator; + import com.cloud.utils.component.PluggableService; import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; @@@ -141,22 -123,34 +140,25 @@@ public class ApiServer implements HttpR private static final Logger s_logger = Logger.getLogger(ApiServer.class.getName()); private static final Logger s_accessLogger = Logger.getLogger("apiserver." + ApiServer.class.getName()); - public static final short ADMIN_COMMAND = 1; - public static final short DOMAIN_ADMIN_COMMAND = 4; - public static final short RESOURCE_DOMAIN_ADMIN_COMMAND = 2; - public static final short USER_COMMAND = 8; public static boolean encodeApiResponse = false; public static String jsonContentType = "text/javascript"; - private Properties _apiCommands = null; private ApiDispatcher _dispatcher; - @Inject private AccountManager _accountMgr; - @Inject private DomainManager _domainMgr; - @Inject private AsyncJobManager _asyncMgr; + + @Inject private final AccountManager _accountMgr = null; + @Inject private final DomainManager _domainMgr = null; + @Inject private final AsyncJobManager _asyncMgr = null; @Inject private ConfigurationDao _configDao; - private Account _systemAccount; - private User _systemUser; - + @Inject protected List<APIAccessChecker> _apiAccessCheckers; + + @Inject List<PluggableService> _pluggableServices; + @Inject IdentityDao _identityDao; + + private Account _systemAccount = null; + private User _systemUser = null; private static int _workerCount = 0; - private static ApiServer s_instance = null; - private static List<String> s_userCommands = null; - private static List<String> s_resellerCommands = null; // AKA domain-admin - private static List<String> s_adminCommands = null; - private static List<String> s_resourceDomainAdminCommands = null; - private static List<String> s_allCommands = null; - private static List<String> s_pluggableServiceCommands = null; private static final DateFormat _dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + private final Map<String, Class<?>> _apiNameCmdClassMap = new HashMap<String, Class<?>>(); private static ExecutorService _executor = new ThreadPoolExecutor(10, 150, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new NamedThreadFactory("ApiServer")); @@@ -681,12 -768,10 +683,10 @@@ } return false; } - + public Long fetchDomainId(String domainUUID){ - ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name); - IdentityDao identityDao = locator.getDao(IdentityDao.class); try{ - Long domainId = identityDao.getIdentityId("domain", domainUUID); + Long domainId = _identityDao.getIdentityId("domain", domainUUID); return domainId; }catch(InvalidParameterValueException ex){ return null; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/async/AsyncJobManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/async/AsyncJobManagerImpl.java index e4016f7,885122c..25b7e60 --- a/server/src/com/cloud/async/AsyncJobManagerImpl.java +++ b/server/src/com/cloud/async/AsyncJobManagerImpl.java @@@ -32,9 -32,9 +32,10 @@@ import java.util.concurrent.ScheduledEx import java.util.concurrent.TimeUnit; import javax.ejb.Local; + import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd; import org.apache.log4j.Logger; import org.apache.log4j.NDC; import org.springframework.stereotype.Component; @@@ -87,15 -88,15 +88,16 @@@ public class AsyncJobManagerImpl implem private String _name; - private AsyncJobExecutorContext _context; - private SyncQueueManager _queueMgr; - private ClusterManager _clusterMgr; - private AccountManager _accountMgr; - private AccountDao _accountDao; - private AsyncJobDao _jobDao; + @Inject private AsyncJobExecutorContext _context; + @Inject private SyncQueueManager _queueMgr; + @Inject private ClusterManager _clusterMgr; + @Inject private AccountManager _accountMgr; + @Inject private AccountDao _accountDao; + @Inject private AsyncJobDao _jobDao; + @Inject private ConfigurationDao _configDao; private long _jobExpireSeconds = 86400; // 1 day - private long _jobCancelThresholdSeconds = 3600; // 1 hour + private long _jobCancelThresholdSeconds = 3600; // 1 hour (for cancelling the jobs blocking other jobs) + private ApiDispatcher _dispatcher; private final ScheduledExecutorService _heartbeatScheduler = http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/async/SyncQueueManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/async/SyncQueueManagerImpl.java index 94fcf0b,200fa2c..5246e46 --- a/server/src/com/cloud/async/SyncQueueManagerImpl.java +++ b/server/src/com/cloud/async/SyncQueueManagerImpl.java @@@ -241,22 -235,13 +242,8 @@@ public class SyncQueueManagerImpl imple } @Override - public void resetQueueProcess(long msid) { - _syncQueueDao.resetQueueProcessing(msid); - } - - @Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { _name = name; - ComponentLocator locator = ComponentLocator.getCurrentLocator(); - - _syncQueueDao = locator.getDao(SyncQueueDao.class); - if (_syncQueueDao == null) { - throw new ConfigurationException("Unable to get " - + SyncQueueDao.class.getName()); - } - - _syncQueueItemDao = locator.getDao(SyncQueueItemDao.class); - if (_syncQueueItemDao == null) { - throw new ConfigurationException("Unable to get " - + SyncQueueDao.class.getName()); - } - return true; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/baremetal/BareMetalResourceBase.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java index c419f5a,f6b6a8e..1ce9b33 --- a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java +++ b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java @@@ -27,14 -27,7 +27,12 @@@ import javax.ejb.Local import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.cloudstack.api.command.user.template.CreateTemplateCmd; +import org.apache.cloudstack.api.command.user.vm.DeployVMCmd; +import org.apache.cloudstack.api.command.user.vm.UpgradeVMCmd; +import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd; +import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd; import org.apache.log4j.Logger; - import org.springframework.context.annotation.Primary; - import org.springframework.stereotype.Component; import com.cloud.agent.api.Answer; import com.cloud.agent.api.StopAnswer; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/cluster/ClusterManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/dao/EntityManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java index 6fead23,9ebb84f..599222a --- a/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java +++ b/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java @@@ -53,7 -53,7 +53,6 @@@ import com.cloud.host.Status import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor; import com.cloud.hypervisor.Hypervisor.HypervisorType; --import com.cloud.hypervisor.kvm.discoverer.KvmDummyResourceBase; import com.cloud.network.NetworkManager; import com.cloud.network.PhysicalNetworkSetupInfo; import com.cloud.resource.Discoverer; @@@ -62,323 -62,316 +61,321 @@@ import com.cloud.resource.ResourceManag import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; --import com.cloud.utils.component.ComponentLocator; --import com.cloud.utils.script.Script; import com.cloud.utils.ssh.SSHCmdHelper; @Component @Local(value=Discoverer.class) public class KvmServerDiscoverer extends DiscovererBase implements Discoverer, -- Listener, ResourceStateAdapter { -- private static final Logger s_logger = Logger.getLogger(KvmServerDiscoverer.class); - private ConfigurationDao _configDao; - private String _hostIp; - private int _waitTime = 5; /*wait for 5 minutes*/ - private String _kvmPrivateNic; - private String _kvmPublicNic; - private String _kvmGuestNic; - @Inject HostDao _hostDao = null; - @Inject ClusterDao _clusterDao; - @Inject ResourceManager _resourceMgr; - @Inject AgentManager _agentMgr; - @Inject NetworkManager _networkMgr; - - @Override - public boolean processAnswers(long agentId, long seq, Answer[] answers) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean processCommands(long agentId, long seq, Command[] commands) { - // TODO Auto-generated method stub - return false; - } - - @Override - public AgentControlAnswer processControlCommand(long agentId, - AgentControlCommand cmd) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void processConnect(HostVO host, StartupCommand cmd, boolean forRebalance) { - } - - @Override - public boolean processDisconnect(long agentId, Status state) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isRecurring() { - // TODO Auto-generated method stub - return false; - } - - @Override - public int getTimeout() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public boolean processTimeout(long agentId, long seq) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Map<? extends ServerResource, Map<String, String>> find(long dcId, - Long podId, Long clusterId, URI uri, String username, - String password, List<String> hostTags) throws DiscoveryException { - - private String _setupAgentPath; - private ConfigurationDao _configDao; - private String _hostIp; - private int _waitTime = 5; /*wait for 5 minutes*/ - private String _kvmPrivateNic; - private String _kvmPublicNic; - private String _kvmGuestNic; - @Inject HostDao _hostDao = null; - @Inject ClusterDao _clusterDao; - @Inject ResourceManager _resourceMgr; - @Inject AgentManager _agentMgr; - @Inject NetworkManager _networkMgr; - - @Override - public boolean processAnswers(long agentId, long seq, Answer[] answers) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean processCommands(long agentId, long seq, Command[] commands) { - // TODO Auto-generated method stub - return false; - } - - @Override - public AgentControlAnswer processControlCommand(long agentId, - AgentControlCommand cmd) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void processConnect(HostVO host, StartupCommand cmd, boolean forRebalance) { - } - - @Override - public boolean processDisconnect(long agentId, Status state) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isRecurring() { - // TODO Auto-generated method stub - return false; - } - - @Override - public int getTimeout() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public boolean processTimeout(long agentId, long seq) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Map<? extends ServerResource, Map<String, String>> find(long dcId, - Long podId, Long clusterId, URI uri, String username, - String password, List<String> hostTags) throws DiscoveryException { - ++Listener, ResourceStateAdapter { ++ private static final Logger s_logger = Logger.getLogger(KvmServerDiscoverer.class); ++ private String _hostIp; ++ private final int _waitTime = 5; /*wait for 5 minutes*/ ++ private String _kvmPrivateNic; ++ private String _kvmPublicNic; ++ private String _kvmGuestNic; ++ @Inject HostDao _hostDao = null; ++ @Inject ClusterDao _clusterDao; ++ @Inject ResourceManager _resourceMgr; ++ @Inject AgentManager _agentMgr; ++ @Inject NetworkManager _networkMgr; ++ @Inject ConfigurationDao _configDao; ++ ++ @Override ++ public boolean processAnswers(long agentId, long seq, Answer[] answers) { ++ // TODO Auto-generated method stub ++ return false; ++ } ++ ++ @Override ++ public boolean processCommands(long agentId, long seq, Command[] commands) { ++ // TODO Auto-generated method stub ++ return false; ++ } ++ ++ @Override ++ public AgentControlAnswer processControlCommand(long agentId, ++ AgentControlCommand cmd) { ++ // TODO Auto-generated method stub ++ return null; ++ } ++ ++ @Override ++ public void processConnect(HostVO host, StartupCommand cmd, boolean forRebalance) { ++ } ++ ++ @Override ++ public boolean processDisconnect(long agentId, Status state) { ++ // TODO Auto-generated method stub ++ return false; ++ } ++ ++ @Override ++ public boolean isRecurring() { ++ // TODO Auto-generated method stub ++ return false; ++ } ++ ++ @Override ++ public int getTimeout() { ++ // TODO Auto-generated method stub ++ return 0; ++ } ++ ++ @Override ++ public boolean processTimeout(long agentId, long seq) { ++ // TODO Auto-generated method stub ++ return false; ++ } ++ ++ @Override ++ public Map<? extends ServerResource, Map<String, String>> find(long dcId, ++ Long podId, Long clusterId, URI uri, String username, ++ String password, List<String> hostTags) throws DiscoveryException { ++ ClusterVO cluster = _clusterDao.findById(clusterId); if(cluster == null || cluster.getHypervisorType() != HypervisorType.KVM) { -- if(s_logger.isInfoEnabled()) -- s_logger.info("invalid cluster id or cluster is not for KVM hypervisors"); -- return null; ++ if(s_logger.isInfoEnabled()) ++ s_logger.info("invalid cluster id or cluster is not for KVM hypervisors"); ++ return null; } -- -- Map<KvmDummyResourceBase, Map<String, String>> resources = new HashMap<KvmDummyResourceBase, Map<String, String>>(); -- Map<String, String> details = new HashMap<String, String>(); -- if (!uri.getScheme().equals("http")) { ++ ++ Map<KvmDummyResourceBase, Map<String, String>> resources = new HashMap<KvmDummyResourceBase, Map<String, String>>(); ++ Map<String, String> details = new HashMap<String, String>(); ++ if (!uri.getScheme().equals("http")) { String msg = "urlString is not http so we're not taking care of the discovery for this: " + uri; s_logger.debug(msg); return null; -- } -- com.trilead.ssh2.Connection sshConnection = null; -- String agentIp = null; -- try { -- -- String hostname = uri.getHost(); -- InetAddress ia = InetAddress.getByName(hostname); -- agentIp = ia.getHostAddress(); -- String guid = UUID.nameUUIDFromBytes(agentIp.getBytes()).toString(); -- String guidWithTail = guid + "-LibvirtComputingResource";/*tail added by agent.java*/ -- if (_resourceMgr.findHostByGuid(guidWithTail) != null) { -- s_logger.debug("Skipping " + agentIp + " because " + guidWithTail + " is already in the database."); -- return null; -- } -- -- sshConnection = new com.trilead.ssh2.Connection(agentIp, 22); -- -- sshConnection.connect(null, 60000, 60000); -- if (!sshConnection.authenticateWithPassword(username, password)) { -- s_logger.debug("Failed to authenticate"); -- throw new DiscoveredWithErrorException("Authentication error"); -- } -- -- if (!SSHCmdHelper.sshExecuteCmd(sshConnection, "lsmod|grep kvm", 3)) { -- s_logger.debug("It's not a KVM enabled machine"); -- return null; -- } -- -- List <PhysicalNetworkSetupInfo> netInfos = _networkMgr.getPhysicalNetworkInfo(dcId, HypervisorType.KVM); - String kvmPrivateNic = null; - String kvmPublicNic = null; - String kvmGuestNic = null; - - for (PhysicalNetworkSetupInfo info : netInfos) { - if (info.getPrivateNetworkName() != null) { - kvmPrivateNic = info.getPrivateNetworkName(); - } - if (info.getPublicNetworkName() != null) { - kvmPublicNic = info.getPublicNetworkName(); - } - if (info.getGuestNetworkName() != null) { - kvmGuestNic = info.getGuestNetworkName(); - } - } - - if (kvmPrivateNic == null && kvmPublicNic == null && kvmGuestNic == null) { - kvmPrivateNic = _kvmPrivateNic; - kvmPublicNic = _kvmPublicNic; - kvmGuestNic = _kvmGuestNic; - } - - if (kvmPublicNic == null) { - kvmPublicNic = (kvmGuestNic != null) ? kvmGuestNic : kvmPrivateNic; - } - - if (kvmPrivateNic == null) { - kvmPrivateNic = (kvmPublicNic != null) ? kvmPublicNic : kvmGuestNic; - } - - if (kvmGuestNic == null) { - kvmGuestNic = (kvmPublicNic != null) ? kvmPublicNic : kvmPrivateNic; - } - - String kvmPrivateNic = _kvmPrivateNic; - String kvmPublicNic = _kvmPublicNic; - String kvmGuestNic = _kvmGuestNic; - - for (PhysicalNetworkSetupInfo info : netInfos) { - if (info.getPrivateNetworkName() != null) { - kvmPrivateNic = info.getPrivateNetworkName(); - } - if (info.getPublicNetworkName() != null) { - kvmPublicNic = info.getPublicNetworkName(); - } - if (info.getGuestNetworkName() != null) { - kvmGuestNic = info.getGuestNetworkName(); - } - } - - String parameters = " -m " + _hostIp + " -z " + dcId + " -p " + podId + " -c " + clusterId + " -g " + guid + " -a"; - - if (kvmPublicNic != null) { - parameters += " --pubNic=" + kvmPublicNic; - } - - if (kvmPrivateNic != null) { - parameters += " --prvNic=" + kvmPrivateNic; - } - - if (kvmGuestNic != null) { - parameters += " --guestNic=" + kvmGuestNic; - } - - SSHCmdHelper.sshExecuteCmd(sshConnection, "cloud-setup-agent " + parameters, 3); - - KvmDummyResourceBase kvmResource = new KvmDummyResourceBase(); - Map<String, Object> params = new HashMap<String, Object>(); - - params.put("zone", Long.toString(dcId)); - params.put("pod", Long.toString(podId)); - params.put("cluster", Long.toString(clusterId)); - params.put("guid", guid); - params.put("agentIp", agentIp); - kvmResource.configure("kvm agent", params); - resources.put(kvmResource, details); - - HostVO connectedHost = waitForHostConnect(dcId, podId, clusterId, guidWithTail); - if (connectedHost == null) - return null; - - details.put("guid", guidWithTail); - - // place a place holder guid derived from cluster ID - if (cluster.getGuid() == null) { - cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes()).toString()); - _clusterDao.update(clusterId, cluster); - } - - //save user name and password - _hostDao.loadDetails(connectedHost); - Map<String, String> hostDetails = connectedHost.getDetails(); - hostDetails.put("password", password); - hostDetails.put("username", username); - _hostDao.saveDetails(connectedHost); - return resources; - } catch (DiscoveredWithErrorException e){ - throw e; - }catch (Exception e) { - String msg = " can't setup agent, due to " + e.toString() + " - " + e.getMessage(); - s_logger.warn(msg); - } finally { - if (sshConnection != null) - sshConnection.close(); - } - - return null; - } - - private HostVO waitForHostConnect(long dcId, long podId, long clusterId, String guid) { - for (int i = 0; i < _waitTime *2; i++) { - List<HostVO> hosts = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.Routing, clusterId, podId, dcId); - for (HostVO host : hosts) { - if (host.getGuid().equalsIgnoreCase(guid)) { - return host; - } - } - try { - Thread.sleep(30000); - } catch (InterruptedException e) { - s_logger.debug("Failed to sleep: " + e.toString()); - } - } - s_logger.debug("Timeout, to wait for the host connecting to mgt svr, assuming it is failed"); - List<HostVO> hosts = _resourceMgr.findHostByGuid(dcId, guid); - if (hosts.size() == 1) { - return hosts.get(0); - } else { - return null; - } - } - - @Override ++ } ++ com.trilead.ssh2.Connection sshConnection = null; ++ String agentIp = null; ++ try { ++ ++ String hostname = uri.getHost(); ++ InetAddress ia = InetAddress.getByName(hostname); ++ agentIp = ia.getHostAddress(); ++ String guid = UUID.nameUUIDFromBytes(agentIp.getBytes()).toString(); ++ String guidWithTail = guid + "-LibvirtComputingResource";/*tail added by agent.java*/ ++ if (_resourceMgr.findHostByGuid(guidWithTail) != null) { ++ s_logger.debug("Skipping " + agentIp + " because " + guidWithTail + " is already in the database."); ++ return null; ++ } ++ ++ sshConnection = new com.trilead.ssh2.Connection(agentIp, 22); ++ ++ sshConnection.connect(null, 60000, 60000); ++ if (!sshConnection.authenticateWithPassword(username, password)) { ++ s_logger.debug("Failed to authenticate"); ++ throw new DiscoveredWithErrorException("Authentication error"); ++ } ++ ++ if (!SSHCmdHelper.sshExecuteCmd(sshConnection, "lsmod|grep kvm", 3)) { ++ s_logger.debug("It's not a KVM enabled machine"); ++ return null; ++ } ++ ++ List <PhysicalNetworkSetupInfo> netInfos = _networkMgr.getPhysicalNetworkInfo(dcId, HypervisorType.KVM); ++ String kvmPrivateNic = null; ++ String kvmPublicNic = null; ++ String kvmGuestNic = null; ++ ++ for (PhysicalNetworkSetupInfo info : netInfos) { ++ if (info.getPrivateNetworkName() != null) { ++ kvmPrivateNic = info.getPrivateNetworkName(); ++ } ++ if (info.getPublicNetworkName() != null) { ++ kvmPublicNic = info.getPublicNetworkName(); ++ } ++ if (info.getGuestNetworkName() != null) { ++ kvmGuestNic = info.getGuestNetworkName(); ++ } ++ } ++ ++ if (kvmPrivateNic == null && kvmPublicNic == null && kvmGuestNic == null) { ++ kvmPrivateNic = _kvmPrivateNic; ++ kvmPublicNic = _kvmPublicNic; ++ kvmGuestNic = _kvmGuestNic; ++ } ++ ++ if (kvmPublicNic == null) { ++ kvmPublicNic = (kvmGuestNic != null) ? kvmGuestNic : kvmPrivateNic; ++ } ++ ++ if (kvmPrivateNic == null) { ++ kvmPrivateNic = (kvmPublicNic != null) ? kvmPublicNic : kvmGuestNic; ++ } ++ ++ if (kvmGuestNic == null) { ++ kvmGuestNic = (kvmPublicNic != null) ? kvmPublicNic : kvmPrivateNic; ++ } ++ + String parameters = " -m " + _hostIp + " -z " + dcId + " -p " + podId + " -c " + clusterId + " -g " + guid + " -a"; + + parameters += " --pubNic=" + kvmPublicNic; + parameters += " --prvNic=" + kvmPrivateNic; + parameters += " --guestNic=" + kvmGuestNic; + - SSHCmdHelper.sshExecuteCmd(sshConnection, "cloud-setup-agent " + parameters, 3); - - KvmDummyResourceBase kvmResource = new KvmDummyResourceBase(); - Map<String, Object> params = new HashMap<String, Object>(); - - params.put("zone", Long.toString(dcId)); - params.put("pod", Long.toString(podId)); - params.put("cluster", Long.toString(clusterId)); - params.put("guid", guid); - params.put("agentIp", agentIp); - kvmResource.configure("kvm agent", params); - resources.put(kvmResource, details); - - HostVO connectedHost = waitForHostConnect(dcId, podId, clusterId, guidWithTail); - if (connectedHost == null) - return null; - - details.put("guid", guidWithTail); - - // place a place holder guid derived from cluster ID - if (cluster.getGuid() == null) { - cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes()).toString()); - _clusterDao.update(clusterId, cluster); - } - - //save user name and password - _hostDao.loadDetails(connectedHost); - Map<String, String> hostDetails = connectedHost.getDetails(); - hostDetails.put("password", password); - hostDetails.put("username", username); - _hostDao.saveDetails(connectedHost); - return resources; - } catch (DiscoveredWithErrorException e){ - throw e; - }catch (Exception e) { - String msg = " can't setup agent, due to " + e.toString() + " - " + e.getMessage(); - s_logger.warn(msg); - } finally { - if (sshConnection != null) - sshConnection.close(); - } - - return null; - } - - private HostVO waitForHostConnect(long dcId, long podId, long clusterId, String guid) { - for (int i = 0; i < _waitTime *2; i++) { - List<HostVO> hosts = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.Routing, clusterId, podId, dcId); - for (HostVO host : hosts) { - if (host.getGuid().equalsIgnoreCase(guid)) { - return host; - } - } - try { - Thread.sleep(30000); - } catch (InterruptedException e) { - s_logger.debug("Failed to sleep: " + e.toString()); - } - } - s_logger.debug("Timeout, to wait for the host connecting to mgt svr, assuming it is failed"); - List<HostVO> hosts = _resourceMgr.findHostByGuid(dcId, guid); - if (hosts.size() == 1) { - return hosts.get(0); - } else { - return null; - } - } - - @Override ++ SSHCmdHelper.sshExecuteCmd(sshConnection, "cloud-setup-agent " + parameters, 3); ++ ++ KvmDummyResourceBase kvmResource = new KvmDummyResourceBase(); ++ Map<String, Object> params = new HashMap<String, Object>(); ++ ++ params.put("zone", Long.toString(dcId)); ++ params.put("pod", Long.toString(podId)); ++ params.put("cluster", Long.toString(clusterId)); ++ params.put("guid", guid); ++ params.put("agentIp", agentIp); ++ kvmResource.configure("kvm agent", params); ++ resources.put(kvmResource, details); ++ ++ HostVO connectedHost = waitForHostConnect(dcId, podId, clusterId, guidWithTail); ++ if (connectedHost == null) ++ return null; ++ ++ details.put("guid", guidWithTail); ++ ++ // place a place holder guid derived from cluster ID ++ if (cluster.getGuid() == null) { ++ cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes()).toString()); ++ _clusterDao.update(clusterId, cluster); ++ } ++ ++ //save user name and password ++ _hostDao.loadDetails(connectedHost); ++ Map<String, String> hostDetails = connectedHost.getDetails(); ++ hostDetails.put("password", password); ++ hostDetails.put("username", username); ++ _hostDao.saveDetails(connectedHost); ++ return resources; ++ } catch (DiscoveredWithErrorException e){ ++ throw e; ++ }catch (Exception e) { ++ String msg = " can't setup agent, due to " + e.toString() + " - " + e.getMessage(); ++ s_logger.warn(msg); ++ } finally { ++ if (sshConnection != null) ++ sshConnection.close(); ++ } ++ ++ return null; ++ } ++ ++ private HostVO waitForHostConnect(long dcId, long podId, long clusterId, String guid) { ++ for (int i = 0; i < _waitTime *2; i++) { ++ List<HostVO> hosts = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.Routing, clusterId, podId, dcId); ++ for (HostVO host : hosts) { ++ if (host.getGuid().equalsIgnoreCase(guid)) { ++ return host; ++ } ++ } ++ try { ++ Thread.sleep(30000); ++ } catch (InterruptedException e) { ++ s_logger.debug("Failed to sleep: " + e.toString()); ++ } ++ } ++ s_logger.debug("Timeout, to wait for the host connecting to mgt svr, assuming it is failed"); ++ List<HostVO> hosts = _resourceMgr.findHostByGuid(dcId, guid); ++ if (hosts.size() == 1) { ++ return hosts.get(0); ++ } else { ++ return null; ++ } ++ } ++ ++ @Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { - ComponentLocator locator = ComponentLocator.getCurrentLocator(); - _configDao = locator.getDao(ConfigurationDao.class); - _kvmPrivateNic = _configDao.getValue(Config.KvmPrivateNetwork.key()); - if (_kvmPrivateNic == null) { - _kvmPrivateNic = "cloudbr0"; - } - - _kvmPublicNic = _configDao.getValue(Config.KvmPublicNetwork.key()); - if (_kvmPublicNic == null) { - _kvmPublicNic = _kvmPrivateNic; - } - - _kvmGuestNic = _configDao.getValue(Config.KvmGuestNetwork.key()); - if (_kvmGuestNic == null) { - _kvmGuestNic = _kvmPrivateNic; - } - - _hostIp = _configDao.getValue("host"); - if (_hostIp == null) { - throw new ConfigurationException("Can't get host IP"); - } - _resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this); - return true; - } - - protected String getPatchPath() { - _setupAgentPath = Script.findScript(getPatchPath(), "setup_agent.sh"); - _kvmPrivateNic = _configDao.getValue(Config.KvmPrivateNetwork.key()); - if (_kvmPrivateNic == null) { - _kvmPrivateNic = "cloudbr0"; - } - - _kvmPublicNic = _configDao.getValue(Config.KvmPublicNetwork.key()); - if (_kvmPublicNic == null) { - _kvmPublicNic = _kvmPrivateNic; - } - - _kvmGuestNic = _configDao.getValue(Config.KvmGuestNetwork.key()); - if (_kvmGuestNic == null) { - _kvmGuestNic = _kvmPrivateNic; - } - - if (_setupAgentPath == null) { - throw new ConfigurationException("Can't find setup_agent.sh"); - } - _hostIp = _configDao.getValue("host"); - if (_hostIp == null) { - throw new ConfigurationException("Can't get host IP"); - } - _resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this); - return true; - } - - protected String getPatchPath() { ++// _setupAgentPath = Script.findScript(getPatchPath(), "setup_agent.sh"); ++ _kvmPrivateNic = _configDao.getValue(Config.KvmPrivateNetwork.key()); ++ if (_kvmPrivateNic == null) { ++ _kvmPrivateNic = "cloudbr0"; ++ } ++ ++ _kvmPublicNic = _configDao.getValue(Config.KvmPublicNetwork.key()); ++ if (_kvmPublicNic == null) { ++ _kvmPublicNic = _kvmPrivateNic; ++ } ++ ++ _kvmGuestNic = _configDao.getValue(Config.KvmGuestNetwork.key()); ++ if (_kvmGuestNic == null) { ++ _kvmGuestNic = _kvmPrivateNic; ++ } ++ ++ _hostIp = _configDao.getValue("host"); ++ if (_hostIp == null) { ++ throw new ConfigurationException("Can't get host IP"); ++ } ++ _resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this); ++ return true; ++ } ++ ++ protected String getPatchPath() { return "scripts/vm/hypervisor/kvm/"; } -- @Override -- public void postDiscovery(List<HostVO> hosts, long msId) -- throws DiscoveryException { -- // TODO Auto-generated method stub -- } -- -- public Hypervisor.HypervisorType getHypervisorType() { -- return Hypervisor.HypervisorType.KVM; -- } -- @Override -- public boolean matchHypervisor(String hypervisor) { -- // for backwards compatibility, if not supplied, always let to try it -- if(hypervisor == null) -- return true; -- -- return Hypervisor.HypervisorType.KVM.toString().equalsIgnoreCase(hypervisor); ++ public void postDiscovery(List<HostVO> hosts, long msId) ++ throws DiscoveryException { ++ // TODO Auto-generated method stub + } + - @Override ++ @Override ++ public Hypervisor.HypervisorType getHypervisorType() { ++ return Hypervisor.HypervisorType.KVM; ++ } ++ ++ @Override ++ public boolean matchHypervisor(String hypervisor) { ++ // for backwards compatibility, if not supplied, always let to try it ++ if(hypervisor == null) ++ return true; ++ ++ return Hypervisor.HypervisorType.KVM.toString().equalsIgnoreCase(hypervisor); + } + - @Override ++ @Override public HostVO createHostVOForConnectedAgent(HostVO host, StartupCommand[] cmd) { -- StartupCommand firstCmd = cmd[0]; -- if (!(firstCmd instanceof StartupRoutingCommand)) { -- return null; -- } -- -- StartupRoutingCommand ssCmd = ((StartupRoutingCommand) firstCmd); -- if (ssCmd.getHypervisorType() != HypervisorType.KVM) { -- return null; -- } -- -- /* KVM requires host are the same in cluster */ -- ClusterVO clusterVO = _clusterDao.findById(host.getClusterId()); -- List<HostVO> hostsInCluster = _resourceMgr.listAllHostsInCluster(clusterVO.getId()); -- if (!hostsInCluster.isEmpty()) { -- HostVO oneHost = hostsInCluster.get(0); -- _hostDao.loadDetails(oneHost); -- String hostOsInCluster = oneHost.getDetail("Host.OS"); -- String hostOs = ssCmd.getHostDetails().get("Host.OS"); -- if (!hostOsInCluster.equalsIgnoreCase(hostOs)) { -- throw new IllegalArgumentException("Can't add host: " + firstCmd.getPrivateIpAddress() + " with hostOS: " + hostOs + " into a cluster," -- + "in which there are " + hostOsInCluster + " hosts added"); -- } -- } -- -- _hostDao.loadDetails(host); -- -- return _resourceMgr.fillRoutingHostVO(host, ssCmd, HypervisorType.KVM, host.getDetails(), null); ++ StartupCommand firstCmd = cmd[0]; ++ if (!(firstCmd instanceof StartupRoutingCommand)) { ++ return null; ++ } ++ ++ StartupRoutingCommand ssCmd = ((StartupRoutingCommand) firstCmd); ++ if (ssCmd.getHypervisorType() != HypervisorType.KVM) { ++ return null; ++ } ++ ++ /* KVM requires host are the same in cluster */ ++ ClusterVO clusterVO = _clusterDao.findById(host.getClusterId()); ++ List<HostVO> hostsInCluster = _resourceMgr.listAllHostsInCluster(clusterVO.getId()); ++ if (!hostsInCluster.isEmpty()) { ++ HostVO oneHost = hostsInCluster.get(0); ++ _hostDao.loadDetails(oneHost); ++ String hostOsInCluster = oneHost.getDetail("Host.OS"); ++ String hostOs = ssCmd.getHostDetails().get("Host.OS"); ++ if (!hostOsInCluster.equalsIgnoreCase(hostOs)) { ++ throw new IllegalArgumentException("Can't add host: " + firstCmd.getPrivateIpAddress() + " with hostOS: " + hostOs + " into a cluster," ++ + "in which there are " + hostOsInCluster + " hosts added"); ++ } ++ } ++ ++ _hostDao.loadDetails(host); ++ ++ return _resourceMgr.fillRoutingHostVO(host, ssCmd, HypervisorType.KVM, host.getDetails(), null); } -- @Override ++ @Override public HostVO createHostVOForDirectConnectAgent(HostVO host, StartupCommand[] startup, ServerResource resource, Map<String, String> details, List<String> hostTags) { -- // TODO Auto-generated method stub -- return null; ++ // TODO Auto-generated method stub ++ return null; } -- @Override ++ @Override public DeleteHostAnswer deleteHost(HostVO host, boolean isForced, boolean isForceDeleteStorage) throws UnableDeleteHostException { if (host.getType() != Host.Type.Routing || host.getHypervisorType() != HypervisorType.KVM) { return null; } -- ++ _resourceMgr.deleteRoutingHost(host, isForced, isForceDeleteStorage); try { ShutdownCommand cmd = new ShutdownCommand(ShutdownCommand.DeleteHost, null); @@@ -388,15 -381,15 +385,15 @@@ } catch (OperationTimedoutException e) { s_logger.warn("Sending ShutdownCommand failed: ", e); } -- ++ return new DeleteHostAnswer(true); } -- ++ @Override public boolean stop() { -- _resourceMgr.unregisterResourceStateAdapter(this.getClass().getSimpleName()); ++ _resourceMgr.unregisterResourceStateAdapter(this.getClass().getSimpleName()); return super.stop(); } -- -- ++ ++ } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/maint/UpgradeManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/network/vpc/VpcManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/storage/StorageManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/template/TemplateManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0bcb6460/server/src/com/cloud/user/AccountManagerImpl.java ----------------------------------------------------------------------
