From f699fd4a15c8e58c534e98d8436beedf3b54fdc5 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 19 Aug 2016 17:27:20 +0530 Subject: [PATCH] CLOUDSTACK-9463: Fix dynamic-roles migrate script for old format The old commands.properties format included the full class name such as: createAccount=com.cloud.api.commands.CreateAccountCmd;1 The migration script did not consider this format and fails. With this fix the migration script will process both the formats, including processing a commands.properties file with mixed format, for example: $ cat commands.properties ### Account commands createAccount=1 deleteAccount=2 markDefaultZoneForAccount=com.cloud.api.commands.MarkDefaultZoneForAccountCmd;3 $ python scripts/util/migrate-dynamicroles.py -d -f commands.properties Apache CloudStack Role Permission Migration Tool (c) Apache CloudStack Authors and the ASF, under the Apache License, Version 2.0 Running this migration tool will remove any default-role permissions from cloud.role_permissions. Do you want to continue? [y/N]y The commands.properties file has been deprecated and moved at: commands.properties.deprecated Running SQL query: DELETE FROM `cloud`.`role_permissions` WHERE `role_id` in (1,2,3,4); Running SQL query: INSERT INTO `cloud`.`role_permissions` (`uuid`, `role_id`, `rule`, `permission`, `sort_order`) values (UUID(), 1, '*', 'ALLOW', 0); Running SQL query: INSERT INTO `cloud`.`role_permissions` (`uuid`, `role_id`, `rule`, `permission`, `sort_order`) values (UUID(), 2, 'deleteAccount', 'ALLOW', 0); Running SQL query: INSERT INTO `cloud`.`role_permissions` (`uuid`, `role_id`, `rule`, `permission`, `sort_order`) values (UUID(), 2, 'markDefaultZoneForAccount', 'ALLOW', 1); Static role permissions from commands.properties have been migrated into the db Running SQL query: UPDATE `cloud`.`configuration` SET value='true' where name='dynamic.apichecker.enabled' Dynamic role based API checker has been enabled! Signed-off-by: Rohit Yadav --- scripts/util/migrate-dynamicroles.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/util/migrate-dynamicroles.py b/scripts/util/migrate-dynamicroles.py index d2356fb3456..cbb83f91783 100755 --- a/scripts/util/migrate-dynamicroles.py +++ b/scripts/util/migrate-dynamicroles.py @@ -107,10 +107,10 @@ def main(): apiMap = {} with open(options.commandsfile) as f: for line in f.readlines(): - if not line or line == '' or line == '\n' or line.startswith('#'): + if not line or line == '' or line == '\n' or line == '\r\n' or line.startswith('#'): continue name, value = line.split('=') - apiMap[name.strip()] = value.strip() + apiMap[name.strip()] = value.strip().split(';')[-1] # Rename and deprecate old commands.properties file if not dryrun: