V2T migration: Admin utility for enable/disable route redistribution
+ fixing constant typo in the admin utiities + fixing file handling issue in another v2t migration utility + fixing nsxv migration validate admin utility loading azs Change-Id: I38cdc227b513b5ce6bd271dcc688a68334fa7906
This commit is contained in:
parent
60f212fba8
commit
014c920bd4
@ -708,6 +708,8 @@ Client Certificate
|
||||
|
||||
nsxadmin -r nsx-migrate-v2t -o clean-all
|
||||
|
||||
- Disable/Restore Tier0 redistribution of tier1 routes during the migration::
|
||||
nsxadmin -r nsx-migrate-v2t -o nsx-redistribute --property action=disable/restore --property tier0s=a,b,c
|
||||
|
||||
Steps to create a TVD admin user
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -12,8 +12,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
|
||||
from neutron_lib.callbacks import registry
|
||||
from oslo_log import log as logging
|
||||
from oslo_serialization import jsonutils
|
||||
|
||||
from vmware_nsx.shell.admin.plugins.common import constants
|
||||
from vmware_nsx.shell.admin.plugins.common import utils as admin_utils
|
||||
@ -48,6 +51,96 @@ def post_v2t_migration_cleanups(resource, event, trigger, **kwargs):
|
||||
continue
|
||||
|
||||
|
||||
@admin_utils.output_header
|
||||
def migration_tier0_redistribute(resource, event, trigger, **kwargs):
|
||||
"""Disable/Restore tier0s route redistribution during V2T migration"""
|
||||
errmsg = ("Need to specify --property action=disable/restore and a comma "
|
||||
"separated tier0 list as --property tier0s")
|
||||
if not kwargs.get('property'):
|
||||
LOG.error("%s", errmsg)
|
||||
return
|
||||
properties = admin_utils.parse_multi_keyval_opt(kwargs['property'])
|
||||
action = properties.get('action')
|
||||
tier0string = properties.get('tier0s')
|
||||
if not tier0string or not action:
|
||||
LOG.error("%s", errmsg)
|
||||
return
|
||||
|
||||
tier0s = tier0string.split(",")
|
||||
nsxpolicy = p_utils.get_connected_nsxpolicy()
|
||||
file_name = "tier0_redistribution_conf.json"
|
||||
|
||||
if action.lower() == 'disable':
|
||||
orig_conf_map = {}
|
||||
for tier0 in tier0s:
|
||||
# get the current config
|
||||
try:
|
||||
orig_conf = nsxpolicy.tier0.get_route_redistribution_config(
|
||||
tier0)
|
||||
except Exception:
|
||||
LOG.error("Did not find Tier0 %s", tier0)
|
||||
return
|
||||
fixed_conf = copy.deepcopy(orig_conf)
|
||||
if ((not orig_conf['bgp_enabled'] and
|
||||
not orig_conf['ospf_enabled']) or
|
||||
not orig_conf.get('redistribution_rules')):
|
||||
# Already disabled
|
||||
LOG.info("Tier0 %s route redistribution config was not "
|
||||
"changed because it is disabled", tier0)
|
||||
continue
|
||||
# Check if any of the rules have tier1 flags enabled
|
||||
found = False
|
||||
rule_num = 0
|
||||
for rule in orig_conf['redistribution_rules']:
|
||||
fixed_types = []
|
||||
for route_type in rule['route_redistribution_types']:
|
||||
if route_type.startswith('TIER1'):
|
||||
found = True
|
||||
else:
|
||||
fixed_types.append(route_type)
|
||||
fixed_conf['redistribution_rules'][rule_num][
|
||||
'route_redistribution_types'] = fixed_types
|
||||
rule_num = rule_num + 1
|
||||
if not found:
|
||||
LOG.info("Tier0 %s route redistribution config was not "
|
||||
"changed because there are no Tier1 types", tier0)
|
||||
continue
|
||||
# Save the original config so it can be reverted later
|
||||
orig_conf_map[tier0] = orig_conf
|
||||
nsxpolicy.tier0.update_route_redistribution_config(
|
||||
tier0, fixed_conf)
|
||||
LOG.info("Disabled Tier0 %s route redistribution config for "
|
||||
"Tier1 routes", tier0)
|
||||
f = open(file_name, "w")
|
||||
f.write("%s" % jsonutils.dumps(orig_conf_map))
|
||||
f.close()
|
||||
|
||||
elif action.lower() == 'restore':
|
||||
try:
|
||||
f = open(file_name, "r")
|
||||
orig_conf_map = jsonutils.loads(f.read())
|
||||
f.close()
|
||||
except Exception:
|
||||
LOG.error("Didn't find input file %s", file_name)
|
||||
return
|
||||
for tier0 in tier0s:
|
||||
if tier0 in orig_conf_map:
|
||||
# Restore its original config:
|
||||
try:
|
||||
nsxpolicy.tier0.update_route_redistribution_config(
|
||||
tier0, orig_conf_map[tier0])
|
||||
LOG.info("Restored Tier0 %s original route redistribution "
|
||||
"config", tier0)
|
||||
except Exception:
|
||||
LOG.error("Failed to update redistribution of Tier0 %s",
|
||||
tier0)
|
||||
else:
|
||||
LOG.info("Tier0 %s route redistribution config was not "
|
||||
"changed", tier0)
|
||||
else:
|
||||
LOG.error("%s", errmsg)
|
||||
|
||||
|
||||
registry.subscribe(cleanup_db_mappings,
|
||||
constants.NSX_MIGRATE_T_P,
|
||||
shell.Operations.CLEAN_ALL.value)
|
||||
@ -55,3 +148,7 @@ registry.subscribe(cleanup_db_mappings,
|
||||
registry.subscribe(post_v2t_migration_cleanups,
|
||||
constants.NSX_MIGRATE_V_T,
|
||||
shell.Operations.CLEAN_ALL.value)
|
||||
|
||||
registry.subscribe(migration_tier0_redistribute,
|
||||
constants.NSX_MIGRATE_V_T,
|
||||
shell.Operations.NSX_REDISTRIBUTE.value)
|
||||
|
@ -352,4 +352,4 @@ registry.subscribe(nsx_recreate_dhcp_edge,
|
||||
shell.Operations.NSX_RECREATE.value)
|
||||
registry.subscribe(nsx_redistribute_dhcp_edges,
|
||||
constants.DHCP_BINDING,
|
||||
shell.Operations.NSX_REDISTRIBURE.value)
|
||||
shell.Operations.NSX_REDISTRIBUTE.value)
|
||||
|
@ -15,6 +15,7 @@
|
||||
import sys
|
||||
|
||||
import netaddr
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
|
||||
from networking_l2gw.db.l2gateway import l2gateway_models
|
||||
@ -25,6 +26,7 @@ from neutron_lib.callbacks import registry
|
||||
from neutron_lib import constants as nl_constants
|
||||
from neutron_lib import context as n_context
|
||||
|
||||
from vmware_nsx.common import config
|
||||
from vmware_nsx.common import nsxv_constants
|
||||
from vmware_nsx.common import utils as c_utils
|
||||
from vmware_nsx.db import nsxv_db
|
||||
@ -72,6 +74,7 @@ def validate_config_for_migration(resource, event, trigger, **kwargs):
|
||||
n_errors = 0
|
||||
|
||||
# General config options / per AZ which are unsupported
|
||||
config.register_nsxv_azs(cfg.CONF, cfg.CONF.nsxv.availability_zones)
|
||||
zones = nsx_az.NsxVAvailabilityZones()
|
||||
unsupported_configs = ['edge_ha', 'edge_host_groups']
|
||||
for az in zones.list_availability_zones_objects():
|
||||
|
@ -334,8 +334,8 @@ def list_nsx_virtual_wires(resource, event, trigger, **kwargs):
|
||||
table_results,
|
||||
['neutron_id', 'nsx_id', 'vni']))
|
||||
if filename:
|
||||
f = open(filename, "a")
|
||||
f.write("%s" % map_results)
|
||||
f = open(filename, "w")
|
||||
f.write("%s" % jsonutils.dumps(map_results))
|
||||
f.close()
|
||||
LOG.info("Mapping data saved into %s", filename)
|
||||
|
||||
|
@ -408,7 +408,7 @@ registry.subscribe(migrate_distributed_routers_dhcp,
|
||||
|
||||
registry.subscribe(redistribute_routers,
|
||||
constants.ROUTERS,
|
||||
shell.Operations.NSX_REDISTRIBURE.value)
|
||||
shell.Operations.NSX_REDISTRIBUTE.value)
|
||||
|
||||
registry.subscribe(update_edge_firewalls,
|
||||
constants.ROUTERS,
|
||||
|
@ -58,7 +58,7 @@ class Operations(enum.Enum):
|
||||
NSX_UPDATE_TAGS = 'nsx-update-tags'
|
||||
NSX_UPDATE_FW = 'nsx-update-fw'
|
||||
NSX_RECREATE = 'nsx-recreate'
|
||||
NSX_REDISTRIBURE = 'nsx-redistribute'
|
||||
NSX_REDISTRIBUTE = 'nsx-redistribute'
|
||||
NSX_REORDER = 'nsx-reorder'
|
||||
NSX_DISCONNECT = 'nsx-disconnect'
|
||||
NSX_RECONNECT = 'nsx-reconnect'
|
||||
@ -196,7 +196,7 @@ nsxv_resources = {
|
||||
constants.DHCP_BINDING: Resource(constants.DHCP_BINDING,
|
||||
[Operations.LIST.value,
|
||||
Operations.NSX_UPDATE.value,
|
||||
Operations.NSX_REDISTRIBURE.value,
|
||||
Operations.NSX_REDISTRIBUTE.value,
|
||||
Operations.NSX_RECREATE.value]),
|
||||
constants.NETWORKS: Resource(constants.NETWORKS,
|
||||
[Operations.LIST.value,
|
||||
@ -236,7 +236,7 @@ nsxv_resources = {
|
||||
Operations.STATUS.value]),
|
||||
constants.ROUTERS: Resource(constants.ROUTERS,
|
||||
[Operations.NSX_RECREATE.value,
|
||||
Operations.NSX_REDISTRIBURE.value,
|
||||
Operations.NSX_REDISTRIBUTE.value,
|
||||
Operations.MIGRATE_VDR_DHCP.value,
|
||||
Operations.NSX_UPDATE_FW.value]),
|
||||
constants.ORPHANED_VNICS: Resource(constants.ORPHANED_VNICS,
|
||||
@ -291,7 +291,8 @@ nsxp_resources = {
|
||||
constants.NSX_MIGRATE_T_P: Resource(constants.NSX_MIGRATE_T_P,
|
||||
[Operations.CLEAN_ALL.value]),
|
||||
constants.NSX_MIGRATE_V_T: Resource(constants.NSX_MIGRATE_V_T,
|
||||
[Operations.CLEAN_ALL.value]),
|
||||
[Operations.CLEAN_ALL.value,
|
||||
Operations.NSX_REDISTRIBUTE.value]),
|
||||
}
|
||||
|
||||
nsxv3_resources_names = list(nsxv3_resources.keys())
|
||||
|
Loading…
Reference in New Issue
Block a user