This is an automated email from the ASF dual-hosted git repository.

sureshanaparti pushed a commit to branch 4.16
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.16 by this push:
     new 1fc7d70  Add idempotent primary keys on tables missing them (#5785)
1fc7d70 is described below

commit 1fc7d70da288b15f5482e715632fde0d35760026
Author: Nicolas Vazquez <[email protected]>
AuthorDate: Sun Jan 30 15:01:07 2022 -0300

    Add idempotent primary keys on tables missing them (#5785)
    
    * In progress primary keys
    
    * Refactor in progress to idempotent way
    
    * Finish SQL changes
    
    * Add java code to match new columns
    
    * Fix imports
    
    * Fix tests
    
    * Remove comments
    
    * Fix index name on vmsnapshot
    
    * Fix parse from correct column on usage storage
    
    * Fix parser columns
    
    * Fix NPE
    
    * Fix NPE for the rest of the occurrences
    
    * Further fix for similar issue
---
 .../java/com/cloud/usage/UsageIPAddressVO.java     |  19 +++-
 .../com/cloud/usage/UsageLoadBalancerPolicyVO.java |  18 +++-
 .../com/cloud/usage/UsageNetworkOfferingVO.java    |  17 +++-
 .../com/cloud/usage/UsagePortForwardingRuleVO.java |  18 +++-
 .../java/com/cloud/usage/UsageSecurityGroupVO.java |  17 +++-
 .../com/cloud/usage/UsageSnapshotOnPrimaryVO.java  |  16 ++-
 .../main/java/com/cloud/usage/UsageStorageVO.java  |  20 +++-
 .../java/com/cloud/usage/UsageVMInstanceVO.java    |  17 +++-
 .../java/com/cloud/usage/UsageVMSnapshotVO.java    |  17 +++-
 .../main/java/com/cloud/usage/UsageVPNUserVO.java  |  17 +++-
 .../main/java/com/cloud/usage/UsageVolumeVO.java   |  18 +++-
 .../com/cloud/usage/dao/UsageIPAddressDaoImpl.java |   6 +-
 .../usage/dao/UsageLoadBalancerPolicyDaoImpl.java  |  12 +--
 .../usage/dao/UsagePortForwardingRuleDaoImpl.java  |  12 +--
 .../com/cloud/usage/dao/UsageStorageDaoImpl.java   |  16 +--
 .../cloud/usage/dao/UsageVMSnapshotDaoImpl.java    |  12 +--
 .../usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java |   6 +-
 .../com/cloud/usage/dao/UsageVolumeDaoImpl.java    |  12 +--
 .../main/java/com/cloud/user/UserStatsLogVO.java   |  15 ++-
 .../resources/META-INF/db/schema-41600to41610.sql  | 107 +++++++++++++++++++++
 .../cloud/usage/dao/UsageStorageDaoImplTest.java   |   4 +-
 .../cloud/usage/parser/IPAddressUsageParser.java   |   4 +-
 .../usage/parser/LoadBalancerUsageParser.java      |   4 +-
 .../usage/parser/PortForwardingUsageParser.java    |   4 +-
 .../com/cloud/usage/parser/StorageUsageParser.java |   4 +-
 .../usage/parser/VMSnapshotOnPrimaryParser.java    |   2 +-
 .../cloud/usage/parser/VMSnapshotUsageParser.java  |   4 +-
 .../com/cloud/usage/parser/VolumeUsageParser.java  |   4 +-
 28 files changed, 342 insertions(+), 80 deletions(-)

diff --git a/engine/schema/src/main/java/com/cloud/usage/UsageIPAddressVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageIPAddressVO.java
index 5e4dc65..330ab655 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageIPAddressVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageIPAddressVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -29,6 +32,12 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Entity
 @Table(name = "usage_ip_address")
 public class UsageIPAddressVO implements InternalIdentity {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
     @Column(name = "account_id")
     private long accountId;
 
@@ -38,8 +47,8 @@ public class UsageIPAddressVO implements InternalIdentity {
     @Column(name = "zone_id")
     private long zoneId;
 
-    @Column(name = "id")
-    private long id;
+    @Column(name = "ip_id")
+    private long ipId;
 
     @Column(name = "public_ip_address")
     private String address = null;
@@ -65,7 +74,7 @@ public class UsageIPAddressVO implements InternalIdentity {
     }
 
     public UsageIPAddressVO(long id, long accountId, long domainId, long 
zoneId, String address, boolean isSourceNat, boolean isSystem, Date assigned, 
Date released, boolean isHidden) {
-        this.id = id;
+        this.ipId = id;
         this.accountId = accountId;
         this.domainId = domainId;
         this.zoneId = zoneId;
@@ -128,4 +137,8 @@ public class UsageIPAddressVO implements InternalIdentity {
     public boolean isHidden() {
         return isHidden;
     }
+
+    public long getIpId() {
+        return ipId;
+    }
 }
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/UsageLoadBalancerPolicyVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageLoadBalancerPolicyVO.java
index d85d5ff..e8bbb91 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageLoadBalancerPolicyVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageLoadBalancerPolicyVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -30,6 +33,11 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Table(name = "usage_load_balancer_policy")
 public class UsageLoadBalancerPolicyVO implements InternalIdentity {
 
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
     @Column(name = "zone_id")
     private long zoneId;
 
@@ -39,8 +47,8 @@ public class UsageLoadBalancerPolicyVO implements 
InternalIdentity {
     @Column(name = "domain_id")
     private long domainId;
 
-    @Column(name = "id")
-    private long id;
+    @Column(name = "lb_id")
+    private long lbId;
 
     @Column(name = "created")
     @Temporal(value = TemporalType.TIMESTAMP)
@@ -57,7 +65,7 @@ public class UsageLoadBalancerPolicyVO implements 
InternalIdentity {
         this.zoneId = zoneId;
         this.accountId = accountId;
         this.domainId = domainId;
-        this.id = id;
+        this.lbId = id;
         this.created = created;
         this.deleted = deleted;
     }
@@ -90,4 +98,8 @@ public class UsageLoadBalancerPolicyVO implements 
InternalIdentity {
     public void setDeleted(Date deleted) {
         this.deleted = deleted;
     }
+
+    public long getLbId() {
+        return lbId;
+    }
 }
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/UsageNetworkOfferingVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageNetworkOfferingVO.java
index 25218ba..f16f1ea 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageNetworkOfferingVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageNetworkOfferingVO.java
@@ -16,17 +16,27 @@
 // under the License.
 package com.cloud.usage;
 
+import org.apache.cloudstack.api.InternalIdentity;
+
 import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 @Entity
 @Table(name = "usage_network_offering")
-public class UsageNetworkOfferingVO {
+public class UsageNetworkOfferingVO implements InternalIdentity {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
 
     @Column(name = "zone_id")
     private long zoneId;
@@ -116,4 +126,9 @@ public class UsageNetworkOfferingVO {
     public void setNicId(Long nicId) {
         this.nicId = nicId;
     }
+
+    @Override
+    public long getId() {
+        return this.id;
+    }
 }
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/UsagePortForwardingRuleVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsagePortForwardingRuleVO.java
index b6eb056..2ee10c7 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsagePortForwardingRuleVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsagePortForwardingRuleVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -30,6 +33,11 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Table(name = "usage_port_forwarding")
 public class UsagePortForwardingRuleVO implements InternalIdentity {
 
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
     @Column(name = "zone_id")
     private long zoneId;
 
@@ -39,8 +47,8 @@ public class UsagePortForwardingRuleVO implements 
InternalIdentity {
     @Column(name = "domain_id")
     private long domainId;
 
-    @Column(name = "id")
-    private long id;
+    @Column(name = "pf_id")
+    private long pfId;
 
     @Column(name = "created")
     @Temporal(value = TemporalType.TIMESTAMP)
@@ -57,7 +65,7 @@ public class UsagePortForwardingRuleVO implements 
InternalIdentity {
         this.zoneId = zoneId;
         this.accountId = accountId;
         this.domainId = domainId;
-        this.id = id;
+        this.pfId = id;
         this.created = created;
         this.deleted = deleted;
     }
@@ -90,4 +98,8 @@ public class UsagePortForwardingRuleVO implements 
InternalIdentity {
     public void setDeleted(Date deleted) {
         this.deleted = deleted;
     }
+
+    public long getPfId() {
+        return pfId;
+    }
 }
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/UsageSecurityGroupVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageSecurityGroupVO.java
index e2da16d..7ca9c71 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageSecurityGroupVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageSecurityGroupVO.java
@@ -16,17 +16,27 @@
 // under the License.
 package com.cloud.usage;
 
+import org.apache.cloudstack.api.InternalIdentity;
+
 import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 @Entity
 @Table(name = "usage_security_group")
-public class UsageSecurityGroupVO {
+public class UsageSecurityGroupVO implements InternalIdentity {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
 
     @Column(name = "zone_id")
     private long zoneId;
@@ -95,4 +105,9 @@ public class UsageSecurityGroupVO {
     public void setDeleted(Date deleted) {
         this.deleted = deleted;
     }
+
+    @Override
+    public long getId() {
+        return this.id;
+    }
 }
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/UsageSnapshotOnPrimaryVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageSnapshotOnPrimaryVO.java
index 54544a2..db912c3 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageSnapshotOnPrimaryVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageSnapshotOnPrimaryVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -30,9 +33,13 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Table(name = "usage_snapshot_on_primary")
 public class UsageSnapshotOnPrimaryVO implements InternalIdentity {
 
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "id")
-    // volumeId
-    private long id;
+    private Long id;
+
+    @Column(name = "volume_id")
+    private long volumeId;
 
     @Column(name = "zone_id")
     private long zoneId;
@@ -73,7 +80,7 @@ public class UsageSnapshotOnPrimaryVO implements 
InternalIdentity {
     }
 
     public UsageSnapshotOnPrimaryVO(long id, long zoneId, long accountId, long 
domainId, long vmId, String name, int type, long virtualSize, long 
physicalSize, Date created, Date deleted) {
-        this.id = id;
+        this.volumeId = id;
         this.zoneId = zoneId;
         this.accountId = accountId;
         this.domainId = domainId;
@@ -153,4 +160,7 @@ public class UsageSnapshotOnPrimaryVO implements 
InternalIdentity {
                 + ", snapshotType=" + snapshotType + ", physicalSize=" + 
physicalSize + ", created=" + created + ", deleted=" + deleted + ", 
virtualSize=" + virtualSize + ", vmSnapshotId=" + vmSnapshotId + "]";
     }
 
+    public long getVolumeId() {
+        return volumeId;
+    }
 }
diff --git a/engine/schema/src/main/java/com/cloud/usage/UsageStorageVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageStorageVO.java
index 6b1cd4e..08c192d 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageStorageVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageStorageVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -30,6 +33,11 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Table(name = "usage_storage")
 public class UsageStorageVO implements InternalIdentity {
 
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
     @Column(name = "zone_id")
     private long zoneId;
 
@@ -39,8 +47,8 @@ public class UsageStorageVO implements InternalIdentity {
     @Column(name = "domain_id")
     private long domainId;
 
-    @Column(name = "id")
-    private long id;
+    @Column(name = "entity_id")
+    private long entityId;
 
     @Column(name = "storage_type")
     private int storageType;
@@ -69,7 +77,7 @@ public class UsageStorageVO implements InternalIdentity {
         this.zoneId = zoneId;
         this.accountId = accountId;
         this.domainId = domainId;
-        this.id = id;
+        this.entityId = id;
         this.storageType = storageType;
         this.sourceId = sourceId;
         this.size = size;
@@ -81,7 +89,7 @@ public class UsageStorageVO implements InternalIdentity {
         this.zoneId = zoneId;
         this.accountId = accountId;
         this.domainId = domainId;
-        this.id = id;
+        this.entityId = id;
         this.storageType = storageType;
         this.sourceId = sourceId;
         this.size = size;
@@ -134,4 +142,8 @@ public class UsageStorageVO implements InternalIdentity {
     public void setDeleted(Date deleted) {
         this.deleted = deleted;
     }
+
+    public long getEntityId() {
+        return entityId;
+    }
 }
diff --git a/engine/schema/src/main/java/com/cloud/usage/UsageVMInstanceVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageVMInstanceVO.java
index 1e7b424..38c8982 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageVMInstanceVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageVMInstanceVO.java
@@ -16,17 +16,27 @@
 // under the License.
 package com.cloud.usage;
 
+import org.apache.cloudstack.api.InternalIdentity;
+
 import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 @Entity
 @Table(name = "usage_vm_instance")
-public class UsageVMInstanceVO {
+public class UsageVMInstanceVO implements InternalIdentity {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
 
     @Column(name = "usage_type")
     private int usageType;
@@ -178,4 +188,9 @@ public class UsageVMInstanceVO {
     public void setCpuSpeed(Long cpuSpeed) {
         this.cpuSpeed = cpuSpeed;
     }
+
+    @Override
+    public long getId() {
+        return this.id;
+    }
 }
diff --git a/engine/schema/src/main/java/com/cloud/usage/UsageVMSnapshotVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageVMSnapshotVO.java
index 0fce5e8..3bb354f 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageVMSnapshotVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageVMSnapshotVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -30,9 +33,13 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Table(name = "usage_vmsnapshot")
 public class UsageVMSnapshotVO implements InternalIdentity {
 
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "id")
-    // volumeId
-    private long id;
+    private Long id;
+
+    @Column(name = "volume_id")
+    private long volumeId;
 
     @Column(name = "zone_id")
     private long zoneId;
@@ -71,7 +78,7 @@ public class UsageVMSnapshotVO implements InternalIdentity {
         this.accountId = accountId;
         this.domainId = domainId;
         this.diskOfferingId = diskOfferingId;
-        this.id = id;
+        this.volumeId = id;
         this.size = size;
         this.created = created;
         this.vmId = vmId;
@@ -131,6 +138,10 @@ public class UsageVMSnapshotVO implements InternalIdentity 
{
         this.vmSnapshotId = vmSnapshotId;
     }
 
+    public long getVolumeId() {
+        return volumeId;
+    }
+
     @Override
     public String toString() {
         return "UsageVMSnapshotVO [id=" + id + ", zoneId=" + zoneId + ", 
accountId=" + accountId + ", domainId=" + domainId + ", vmId=" + vmId + ", 
diskOfferingId="
diff --git a/engine/schema/src/main/java/com/cloud/usage/UsageVPNUserVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageVPNUserVO.java
index eecffbe..9bd8e2f 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageVPNUserVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageVPNUserVO.java
@@ -16,17 +16,27 @@
 // under the License.
 package com.cloud.usage;
 
+import org.apache.cloudstack.api.InternalIdentity;
+
 import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 @Entity
 @Table(name = "usage_vpn_user")
-public class UsageVPNUserVO {
+public class UsageVPNUserVO implements InternalIdentity {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
 
     @Column(name = "zone_id")
     private long zoneId;
@@ -103,4 +113,9 @@ public class UsageVPNUserVO {
     public void setUsername(String username) {
         this.username = username;
     }
+
+    @Override
+    public long getId() {
+        return this.id;
+    }
 }
diff --git a/engine/schema/src/main/java/com/cloud/usage/UsageVolumeVO.java 
b/engine/schema/src/main/java/com/cloud/usage/UsageVolumeVO.java
index 4b57aa0..96abd2d 100644
--- a/engine/schema/src/main/java/com/cloud/usage/UsageVolumeVO.java
+++ b/engine/schema/src/main/java/com/cloud/usage/UsageVolumeVO.java
@@ -20,6 +20,9 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -30,6 +33,11 @@ import org.apache.cloudstack.api.InternalIdentity;
 @Table(name = "usage_volume")
 public class UsageVolumeVO implements InternalIdentity {
 
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
     @Column(name = "zone_id")
     private long zoneId;
 
@@ -39,8 +47,8 @@ public class UsageVolumeVO implements InternalIdentity {
     @Column(name = "domain_id")
     private long domainId;
 
-    @Column(name = "id")
-    private long id;
+    @Column(name = "volume_id")
+    private long volumeId;
 
     @Column(name = "disk_offering_id")
     private Long diskOfferingId;
@@ -63,7 +71,7 @@ public class UsageVolumeVO implements InternalIdentity {
     }
 
     public UsageVolumeVO(long id, long zoneId, long accountId, long domainId, 
Long diskOfferingId, Long templateId, long size, Date created, Date deleted) {
-        this.id = id;
+        this.volumeId = id;
         this.zoneId = zoneId;
         this.accountId = accountId;
         this.domainId = domainId;
@@ -114,4 +122,8 @@ public class UsageVolumeVO implements InternalIdentity {
     public void setDeleted(Date deleted) {
         this.deleted = deleted;
     }
+
+    public long getVolumeId() {
+        return volumeId;
+    }
 }
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageIPAddressDaoImpl.java 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageIPAddressDaoImpl.java
index 41f573f..2dcb181 100644
--- a/engine/schema/src/main/java/com/cloud/usage/dao/UsageIPAddressDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/usage/dao/UsageIPAddressDaoImpl.java
@@ -40,17 +40,17 @@ public class UsageIPAddressDaoImpl extends 
GenericDaoBase<UsageIPAddressVO, Long
 
     protected static final String UPDATE_RELEASED = "UPDATE usage_ip_address 
SET released = ? WHERE account_id = ? AND public_ip_address = ? and released IS 
NULL";
     protected static final String GET_USAGE_RECORDS_BY_ACCOUNT =
-        "SELECT id, account_id, domain_id, zone_id, public_ip_address, 
is_source_nat, is_system, assigned, released, is_hidden "
+        "SELECT ip_id, account_id, domain_id, zone_id, public_ip_address, 
is_source_nat, is_system, assigned, released, is_hidden "
             + "FROM usage_ip_address "
             + "WHERE account_id = ? AND ((released IS NULL AND assigned <= ?) 
OR (assigned BETWEEN ? AND ?) OR "
             + "      (released BETWEEN ? AND ?) OR ((assigned <= ?) AND 
(released >= ?)))";
     protected static final String GET_USAGE_RECORDS_BY_DOMAIN =
-        "SELECT id, account_id, domain_id, zone_id, public_ip_address, 
is_source_nat, is_system, assigned, released, is_hidden "
+        "SELECT ip_id, account_id, domain_id, zone_id, public_ip_address, 
is_source_nat, is_system, assigned, released, is_hidden "
             + "FROM usage_ip_address "
             + "WHERE domain_id = ? AND ((released IS NULL AND assigned <= ?) 
OR (assigned BETWEEN ? AND ?) OR "
             + "      (released BETWEEN ? AND ?) OR ((assigned <= ?) AND 
(released >= ?)))";
     protected static final String GET_ALL_USAGE_RECORDS =
-        "SELECT id, account_id, domain_id, zone_id, public_ip_address, 
is_source_nat, is_system, assigned, released, is_hidden "
+        "SELECT ip_id, account_id, domain_id, zone_id, public_ip_address, 
is_source_nat, is_system, assigned, released, is_hidden "
             + "FROM usage_ip_address "
             + "WHERE (released IS NULL AND assigned <= ?) OR (assigned BETWEEN 
? AND ?) OR "
             + "      (released BETWEEN ? AND ?) OR ((assigned <= ?) AND 
(released >= ?))";
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageLoadBalancerPolicyDaoImpl.java
 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageLoadBalancerPolicyDaoImpl.java
index 969f0c3..7260cae 100644
--- 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageLoadBalancerPolicyDaoImpl.java
+++ 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageLoadBalancerPolicyDaoImpl.java
@@ -38,13 +38,13 @@ import com.cloud.utils.db.TransactionLegacy;
 public class UsageLoadBalancerPolicyDaoImpl extends 
GenericDaoBase<UsageLoadBalancerPolicyVO, Long> implements 
UsageLoadBalancerPolicyDao {
     public static final Logger s_logger = 
Logger.getLogger(UsageLoadBalancerPolicyDaoImpl.class.getName());
 
-    protected static final String REMOVE_BY_USERID_LBID = "DELETE FROM 
usage_load_balancer_policy WHERE account_id = ? AND id = ?";
-    protected static final String UPDATE_DELETED = "UPDATE 
usage_load_balancer_policy SET deleted = ? WHERE account_id = ? AND id = ? and 
deleted IS NULL";
-    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_load_balancer_policy "
+    protected static final String REMOVE_BY_USERID_LBID = "DELETE FROM 
usage_load_balancer_policy WHERE account_id = ? AND lb_id = ?";
+    protected static final String UPDATE_DELETED = "UPDATE 
usage_load_balancer_policy SET deleted = ? WHERE account_id = ? AND lb_id = ? 
and deleted IS NULL";
+    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT 
lb_id, zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_load_balancer_policy "
         + "WHERE account_id = ? AND ((deleted IS NULL) OR (created BETWEEN ? 
AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted 
>= ?)))";
-    protected static final String GET_USAGE_RECORDS_BY_DOMAIN = "SELECT id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_load_balancer_policy "
+    protected static final String GET_USAGE_RECORDS_BY_DOMAIN = "SELECT lb_id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_load_balancer_policy "
         + "WHERE domain_id = ? AND ((deleted IS NULL) OR (created BETWEEN ? 
AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted 
>= ?)))";
-    protected static final String GET_ALL_USAGE_RECORDS = "SELECT id, zone_id, 
account_id, domain_id, created, deleted " + "FROM usage_load_balancer_policy "
+    protected static final String GET_ALL_USAGE_RECORDS = "SELECT lb_id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_load_balancer_policy "
         + "WHERE (deleted IS NULL) OR (created BETWEEN ? AND ?) OR " + "      
(deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted >= ?))";
 
     public UsageLoadBalancerPolicyDaoImpl() {
@@ -80,7 +80,7 @@ public class UsageLoadBalancerPolicyDaoImpl extends 
GenericDaoBase<UsageLoadBala
                     if (pstmt != null) {
                         pstmt.setString(1, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted()));
                         pstmt.setLong(2, usage.getAccountId());
-                        pstmt.setLong(3, usage.getId());
+                        pstmt.setLong(3, usage.getLbId());
                         pstmt.executeUpdate();
                     }
                 }catch (SQLException e) {
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsagePortForwardingRuleDaoImpl.java
 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsagePortForwardingRuleDaoImpl.java
index 76d78ce..9921642 100644
--- 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsagePortForwardingRuleDaoImpl.java
+++ 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsagePortForwardingRuleDaoImpl.java
@@ -38,13 +38,13 @@ import com.cloud.utils.db.TransactionLegacy;
 public class UsagePortForwardingRuleDaoImpl extends 
GenericDaoBase<UsagePortForwardingRuleVO, Long> implements 
UsagePortForwardingRuleDao {
     public static final Logger s_logger = 
Logger.getLogger(UsagePortForwardingRuleDaoImpl.class.getName());
 
-    protected static final String REMOVE_BY_USERID_PFID = "DELETE FROM 
usage_port_forwarding WHERE account_id = ? AND id = ?";
-    protected static final String UPDATE_DELETED = "UPDATE 
usage_port_forwarding SET deleted = ? WHERE account_id = ? AND id = ? and 
deleted IS NULL";
-    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_port_forwarding "
+    protected static final String REMOVE_BY_USERID_PFID = "DELETE FROM 
usage_port_forwarding WHERE account_id = ? AND pf_id = ?";
+    protected static final String UPDATE_DELETED = "UPDATE 
usage_port_forwarding SET deleted = ? WHERE account_id = ? AND pf_id = ? and 
deleted IS NULL";
+    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT 
pf_id, zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_port_forwarding "
         + "WHERE account_id = ? AND ((deleted IS NULL) OR (created BETWEEN ? 
AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted 
>= ?)))";
-    protected static final String GET_USAGE_RECORDS_BY_DOMAIN = "SELECT id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_port_forwarding "
+    protected static final String GET_USAGE_RECORDS_BY_DOMAIN = "SELECT pf_id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_port_forwarding "
         + "WHERE domain_id = ? AND ((deleted IS NULL) OR (created BETWEEN ? 
AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted 
>= ?)))";
-    protected static final String GET_ALL_USAGE_RECORDS = "SELECT id, zone_id, 
account_id, domain_id, created, deleted " + "FROM usage_port_forwarding "
+    protected static final String GET_ALL_USAGE_RECORDS = "SELECT pf_id, 
zone_id, account_id, domain_id, created, deleted " + "FROM 
usage_port_forwarding "
         + "WHERE (deleted IS NULL) OR (created BETWEEN ? AND ?) OR " + "      
(deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted >= ?))";
 
     public UsagePortForwardingRuleDaoImpl() {
@@ -80,7 +80,7 @@ public class UsagePortForwardingRuleDaoImpl extends 
GenericDaoBase<UsagePortForw
                     if (pstmt != null) {
                         pstmt.setString(1, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted()));
                         pstmt.setLong(2, usage.getAccountId());
-                        pstmt.setLong(3, usage.getId());
+                        pstmt.setLong(3, usage.getPfId());
                         pstmt.executeUpdate();
                     }
                 }catch (SQLException e) {
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageStorageDaoImpl.java 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageStorageDaoImpl.java
index ad8ce59..680429b 100644
--- a/engine/schema/src/main/java/com/cloud/usage/dao/UsageStorageDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/usage/dao/UsageStorageDaoImpl.java
@@ -40,15 +40,15 @@ import com.cloud.utils.db.TransactionLegacy;
 public class UsageStorageDaoImpl extends GenericDaoBase<UsageStorageVO, Long> 
implements UsageStorageDao {
     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 zone_id = 
? and deleted IS NULL";
+    protected static final String REMOVE_BY_USERID_STORAGEID = "DELETE FROM 
usage_storage WHERE account_id = ? AND entity_id = ? AND storage_type = ?";
+    protected static final String UPDATE_DELETED = "UPDATE usage_storage SET 
deleted = ? WHERE account_id = ? AND entity_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 "
+        "SELECT entity_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 >= ?)))";
     protected static final String GET_USAGE_RECORDS_BY_DOMAIN =
-        "SELECT id, zone_id, account_id, domain_id, storage_type, source_id, 
size, created, deleted, virtual_size " + "FROM usage_storage "
+        "SELECT entity_id, zone_id, account_id, domain_id, storage_type, 
source_id, size, created, deleted, virtual_size " + "FROM usage_storage "
             + "WHERE domain_id = ? AND ((deleted IS NULL) OR (created BETWEEN 
? AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND 
(deleted >= ?)))";
-    protected static final String GET_ALL_USAGE_RECORDS = "SELECT id, zone_id, 
account_id, domain_id, storage_type, source_id, size, created, deleted, 
virtual_size "
+    protected static final String GET_ALL_USAGE_RECORDS = "SELECT entity_id, 
zone_id, account_id, domain_id, storage_type, source_id, size, created, 
deleted, virtual_size "
         + "FROM usage_storage " + "WHERE (deleted IS NULL) OR (created BETWEEN 
? AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND 
(deleted >= ?))";
 
     private final SearchBuilder<UsageStorageVO> IdSearch;
@@ -57,13 +57,13 @@ public class UsageStorageDaoImpl extends 
GenericDaoBase<UsageStorageVO, Long> im
     public UsageStorageDaoImpl() {
         IdSearch = createSearchBuilder();
         IdSearch.and("accountId", IdSearch.entity().getAccountId(), 
SearchCriteria.Op.EQ);
-        IdSearch.and("id", IdSearch.entity().getId(), SearchCriteria.Op.EQ);
+        IdSearch.and("id", IdSearch.entity().getEntityId(), 
SearchCriteria.Op.EQ);
         IdSearch.and("type", IdSearch.entity().getStorageType(), 
SearchCriteria.Op.EQ);
         IdSearch.done();
 
         IdZoneSearch = createSearchBuilder();
         IdZoneSearch.and("accountId", IdZoneSearch.entity().getAccountId(), 
SearchCriteria.Op.EQ);
-        IdZoneSearch.and("id", IdZoneSearch.entity().getId(), 
SearchCriteria.Op.EQ);
+        IdZoneSearch.and("id", IdZoneSearch.entity().getEntityId(), 
SearchCriteria.Op.EQ);
         IdZoneSearch.and("type", IdZoneSearch.entity().getStorageType(), 
SearchCriteria.Op.EQ);
         IdZoneSearch.and("dcId", IdZoneSearch.entity().getZoneId(), 
SearchCriteria.Op.EQ);
         IdZoneSearch.and("deleted", IdZoneSearch.entity().getDeleted(), 
SearchCriteria.Op.NULL);
@@ -124,7 +124,7 @@ public class UsageStorageDaoImpl extends 
GenericDaoBase<UsageStorageVO, Long> im
                     if (pstmt != null) {
                         pstmt.setString(1, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted()));
                         pstmt.setLong(2, usage.getAccountId());
-                        pstmt.setLong(3, usage.getId());
+                        pstmt.setLong(3, usage.getEntityId());
                         pstmt.setInt(4, usage.getStorageType());
                         pstmt.setLong(5, usage.getZoneId());
                         pstmt.executeUpdate();
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java
index 337d05e..7e604c4 100644
--- 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java
+++ 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java
@@ -37,13 +37,13 @@ import com.cloud.utils.db.TransactionLegacy;
 @Component
 public class UsageVMSnapshotDaoImpl extends GenericDaoBase<UsageVMSnapshotVO, 
Long> implements UsageVMSnapshotDao {
     public static final Logger s_logger = 
Logger.getLogger(UsageVMSnapshotDaoImpl.class.getName());
-    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT id, 
zone_id, account_id, domain_id, vm_id, disk_offering_id, size, created, 
processed, vm_snapshot_id "
+    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT 
volume_id, zone_id, account_id, domain_id, vm_id, disk_offering_id, size, 
created, processed, vm_snapshot_id "
         + " FROM usage_vmsnapshot" + " WHERE account_id = ? " + " AND ( 
(created BETWEEN ? AND ?) OR "
         + "      (created < ? AND processed is NULL) ) ORDER BY created asc";
-    protected static final String UPDATE_DELETED = "UPDATE usage_vmsnapshot 
SET processed = ? WHERE account_id = ? AND id = ? and vm_id = ?  and created = 
?";
+    protected static final String UPDATE_DELETED = "UPDATE usage_vmsnapshot 
SET processed = ? WHERE account_id = ? AND volume_id = ? and vm_id = ?  and 
created = ?";
 
-    protected static final String PREVIOUS_QUERY = "SELECT id, zone_id, 
account_id, domain_id, vm_id, disk_offering_id,size, created, processed, 
vm_snapshot_id "
-        + "FROM usage_vmsnapshot " + "WHERE account_id = ? AND id = ? AND 
vm_id = ? AND created < ? AND processed IS NULL " + "ORDER BY created desc 
limit 1";
+    protected static final String PREVIOUS_QUERY = "SELECT volume_id, zone_id, 
account_id, domain_id, vm_id, disk_offering_id,size, created, processed, 
vm_snapshot_id "
+        + "FROM usage_vmsnapshot " + "WHERE account_id = ? AND volume_id = ? 
AND vm_id = ? AND created < ? AND processed IS NULL " + "ORDER BY created desc 
limit 1";
 
     @Override
     public void update(UsageVMSnapshotVO usage) {
@@ -54,7 +54,7 @@ public class UsageVMSnapshotDaoImpl extends 
GenericDaoBase<UsageVMSnapshotVO, Lo
             pstmt = txn.prepareAutoCloseStatement(UPDATE_DELETED);
             pstmt.setString(1, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), 
usage.getProcessed()));
             pstmt.setLong(2, usage.getAccountId());
-            pstmt.setLong(3, usage.getId());
+            pstmt.setLong(3, usage.getVolumeId());
             pstmt.setLong(4, usage.getVmId());
             pstmt.setString(5, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getCreated()));
             pstmt.executeUpdate();
@@ -134,7 +134,7 @@ public class UsageVMSnapshotDaoImpl extends 
GenericDaoBase<UsageVMSnapshotVO, Lo
             int i = 1;
             pstmt = txn.prepareAutoCloseStatement(sql);
             pstmt.setLong(i++, rec.getAccountId());
-            pstmt.setLong(i++, rec.getId());
+            pstmt.setLong(i++, rec.getVolumeId());
             pstmt.setLong(i++, rec.getVmId());
             pstmt.setString(i++, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), rec.getCreated()));
 
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
index 5a5d6f9..c8ee3a8 100644
--- 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
+++ 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
@@ -37,10 +37,10 @@ import com.cloud.utils.db.TransactionLegacy;
 @Component
 public class UsageVMSnapshotOnPrimaryDaoImpl extends 
GenericDaoBase<UsageSnapshotOnPrimaryVO, Long> implements 
UsageVMSnapshotOnPrimaryDao {
     public static final Logger s_logger = 
Logger.getLogger(UsageVMSnapshotOnPrimaryDaoImpl.class.getName());
-    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT id, 
zone_id, account_id, domain_id, vm_id, name, type, physicalsize, virtualsize, 
created, deleted, vm_snapshot_id "
+    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT 
volume_id, zone_id, account_id, domain_id, vm_id, name, type, physicalsize, 
virtualsize, created, deleted, vm_snapshot_id "
         + " FROM usage_snapshot_on_primary" + " WHERE account_id = ? " + " AND 
( (created < ? AND deleted is NULL)"
         + "     OR ( deleted BETWEEN ? AND ?)) ORDER BY created asc";
-    protected static final String UPDATE_DELETED = "UPDATE 
usage_snapshot_on_primary SET deleted = ? WHERE account_id = ? AND id = ? and 
vm_id = ?  and created = ?";
+    protected static final String UPDATE_DELETED = "UPDATE 
usage_snapshot_on_primary SET deleted = ? WHERE account_id = ? AND volume_id = 
? and vm_id = ?  and created = ?";
 
     @Override
     public void updateDeleted(UsageSnapshotOnPrimaryVO usage) {
@@ -51,7 +51,7 @@ public class UsageVMSnapshotOnPrimaryDaoImpl extends 
GenericDaoBase<UsageSnapsho
             pstmt = txn.prepareAutoCloseStatement(UPDATE_DELETED);
             pstmt.setString(1, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted()));
             pstmt.setLong(2, usage.getAccountId());
-            pstmt.setLong(3, usage.getId());
+            pstmt.setLong(3, usage.getVolumeId());
             pstmt.setLong(4, usage.getVmId());
             pstmt.setString(5, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getCreated()));
             pstmt.executeUpdate();
diff --git 
a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVolumeDaoImpl.java 
b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVolumeDaoImpl.java
index 9b983a5..0c35c11 100644
--- a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVolumeDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVolumeDaoImpl.java
@@ -38,15 +38,15 @@ import com.cloud.utils.db.TransactionLegacy;
 public class UsageVolumeDaoImpl extends GenericDaoBase<UsageVolumeVO, Long> 
implements UsageVolumeDao {
     public static final Logger s_logger = 
Logger.getLogger(UsageVolumeDaoImpl.class.getName());
 
-    protected static final String REMOVE_BY_USERID_VOLID = "DELETE FROM 
usage_volume WHERE account_id = ? AND id = ?";
-    protected static final String UPDATE_DELETED = "UPDATE usage_volume SET 
deleted = ? WHERE account_id = ? AND id = ? and deleted IS NULL";
-    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT id, 
zone_id, account_id, domain_id, disk_offering_id, template_id, size, created, 
deleted "
+    protected static final String REMOVE_BY_USERID_VOLID = "DELETE FROM 
usage_volume WHERE account_id = ? AND volume_id = ?";
+    protected static final String UPDATE_DELETED = "UPDATE usage_volume SET 
deleted = ? WHERE account_id = ? AND volume_id = ? and deleted IS NULL";
+    protected static final String GET_USAGE_RECORDS_BY_ACCOUNT = "SELECT 
volume_id, zone_id, account_id, domain_id, disk_offering_id, template_id, size, 
created, deleted "
         + "FROM usage_volume " + "WHERE account_id = ? AND ((deleted IS NULL) 
OR (created BETWEEN ? AND ?) OR "
         + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted >= 
?)))";
-    protected static final String GET_USAGE_RECORDS_BY_DOMAIN = "SELECT id, 
zone_id, account_id, domain_id, disk_offering_id, template_id, size, created, 
deleted "
+    protected static final String GET_USAGE_RECORDS_BY_DOMAIN = "SELECT 
volume_id, zone_id, account_id, domain_id, disk_offering_id, template_id, size, 
created, deleted "
         + "FROM usage_volume " + "WHERE domain_id = ? AND ((deleted IS NULL) 
OR (created BETWEEN ? AND ?) OR "
         + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND (deleted >= 
?)))";
-    protected static final String GET_ALL_USAGE_RECORDS = "SELECT id, zone_id, 
account_id, domain_id, disk_offering_id, template_id, size, created, deleted "
+    protected static final String GET_ALL_USAGE_RECORDS = "SELECT volume_id, 
zone_id, account_id, domain_id, disk_offering_id, template_id, size, created, 
deleted "
         + "FROM usage_volume " + "WHERE (deleted IS NULL) OR (created BETWEEN 
