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 2016/12/09 20:01:49 UTC

[1/6] git commit: updated refs/heads/master to 17653a8

Repository: cloudstack
Updated Branches:
  refs/heads/master f2798403b -> 17653a86f


CLOUDSTACK-8908 After copying the template charging for that template is stopped


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

Branch: refs/heads/master
Commit: 740179c10b6906e6c1e6016c3dd6afce46c8c74b
Parents: b704cef
Author: subhash yedugundla <ve...@citrix.com>
Authored: Mon Sep 28 23:05:43 2015 +0530
Committer: subhash_y <ve...@accelerite.com>
Committed: Tue Nov 15 14:50:13 2016 +0530

----------------------------------------------------------------------
 .../cloud/usage/dao/UsageStorageDaoImpl.java    |  3 +-
 .../usage/dao/UsageStorageDaoImplTest.java      | 88 ++++++++++++++++++++
 engine/schema/test/resources/db.properties      | 70 ++++++++++++++++
 3 files changed, 160 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/740179c1/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java b/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java
index 8d419e5..45337b2 100644
--- a/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java
+++ b/engine/schema/src/com/cloud/usage/dao/UsageStorageDaoImpl.java
@@ -41,7 +41,7 @@ public class UsageStorageDaoImpl extends GenericDaoBase<UsageStorageVO, Long> im
     public static final Logger s_logger = Logger.getLogger(UsageStorageDaoImpl.class.getName());
 
     protected static final String REMOVE_BY_USERID_STORAGEID = "DELETE FROM usage_storage WHERE account_id = ? AND id = ? AND storage_type = ?";
-    protected static final String UPDATE_DELETED = "UPDATE usage_storage SET deleted = ? WHERE account_id = ? AND id = ? AND storage_type = ? and deleted IS NULL";
+    protected static final String UPDATE_DELETED = "UPDATE usage_storage SET deleted = ? WHERE account_id = ? AND id = ? AND storage_type = ? AND zone_id = ? and deleted IS NULL";
     protected static final String GET_USAGE_RECORDS_BY_ACCOUNT =
         "SELECT id, zone_id, account_id, domain_id, storage_type, source_id, size, created, deleted, virtual_size " + "FROM usage_storage "
             + "WHERE account_id = ? AND ((deleted IS NULL) OR (created BETWEEN ? AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted >= ?)))";
@@ -124,6 +124,7 @@ public class UsageStorageDaoImpl extends GenericDaoBase<UsageStorageVO, Long> im
                         pstmt.setLong(2, usage.getAccountId());
                         pstmt.setLong(3, usage.getId());
                         pstmt.setInt(4, usage.getStorageType());
+                        pstmt.setLong(5, usage.getZoneId());
                         pstmt.executeUpdate();
                     }
                 }catch (SQLException e)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/740179c1/engine/schema/test/com/cloud/usage/dao/UsageStorageDaoImplTest.java
