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
----------------------------------------------------------------------

Reply via email to