You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/07/09 22:46:30 UTC

[48/50] [abbrv] git commit: updated refs/heads/ui-ucs to 9334dab

fix simulator


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5e133273
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5e133273
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5e133273

Branch: refs/heads/ui-ucs
Commit: 5e13327339305cd81993952abbd8c19409a48537
Parents: 94aa67e
Author: Edison Su <su...@gmail.com>
Authored: Mon Jul 8 18:43:00 2013 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Tue Jul 9 10:42:15 2013 -0700

----------------------------------------------------------------------
 .../agent/manager/MockAgentManagerImpl.java     |  27 +++-
 .../agent/manager/MockStorageManagerImpl.java   | 141 +++++++------------
 .../cloud/resource/AgentStorageResource.java    |   2 +-
 .../resource/SimulatorSecondaryDiscoverer.java  |  17 ++-
 4 files changed, 88 insertions(+), 99 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e133273/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
index 9654b74..fcc1b4f 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
@@ -29,6 +29,8 @@ import com.cloud.agent.api.PingTestCommand;
 import com.cloud.api.commands.SimulatorAddSecondaryAgent;
 import com.cloud.dc.dao.HostPodDao;
 import com.cloud.exception.DiscoveryException;
+import com.cloud.host.HostVO;
+import com.cloud.host.dao.HostDao;
 import com.cloud.resource.*;
 import com.cloud.simulator.MockHost;
 import com.cloud.simulator.MockHostVO;
@@ -81,6 +83,8 @@ public class MockAgentManagerImpl extends ManagerBase implements MockAgentManage
     ResourceManager _resourceMgr;
     @Inject
     SimulatorSecondaryDiscoverer discoverer;
+    @Inject
+    HostDao hostDao;
     private SecureRandom random;
     private final Map<String, AgentResourceBase> _resources = new ConcurrentHashMap<String, AgentResourceBase>();
     private ThreadPoolExecutor _executor;
@@ -250,10 +254,8 @@ public class MockAgentManagerImpl extends ManagerBase implements MockAgentManage
             this.mode = "Stop";
         }
 