----------------------------------------------------------------------
diff --git a/engine/schema/test/com/cloud/usage/dao/UsageStorageDaoImplTest.java b/engine/schema/test/com/cloud/usage/dao/UsageStorageDaoImplTest.java
new file mode 100644
index 0000000..4c3311f
--- /dev/null
+++ b/engine/schema/test/com/cloud/usage/dao/UsageStorageDaoImplTest.java
@@ -0,0 +1,88 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package com.cloud.usage.dao;
+
+import static org.mockito.Matchers.contains;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.sql.PreparedStatement;
+import com.cloud.utils.DateUtil;
+import com.cloud.utils.db.TransactionLegacy;
+import java.util.Date;
+import java.util.TimeZone;
+
+import com.cloud.usage.UsageStorageVO;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(TransactionLegacy.class)
+@PowerMockIgnore("javax.management.*")
+public class UsageStorageDaoImplTest {
+
+    @Mock
+    private PreparedStatement preparedStatementMock;
+
+    @Mock
+    private TransactionLegacy transactionMock;
+
+    @Mock
+    private  UsageStorageVO userStorageVOMock;
+
+    private final UsageStorageDaoImpl usageDao = new UsageStorageDaoImpl();
+
+    @Test
+    public void testUpdate() throws Exception {
+
+
+        long id = 21, zoneId = 31, accountId = 41;
+        int storageType = 1;
+        String UPDATE_DELETED = "UPDATE usage_storage SET deleted = ? WHERE account_id = ? AND id = ? AND storage_type = ? AND zone_id = ? and deleted IS NULL";
+        Date deleted = new Date();
+
+        PowerMockito.mockStatic(TransactionLegacy.class);
+        Mockito.when(TransactionLegacy.open(TransactionLegacy.USAGE_DB)).thenReturn(transactionMock);
+
+        when(transactionMock.prepareStatement(contains(UPDATE_DELETED))).thenReturn(preparedStatementMock);
+        when(userStorageVOMock.getAccountId()).thenReturn(accountId);
+        when(userStorageVOMock.getId()).thenReturn(id);
+        when(userStorageVOMock.getStorageType()).thenReturn(storageType);
+        when(userStorageVOMock.getZoneId()).thenReturn(zoneId);
+        when(userStorageVOMock.getDeleted()).thenReturn(deleted);
+
+
+
+        usageDao.update(userStorageVOMock);
+
+        verify(transactionMock, times(1)).prepareStatement(UPDATE_DELETED);
+        verify(preparedStatementMock, times(1)).setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), deleted));
+        verify(preparedStatementMock, times(1)).setLong(2, accountId);
+        verify(preparedStatementMock, times(1)).setLong(3, id);
+        verify(preparedStatementMock, times(1)).setInt(4, storageType);
+        verify(preparedStatementMock, times(1)).setLong(5, zoneId);
+        verify(preparedStatementMock, times(1)).executeUpdate();
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/740179c1/engine/schema/test/resources/db.properties
----------------------------------------------------------------------
diff --git a/engine/schema/test/resources/db.properties b/engine/schema/test/resources/db.properties
new file mode 100644
index 0000000..49fd68a
--- /dev/null
+++ b/engine/schema/test/resources/db.properties
@@ -0,0 +1,70 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+
+# management server clustering parameters, change cluster.node.IP to the machine IP address
+# in which the management server(Tomcat) is running
+cluster.node.IP=127.0.0.1
+cluster.servlet.port=9090
+region.id=1
+
+# CloudStack database settings
+db.cloud.username=cloud
+db.cloud.password=cloud
+db.root.password=
+db.cloud.host=localhost
+db.cloud.port=3306
+db.cloud.name=cloud
+
+# CloudStack database tuning parameters
+db.cloud.maxActive=250
+db.cloud.maxIdle=30
+db.cloud.maxWait=10000
+db.cloud.autoReconnect=true
+db.cloud.validationQuery=SELECT 1
+db.cloud.testOnBorrow=true
+db.cloud.testWhileIdle=true
+db.cloud.timeBetweenEvictionRunsMillis=40000
+db.cloud.minEvictableIdleTimeMillis=240000
+db.cloud.poolPreparedStatements=false
+db.cloud.url.params=prepStmtCacheSize=517&cachePrepStmts=true&prepStmtCacheSqlLimit=4096
+
+# usage database settings
+db.usage.username=cloud
+db.usage.password=cloud
+db.usage.host=localhost
+db.usage.port=3306
+db.usage.name=cloud_usage
+
+# usage database tuning parameters
+db.usage.maxActive=100
+db.usage.maxIdle=30
+db.usage.maxWait=10000
+db.usage.autoReconnect=true
+
+# Simulator database settings
+db.simulator.username=cloud
+db.simulator.password=cloud
+db.simulator.host=localhost
+db.simulator.port=3306
+db.simulator.name=simulator
+db.simulator.maxActive=250
+db.simulator.maxIdle=30
+db.simulator.maxWait=10000
+db.simulator.autoReconnect=true


[3/6] git commit: updated refs/heads/master to 17653a8

Posted by bh...@apache.org.
Merge pull request #1796 from sudhansu7/CLOUDSTACK-9626

CLOUDSTACK-9626: Instance fails to start after unsuccesful computeISSUE
============
Instance fails to start after unsuccesful compute offering upgrade.

TROUBLESHOOTING
==================
We observed VM instance get compute values "cpuNumber","cpuSpeed","memory" removed from table "user_vm_details", which cause instance fail to startup next time on XenServer

`mysql> select * from user_vm_details where vm_id=10;
--------------------------------------------------------------------------------------------------
id 	vm_id 	name 	value 	display

--------------------------------------------------------------------------------------------------
218 	10 	platform 	viridian:true;acpi:1;apic:true;pae:true;nx:true 	1
219 	10 	hypervisortoolsversion 	xenserver56 	1
220 	10 	Message.ReservedCapacityFreed.Flag 	true 	1

--------------------------------------------------------------------------------------------------
3 rows in set (0.00 sec)`

