diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade452to453.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade452to453.java index a776f79ae70..3f649cbfbac 100644 --- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade452to453.java +++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade452to453.java @@ -103,10 +103,16 @@ public class Upgrade452to453 implements DbUpgrade { s_logger.warn("cloud.account table already has the role_id column, skipping altering table and migration of accounts"); return; } else { - throw new CloudRuntimeException("Unable to create column quota_calculated in table cloud_usage.cloud_usage", e); + throw new CloudRuntimeException("Unable to create column role_id in table cloud.account", e); } } + try (final PreparedStatement pstmt = conn.prepareStatement("ALTER TABLE `cloud_usage`.`account` ADD COLUMN `role_id` bigint(20) unsigned AFTER `type`")) { + pstmt.executeUpdate(); + } catch (SQLException e) { + throw new CloudRuntimeException("Unable to create column role_id in table cloud_usage.account", e); + } + migrateAccountsToDefaultRoles(conn); final Map apiMap = PropertiesUtil.processConfigFile(new String[] { PropertiesUtil.getDefaultApiCommandsFileName() }); diff --git a/engine/schema/src/com/cloud/usage/dao/UsageDaoImpl.java b/engine/schema/src/com/cloud/usage/dao/UsageDaoImpl.java index a2d38e24532..12033c9277e 100644 --- a/engine/schema/src/com/cloud/usage/dao/UsageDaoImpl.java +++ b/engine/schema/src/com/cloud/usage/dao/UsageDaoImpl.java @@ -47,7 +47,7 @@ public class UsageDaoImpl extends GenericDaoBase implements Usage public static final Logger s_logger = Logger.getLogger(UsageDaoImpl.class.getName()); private static final String DELETE_ALL = "DELETE FROM cloud_usage"; private static final String DELETE_ALL_BY_ACCOUNTID = "DELETE FROM cloud_usage WHERE account_id = ?"; - private static final String INSERT_ACCOUNT = "INSERT INTO cloud_usage.account (id, account_name, type, domain_id, removed, cleanup_needed) VALUES (?,?,?,?,?,?)"; + private static final String INSERT_ACCOUNT = "INSERT INTO cloud_usage.account (id, account_name, type, role_id, domain_id, removed, cleanup_needed) VALUES (?,?,?,?,?,?,?)"; private static final String INSERT_USER_STATS = "INSERT INTO cloud_usage.user_statistics (id, data_center_id, account_id, public_ip_address, device_id, device_type, network_id, net_bytes_received," + " net_bytes_sent, current_bytes_received, current_bytes_sent, agg_bytes_received, agg_bytes_sent) VALUES (?,?,?,?,?,?,?,?,?,?, ?, ?, ?)"; @@ -116,16 +116,17 @@ public class UsageDaoImpl extends GenericDaoBase implements Usage pstmt.setLong(1, acct.getId()); pstmt.setString(2, acct.getAccountName()); pstmt.setShort(3, acct.getType()); - pstmt.setLong(4, acct.getDomainId()); + pstmt.setLong(4, acct.getRoleId()); + pstmt.setLong(5, acct.getDomainId()); Date removed = acct.getRemoved(); if (removed == null) { - pstmt.setString(5, null); + pstmt.setString(6, null); } else { - pstmt.setString(5, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), acct.getRemoved())); + pstmt.setString(6, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), acct.getRemoved())); } - pstmt.setBoolean(6, acct.getNeedsCleanup()); + pstmt.setBoolean(7, acct.getNeedsCleanup()); pstmt.addBatch(); }