-        @Override
-        @DB
-        public void run() {
 
+        private void handleSystemVMStop() {
             Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
             try {
                 if (this.mode.equalsIgnoreCase("Stop")) {
@@ -281,6 +283,25 @@ public class MockAgentManagerImpl extends ManagerBase implements MockAgentManage
                 txn.close();
             }
 
+            //stop ssvm agent
+            HostVO host = hostDao.findByGuid(this.guid);
+            if (host != null) {
+                try {
+                    _resourceMgr.deleteHost(host.getId(), true, true);
+                } catch (Exception e) {
+                    s_logger.debug("Failed to delete host: ", e);
+                }
+            }
+        }
+
+        @Override
+        @DB
+        public void run() {
+            if (this.mode.equalsIgnoreCase("Stop")) {
+                handleSystemVMStop();
+                return;
+            }
+
             String resource = null;
             if (vmType.equalsIgnoreCase("secstorage")) {
                 resource = "com.cloud.agent.AgentStorageResource";

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e133273/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
index c81f079..d23575b 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
@@ -71,7 +71,10 @@ import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.Storage.StoragePoolType;
 import com.cloud.storage.VMTemplateStorageResourceAssoc;
 import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
+import com.cloud.storage.VMTemplateVO;
+import com.cloud.storage.dao.VMTemplateDao;
 import com.cloud.storage.template.TemplateProp;
+import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -113,6 +116,8 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
     MockVMDao _mockVMDao = null;
     @Inject
     MockHostDao _mockHostDao = null;
+    @Inject
+    VMTemplateDao templateDao;
 
     private MockVolumeVO findVolumeFromSecondary(String path, String ssUrl, MockVolumeType type) {
         Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
@@ -474,26 +479,12 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
         if ( !(store instanceof NfsTO )){
             return new Answer(cmd, false, "Unsupported image data store: " + store);
         }
-        Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+
         MockSecStorageVO storage = null;
         String nfsUrl = ((NfsTO) store).getUrl();
-        try {
-            txn.start();
-            storage = _mockSecStorageDao.findByUrl(nfsUrl);
-            if (storage == null) {
-                return new Answer(cmd, false, "Failed to get secondary storage");
-            }
-            txn.commit();
-        } catch (Exception ex) {
-            txn.rollback();
-            throw new CloudRuntimeException("Error when finding sec storage " + nfsUrl, ex);
-        } finally {
-            txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-        }
 
-        txn = Transaction.open(Transaction.SIMULATOR_DB);
+        Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+        storage = _mockSecStorageDao.findByUrl(nfsUrl);
         try {
             txn.start();
             List<MockVolumeVO> templates = _mockVolumeDao.findByStorageIdAndType(storage.getId(),
@@ -504,7 +495,6 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
                 templateInfos.put(template.getName(), new TemplateProp(template.getName(), template.getPath()
                         .replaceAll(storage.getMountPoint(), ""), template.getSize(), template.getSize(), true, false));
             }
-            txn.commit();
             return new ListTemplateAnswer(nfsUrl, templateInfos);
         } catch (Exception ex) {
             txn.rollback();
@@ -889,89 +879,62 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
     @Override
     public void preinstallTemplates(String url, long zoneId) {
         MockSecStorageVO storage = null;
+        Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
         try {
+            txn.start();
             storage = _mockSecStorageDao.findByUrl(url);
-        } catch (Exception ex) {
-            throw new CloudRuntimeException("Unable to find sec storage at " + url, ex);
-        } finally {
-            Transaction txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-        }
-        if (storage == null) {
-            storage = new MockSecStorageVO();
-            URI uri;
-            try {
-                uri = new URI(url);
-            } catch (URISyntaxException e) {
-                return;
-            }
 
-            String nfsHost = uri.getHost();
-            String nfsPath = uri.getPath();
-            String path = nfsHost + ":" + nfsPath;
-            String dir = "/mnt/" + UUID.nameUUIDFromBytes(path.getBytes()).toString() + File.separator;
+            if (storage == null) {
+                storage = new MockSecStorageVO();
+                URI uri;
+                try {
+                    uri = new URI(url);
+                } catch (URISyntaxException e) {
+                    return;
+                }
+
+                String nfsHost = uri.getHost();
+                String nfsPath = uri.getPath();
+                String path = nfsHost + ":" + nfsPath;
+                String dir = "/mnt/" + UUID.nameUUIDFromBytes(path.getBytes()).toString() + File.separator;
+
+                storage.setUrl(url);
+                storage.setCapacity(DEFAULT_HOST_STORAGE_SIZE);
+
+                storage.setMountPoint(dir);
 
-            storage.setUrl(url);
-            storage.setCapacity(DEFAULT_HOST_STORAGE_SIZE);
 
-            storage.setMountPoint(dir);
-            Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-            try {
-                txn.start();
                 storage = _mockSecStorageDao.persist(storage);
-                txn.commit();
-            } catch (Exception ex) {
-                txn.rollback();
-                throw new CloudRuntimeException("Error when saving storage " + storage, ex);
-            } finally {
-                txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-            }
 
-            // preinstall default templates into secondary storage
-            long defaultTemplateSize = 2 * 1024 * 1024 * 1024L;
-            MockVolumeVO template = new MockVolumeVO();
-            template.setName("simulator-domR");
-            template.setPath(storage.getMountPoint() + "template/tmpl/1/100/" + UUID.randomUUID().toString());
-            template.setPoolId(storage.getId());
-            template.setSize(defaultTemplateSize);
-            template.setType(MockVolumeType.TEMPLATE);
-            template.setStatus(Status.DOWNLOADED);
-            txn = Transaction.open(Transaction.SIMULATOR_DB);
-            try {
-                txn.start();
+                // preinstall default templates into secondary storage
+                long defaultTemplateSize = 2 * 1024 * 1024 * 1024L;
+                MockVolumeVO template = new MockVolumeVO();
+                template.setName("simulator-domR");
+                template.setPath(storage.getMountPoint() + "template/tmpl/1/100/" + UUID.randomUUID().toString());
+                template.setPoolId(storage.getId());
+                template.setSize(defaultTemplateSize);
+                template.setType(MockVolumeType.TEMPLATE);
+                template.setStatus(Status.DOWNLOADED);
                 template = _mockVolumeDao.persist(template);
-                txn.commit();
-            } catch (Exception ex) {
-                txn.rollback();
-                throw new CloudRuntimeException("Error when saving template " + template, ex);
-            } finally {
-                txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-            }
 
-            template = new MockVolumeVO();
-            template.setName("simulator-Centos");
-            template.setPath(storage.getMountPoint() + "template/tmpl/1/111/" + UUID.randomUUID().toString());
-            template.setPoolId(storage.getId());
-            template.setSize(defaultTemplateSize);
-            template.setType(MockVolumeType.TEMPLATE);
-            template.setStatus(Status.DOWNLOADED);
-            txn = Transaction.open(Transaction.SIMULATOR_DB);
-            try {
-                txn.start();
+
+                template = new MockVolumeVO();
+                template.setName("simulator-Centos");
+                template.setPath(storage.getMountPoint() + "template/tmpl/1/111/" + UUID.randomUUID().toString());
+                template.setPoolId(storage.getId());
+                template.setSize(defaultTemplateSize);
+                template.setType(MockVolumeType.TEMPLATE);
+                template.setStatus(Status.DOWNLOADED);
+
                 template = _mockVolumeDao.persist(template);
+
                 txn.commit();
-            } catch (Exception ex) {
-                txn.rollback();
-                throw new CloudRuntimeException("Error when saving template " + template, ex);
-            } finally {
-                txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
             }
+        } catch (Exception ex) {
+            throw new CloudRuntimeException("Unable to find sec storage at " + url, ex);
+        } finally {
+            txn = Transaction.open(Transaction.CLOUD_DB);
+            txn.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e133273/plugins/hypervisors/simulator/src/com/cloud/resource/AgentStorageResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/resource/AgentStorageResource.java b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentStorageResource.java
index 3e479ae..d93b20d 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/resource/AgentStorageResource.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentStorageResource.java
@@ -50,7 +50,7 @@ public class AgentStorageResource extends AgentResourceBase implements Secondary
     }
 
     public AgentStorageResource() {
-        setType(Host.Type.SecondaryStorage);
+        setType(Type.SecondaryStorageVM);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e133273/plugins/hypervisors/simulator/src/com/cloud/resource/SimulatorSecondaryDiscoverer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/resource/SimulatorSecondaryDiscoverer.java b/plugins/hypervisors/simulator/src/com/cloud/resource/SimulatorSecondaryDiscoverer.java
index 30926e3..e9052eb 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/resource/SimulatorSecondaryDiscoverer.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/resource/SimulatorSecondaryDiscoverer.java
@@ -25,6 +25,10 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import com.cloud.storage.VMTemplateVO;
+import com.cloud.storage.dao.VMTemplateDao;
+import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
+import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
 import org.apache.cloudstack.storage.resource.SecondaryStorageDiscoverer;
 import org.apache.cloudstack.storage.resource.SecondaryStorageResource;
 import org.apache.log4j.Logger;
@@ -54,6 +58,8 @@ public class SimulatorSecondaryDiscoverer extends SecondaryStorageDiscoverer imp
     @Inject AgentManager _agentMgr;
     @Inject ResourceManager _resourceMgr;
     @Inject SnapshotDao _snapshotDao;
+    @Inject
+    ImageStoreDao imageStoreDao;
     protected SecondaryStorageResource resource;
 
     public void setResource(SecondaryStorageResource resource) {
@@ -73,6 +79,10 @@ public class SimulatorSecondaryDiscoverer extends SecondaryStorageDiscoverer imp
             s_logger.debug("It's not NFS or file or ISO, so not a secondary storage server: " + uri.toString());
             return null;
         }
+        List<ImageStoreVO> stores = imageStoreDao.listImageStores();
+        for (ImageStoreVO store : stores) {
+            _mockStorageMgr.preinstallTemplates(store.getUrl(), dcId);
+        }
         Map<SecondaryStorageResource, Map<String, String>> resources = new HashMap<SecondaryStorageResource, Map<String, String>>();
         resources.put(this.resource, new HashMap<String, String>());
         return resources;
@@ -81,12 +91,7 @@ public class SimulatorSecondaryDiscoverer extends SecondaryStorageDiscoverer imp
 
     @Override
     public void postDiscovery(List<HostVO> hosts, long msId) {
-        for (HostVO host: hosts) {
-            if(s_logger.isDebugEnabled()) {
-                s_logger.debug("Preinstalling simulator templates");
-            }
-            _mockStorageMgr.preinstallTemplates(host.getStorageUrl(), host.getDataCenterId());
-        }
+
     }
 
     @Override