Merge "node export provisioned - get role_data from stack" into stable/wallaby

This commit is contained in:
Zuul
2022-07-01 01:48:35 +00:00
committed by Gerrit Code Review
2 changed files with 35 additions and 17 deletions

View File

@@ -747,6 +747,13 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
self.cmd = overcloud_node.ExtractProvisionedNode(self.app, None)
roles_data = [
{'name': 'Controller',
'default_route_networks': ['External'],
'networks_skip_config': ['Tenant']},
{'name': 'Compute'}
]
self.stack_dict = {
'parameters': {
'ComputeHostnameFormat': '%stackname%-novacompute-%index%',
@@ -755,6 +762,12 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
'ControllerNetworkConfigTemplate': 'templates/controller.j2'
},
'outputs': [{
'output_key': 'TripleoHeatTemplatesJinja2RenderingDataSources',
'output_value': {
'roles_data': roles_data,
'networks_data': {}
}
}, {
'output_key': 'AnsibleHostVarsMap',
'output_value': {
'Compute': [
@@ -885,12 +898,6 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
mode='w', delete=False, suffix='.yaml')
self.extract_file.close()
roles_data = [
{'name': 'Controller',
'default_route_networks': ['External'],
'networks_skip_config': ['Tenant']},
{'name': 'Compute'}
]
self.roles_file = tempfile.NamedTemporaryFile(
mode='w', delete=False, suffix='.yaml')
self.roles_file.write(yaml.safe_dump(roles_data))
@@ -906,12 +913,10 @@ class TestExtractProvisionedNode(test_utils.TestCommand):
self.baremetal.node.list.return_value = self.nodes
argslist = ['--roles-file', self.roles_file.name,
'--output', self.extract_file.name,
argslist = ['--output', self.extract_file.name,
'--yes']
self.app.command_options = argslist
verifylist = [('roles_file', self.roles_file.name),
('output', self.extract_file.name),
verifylist = [('output', self.extract_file.name),
('yes', True)]
parsed_args = self.check_parser(self.cmd,

View File

@@ -494,7 +494,7 @@ class ExtractProvisionedNode(command.Command):
help=_('Skip yes/no prompt for existing files '
'(assume yes).'))
parser.add_argument('--roles-file', '-r', dest='roles_file',
required=True,
required=False,
help=_('Role data definition file'))
return parser
@@ -525,15 +525,28 @@ class ExtractProvisionedNode(command.Command):
def take_action(self, parsed_args):
self.log.debug("take_action(%s)" % parsed_args)
roles_file = os.path.abspath(parsed_args.roles_file)
with open(roles_file, 'r') as fd:
role_data = yaml.safe_load(fd.read())
# Convert role_data to a dict
role_data = {x['name']: x for x in role_data}
self._setup_clients()
stack = oooutils.get_stack(self.orchestration_client,
parsed_args.stack)
tht_j2_sources = oooutils.get_stack_output_item(
stack, 'TripleoHeatTemplatesJinja2RenderingDataSources') or {}
if parsed_args.roles_file:
roles_file = os.path.abspath(parsed_args.roles_file)
with open(roles_file, 'r') as fd:
role_data = yaml.safe_load(fd.read())
else:
role_data = tht_j2_sources.get('roles_data')
if role_data is None:
raise oscexc.CommandError(
"Unable to extract. Role data not available in {} stack "
"output. Please provide the roles data for the deployed "
"stack by setting the --roles-data argument.".format(
parsed_args.stack))
# Convert role_data to a dict
role_data = {x['name']: x for x in role_data}
host_vars = oooutils.get_stack_output_item(
stack, 'AnsibleHostVarsMap') or {}
role_net_ip_map = oooutils.get_stack_output_item(