You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2015/04/13 12:15:09 UTC

[01/12] git commit: updated refs/heads/4.5 to eea716b

Repository: cloudstack
Updated Branches:
  refs/heads/4.5 43a9eb40b -> eea716b79


CLOUDSTACK-7593: in 450to451 upgrade path copy vm_details from template for vmware

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: 8e1507078052b8068b828d336f8d0358915047e1
Parents: df934c9
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 15:34:27 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../com/cloud/upgrade/dao/Upgrade450to451.java    | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8e150707/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to451.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to451.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to451.java
index 89fe5ec..218f4ec 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to451.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to451.java
@@ -74,6 +74,7 @@ public class Upgrade450to451 implements DbUpgrade {
         encryptKeyInKeyStore(conn);
         encryptIpSecPresharedKeysOfRemoteAccessVpn(conn);
         encryptStoragePoolUserInfo(conn);
+        updateUserVmDetailsWithNicAdapterType(conn);
     }
 
     private void encryptKeyInKeyStore(Connection conn) {
@@ -175,4 +176,21 @@ public class Upgrade450to451 implements DbUpgrade {
         }
         s_logger.debug("Done encrypting storage_pool's user_info column");
     }
+
+    private void updateUserVmDetailsWithNicAdapterType(Connection conn) {
+        PreparedStatement insertPstmt = null;
+        try {
+            insertPstmt = conn.prepareStatement("INSERT INTO `cloud`.`user_vm_details`(vm_id,name,value,display) select v.id as vm_id, details.name, details.value, details.display from `cloud`.`vm_instance` as v, `cloud`.`vm_template_details` as details  where v.removed is null and v.vm_template_id=details.template_id and details.name='nicAdapter' and details.template_id in (select id from `cloud`.`vm_template` where hypervisor_type = 'vmware') and v.id not in (select vm_id from `cloud`.`user_vm_details` where name='nicAdapter');");
+            insertPstmt.executeUpdate();
+        } catch (SQLException e) {
+            throw new CloudRuntimeException("Failed to update user_vm_details table with nicAdapter entries by copying from vm_template_detail table", e);
+        } finally {
+            try {
+                if (insertPstmt != null)
+                    insertPstmt.close();
+            } catch (SQLException e) {
+            }
+        }
+        s_logger.debug("Done. Updated user_vm_details table with nicAdapter entries by copying from vm_template_detail table. This affects only VM/templates with hypervisor_type as VMware.");
+    }
 }


