Merge "node export provisioned - get role_data from stack" into stable/wallaby
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user