Updated Branches:
  refs/heads/master-6-17-stable ec722df00 -> eb74a8741


CLOUDSTACK-3231: Update service offering Id of allocated Vm usage whem service 
offering changes for a Vm


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

Branch: refs/heads/master-6-17-stable
Commit: eb74a8741e242875ecdc614f88da0ebcbc21c418
Parents: ec722df
Author: Kishan Kavala <kis...@cloud.com>
Authored: Thu Jun 27 16:01:09 2013 +0530
Committer: Kishan Kavala <kis...@cloud.com>
Committed: Thu Jun 27 16:01:09 2013 +0530

----------------------------------------------------------------------
 .../src/com/cloud/usage/UsageVMInstanceVO.java       | 12 ++++++++++--
 usage/src/com/cloud/usage/UsageManagerImpl.java      | 15 ++++++++++++++-
 2 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eb74a874/engine/schema/src/com/cloud/usage/UsageVMInstanceVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/usage/UsageVMInstanceVO.java 
b/engine/schema/src/com/cloud/usage/UsageVMInstanceVO.java
index 6f40471..2fe346e 100644
--- a/engine/schema/src/com/cloud/usage/UsageVMInstanceVO.java
+++ b/engine/schema/src/com/cloud/usage/UsageVMInstanceVO.java
@@ -47,7 +47,7 @@ public class UsageVMInstanceVO {
 
     @Column(name="template_id")
     private long templateId;
-    
+
     @Column(name="hypervisor_type")
     private String hypervisorType;
 
@@ -104,6 +104,10 @@ public class UsageVMInstanceVO {
         return templateId;
     }
 
+    public void setServiceOfferingId(long serviceOfferingId) {
+        this.serviceOfferingId = serviceOfferingId;
+    }
+
     public String getHypervisorType() {
         return hypervisorType;
     }
@@ -112,7 +116,11 @@ public class UsageVMInstanceVO {
                return startDate;
        }
 
-       public Date getEndDate() {
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
                return endDate;
        }
        public void setEndDate(Date endDate) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eb74a874/usage/src/com/cloud/usage/UsageManagerImpl.java
----------------------------------------------------------------------
diff --git a/usage/src/com/cloud/usage/UsageManagerImpl.java 
b/usage/src/com/cloud/usage/UsageManagerImpl.java
index 65f354c..4901dd9 100644
--- a/usage/src/com/cloud/usage/UsageManagerImpl.java
+++ b/usage/src/com/cloud/usage/UsageManagerImpl.java
@@ -988,8 +988,21 @@ public class UsageManagerImpl extends ManagerBase 
implements UsageManager, Runna
                 usageInstances = m_usageInstanceDao.search(sc, null);
                 if (usageInstances == null || (usageInstances.size() == 0)) {
                     s_logger.error("Cannot find allocated vm entry for a vm 
running with id: " + vmId);
+                } else if (usageInstances.size() == 1) {
+                    UsageVMInstanceVO usageInstance = usageInstances.get(0);
+                    if(usageInstance.getSerivceOfferingId() != soId){
+                        //Service Offering changed after Vm creation
+                        //End current Allocated usage and create new Allocated 
Vm entry with new soId
+                        usageInstance.setEndDate(event.getCreateDate());
+                        m_usageInstanceDao.update(usageInstance);
+                        usageInstance.setServiceOfferingId(soId);
+                        usageInstance.setStartDate(event.getCreateDate());
+                        usageInstance.setEndDate(null);
+                        m_usageInstanceDao.persist(usageInstance);
+                    }
                 }
-                
+
+
                 Long templateId = event.getTemplateId();
                 String hypervisorType = event.getResourceType();
 

Reply via email to