? AND ?) OR " + "      (deleted BETWEEN ? AND ?) OR ((created <= ?) AND 
(deleted >= ?))";
 
     public UsageVolumeDaoImpl() {
@@ -85,7 +85,7 @@ public class UsageVolumeDaoImpl extends 
GenericDaoBase<UsageVolumeVO, Long> impl
                 pstmt = txn.prepareAutoCloseStatement(UPDATE_DELETED);
                 pstmt.setString(1, 
DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usage.getDeleted()));
                 pstmt.setLong(2, usage.getAccountId());
-                pstmt.setLong(3, usage.getId());
+                pstmt.setLong(3, usage.getVolumeId());
                 pstmt.executeUpdate();
             }
             txn.commit();
diff --git a/engine/schema/src/main/java/com/cloud/user/UserStatsLogVO.java 
b/engine/schema/src/main/java/com/cloud/user/UserStatsLogVO.java
index 6cb7e58..c96f3d7 100644
--- a/engine/schema/src/main/java/com/cloud/user/UserStatsLogVO.java
+++ b/engine/schema/src/main/java/com/cloud/user/UserStatsLogVO.java
@@ -16,10 +16,14 @@
 // under the License.
 package com.cloud.user;
 
+import org.apache.cloudstack.api.InternalIdentity;
+
 import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
