Shirly Radco has uploaded a new change for review.

Change subject: history: update user and system cpu usage percent
......................................................................

history: update user and system cpu usage percent

Updated retroactivly user and system cpu usage percent,
according to the number of cpus of the vm.

Change-Id: Ia47326f94b0b1b696d0bcaf13b5f6df0093b9196
Bug-Url: https://bugzilla.redhat.com/1078897
Signed-off-by: Shirly Radco <[email protected]>
(cherry picked from commit 2268ca6c6302a7da801940908547c7062471a7e4)
---
A packaging/dbscripts/upgrade/03_05_0020_update_cpu_usage_percent.sql
1 file changed, 369 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-dwh refs/changes/76/27676/1

diff --git 
a/packaging/dbscripts/upgrade/03_05_0020_update_cpu_usage_percent.sql 
b/packaging/dbscripts/upgrade/03_05_0020_update_cpu_usage_percent.sql
new file mode 100644
index 0000000..d462e7e
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_0020_update_cpu_usage_percent.sql
@@ -0,0 +1,369 @@
+-- Bug-Url: https://bugzilla.redhat.com/1078897
+-- Updated retroactivly user and system cpu usage percent,
+-- according to the number of cpus of the vm.
+
+-- add temp columns for hourly sys and user cpu usage percent
+SELECT fn_db_add_column('statistics_vms_users_usage_hourly', 
'user_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('statistics_vms_users_usage_hourly', 
'max_user_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('statistics_vms_users_usage_hourly', 
'system_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('statistics_vms_users_usage_hourly', 
'max_system_cpu_usage_percent_temp', 'smallint');
+
+--update hourly values of user and sys cpu_usage_percent, avg and max, 
according to number of cpu's
+CREATE OR REPLACE function __temp_hourly_cpu_usage_percent() RETURNS void
+AS $function$
+BEGIN
+    if (
+        EXISTS (
+            SELECT 1
+            FROM information_schema.columns
+            WHERE table_name ilike 'statistics_vms_users_usage_hourly'
+                AND column_name ilike 'user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'statistics_vms_users_usage_hourly'
+                    AND column_name ilike 'max_user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'statistics_vms_users_usage_hourly'
+                    AND column_name ilike 'system_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'statistics_vms_users_usage_hourly'
+                    AND column_name ilike 'max_system_cpu_usage_percent_temp'
+        )
+    )
+        THEN
+            BEGIN
+                UPDATE statistics_vms_users_usage_hourly
+                SET user_cpu_usage_percent_temp =
+                    statistics_vms_users_usage_hourly.user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_user_cpu_usage_percent_temp =
+                    
statistics_vms_users_usage_hourly.max_user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    system_cpu_usage_percent_temp =
+                    statistics_vms_users_usage_hourly.system_cpu_usage_percent 
/
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_system_cpu_usage_percent_temp =
+                    
statistics_vms_users_usage_hourly.max_system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket )
+                FROM vm_configuration
+                WHERE
+                    statistics_vms_users_usage_hourly.vm_id =
+                    vm_configuration.vm_id
+                    AND 
statistics_vms_users_usage_hourly.vm_configuration_version =
+                    vm_configuration.history_id;
+            END;
+    END if;
+END; $function$
+language plpgsql;
+
+SELECT __temp_hourly_cpu_usage_percent();
+
+DROP function __temp_hourly_cpu_usage_percent();
+
+--delete user and sys cpu_usage_percent columns from 
statistics_vms_users_usage_hourly table
+SELECT fn_db_drop_column('statistics_vms_users_usage_hourly', 
'user_cpu_usage_percent');
+SELECT fn_db_drop_column('statistics_vms_users_usage_hourly', 
'max_user_cpu_usage_percent');
+SELECT fn_db_drop_column('statistics_vms_users_usage_hourly', 
'system_cpu_usage_percent');
+SELECT fn_db_drop_column('statistics_vms_users_usage_hourly', 
'max_system_cpu_usage_percent');
+
+--change columns names from temp to the names of the dropped columns
+ALTER TABLE  statistics_vms_users_usage_hourly RENAME COLUMN 
user_cpu_usage_percent_temp TO user_cpu_usage_percent;
+ALTER TABLE  statistics_vms_users_usage_hourly RENAME COLUMN 
max_user_cpu_usage_percent_temp TO max_user_cpu_usage_percent;
+ALTER TABLE  statistics_vms_users_usage_hourly RENAME COLUMN 
system_cpu_usage_percent_temp TO system_cpu_usage_percent;
+ALTER TABLE  statistics_vms_users_usage_hourly RENAME COLUMN 
max_system_cpu_usage_percent_temp TO max_system_cpu_usage_percent;
+
+-- add temp columns for daily sys and user cpu usage percent
+SELECT fn_db_add_column('statistics_vms_users_usage_daily', 
'user_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('statistics_vms_users_usage_daily', 
'max_user_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('statistics_vms_users_usage_daily', 
'system_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('statistics_vms_users_usage_daily', 
'max_system_cpu_usage_percent_temp', 'smallint');
+
+--update daily values of user and sys cpu_usage_percent, avg and max, 
according to number of cpu's.
+CREATE OR REPLACE function __temp_daily_cpu_usage_percent() RETURNS void
+AS $function$
+BEGIN
+    if (
+        EXISTS (
+            SELECT 1
+            FROM information_schema.columns
+            WHERE table_name ilike 'statistics_vms_users_usage_daily'
+                AND column_name ilike 'user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'statistics_vms_users_usage_daily'
+                    AND column_name ilike 'max_user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'statistics_vms_users_usage_daily'
+                    AND column_name ilike 'system_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'statistics_vms_users_usage_daily'
+                    AND column_name ilike 'max_system_cpu_usage_percent_temp'
+        )
+    )
+        THEN
+            BEGIN
+                UPDATE statistics_vms_users_usage_daily
+                SET user_cpu_usage_percent_temp =
+                    statistics_vms_users_usage_daily.user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_user_cpu_usage_percent_temp =
+                    
statistics_vms_users_usage_daily.max_user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    system_cpu_usage_percent_temp =
+                    statistics_vms_users_usage_daily.system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_system_cpu_usage_percent_temp =
+                    
statistics_vms_users_usage_daily.max_system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket )
+                FROM vm_configuration
+                WHERE
+                    statistics_vms_users_usage_daily.vm_id =
+                    vm_configuration.vm_id
+                    AND 
statistics_vms_users_usage_daily.vm_configuration_version =
+                    vm_configuration.history_id;
+            END;
+    END if;
+END; $function$
+language plpgsql;
+
+SELECT __temp_daily_cpu_usage_percent();
+
+DROP function __temp_daily_cpu_usage_percent();
+
+--delete user and sys cpu_usage_percent columns from 
statistics_vms_users_usage_daily table
+SELECT fn_db_drop_column('statistics_vms_users_usage_daily', 
'user_cpu_usage_percent');
+SELECT fn_db_drop_column('statistics_vms_users_usage_daily', 
'max_user_cpu_usage_percent');
+SELECT fn_db_drop_column('statistics_vms_users_usage_daily', 
'system_cpu_usage_percent');
+SELECT fn_db_drop_column('statistics_vms_users_usage_daily', 
'max_system_cpu_usage_percent');
+
+--change columns names from temp to the names of the dropped columns
+ALTER TABLE  statistics_vms_users_usage_daily RENAME COLUMN 
user_cpu_usage_percent_temp TO user_cpu_usage_percent;
+ALTER TABLE  statistics_vms_users_usage_daily RENAME COLUMN 
max_user_cpu_usage_percent_temp TO max_user_cpu_usage_percent;
+ALTER TABLE  statistics_vms_users_usage_daily RENAME COLUMN 
system_cpu_usage_percent_temp TO system_cpu_usage_percent;
+ALTER TABLE  statistics_vms_users_usage_daily RENAME COLUMN 
max_system_cpu_usage_percent_temp TO max_system_cpu_usage_percent;
+
+-- add temp columns for hourly sys and user cpu usage percent
+SELECT fn_db_add_column('vm_samples_history', 'user_cpu_usage_percent_temp', 
'smallint');
+SELECT fn_db_add_column('vm_samples_history', 'system_cpu_usage_percent_temp', 
'smallint');
+
+--update samples values of user and sys cpu_usage_percent, avg and max, 
according to number of cpu's
+CREATE OR REPLACE function __temp_vm_samples_history() RETURNS void
+AS $function$
+BEGIN
+if (
+    EXISTS (
+        SELECT 1
+        FROM information_schema.columns
+        WHERE table_name ilike 'vm_samples_history'
+            AND column_name ilike 'user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_samples_history'
+                    AND column_name ilike 'system_cpu_usage_percent_temp'
+        )
+    )
+        THEN
+            BEGIN
+                UPDATE vm_samples_history
+                SET user_cpu_usage_percent_temp =
+                    vm_samples_history.user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    system_cpu_usage_percent_temp =
+                    vm_samples_history.system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket )
+                FROM vm_configuration
+                WHERE
+                    vm_samples_history.vm_id =
+                    vm_configuration.vm_id
+                    AND vm_samples_history.vm_configuration_version =
+                    vm_configuration.history_id;
+            END;
+    END if;
+END; $function$
+language plpgsql;
+
+SELECT __temp_vm_samples_history();
+
+DROP function __temp_vm_samples_history();
+
+--delete user and sys cpu_usage_percent columns from vm_samples_history table
+SELECT fn_db_drop_column('vm_samples_history', 'user_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_samples_history', 'system_cpu_usage_percent');
+
+--change columns names from temp to the names of the dropped columns
+ALTER TABLE  vm_samples_history RENAME COLUMN user_cpu_usage_percent_temp TO 
user_cpu_usage_percent;
+ALTER TABLE  vm_samples_history RENAME COLUMN system_cpu_usage_percent_temp TO 
system_cpu_usage_percent;
+
+-- add temp columns for hourly sys and user cpu usage percent
+SELECT fn_db_add_column('vm_hourly_history', 'user_cpu_usage_percent_temp', 
'smallint');
+SELECT fn_db_add_column('vm_hourly_history', 
'max_user_cpu_usage_percent_temp', 'smallint');
+SELECT fn_db_add_column('vm_hourly_history', 'system_cpu_usage_percent_temp', 
'smallint');
+SELECT fn_db_add_column('vm_hourly_history', 
'max_system_cpu_usage_percent_temp', 'smallint');
+
+--update hourly values of user and sys cpu_usage_percent according to number 
of cpu's
+CREATE OR REPLACE function __temp_vm_hourly_history() RETURNS void
+AS $function$
+BEGIN
+    if (
+        EXISTS (
+            SELECT 1
+            FROM information_schema.columns
+            WHERE table_name ilike 'vm_hourly_history'
+                AND column_name ilike 'user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_hourly_history'
+                    AND column_name ilike 'max_user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_hourly_history'
+                    AND column_name ilike 'system_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_hourly_history'
+                    AND column_name ilike 'max_system_cpu_usage_percent_temp'
+        )
+    )
+        THEN
+            BEGIN
+                UPDATE vm_hourly_history
+                SET user_cpu_usage_percent_temp =
+                    vm_hourly_history.user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_user_cpu_usage_percent_temp =
+                    vm_hourly_history.max_user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    system_cpu_usage_percent_temp =
+                    vm_hourly_history.system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_system_cpu_usage_percent_temp =
+                    vm_hourly_history.max_system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket )
+                FROM vm_configuration
+                WHERE
+                    vm_hourly_history.vm_id =
+                    vm_configuration.vm_id
+                    AND vm_hourly_history.vm_configuration_version =
+                    vm_configuration.history_id;
+            END;
+    END if;
+END; $function$
+language plpgsql;
+
+SELECT __temp_vm_hourly_history();
+
+DROP function __temp_vm_hourly_history();
+
+--delete user and sys cpu_usage_percent columns from vm_hourly_history table
+SELECT fn_db_drop_column('vm_hourly_history', 'user_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_hourly_history', 'max_user_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_hourly_history', 'system_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_hourly_history', 'max_system_cpu_usage_percent');
+
+--change columns names from temp to the names of the dropped columns
+ALTER TABLE  vm_hourly_history RENAME COLUMN user_cpu_usage_percent_temp TO 
user_cpu_usage_percent;
+ALTER TABLE  vm_hourly_history RENAME COLUMN max_user_cpu_usage_percent_temp 
TO max_user_cpu_usage_percent;
+ALTER TABLE  vm_hourly_history RENAME COLUMN system_cpu_usage_percent_temp TO 
system_cpu_usage_percent;
+ALTER TABLE  vm_hourly_history RENAME COLUMN max_system_cpu_usage_percent_temp 
TO max_system_cpu_usage_percent;
+
+-- add temp columns for hourly sys and user cpu usage percent
+SELECT fn_db_add_column('vm_daily_history', 'user_cpu_usage_percent_temp', 
'smallint');
+SELECT fn_db_add_column('vm_daily_history', 'max_user_cpu_usage_percent_temp', 
'smallint');
+SELECT fn_db_add_column('vm_daily_history', 'system_cpu_usage_percent_temp', 
'smallint');
+SELECT fn_db_add_column('vm_daily_history', 
'max_system_cpu_usage_percent_temp', 'smallint');
+
+--update daily values of user and sys cpu_usage_percent, avg and max, 
according to number of cpu's.
+CREATE OR REPLACE function __temp_vm_daily_history() RETURNS void
+AS $function$
+BEGIN
+    if (
+        EXISTS (
+            SELECT 1
+            FROM information_schema.columns
+            WHERE table_name ilike 'vm_daily_history'
+                AND column_name ilike 'user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_daily_history'
+                    AND column_name ilike 'max_user_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_daily_history'
+                    AND column_name ilike 'system_cpu_usage_percent_temp'
+        )
+        AND EXISTS (
+            SELECT 1
+                FROM information_schema.columns
+                WHERE table_name ilike 'vm_daily_history'
+                    AND column_name ilike 'max_system_cpu_usage_percent_temp'
+        )
+    )
+        THEN
+            BEGIN
+                UPDATE vm_daily_history
+                SET user_cpu_usage_percent_temp =
+                    vm_daily_history.user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_user_cpu_usage_percent_temp =
+                    vm_daily_history.max_user_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    system_cpu_usage_percent_temp =
+                    vm_daily_history.system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket ),
+                    max_system_cpu_usage_percent_temp =
+                    vm_daily_history.max_system_cpu_usage_percent /
+                    ( vm_configuration.number_of_sockets * 
vm_configuration.cpu_per_socket )
+                FROM vm_configuration
+                WHERE
+                    vm_daily_history.vm_id =
+                    vm_configuration.vm_id
+                    AND vm_daily_history.vm_configuration_version =
+                    vm_configuration.history_id;
+            END;
+    END if;
+END; $function$
+language plpgsql;
+
+SELECT __temp_vm_daily_history();
+
+DROP function __temp_vm_daily_history();
+
+--delete user and sys cpu_usage_percent columns from vm_daily_history table
+SELECT fn_db_drop_column('vm_daily_history', 'user_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_daily_history', 'max_user_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_daily_history', 'system_cpu_usage_percent');
+SELECT fn_db_drop_column('vm_daily_history', 'max_system_cpu_usage_percent');
+
+--change columns names from temp to the names of the dropped columns
+ALTER TABLE  vm_daily_history RENAME COLUMN user_cpu_usage_percent_temp TO 
user_cpu_usage_percent;
+ALTER TABLE  vm_daily_history RENAME COLUMN max_user_cpu_usage_percent_temp TO 
max_user_cpu_usage_percent;
+ALTER TABLE  vm_daily_history RENAME COLUMN system_cpu_usage_percent_temp TO 
system_cpu_usage_percent;
+ALTER TABLE  vm_daily_history RENAME COLUMN max_system_cpu_usage_percent_temp 
TO max_system_cpu_usage_percent;


-- 
To view, visit http://gerrit.ovirt.org/27676
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia47326f94b0b1b696d0bcaf13b5f6df0093b9196
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-dwh
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Shirly Radco <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to