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 5e4dc652c34..330ab655781 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 d85d5ff4c12..e8bbb91f52d 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 25218baae56..f16f1ea5ac1 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 b6eb05634f6..2ee10c7261e 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 e2da16d5985..7ca9c715b74 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 54544a27f44..db912c33a8e 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 6b1cd4e41c7..08c192d594a 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 1e7b424050d..38c89826849 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 0fce5e80e4f..3bb354fd7cf 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 eecffbe61d9..9bd8e2f6683 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 4b57aa0aa50..96abd2d69c0 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 41f573fdd49..2dcb181c6c7 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= ?)))"; 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 969f0c383ec..7260caecd1a 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 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 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 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 IdSearch; @@ -57,13 +57,13 @@ public class UsageStorageDaoImpl extends GenericDaoBase 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 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 ef8b3b96485..fdd852d706b 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 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 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 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 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 6cb7e585a48..c96f3d73597 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 04bdbca56b1..bf9cbf861d7 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 4c3311ff0fb..2a4a58e2b68 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 48441438f7b..206a59e3b47 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 31ff97d0899..b1e8826033f 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 9abf8a77ec3..19d102798a5 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 cd9b03c0ff7..1f35fe6eaf9 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 c6df1502a3d..eb66086f25f 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 434bfa607bf..11de82f84e3 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 unprocessedUsage = new HashMap(); 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 20d43c5dd40..79ed8bcbb94 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()) {