@@ -27,8 +31,13 @@ import javax.persistence.TemporalType;
 
 @Entity
 @Table(name = "op_user_stats_log")
-public class UserStatsLogVO {
+public class UserStatsLogVO implements InternalIdentity {
+
     @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
     @Column(name = "user_stats_id")
     private long userStatsId;
 
@@ -129,4 +138,8 @@ public class UserStatsLogVO {
         this.updatedTime = updatedTime;
     }
 
+    @Override
+    public long getId() {
+        return this.id;
+    }
 }
diff --git 
a/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql 
b/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql
index 04bdbca..bf9cbf8 100644
--- a/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql
+++ b/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql
@@ -20,3 +20,110 @@
 --;
 
 ALTER TABLE `cloud`.`vm_work_job` ADD COLUMN `secondary_object` char(100) 
COMMENT 'any additional item that must be checked during queueing' AFTER 
`vm_instance_id`;
+
+-- Stored procedures to handle cloud and cloud_schema changes
+
+-- Idempotent ADD COLUMN
+DROP PROCEDURE IF EXISTS `cloud`.`IDEMPOTENT_ADD_COLUMN`;
+CREATE PROCEDURE `cloud`.`IDEMPOTENT_ADD_COLUMN` (
+    IN in_table_name VARCHAR(200)
+, IN in_column_name VARCHAR(200)
+, IN in_column_definition VARCHAR(1000)
+)
+BEGIN
+    DECLARE CONTINUE HANDLER FOR 1060 BEGIN END; SET @ddl = CONCAT('ALTER 
TABLE ', in_table_name); SET @ddl = CONCAT(@ddl, ' ', 'ADD COLUMN') ; SET @ddl 
= CONCAT(@ddl, ' ', in_column_name); SET @ddl = CONCAT(@ddl, ' ', 
in_column_definition); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE 
stmt; END;
+
+-- Idempotent ADD COLUMN
+DROP PROCEDURE IF EXISTS `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`;
+CREATE PROCEDURE `cloud_usage`.`IDEMPOTENT_ADD_COLUMN` (
+    IN in_table_name VARCHAR(200)
+, IN in_column_name VARCHAR(200)
+, IN in_column_definition VARCHAR(1000)
+)
+BEGIN
+    DECLARE CONTINUE HANDLER FOR 1060 BEGIN END; SET @ddl = CONCAT('ALTER 
TABLE ', in_table_name); SET @ddl = CONCAT(@ddl, ' ', 'ADD COLUMN') ; SET @ddl 
= CONCAT(@ddl, ' ', in_column_name); SET @ddl = CONCAT(@ddl, ' ', 
in_column_definition); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE 
stmt; END;
+
+-- Idempotent DROP INDEX
+DROP PROCEDURE IF EXISTS `cloud_usage`.`IDEMPOTENT_DROP_INDEX`;
+CREATE PROCEDURE `cloud_usage`.`IDEMPOTENT_DROP_INDEX` (
+    IN in_index_name VARCHAR(200)
+, IN in_table_name VARCHAR(200)
+)
+BEGIN
+    DECLARE CONTINUE HANDLER FOR 1091 BEGIN END; SET @ddl = CONCAT('DROP INDEX 
', in_index_name); SET @ddl = CONCAT(@ddl, ' ', ' ON ') ; SET @ddl = 
CONCAT(@ddl, ' ', in_table_name); PREPARE stmt FROM @ddl; EXECUTE stmt; 
DEALLOCATE PREPARE stmt; END;
+
+-- Idempotent ADD UNIQUE INDEX
+DROP PROCEDURE IF EXISTS `cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX`;
+CREATE PROCEDURE `cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX` (
+    IN in_table_name VARCHAR(200)
+, IN in_index_name VARCHAR(200)
+, IN in_index_definition VARCHAR(1000)
+)
+BEGIN
+    DECLARE CONTINUE HANDLER FOR 1061 BEGIN END; SET @ddl = CONCAT('ALTER 
TABLE ', in_table_name); SET @ddl = CONCAT(@ddl, ' ', 'ADD UNIQUE INDEX ', 
in_index_name); SET @ddl = CONCAT(@ddl, ' ', in_index_definition); PREPARE stmt 
FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; END;
+
+-- Idempotent CHANGE COLUMN
+DROP PROCEDURE IF EXISTS `cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`;
+CREATE PROCEDURE `cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN` (
+    IN in_table_name VARCHAR(200)
+, IN in_old_column_name VARCHAR(200)
+, IN in_new_column_name VARCHAR(200)
+, IN in_column_definition VARCHAR(1000)
+)
+BEGIN
+    DECLARE CONTINUE HANDLER FOR 1060 BEGIN END; SET @ddl = CONCAT('ALTER 
TABLE ', in_table_name); SET @ddl = CONCAT(@ddl, ' ', ' CHANGE COLUMN') ; SET 
@ddl = CONCAT(@ddl, ' ', in_old_column_name); SET @ddl = CONCAT(@ddl, ' ', 
in_new_column_name); SET @ddl = CONCAT(@ddl, ' ', in_column_definition); 
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; END;
+
+-- Invoke stored procedures to add primary keys on missing tables
+
+-- Add PK to cloud.op_user_stats_log
+CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.op_user_stats_log', 'id', 
'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+
+-- Add PK to cloud_usage.usage_ip_address
+CALL 
`cloud_usage`.`IDEMPOTENT_DROP_INDEX`('id','cloud_usage.usage_ip_address');
+CALL `cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_ip_address', 
'id', 'ip_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_ip_address', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX`('cloud_usage.usage_ip_address', 
'id', '(ip_id ASC, assigned ASC)');
+
+-- Add PK to usage_load_balancer_policy
+CALL 
`cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_load_balancer_policy',
 'id', 'lb_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_load_balancer_policy', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+
+-- Add PK to cloud_usage.usage_network_offering
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_network_offering', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+
+-- Add PK to cloud_usage.usage_port_forwarding
+CALL 
`cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_port_forwarding', 
'id', 'pf_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_port_forwarding', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+
+-- Add PK to cloud_usage.usage_security_group
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_security_group', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+
+-- cloud_usage.usage_snapshot_on_primary
+CALL 
`cloud_usage`.`IDEMPOTENT_DROP_INDEX`('i_usage_snapshot_on_primary','cloud_usage.usage_snapshot_on_primary');
+CALL 
`cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_snapshot_on_primary',
 'id', 'volume_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_snapshot_on_primary', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX`('cloud_usage.usage_snapshot_on_primary',
 'i_usage_snapshot_on_primary', '(account_id ASC, volume_id ASC, vm_id ASC, 
created ASC)');
+
+-- Add PK to cloud_usage.usage_storage
+CALL `cloud_usage`.`IDEMPOTENT_DROP_INDEX`('id','cloud_usage.usage_storage');
+CALL `cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_storage', 
'id', 'entity_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_storage', 'id', 
'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+CALL `cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX`('cloud_usage.usage_storage', 
'id', '(entity_id ASC, storage_type ASC, zone_id ASC, created ASC)');
+
+-- Add PK to cloud_usage.usage_vm_instance
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_vm_instance', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+
+-- Add PK to cloud_usage.usage_vmsnapshot
+CALL 
`cloud_usage`.`IDEMPOTENT_DROP_INDEX`('i_usage_vmsnapshot','cloud_usage.usage_vmsnapshot');
+CALL `cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_vmsnapshot', 
'id', 'volume_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_vmsnapshot', 
'id', 'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+CALL 
`cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX`('cloud_usage.usage_vmsnapshot', 
'i_usage_vmsnapshot', '(account_id ASC, volume_id ASC, vm_id ASC, created 
ASC)');
+
+-- Add PK to cloud_usage.usage_volume
+CALL `cloud_usage`.`IDEMPOTENT_DROP_INDEX`('id','cloud_usage.usage_volume');
+CALL `cloud_usage`.`IDEMPOTENT_CHANGE_COLUMN`('cloud_usage.usage_volume', 
'id', 'volume_id', 'BIGINT(20) UNSIGNED NOT NULL');
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_volume', 'id', 
'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
+CALL `cloud_usage`.`IDEMPOTENT_ADD_UNIQUE_INDEX`('cloud_usage.usage_volume', 
'id', '(volume_id ASC, created ASC)');
+
+-- Add PK to cloud_usage.usage_vpn_user
+CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.usage_vpn_user', 'id', 
'BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`)');
diff --git 
a/engine/schema/src/test/java/com/cloud/usage/dao/UsageStorageDaoImplTest.java 
b/engine/schema/src/test/java/com/cloud/usage/dao/UsageStorageDaoImplTest.java
index 4c3311f..2a4a58e 100644
--- 
a/engine/schema/src/test/java/com/cloud/usage/dao/UsageStorageDaoImplTest.java
+++ 
b/engine/schema/src/test/java/com/cloud/usage/dao/UsageStorageDaoImplTest.java
@@ -60,7 +60,7 @@ public class UsageStorageDaoImplTest {
 
         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";
+        String UPDATE_DELETED = "UPDATE usage_storage SET deleted = ? WHERE 
account_id = ? AND entity_id = ? AND storage_type = ? AND zone_id = ? and 
deleted IS NULL";
         Date deleted = new Date();
 
         PowerMockito.mockStatic(TransactionLegacy.class);
@@ -68,7 +68,7 @@ public class UsageStorageDaoImplTest {
 
         
when(transactionMock.prepareStatement(contains(UPDATE_DELETED))).thenReturn(preparedStatementMock);
         when(userStorageVOMock.getAccountId()).thenReturn(accountId);
-        when(userStorageVOMock.getId()).thenReturn(id);
+        when(userStorageVOMock.getEntityId()).thenReturn(id);
         when(userStorageVOMock.getStorageType()).thenReturn(storageType);
         when(userStorageVOMock.getZoneId()).thenReturn(zoneId);
         when(userStorageVOMock.getDeleted()).thenReturn(deleted);
diff --git 
a/usage/src/main/java/com/cloud/usage/parser/IPAddressUsageParser.java 
b/usage/src/main/java/com/cloud/usage/parser/IPAddressUsageParser.java
index 4844143..206a59e 100644
--- a/usage/src/main/java/com/cloud/usage/parser/IPAddressUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/IPAddressUsageParser.java
@@ -82,7 +82,7 @@ public class IPAddressUsageParser {
 
         // loop through all the usage IPs, create a usage record for each
         for (UsageIPAddressVO usageIp : usageIPAddress) {
-            long IpId = usageIp.getId();
+            long IpId = usageIp.getIpId();
 
             String key = "" + IpId;
 
@@ -108,7 +108,7 @@ public class IPAddressUsageParser {
 
             long currentDuration = (IpReleaseDeleteDate.getTime() - 
IpAssignDate.getTime()) + 1; // make sure this is an inclusive check for 
milliseconds (i.e. use n - m + 1 to find total number of millis to charge)
 
-            updateIpUsageData(usageMap, key, usageIp.getId(), currentDuration);
+            updateIpUsageData(usageMap, key, usageIp.getIpId(), 
currentDuration);
         }
 
         for (String ipIdKey : usageMap.keySet()) {
diff --git 
a/usage/src/main/java/com/cloud/usage/parser/LoadBalancerUsageParser.java 
b/usage/src/main/java/com/cloud/usage/parser/LoadBalancerUsageParser.java
index 31ff97d..b1e8826 100644
--- a/usage/src/main/java/com/cloud/usage/parser/LoadBalancerUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/LoadBalancerUsageParser.java
@@ -81,7 +81,7 @@ public class LoadBalancerUsageParser {
 
         // loop through all the load balancer policies, create a usage record 
for each
         for (UsageLoadBalancerPolicyVO usageLB : usageLBs) {
-            long lbId = usageLB.getId();
+            long lbId = usageLB.getLbId();
             String key = "" + lbId;
 
             lbMap.put(key, new LBInfo(lbId, usageLB.getZoneId()));
@@ -105,7 +105,7 @@ public class LoadBalancerUsageParser {
 
             long currentDuration = (lbDeleteDate.getTime() - 
lbCreateDate.getTime()) + 1; // make sure this is an inclusive check for 
milliseconds (i.e. use n - m + 1 to find total number of millis to charge)
 
-            updateLBUsageData(usageMap, key, usageLB.getId(), currentDuration);
+            updateLBUsageData(usageMap, key, usageLB.getLbId(), 
currentDuration);
         }
 
         for (String lbIdKey : usageMap.keySet()) {
diff --git 
a/usage/src/main/java/com/cloud/usage/parser/PortForwardingUsageParser.java 
b/usage/src/main/java/com/cloud/usage/parser/PortForwardingUsageParser.java
index 9abf8a7..19d1027 100644
--- a/usage/src/main/java/com/cloud/usage/parser/PortForwardingUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/PortForwardingUsageParser.java
@@ -81,7 +81,7 @@ public class PortForwardingUsageParser {
 
         // loop through all the port forwarding rule, create a usage record 
for each
         for (UsagePortForwardingRuleVO usagePF : usagePFs) {
-            long pfId = usagePF.getId();
+            long pfId = usagePF.getPfId();
             String key = "" + pfId;
 
             pfMap.put(key, new PFInfo(pfId, usagePF.getZoneId()));
@@ -105,7 +105,7 @@ public class PortForwardingUsageParser {
 
             long currentDuration = (pfDeleteDate.getTime() - 
pfCreateDate.getTime()) + 1; // make sure this is an inclusive check for 
milliseconds (i.e. use n - m + 1 to find total number of millis to charge)
 
-            updatePFUsageData(usageMap, key, usagePF.getId(), currentDuration);
+            updatePFUsageData(usageMap, key, usagePF.getPfId(), 
currentDuration);
         }
 
         for (String pfIdKey : usageMap.keySet()) {
diff --git a/usage/src/main/java/com/cloud/usage/parser/StorageUsageParser.java 
b/usage/src/main/java/com/cloud/usage/parser/StorageUsageParser.java
index cd9b03c..1f35fe6 100644
--- a/usage/src/main/java/com/cloud/usage/parser/StorageUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/StorageUsageParser.java
@@ -85,7 +85,7 @@ public class StorageUsageParser {
 
         // loop through all the usage volumes, create a usage record for each
         for (UsageStorageVO usageStorage : usageUsageStorages) {
-            long storageId = usageStorage.getId();
+            long storageId = usageStorage.getEntityId();
             int storage_type = usageStorage.getStorageType();
             long size = usageStorage.getSize();
             Long virtualSize = usageStorage.getVirtualSize();
@@ -116,7 +116,7 @@ public class StorageUsageParser {
 
             long currentDuration = (storageDeleteDate.getTime() - 
storageCreateDate.getTime()) + 1; // make sure this is an inclusive check for 
milliseconds (i.e. use n - m + 1 to find total number of millis to charge)
 
-            updateStorageUsageData(usageMap, key, usageStorage.getId(), 
currentDuration);
+            updateStorageUsageData(usageMap, key, usageStorage.getEntityId(), 
currentDuration);
         }
 
         for (String storageIdKey : usageMap.keySet()) {
diff --git 
a/usage/src/main/java/com/cloud/usage/parser/VMSnapshotOnPrimaryParser.java 
b/usage/src/main/java/com/cloud/usage/parser/VMSnapshotOnPrimaryParser.java
index c6df150..eb66086 100644
--- a/usage/src/main/java/com/cloud/usage/parser/VMSnapshotOnPrimaryParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/VMSnapshotOnPrimaryParser.java
@@ -95,7 +95,7 @@ public class VMSnapshotOnPrimaryParser {
                 s_logger.debug("Remoevd vm snapshot found endDateEffective " + 
endDateEffective + " period end data " + endDate);
             }
             long duration = (endDateEffective.getTime() - created.getTime()) + 
1;
-            createUsageRecord(UsageTypes.VM_SNAPSHOT_ON_PRIMARY, duration, 
created, endDateEffective, account, usageRec.getId(), usageRec.getName(), 
usageRec.getZoneId(),
+            createUsageRecord(UsageTypes.VM_SNAPSHOT_ON_PRIMARY, duration, 
created, endDateEffective, account, usageRec.getVolumeId(), usageRec.getName(), 
usageRec.getZoneId(),
                     usageRec.getVirtualSize(), usageRec.getPhysicalSize(), 
usageRec.getVmSnapshotId());
         }
 
diff --git 
a/usage/src/main/java/com/cloud/usage/parser/VMSnapshotUsageParser.java 
b/usage/src/main/java/com/cloud/usage/parser/VMSnapshotUsageParser.java
index 434bfa6..11de82f 100644
--- a/usage/src/main/java/com/cloud/usage/parser/VMSnapshotUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/VMSnapshotUsageParser.java
@@ -74,7 +74,7 @@ public class VMSnapshotUsageParser {
         Map<String, UsageVMSnapshotVO> unprocessedUsage = new HashMap<String, 
UsageVMSnapshotVO>();
         for (UsageVMSnapshotVO usageRec : usageUsageVMSnapshots) {
             long zoneId = usageRec.getZoneId();
-            Long volId = usageRec.getId();
+            Long volId = usageRec.getVolumeId();
             long vmId = usageRec.getVmId();
             String key = vmId + ":" + volId;
             if (usageRec.getCreated().before(startDate)) {
@@ -114,7 +114,7 @@ public class VMSnapshotUsageParser {
                 created = startDate;
             }
             long duration = (endDate.getTime() - created.getTime()) + 1;
-            createUsageRecord(UsageTypes.VM_SNAPSHOT, duration, created, 
endDate, account, usageRec.getId(), usageRec.getZoneId(), 
usageRec.getDiskOfferingId(),
+            createUsageRecord(UsageTypes.VM_SNAPSHOT, duration, created, 
endDate, account, usageRec.getVolumeId(), usageRec.getZoneId(), 
usageRec.getDiskOfferingId(),
                 usageRec.getVmId(), usageRec.getSize(), 
usageRec.getVmSnapshotId());
         }
 
diff --git a/usage/src/main/java/com/cloud/usage/parser/VolumeUsageParser.java 
b/usage/src/main/java/com/cloud/usage/parser/VolumeUsageParser.java
index 20d43c5..79ed8bc 100644
--- a/usage/src/main/java/com/cloud/usage/parser/VolumeUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/VolumeUsageParser.java
@@ -82,7 +82,7 @@ public class VolumeUsageParser {
 
         // loop through all the usage volumes, create a usage record for each
         for (UsageVolumeVO usageVol : usageUsageVols) {
-            long volId = usageVol.getId();
+            long volId = usageVol.getVolumeId();
             Long doId = usageVol.getDiskOfferingId();
             long zoneId = usageVol.getZoneId();
             Long templateId = usageVol.getTemplateId();
@@ -110,7 +110,7 @@ public class VolumeUsageParser {
 
             long currentDuration = (volDeleteDate.getTime() - 
volCreateDate.getTime()) + 1; // make sure this is an inclusive check for 
milliseconds (i.e. use n - m + 1 to find total number of millis to charge)
 
-            updateVolUsageData(usageMap, key, usageVol.getId(), 
currentDuration);
+            updateVolUsageData(usageMap, key, usageVol.getVolumeId(), 
currentDuration);
         }
 
         for (String volIdKey : usageMap.keySet()) {

Reply via email to