[04/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
CLOUDSTACK-8109. Extract Template is failing.
Fix the OVA path that is returned once an OVA is packaged using a META file.

(cherry picked from commit 507d9d337d2e80f7f6e5d665708c0687c387c5fc)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: 271dae9750388fcb71b471d1ac92415365c15498
Parents: 43a9eb4
Author: Likitha Shetty <li...@citrix.com>
Authored: Mon Oct 27 16:56:29 2014 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../manager/VmwareStorageManagerImpl.java       | 40 +++++++++-----------
 1 file changed, 17 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/271dae97/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
index 308a8bf..d9fb935 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
@@ -148,37 +148,32 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
     public String createOvaForTemplate(TemplateObjectTO template) {
         DataStoreTO storeTO = template.getDataStore();
         if (!(storeTO instanceof NfsTO)) {
-            s_logger.debug("can only handle nfs storage, when create ova from volume");
+            s_logger.debug("Can only handle NFS storage, while creating OVA from template");
             return null;
         }
         NfsTO nfsStore = (NfsTO)storeTO;
         String secStorageUrl = nfsStore.getUrl();
         assert (secStorageUrl != null);
         String installPath = template.getPath();
-        String ovafileName = "";
         String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl);
         String installFullPath = secondaryMountPoint + "/" + installPath;
-
-        String templateName = installFullPath;   // should be a file ending .ova;
         try {
-            if (templateName.endsWith(".ova")) {
-                if (new File(templateName).exists()) {
-                    s_logger.debug("OVA files exists. succeed. ");
-                    return installPath;
+            if (installFullPath.endsWith(".ova")) {
+                if (new File(installFullPath).exists()) {
+                    s_logger.debug("OVA file found at: " + installFullPath);
                 } else {
-                    if (new File(templateName + ".meta").exists()) {
-                        ovafileName = getOVAFromMetafile(templateName + ".meta");
-                        s_logger.debug("OVA file in meta file is " + ovafileName);
-                        return ovafileName;
+                    if (new File(installFullPath + ".meta").exists()) {
+                        createOVAFromMetafile(installFullPath + ".meta");
                     } else {
-                        String msg = "Unable to find ova meta or ova file to prepare template (vmware)";
+                        String msg = "Unable to find OVA or OVA MetaFile to prepare template.";
                         s_logger.error(msg);
                         throw new Exception(msg);
                     }
                 }
+                return installPath;
             }
         } catch (Throwable e) {
-            s_logger.debug("Failed to create ova: " + e.toString());
+            s_logger.debug("Failed to create OVA: " + e.toString());
         }
         return null;
     }
@@ -1042,12 +1037,12 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
 
     // here we use a method to return the ovf and vmdk file names; Another way to do it:
     // create a new class, and like TemplateLocation.java and create templateOvfInfo.java to handle it;
-    private String getOVAFromMetafile(String metafileName) throws Exception {
+    private String createOVAFromMetafile(String metafileName) throws Exception {
         File ova_metafile = new File(metafileName);
         Properties props = null;
         FileInputStream strm = null;
         String ovaFileName = "";
-        s_logger.info("getOVAfromMetaFile: " + metafileName);
+        s_logger.info("Creating OVA using MetaFile: " + metafileName);
         try {
             strm = new FileInputStream(ova_metafile);
 
@@ -1088,18 +1083,17 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
             command.execute();
             s_logger.info("Package OVA for template in dir: " + exportDir + "cmd: " + command.toString());
             // to be safe, physically test existence of the target OVA file
-            if ((new File(exportDir + ovaFileName)).exists()) {
-                s_logger.info("ova file is created and ready to extract ");
-                return (ovaFileName);
+            if ((new File(exportDir + File.separator + ovaFileName)).exists()) {
+                s_logger.info("OVA file: " + ovaFileName +" is created and ready to extract.");
+                return ovaFileName;
             } else {
-                String msg = exportDir + File.separator + ovaFileName + ".ova is not created as expected";
+                String msg = exportDir + File.separator + ovaFileName + " is not created as expected";
                 s_logger.error(msg);
                 throw new Exception(msg);
             }
         } catch (Exception e) {
-            s_logger.error("Exception in getOVAFromMetafile", e);
-            return null;
-            // Do something, re-throw the exception
+            s_logger.error("Exception while creating OVA using Metafile", e);
+            throw e;
         } finally {
             if (strm != null) {
                 try {


[03/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
CLOUDSTACK-7593: allow nic type to be fetched from vm's details

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: 43db75c319b425f3b39770d556df59333921bf92
Parents: dcb6d7c
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 14:25:34 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 core/src/com/cloud/agent/api/PlugNicCommand.java      | 14 ++++++++++++++
 .../src/com/cloud/vm/VirtualMachineManagerImpl.java   |  6 +++++-
 .../hypervisor/vmware/resource/VmwareResource.java    |  6 +++++-
 3 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/43db75c3/core/src/com/cloud/agent/api/PlugNicCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/PlugNicCommand.java b/core/src/com/cloud/agent/api/PlugNicCommand.java
index e68931d..322b755 100644
--- a/core/src/com/cloud/agent/api/PlugNicCommand.java
+++ b/core/src/com/cloud/agent/api/PlugNicCommand.java
@@ -22,11 +22,14 @@ package com.cloud.agent.api;
 import com.cloud.agent.api.to.NicTO;
 import com.cloud.vm.VirtualMachine;
 
+import java.util.Map;
+
 public class PlugNicCommand extends Command {
 
     NicTO nic;
     String instanceName;
     VirtualMachine.Type vmType;
+    Map<String, String> details;
 
     public NicTO getNic() {
         return nic;
@@ -46,6 +49,13 @@ public class PlugNicCommand extends Command {
         this.vmType = vmtype;
     }
 
+    public PlugNicCommand(NicTO nic, String instanceName, VirtualMachine.Type vmtype, Map<String, String> details) {
+        this.nic = nic;
+        this.instanceName = instanceName;
+        this.vmType = vmtype;
+        this.details = details;
+    }
+
     public String getVmName() {
         return instanceName;
     }
@@ -53,4 +63,8 @@ public class PlugNicCommand extends Command {
     public VirtualMachine.Type getVMType() {
         return vmType;
     }
+
+    public Map<String, String> getDetails() {
+        return this.details;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/43db75c3/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 609aa5b..387abda 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -148,6 +148,7 @@ import com.cloud.network.Network;
 import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.dao.NetworkVO;
+import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.rules.RulesManager;
 import com.cloud.offering.DiskOfferingInfo;
 import com.cloud.offering.ServiceOffering;
@@ -609,6 +610,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         } catch (InsufficientCapacityException e) {
             throw new CloudRuntimeException("Unable to start a VM due to insufficient capacity", e).add(VirtualMachine.class, vmUuid);
         } catch (ResourceUnavailableException e) {
+            if (e.getScope() != null && e.getScope().equals(VirtualRouter.class)) {
+                throw new CloudRuntimeException("Network is not available. Please contact admin.", e).add(VirtualMachine.class, vmUuid);
+            }
             throw new CloudRuntimeException("Unable to start a VM due to concurrent operation", e).add(VirtualMachine.class, vmUuid);
         }
     }
@@ -3399,7 +3403,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         VMInstanceVO router = _vmDao.findById(vm.getId());
         if (router.getState() == State.Running) {
             try {
-                PlugNicCommand plugNicCmd = new PlugNicCommand(nic, vm.getName(), vm.getType());
+                PlugNicCommand plugNicCmd = new PlugNicCommand(nic, vm.getName(), vm.getType(), vm.getDetails());
 
                 Commands cmds = new Commands(Command.OnError.Stop);
                 cmds.addCommand("plugnic", plugNicCmd);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/43db75c3/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index 315b161..0777201 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -916,8 +916,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                 return new PlugNicAnswer(cmd, false, "Unable to execute PlugNicCommand due to " + errMsg);
             }
              */
-            // TODO need a way to specify the control of NIC device type
+            // Fallback to E1000 if no specific nicAdapter is passed
             VirtualEthernetCardType nicDeviceType = VirtualEthernetCardType.E1000;
+            Map details = cmd.getDetails();
+            if (details != null) {
+                nicDeviceType = VirtualEthernetCardType.valueOf((String) details.get("nicAdapter"));
+            }
 
             // find a usable device number in VMware environment
             VirtualDevice[] nicDevices = vmMo.getNicDevices();


[09/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
utils: improve timeout to 60s, define generics properly

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: d2471df0be35c9af928c682c961ac0544b347159
Parents: 5599dee
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 15:31:42 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 utils/src/com/cloud/utils/nio/Link.java                      | 2 +-
 utils/src/org/apache/cloudstack/utils/security/SSLUtils.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d2471df0/utils/src/com/cloud/utils/nio/Link.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/nio/Link.java b/utils/src/com/cloud/utils/nio/Link.java
index 971c253..ddfd474 100755
--- a/utils/src/com/cloud/utils/nio/Link.java
+++ b/utils/src/com/cloud/utils/nio/Link.java
@@ -466,7 +466,7 @@ public class Link {
         ByteBuffer out_pkgBuf = ByteBuffer.allocate(sslSession.getPacketBufferSize() + 40);
         ByteBuffer out_appBuf = ByteBuffer.allocate(sslSession.getApplicationBufferSize() + 40);
         int count;
-        ch.socket().setSoTimeout(30 * 1000);
+        ch.socket().setSoTimeout(60 * 1000);
         InputStream inStream = ch.socket().getInputStream();
         // Use readCh to make sure the timeout on reading is working
         ReadableByteChannel readCh = Channels.newChannel(inStream);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d2471df0/utils/src/org/apache/cloudstack/utils/security/SSLUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/org/apache/cloudstack/utils/security/SSLUtils.java b/utils/src/org/apache/cloudstack/utils/security/SSLUtils.java
index 5ea89b1..c1fc2d6 100644
--- a/utils/src/org/apache/cloudstack/utils/security/SSLUtils.java
+++ b/utils/src/org/apache/cloudstack/utils/security/SSLUtils.java
@@ -32,7 +32,7 @@ public class SSLUtils {
     public static final Logger s_logger = Logger.getLogger(SSLUtils.class);
 
     public static String[] getSupportedProtocols(String[] protocols) {
-        Set set = new HashSet();
+        Set<String> set = new HashSet<String>();
         for (String s : protocols) {
             if (s.equals("SSLv3") || s.equals("SSLv2Hello")) {
                 continue;


[10/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
Don't do chmod -R when mounting secondary storage for vmware
It causes extreme long vm start time when managment server has slow connection to secondary storage

(cherry picked from commit 49c01e2ae4eb164438f78f9686813497d7fd162f)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: dcb6d7c778df781a8e6d828da81d8a74dc19e75a
Parents: 865940d
Author: Frank Zhang <fr...@citrix.com>
Authored: Mon Oct 13 12:05:22 2014 -0700
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dcb6d7c7/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index f6205d5..3416319 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@ -765,7 +765,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
 
         // Change permissions for the mountpoint
         script = new Script(true, "chmod", _timeout, s_logger);
-        script.add("-R", "777", mountPoint);
+        script.add("777", mountPoint);
         result = script.execute();
         if (result != null) {
             s_logger.warn("Unable to set permissions for " + mountPoint + " due to " + result);


[02/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
server: fix system account create logs

Don't output scary message, avoid logging network_group table not found and
log sane messages if system/admin account/user already exist.

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: 5599dee90d0ae84d80089b44696a891ae48ecec0
Parents: 43db75c
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 15:30:43 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 server/src/com/cloud/server/ConfigurationServerImpl.java | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5599dee9/server/src/com/cloud/server/ConfigurationServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java
index b85f137..f2c2eda 100755
--- a/server/src/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/com/cloud/server/ConfigurationServerImpl.java
@@ -470,7 +470,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                     PreparedStatement stmt = txn.prepareAutoCloseStatement(insertSql);
                     stmt.executeUpdate();
                 } catch (SQLException ex) {
-                    s_logger.debug("Caught exception when inserting system account: " + ex.getMessage());
+                    s_logger.debug("Looks like system account already exists");
                 }
                 // insert system user
                 insertSql = "INSERT INTO `cloud`.`user` (id, uuid, username, password, account_id, firstname, lastname, created, user.default)"
@@ -480,7 +480,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                     PreparedStatement stmt = txn.prepareAutoCloseStatement(insertSql);
                     stmt.executeUpdate();
                 } catch (SQLException ex) {
-                    s_logger.debug("Caught SQLException when inserting system user: " + ex.getMessage());
+                    s_logger.debug("Looks like system user already exists");
                 }
 
                 // insert admin user, but leave the account disabled until we set a
@@ -497,7 +497,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                     PreparedStatement stmt = txn.prepareAutoCloseStatement(insertSql);
                     stmt.executeUpdate();
                 } catch (SQLException ex) {
-                    s_logger.debug("Caught SQLException when creating admin account: " + ex.getMessage());
+                    s_logger.debug("Looks like admin account already exists");
                 }
 
                 // now insert the user
@@ -508,7 +508,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                     PreparedStatement stmt = txn.prepareAutoCloseStatement(insertSql);
                     stmt.executeUpdate();
                 } catch (SQLException ex) {
-                    s_logger.debug("Caught SQLException when inserting admin user: " + ex.getMessage());
+                    s_logger.debug("Looks like admin user already exists");
                 }
 
                 try {
@@ -519,8 +519,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                         stmt.executeQuery();
                         tableName = "network_group";
                     } catch (Exception ex) {
-                        // if network_groups table exists, create the default security group there
-                        s_logger.debug("Caught (SQL?)Exception: no network_group  " + ex.getLocalizedMessage());
+                        // Ignore in case of exception, table must not exist
                     }
 
                     insertSql = "SELECT * FROM " + tableName + " where account_id=2 and name='default'";


[07/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
CLOUDSTACK-8136. [VMware] Create VM snapshot fails if a previous attempt to take the snapshot failed.
While looking for an ongoing VM snapshot task, check the task status to identify if the task is still running.

(cherry picked from commit 25a4f0dc530951e87fe357313dc983cb75aa8972)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: 865940d0888f5727597874575fff1140dab41839
Parents: d928f5b
Author: Likitha Shetty <li...@citrix.com>
Authored: Tue Dec 30 14:16:00 2014 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../hypervisor/vmware/manager/VmwareStorageManagerImpl.java   | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/865940d0/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
index 1981303..3aec7a4 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
@@ -37,6 +37,7 @@ import com.vmware.vim25.HostDatastoreBrowserSearchResults;
 import com.vmware.vim25.HostDatastoreBrowserSearchSpec;
 import com.vmware.vim25.ManagedObjectReference;
 import com.vmware.vim25.TaskInfo;
+import com.vmware.vim25.TaskInfoState;
 import com.vmware.vim25.VirtualDisk;
 
 import org.apache.cloudstack.storage.to.TemplateObjectTO;
@@ -1181,8 +1182,10 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
                 TaskInfo info = (TaskInfo)(context.getVimClient().getDynamicProperty(taskMor, "info"));
 
                 if (info.getEntityName().equals(cmd.getVmName()) && info.getName().equalsIgnoreCase("CreateSnapshot_Task")) {
-                    s_logger.debug("There is already a VM snapshot task running, wait for it");
-                    context.getVimClient().waitForTask(taskMor);
+                    if (!(info.getState().equals(TaskInfoState.SUCCESS) || info.getState().equals(TaskInfoState.ERROR))) {
+                        s_logger.debug("There is already a VM snapshot task running, wait for it");
+                        context.getVimClient().waitForTask(taskMor);
+                    }
                 }
             }
 


[12/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
vmware-base: get vsessiontimeout from client class

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: 4d9a94ce6956e61882b0fd7f15c1ec66d6419135
Parents: 8e15070
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 15:37:13 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:10 2015 +0530

----------------------------------------------------------------------
 .../hypervisor/vmware/mo/VirtualMachineMO.java    | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d9a94ce/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index c48bfe9..51ddd75 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -458,6 +458,7 @@ public class VirtualMachineMO extends BaseMO {
 
     public boolean createSnapshot(String snapshotName, String snapshotDescription, boolean dumpMemory, boolean quiesce) throws Exception {
 
+        long apiTimeout = _context.getVimClient().getVcenterSessionTimeout();
         ManagedObjectReference morTask = _context.getService().createSnapshotTask(_mor, snapshotName, snapshotDescription, dumpMemory, quiesce);
 
         boolean result = _context.getVimClient().waitForTask(morTask);
@@ -467,7 +468,7 @@ public class VirtualMachineMO extends BaseMO {
             ManagedObjectReference morSnapshot = null;
             // We still need to wait until the object appear in vCenter
             long startTick = System.currentTimeMillis();
-            while (System.currentTimeMillis() - startTick < 10000) {
+            while (System.currentTimeMillis() - startTick < apiTimeout) {
                 morSnapshot = getSnapshotMor(snapshotName);
                 if (morSnapshot != null) {
                     break;
@@ -479,9 +480,11 @@ public class VirtualMachineMO extends BaseMO {
                 }
             }
 
-            if (morSnapshot == null)
-                s_logger.error("We've been waiting for over 10 seconds for snapshot MOR to be appearing in vCenter after CreateSnapshot task is done, but it is still not there?!");
-
+            if (morSnapshot == null) {
+                s_logger.error("We've been waiting for over " + apiTimeout + " milli seconds for snapshot MOR to be appearing in vCenter after CreateSnapshot task is done, but it is still not there?!");
+                return false;
+            }
+            s_logger.debug("Waited for " + (System.currentTimeMillis() - startTick) + " seconds for snapshot object [" + snapshotName + "] to appear in vCenter.");
             return true;
         } else {
             s_logger.error("VMware createSnapshot_Task failed due to " + TaskMO.getTaskFailureInfo(_context, morTask));
@@ -1753,8 +1756,15 @@ public class VirtualMachineMO extends BaseMO {
         }
     }
 
+  public String getGuestId() throws Exception {
+    return (String)_context.getVimClient().getDynamicProperty(_mor, "config.guestId");
+  }
+
     public GuestOsDescriptor getGuestOsDescriptor(String guestOsId) throws Exception {
         GuestOsDescriptor guestOsDescriptor = null;
+        if (guestOsId == null) {
+            guestOsId = getGuestId();
+        }
         ManagedObjectReference vmEnvironmentBrowser = _context.getVimClient().getMoRefProp(_mor, "environmentBrowser");
         VirtualMachineConfigOption vmConfigOption = _context.getService().queryConfigOption(vmEnvironmentBrowser, null, null);
         List<GuestOsDescriptor> guestDescriptors = vmConfigOption.getGuestOSDescriptor();


[08/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
server: fix NPE case in VolumeApiServiceImpl

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: df934c954106a618f8b0aca7e7dfbac890d78244
Parents: d2471df
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 15:33:23 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 server/src/com/cloud/storage/VolumeApiServiceImpl.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/df934c95/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index 7fe8893..0f17a57 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -1636,12 +1636,12 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         }
 
         HostVO host = null;
-        StoragePoolVO volumePool = _storagePoolDao.findById(volume.getPoolId());
+        StoragePoolVO volumePool = _storagePoolDao.findByIdIncludingRemoved(volume.getPoolId());
 
         if (hostId != null) {
             host = _hostDao.findById(hostId);
 
-            if (host != null && host.getHypervisorType() == HypervisorType.XenServer && volumePool.isManaged()) {
+            if (host != null && host.getHypervisorType() == HypervisorType.XenServer && volumePool != null && volumePool.isManaged()) {
                 sendCommand = true;
             }
         }


[11/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
vmware: plugin improvements

- use sticky chmod 1777 on the mountpoint
- remove dead code
- port improved code for moving disk into corresponding folder from master
- for dummy worker case, check case for powered off vm state

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: eea716b7916c916442b19d14e0f6e5c57bebb91e
Parents: 4d9a94c
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Mon Apr 13 15:42:13 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:10 2015 +0530

----------------------------------------------------------------------
 .../hypervisor/vmware/manager/VmwareManagerImpl.java     |  2 +-
 .../cloud/hypervisor/vmware/resource/VmwareResource.java |  3 +--
 .../cloud/storage/resource/VmwareStorageProcessor.java   | 11 +++++++----
 3 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eea716b7/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index 3416319..e852948 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@ -765,7 +765,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
 
         // Change permissions for the mountpoint
         script = new Script(true, "chmod", _timeout, s_logger);
-        script.add("777", mountPoint);
+        script.add("1777", mountPoint);
         result = script.execute();
         if (result != null) {
             s_logger.warn("Unable to set permissions for " + mountPoint + " due to " + result);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eea716b7/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index 0777201..fd10830 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -1822,7 +1822,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
 
     int getReservedCpuMHZ(VirtualMachineTO vmSpec) {
          if (vmSpec.getDetails().get(VMwareGuru.VmwareReserveCpu.key()).equalsIgnoreCase("true")) {
-             return vmSpec.getMinSpeed();
+             return vmSpec.getMinSpeed() * vmSpec.getCpus();
          }
          return 0;
     }
@@ -2475,7 +2475,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
     private Pair<ManagedObjectReference, String> prepareNetworkFromNicInfo(HostMO hostMo, NicTO nicTo, boolean configureVServiceInNexus, VirtualMachine.Type vmType) throws Exception {
 
         Ternary<String, String, String> switchDetails = getTargetSwitch(nicTo);
-        nicTo.getType();
         VirtualSwitchType switchType = VirtualSwitchType.getType(switchDetails.second());
         String switchName = switchDetails.first();
         String vlanToken = switchDetails.third();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eea716b7/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index d0b6e74..82cda82 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -478,9 +478,12 @@ public class VmwareStorageProcessor implements StorageProcessor {
                 dsMo.deleteFile(srcFile, dcMo.getMor(), true);
             }
             // restoreVM - move the new ROOT disk into corresponding VM folder
-            String vmInternalCSName = volume.getVmName();
-            if (dsMo.folderExists(String.format("[%s]", dsMo.getName()), vmInternalCSName)) {
-                VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmInternalCSName, dsMo, vmdkFileBaseName);
+            VirtualMachineMO restoreVmMo = dcMo.findVm(volume.getVmName());
+            if (restoreVmMo != null) {
+                String vmNameInVcenter = restoreVmMo.getName(); // VM folder name in datastore will be VM's name in vCenter.
+                if (dsMo.folderExists(String.format("[%s]", dsMo.getName()), vmNameInVcenter)) {
+                    VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmNameInVcenter, dsMo, vmdkFileBaseName);
+                }
             }
 
             VolumeObjectTO newVol = new VolumeObjectTO();
@@ -598,7 +601,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
             }
 
             vmMo = hyperHost.findVmOnHyperHost(vmName);
-            if (vmMo == null) {
+            if (vmMo == null || VmwareResource.getVmState(vmMo) == PowerState.PowerOff) {
                 // create a dummy worker vm for attaching the volume
                 DatastoreMO dsMo = new DatastoreMO(hyperHost.getContext(), morDs);
                 workerVm = HypervisorHostHelper.createWorkerVM(hyperHost, dsMo, workerVmName);


[06/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
CLOUDSTACK-5933 Problem with VMware snapshot when datastore has a space in its name

Handling spaces in datastore name while extracting vmdk base name

Signed-off-by: Sateesh Chodapuneedi <sa...@apache.org>
(cherry picked from commit aa84b05491007567b81b33443fd9f99f6992e52c)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: d928f5b9dd092db81615b734ceb7c5e903a4d2b1
Parents: c29254b
Author: Sateesh Chodapuneedi <sa...@apache.org>
Authored: Tue Dec 9 05:34:41 2014 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d928f5b9/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
index d060f60..1981303 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
@@ -1249,7 +1249,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
                     vmdkName = fullPath; // for managed storage, vmdkName == fullPath
                 }
                 else {
-                    vmdkName = fullPath.split(" ")[1];
+                    vmdkName = fullPath.split("] ")[1];
 
                     if (vmdkName.endsWith(".vmdk")) {
                         vmdkName = vmdkName.substring(0, vmdkName.length() - (".vmdk").length());


[05/12] git commit: updated refs/heads/4.5 to eea716b

Posted by bh...@apache.org.
CLOUDSTACK-8121. Data disk properties are not updated upon Creation/Deletion of VM snapshots.
Update the path and size of data volumes after snapshot creation/deletion by correctly trimming only the snapshot postfix of a disk.

(cherry picked from commit ac491c96075d65e35157380fe7d28fdd917c0e90)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


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

Branch: refs/heads/4.5
Commit: c29254b5474d2c75ebbfe4cd021543b5bba69f9d
Parents: 271dae9
Author: Likitha Shetty <li...@citrix.com>
Authored: Thu Dec 4 19:20:45 2014 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../manager/VmwareStorageManagerImpl.java       | 34 ++------------------
 .../hypervisor/vmware/mo/VirtualMachineMO.java  | 14 +-------
 .../hypervisor/vmware/util/VmwareHelper.java    | 13 ++++++++
 3 files changed, 16 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c29254b5/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
index d9fb935..d060f60 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
@@ -1159,36 +1159,6 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
         return size;
     }
 
-    private String extractSnapshotBaseFileName(String input) {
-        if (input == null) {
-            return null;
-        }
-
-        String result = input;
-
-        final String fileType = ".vmdk";
-
-        if (result.endsWith(fileType)) {
-            // get rid of fileType
-            result = result.substring(0, result.length() - (fileType).length());
-        }
-
-        final String token = "-";
-
-        String[] str = result.split(token);
-        int length = str.length;
-
-        if (length == 1 || length == 2) {
-            return result;
-        }
-
-        if (length > 2) {
-            return str[0] + token + str[1];
-        }
-
-        return result;
-    }
-
     @Override
     public CreateVMSnapshotAnswer execute(VmwareHostService hostService, CreateVMSnapshotCommand cmd) {
         List<VolumeObjectTO> volumeTOs = cmd.getVolumeTOs();
@@ -1291,7 +1261,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
                         vmdkName = vmdkName.substring(vmdkName.indexOf(token) + token.length());
                     }
 
-                    baseName = extractSnapshotBaseFileName(vmdkName);
+                    baseName = VmwareHelper.trimSnapshotDeltaPostfix(vmdkName);
                 }
 
                 mapNewDisk.put(baseName, vmdkName);
@@ -1316,7 +1286,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
                 baseName = oldPath.substring(1, oldPath.length() - 1);
             }
             else {
-                baseName = extractSnapshotBaseFileName(volumeTO.getPath());
+                baseName = VmwareHelper.trimSnapshotDeltaPostfix(volumeTO.getPath());
             }
 
             String newPath = mapNewDisk.get(baseName);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c29254b5/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index f892477..c48bfe9 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -34,7 +34,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.google.gson.Gson;
@@ -1958,24 +1957,13 @@ public class VirtualMachineMO extends BaseMO {
         }
     }
 
-    private static String trimSnapshotDeltaPostfix(String name) {
-        String[] tokens = name.split("-");
-        if (tokens.length > 1 && tokens[tokens.length - 1].matches("[0-9]{6,}")) {
-            List<String> trimmedTokens = new ArrayList<String>();
-            for (int i = 0; i < tokens.length - 1; i++)
-                trimmedTokens.add(tokens[i]);
-            return StringUtils.join(trimmedTokens, "-");
-        }
-        return name;
-    }
-
     // return pair of VirtualDisk and disk device bus name(ide0:0, etc)
     public Pair<VirtualDisk, String> getDiskDevice(String vmdkDatastorePath, boolean matchExactly) throws Exception {
         List<VirtualDevice> devices = _context.getVimClient().getDynamicProperty(_mor, "config.hardware.device");
 
         DatastoreFile dsSrcFile = new DatastoreFile(vmdkDatastorePath);
         String srcBaseName = dsSrcFile.getFileBaseName();
-        String trimmedSrcBaseName = trimSnapshotDeltaPostfix(srcBaseName);
+        String trimmedSrcBaseName = VmwareHelper.trimSnapshotDeltaPostfix(srcBaseName);
 
         if (matchExactly) {
             s_logger.info("Look for disk device info from volume : " + vmdkDatastorePath + " with base name: " + srcBaseName);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c29254b5/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
index d29e0f2..5e3daa2 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
@@ -29,6 +29,7 @@ import java.util.List;
 import java.util.Random;
 import java.util.UUID;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.vmware.vim25.DistributedVirtualSwitchPortConnection;
@@ -711,4 +712,16 @@ public class VmwareHelper {
         // Object name that is greater than 32 is not safe in vCenter
         return UUID.randomUUID().toString().replaceAll("-", "");
     }
+
+    public static String trimSnapshotDeltaPostfix(String name) {
+        String[] tokens = name.split("-");
+        if (tokens.length > 1 && tokens[tokens.length - 1].matches("[0-9]{6,}")) {
+            List<String> trimmedTokens = new ArrayList<String>();
+            for (int i = 0; i < tokens.length - 1; i++)
+                trimmedTokens.add(tokens[i]);
+            return StringUtils.join(trimmedTokens, "-");
+        }
+        return name;
+    }
+
 }