From 211eced993d5d5bc2227ed11e14bbf17ef440590 Mon Sep 17 00:00:00 2001 From: Suresh Venkata Date: Wed, 25 Jan 2017 22:52:53 -0800 Subject: [PATCH] Fixes: Contrail ISSU from 2.21->3.1 Description: Back porting contrail ISSU necessary changes from 3.1 to 2.21. ClosesBug: 1658863 Change-Id: Id28c12b6f4a5a32a11f7bc3b9d701206b369c83b --- src/config/common/vnc_cassandra.py | 6 +- .../contrail_issu/issu_contrail_config.py | 20 +- src/config/utils/SConscript | 1 + src/config/utils/issu_process.sh | 250 ++++++++++++++++++ 4 files changed, 267 insertions(+), 10 deletions(-) create mode 100755 src/config/utils/issu_process.sh diff --git a/src/config/common/vnc_cassandra.py b/src/config/common/vnc_cassandra.py index ededfbbff79..db19ae70224 100644 --- a/src/config/common/vnc_cassandra.py +++ b/src/config/common/vnc_cassandra.py @@ -137,7 +137,11 @@ def __init__(self, server_list, db_prefix, rw_keyspaces, ro_keyspaces, self._cache_uuid_to_fq_name = {} self._obj_uuid_cf = self._cf_dict[self._OBJ_UUID_CF_NAME] self._obj_fq_name_cf = self._cf_dict[self._OBJ_FQ_NAME_CF_NAME] - self._obj_shared_cf = self._cf_dict[self._OBJ_SHARED_CF_NAME] + if (((self._ro_keyspaces) and + (self._OBJ_SHARED_CF_NAME in self._ro_keyspaces[self._UUID_KEYSPACE_NAME])) or + ((self._rw_keyspaces) and + (self._OBJ_SHARED_CF_NAME in self._rw_keyspaces[self._UUID_KEYSPACE_NAME]))): + self._obj_shared_cf = self._cf_dict[self._OBJ_SHARED_CF_NAME] if walk: self.walk() # end __init__ diff --git a/src/config/contrail_issu/contrail_issu/issu_contrail_config.py b/src/config/contrail_issu/contrail_issu/issu_contrail_config.py index 316f72ab3f9..e69338653ce 100644 --- a/src/config/contrail_issu/contrail_issu/issu_contrail_config.py +++ b/src/config/contrail_issu/contrail_issu/issu_contrail_config.py @@ -27,13 +27,12 @@ def lognprint(x, level): issu_keyspace_config_db_uuid = { 'config_db_uuid': [ - ('obj_uuid_table'), ('obj_fq_name_table'), ('obj_shared_table')]} + ('obj_uuid_table'), ('obj_fq_name_table')]} issu_info_pre = [ (None, 'config_db_uuid', { 'obj_uuid_table': {}, - 'obj_fq_name_table': {}, - 'obj_shared_table': {}}), + 'obj_fq_name_table': {}}), (None, 'to_bgp_keyspace', { 'route_target_table': {}, 'service_chain_table': {}, 'service_chain_ip_address_table': {}, @@ -42,7 +41,7 @@ def lognprint(x, level): (None, 'svc_monitor_keyspace', { 'pool_table': {}, 'service_instance_table': {}}), (None, 'dm_keyspace', { - 'dm_pr_vn_ip_table': {}, 'dm_pnf_resource_table': {}})] + 'dm_pr_vn_ip_table': {}})] issu_keyspace_to_bgp_keyspace = { 'to_bgp_keyspace': [ @@ -55,10 +54,13 @@ def lognprint(x, level): 'svc_monitor_keyspace': [('pool_table'), ('service_instance_table')]} issu_keyspace_dm_keyspace = { - 'dm_keyspace': [('dm_pr_vn_ip_table'), ('dm_pnf_resource_table')]} + 'dm_keyspace': [('dm_pr_vn_ip_table')]} issu_info_post = [ + (None, 'config_db_uuid', { + 'obj_uuid_table': {}, + 'obj_fq_name_table':{}}), (None, 'to_bgp_keyspace', { 'route_target_table': {}, 'service_chain_table': {}, 'service_chain_ip_address_table': {}, @@ -67,12 +69,12 @@ def lognprint(x, level): (None, 'svc_monitor_keyspace', { 'pool_table': {}, 'service_instance_table': {}}), (None, 'dm_keyspace', { - 'dm_pr_vn_ip_table': {}, 'dm_pnf_resource_table': {}})] + 'dm_pr_vn_ip_table': {}})] issu_info_config_db_uuid = [ (None, 'config_db_uuid', { 'obj_uuid_table': {}, - 'obj_fq_name_table': {}, 'obj_shared_table': {}})] + 'obj_fq_name_table': {}})] issu_znode_list = ['fq-name-to-uuid', 'api-server', 'id'] @@ -88,10 +90,10 @@ def parse_args(args_str=None): 'new_rabbit_password': 'guest', 'new_rabbit_ha_mode': False, 'new_rabbit_q_name': 'vnc-config.issu-queue', - 'new_rabbit_vhost' : '/v2', + 'new_rabbit_vhost' : '', 'new_rabbit_port': '5672', 'odb_prefix' : '', - 'ndb_prefix': 'v2', + 'ndb_prefix': '', 'reset_config': None, 'old_cassandra_address_list': '10.84.24.35:9160', 'old_zookeeper_address_list': '10.84.24.35:2181', diff --git a/src/config/utils/SConscript b/src/config/utils/SConscript index 0498a853b11..9a43c1ba139 100644 --- a/src/config/utils/SConscript +++ b/src/config/utils/SConscript @@ -49,6 +49,7 @@ utils_scripts = [ 'provision_user_defined_log_statistics.py', 'contrail-diff-docs.py', 'provision_issu.py', + 'issu_process.sh', ] for utils in utils_scripts: diff --git a/src/config/utils/issu_process.sh b/src/config/utils/issu_process.sh new file mode 100755 index 00000000000..caae2a0a52d --- /dev/null +++ b/src/config/utils/issu_process.sh @@ -0,0 +1,250 @@ + +#!/usr/bin/env bash + +function issu_contrail_switch_compute_node { + route -n + openstack-config --set /etc/contrail/contrail-vrouter-agent.conf DISCOVERY server $1 + openstack-config --set /etc/contrail/supervisord_vrouter_files/contrail-vrouter-agent.ini program:contrail-vrouter-agent autostart true + openstack-config --set /etc/contrail/supervisord_vrouter_files/contrail-vrouter-agent.ini program:contrail-vrouter-agent killasgroup true + openstack-config --set /etc/contrail/contrail-vrouter-nodemgr.conf DISCOVERY server $1 + service supervisor-vrouter stop; rmmod vrouter;modprobe vrouter;service supervisor-vrouter start + contrail-status + route -n +} + +function issu_contrail_prepare_compute_node { + route -n + #openstack-config --del /etc/contrail/supervisord_vrouter_files/contrail-vrouter-agent.ini program:contrail-vrouter-agent autostart + #openstack-config --del /etc/contrail/supervisord_vrouter_files/contrail-vrouter-agent.ini program:contrail-vrouter-agent killasgroup + #contrail-status +} + +function issu_contrail_set_supervisord_config_files { + local cmd="openstack-config --set /etc/contrail/supervisord_config_files/$1.ini program:$1" + $cmd autostart $2 + $cmd autorestart $2 + $cmd killasgroup $2 +} + +function issu_contrail_prepare_new_control_node { + contrail-status + issu_contrail_set_supervisord_config_files 'contrail-device-manager' 'false' + issu_contrail_set_supervisord_config_files 'contrail-svc-monitor' 'false' + issu_contrail_set_supervisord_config_files 'contrail-schema' 'false' + + openstack-config --set /etc/contrail/supervisord_config_files/contrail-config-nodemgr.ini eventlistener:contrail-config-nodemgr autorestart false + openstack-config --set /etc/contrail/supervisord_config_files/contrail-config-nodemgr.ini eventlistener:contrail-config-nodemgr autostart false + + contrail-status + service supervisor-config restart + contrail-status + service supervisor-config stop + contrail-status +} + +function issu_contrail_post_new_control_node { + contrail-status + #openstack-config --set /etc/contrail/supervisord_config.conf include files \"/etc/contrail/supervisord_config_files/*.ini\" + + issu_contrail_set_supervisord_config_files 'contrail-device-manager' 'true' + issu_contrail_set_supervisord_config_files 'contrail-svc-monitor' 'true' + issu_contrail_set_supervisord_config_files 'contrail-schema' 'true' + + openstack-config --del /etc/contrail/supervisord_config_files/contrail-config-nodemgr.ini eventlistener:contrail-config-nodemgr autorestart + openstack-config --del /etc/contrail/supervisord_config_files/contrail-config-nodemgr.ini eventlistener:contrail-config-nodemgr autostart + + service supervisor-config restart + contrail-status + +} + +function issu_pre_sync { + contrail-issu-pre-sync -c /etc/contrail/contrail-issu.conf +} + +function issu_run_sync { + local cmd='openstack-config --set /etc/supervisor/conf.d/contrail-issu.conf program:contrail-issu' + touch /etc/supervisor/conf.d/contrail-issu.conf + $cmd command 'contrail-issu-run-sync --conf_file /etc/contrail/contrail-issu.conf' + $cmd numprocs 1 + openstack-config --set /etc/supervisor/conf.d/contrail-issu.conf program:contrail-issu process_name '%(process_num)s' + $cmd redirect_stderr true + openstack-config --set /etc/supervisor/conf.d/contrail-issu.conf program:contrail-issu stdout_logfile '/var/log/issu-contrail-run-sync-%(process_num)s-stdout.log' + openstack-config --set /etc/supervisor/conf.d/contrail-issu.conf program:contrail-issu stderr_logfile '/dev/null' + $cmd priority 440 + $cmd autostart true + $cmd killasgroup false + $cmd stopsignal KILL + $cmd exitcodes 0 + service supervisor restart +} + +function issu_post_sync { + rm -f /etc/supervisor/conf.d/contrail-issu.conf + service supervisor restart + contrail-issu-post-sync -c /etc/contrail/contrail-issu.conf + contrail-issu-zk-sync -c /etc/contrail/contrail-issu.conf +} + +function issu_contrail_generate_conf { + local myfile="/tmp/contrail-issu.conf" + issu_contrail_get_and_set_old_conf $1 $myfile + issu_contrail_get_and_set_new_conf $2 $myfile + echo $1 $2 +} + +function issu_contrail_get_and_set_old_conf { + local get_old_cmd="openstack-config --get $1 DEFAULTS" + local has_old_cmd="openstack-config --has $1 DEFAULTS" + local set_cmd="openstack-config --set $2 DEFAULTS" + + cmd="$get_old_cmd cassandra_server_list" + val=$($cmd) + $set_cmd old_cassandra_address_list "$val" + + cmd="$get_old_cmd zk_server_ip" + val=$($cmd) + $set_cmd old_zookeeper_address_list "$val" + + cmd="$has_old_cmd rabbit_user" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd rabbit_user" + val=$($cmd) + $set_cmd old_rabbit_user "$val" + fi + + cmd="$has_old_cmd rabbit_password" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd rabbit_password" + val=$($cmd) + $set_cmd old_rabbit_password "$val" + fi + + cmd="$has_old_cmd rabbit_vhost" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd rabbit_vhost" + val=$($cmd) + $set_cmd old_rabbit_vhost "$val" + fi + + cmd="$has_old_cmd rabbit_ha_mode" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd rabbit_ha_mode" + val=$($cmd) + $set_cmd old_rabbit_ha_mode "$val" + fi + + cmd="$has_old_cmd rabbit_port" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd rabbit_port" + val=$($cmd) + $set_cmd old_rabbit_port "$val" + fi + + cmd="$has_old_cmd rabbit_server" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd rabbit_server" + val=$($cmd) + $set_cmd old_rabbit_address_list "$val" + fi + + cmd="$has_old_cmd cluster_id" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_old_cmd cluster_id" + val=$($cmd) + $set_cmd odb_prefix "$val" + fi + + +} + +function issu_contrail_get_and_set_new_conf { + local get_new_cmd="openstack-config --get $1 DEFAULTS" + local set_cmd="openstack-config --set $2 DEFAULTS" + local has_new_cmd="openstack-config --has $1 DEFAULTS" + + cmd="$get_new_cmd cassandra_server_list" + val=$($cmd) + $set_cmd new_cassandra_address_list "$val" + + cmd="$get_new_cmd zk_server_ip" + val=$($cmd) + $set_cmd new_zookeeper_address_list "$val" + + cmd="$has_new_cmd rabbit_user" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd rabbit_user" + val=$($cmd) + $set_cmd new_rabbit_user "$val" + fi + + cmd="$has_new_cmd rabbit_password" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd rabbit_password" + val=$($cmd) + $set_cmd new_rabbit_password "$val" + fi + + cmd="$has_new_cmd rabbit_vhost" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd rabbit_vhost" + val=$($cmd) + $set_cmd new_rabbit_vhost "$val" + fi + + cmd="$has_new_cmd rabbit_ha_mode" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd rabbit_ha_mode" + val=$($cmd) + $set_cmd new_rabbit_ha_mode "$val" + fi + + cmd="$has_new_cmd rabbit_port" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd rabbit_port" + val=$($cmd) + $set_cmd new_rabbit_port "$val" + fi + + cmd="$has_new_cmd rabbit_server" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd rabbit_server" + val=$($cmd) + $set_cmd new_rabbit_address_list "$val" + fi + + cmd="$has_new_cmd cluster_id" + val=$($cmd) + if [ $val == 1 ] + then + cmd="$get_new_cmd cluster_id" + val=$($cmd) + $set_cmd ndb_prefix "$val" + fi +}