`2016-11-29 06:49:03,667 ERROR [c.c.a.ApiAsyncJobDispatcher] (API-Job-Executor-12:ctx-49c25b1d job-125) (logid:114a2f1b) Unexpected exception while executing org.apache.cloudstack.api.command.admin.vm.ScaleVMCmdByAdmin
java.lang.NullPointerException
	at com.cloud.vm.UserVmManagerImpl.upgradeRunningVirtualMachine(UserVmManagerImpl.java:1664)
	at com.cloud.vm.UserVmManagerImpl.upgradeVirtualMachine(UserVmManagerImpl.java:1631)
	at com.cloud.vm.UserVmManagerImpl.upgradeVirtualMachine(UserVmManagerImpl.java:1561)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:106)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
	at com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:51)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at com.sun.proxy.$Proxy197.upgradeVirtualMachine(Unknown Source)
	at org.apache.cloudstack.api.command.admin.vm.ScaleVMCmdByAdmin.execute(ScaleVMCmdByAdmin.java:48)
	at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:150)
	at com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:108)
	at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:554)
	at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
	at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
	at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
	at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
	at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
	at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:502)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)`

REPRO STEPS
==================
1. Set global setting enable.dynamic.scale.vm to true
2. Create a custom Compute Offerings A
3. Create a VM instance apply A, ie. cpuNumber=1,cpuSpeed=1000,memory=512M
4. Create another custom Compute Offerings B
5. Change service offering to B, ie. cpuNumber=2,cpuSpeed=2000,memory=4096M (ensure 4 times over previous memory size), then you will encounter scaling failed
6. Stop VM instance , you will never startup again

EXPECTED BEHAVIOR
==================
Succeed Startup VM instance

ACTUAL BEHAVIOR
==================
Fail to start instance

RCA:
The ROLLBACK does not take care of restoring old service offering details. In case failure we are removing the new service offering details but restoring old service offering details is missing.

Before Fix:
`user_vm_details before upgrade.
mysql> select * from user_vm_details where vm_id =9;
+-----+-------+------------------------------------+-------------------------------------------------+---------+
| id  | vm_id | name                               | value                                           | display |
+-----+-------+------------------------------------+-------------------------------------------------+---------+
| 118 |     9 | platform                           | viridian:true;acpi:1;apic:true;pae:true;nx:true |       1 |
| 119 |     9 | hypervisortoolsversion             | xenserver56                                     |       1 |
| 120 |     9 | Message.ReservedCapacityFreed.Flag | false                                           |       1 |
| 121 |     9 | cpuNumber                          | 1                                               |       1 |
| 122 |     9 | cpuSpeed                           | 1000                                            |       1 |
| 123 |     9 | memory                             | 256                                             |       1 |
+-----+-------+------------------------------------+-------------------------------------------------+---------+
6 rows in set (0.00 sec)

user_vm_details after unsuccessful upgrade.
mysql> select * from user_vm_details where vm_id =9;
+-----+-------+------------------------------------+-------------------------------------------------+---------+
| id  | vm_id | name                               | value                                           | display |
+-----+-------+------------------------------------+-------------------------------------------------+---------+
| 133 |     9 | platform                           | viridian:true;acpi:1;apic:true;pae:true;nx:true |       1 |
| 134 |     9 | hypervisortoolsversion             | xenserver56                                     |       1 |
| 135 |     9 | Message.ReservedCapacityFreed.Flag | false                                           |       1 |
+-----+-------+------------------------------------+-------------------------------------------------+---------+
3 rows in set (0.00 sec)`

After fix:
`
mysql> select * from user_vm_details where vm_id =9;
+-----+-------+------------------------------------+-------------------------------------------------+---------+
| id  | vm_id | name                               | value                                           | display |
+-----+-------+------------------------------------+-------------------------------------------------+---------+
| 166 |     9 | cpuNumber                          | 1                                               |       1 |
| 167 |     9 | platform                           | viridian:true;acpi:1;apic:true;pae:true;nx:true |       1 |
| 168 |     9 | cpuSpeed                           | 1000                                            |       1 |
| 169 |     9 | Message.ReservedCapacityFreed.Flag | false                                           |       1 |
| 170 |     9 | memory                             | 256                                             |       1 |
| 171 |     9 | hypervisortoolsversion             | xenserver56                                     |       1 |
+-----+-------+------------------------------------+-------------------------------------------------+---------+
6 rows in set (0.00 sec)
`

* pr/1796:
  CLOUDSTACK-9626: Instance fails to start after unsuccesful compute offering  upgrade.

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/c89198f4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c89198f4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c89198f4

