diff --git a/playbooks/library/os_ironic_facts.py b/playbooks/library/os_ironic_facts.py index d60bf0d4f..fc2c74e49 100644 --- a/playbooks/library/os_ironic_facts.py +++ b/playbooks/library/os_ironic_facts.py @@ -82,6 +82,7 @@ def main(): name=dict(required=False), mac=dict(required=False), ironic_url=dict(required=False), + skip_items=dict(required=False, type='list'), ) module_kwargs = openstack_module_kwargs() module = AnsibleModule(argument_spec, **module_kwargs) @@ -114,13 +115,18 @@ def main(): if server: facts = dict(server) new_driver_info = dict() - # Rebuild driver_info to remove any password - # fields as they can be masked. + # Rebuild driver_info to remove any password values + # as they will be masked. for key, value in six.iteritems(facts['driver_info']): if 'password' not in key: new_driver_info[key] = value if new_driver_info: facts['driver_info'] = new_driver_info + + for item in module.params['skip_items']: + if item in facts: + del facts[item] + module.exit_json(changed=False, ansible_facts=facts) else: diff --git a/playbooks/roles/bifrost-configdrives-dynamic/tasks/update_facts_from_ironic.yaml b/playbooks/roles/bifrost-configdrives-dynamic/tasks/update_facts_from_ironic.yaml new file mode 100644 index 000000000..4a650355c --- /dev/null +++ b/playbooks/roles/bifrost-configdrives-dynamic/tasks/update_facts_from_ironic.yaml @@ -0,0 +1,26 @@ +# Copyright (c) 2015 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +# Note(TheJulia): This step allows us to collect things that +# ironic knows, that we do not know potentially, such as an UUID +# should a node have been created without one. +- name: "Collecting node facts" + os_ironic_facts: + auth_type: None + auth: None + ironic_url: "{{ ironic_url }}" + uuid: "{{ uuid | default() }}" + name: "{{ name | default() }}" + skip_items: + - instance_info