Branch: refs/heads/master
Commit: c89198f4c65e74a27a5586e4e18b0e71b164a904
Parents: b931b79 542a211
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Fri Dec 9 23:52:47 2016 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Fri Dec 9 23:52:47 2016 +0530

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



[4/6] git commit: updated refs/heads/master to 17653a8

Posted by bh...@apache.org.
Merge pull request #896 from yvsubhash/CLOUDSTACK-8908

CLOUDSTACK-8908 After copying the template charging for that template is getting stoppedThis is happening as the zone id is not part of the query.  Zone id is added to the query and unit tests are also added

* pr/896:
  CLOUDSTACK-8908 After copying the template charging for that template is stopped

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/a13ee852
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a13ee852
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a13ee852

Branch: refs/heads/master
Commit: a13ee852af55be346ab836cdf3fc9fb630eb75fc
Parents: f8c9f45 740179c
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Sat Dec 10 00:15:35 2016 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Sat Dec 10 00:15:35 2016 +0530

----------------------------------------------------------------------
 .../cloud/usage/dao/UsageStorageDaoImpl.java    |  3 +-
 .../usage/dao/UsageStorageDaoImplTest.java      | 88 ++++++++++++++++++++
 engine/schema/test/resources/db.properties      | 70 ++++++++++++++++
 3 files changed, 160 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[2/6] git commit: updated refs/heads/master to 17653a8

Posted by bh...@apache.org.
CLOUDSTACK-9626: Instance fails to start after unsuccesful compute
offering  upgrade.


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

Branch: refs/heads/master
Commit: 542a2112ba0315420486c975a7323c4a0aae1d53
Parents: f231c8c
Author: Sudhansu <su...@accelerite.com>
Authored: Tue Nov 29 10:48:04 2016 +0530
Committer: Sudhansu <su...@accelerite.com>
Committed: Fri Dec 9 17:06:13 2016 +0530

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/542a2112/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index a93b41b..29a6bbc 100644
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -1759,13 +1759,15 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
                 } finally {
                     if (!success) {
                         _itMgr.upgradeVmDb(vmId, currentServiceOffering.getId()); // rollback
-                        if (newServiceOffering.isDynamic()) {
-                            removeCustomOfferingDetails(vmId);
-                        }
+
                         // Decrement CPU and Memory count accordingly.
                         if (newCpu > currentCpu) {
                             _resourceLimitMgr.decrementResourceCount(caller.getAccountId(), ResourceType.cpu, new Long(newCpu - currentCpu));
                         }
+                        //restoring old service offering will take care of removing new SO.
+                        if(currentServiceOffering.isDynamic()){
+                            saveCustomOfferingDetails(vmId, currentServiceOffering);
+                        }
 
                         if (memoryDiff > 0) {
                             _resourceLimitMgr.decrementResourceCount(caller.getAccountId(), ResourceType.memory, new Long(memoryDiff));


[5/6] git commit: updated refs/heads/master to 17653a8

Posted by bh...@apache.org.
Merge branch '4.8' into 4.9


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

Branch: refs/heads/master
Commit: 7da95172a47329ce69f9fc9d57a08e3791e00e17
Parents: c89198f a13ee85
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Sat Dec 10 01:28:14 2016 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Sat Dec 10 01:28:14 2016 +0530

----------------------------------------------------------------------
 .../cloud/usage/dao/UsageStorageDaoImpl.java    |  3 +-
 .../usage/dao/UsageStorageDaoImplTest.java      | 88 ++++++++++++++++++++
 engine/schema/test/resources/db.properties      | 70 ++++++++++++++++
 3 files changed, 160 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[6/6] git commit: updated refs/heads/master to 17653a8

Posted by bh...@apache.org.
Merge branch '4.9'


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

Branch: refs/heads/master
Commit: 17653a86fad67447a4f13e455e336694ad5c1735
Parents: f279840 7da95172
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Sat Dec 10 01:29:16 2016 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Sat Dec 10 01:29:16 2016 +0530

----------------------------------------------------------------------
 .../cloud/usage/dao/UsageStorageDaoImpl.java    |  3 +-
 .../usage/dao/UsageStorageDaoImplTest.java      | 88 ++++++++++++++++++++
 engine/schema/test/resources/db.properties      | 70 ++++++++++++++++
 server/src/com/cloud/vm/UserVmManagerImpl.java  |  8 +-
 4 files changed, 165 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17653a86/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------