Support ocata release of ironic

In the Ocata release, the physical_network field of ports did not exist.
The safest thing to do is to simply ignore it in this case.

It is also possible for the local_link_connection fields to not have switch_id,
switch_info or port_id attributes, so we now use .get(attr) to avoid an
attribute lookup error.

Change-Id: Ib4829dbd89fcedc121f493d6af76702421b399f7
TrivialFix
This commit is contained in:
Mark Goddard 2018-12-18 15:30:32 +00:00
parent 60ffdc13ed
commit 1a0d953737
2 changed files with 20 additions and 4 deletions

View File

@ -26,6 +26,20 @@
until: result is success until: result is success
retries: 3 retries: 3
- name: Detect ironic API version
command: >-
{{ ironic_virtualenv_path }}/bin/openstack
--os-baremetal-api-version 1.34
baremetal node list
register: api_version_result
changed_when: false
failed_when: false
# This is used in port.yml.
- name: Set a fact about whether Ironic supports physical network awareness
set_fact:
supports_port_physnet: "{{ api_version_result.rc == 0 }}"
# This command will return the UUIDs, regardless of whether # This command will return the UUIDs, regardless of whether
# ironic_deploy_kernel and ironic_deploy_ramdisk are image UUIDs or names. # ironic_deploy_kernel and ironic_deploy_ramdisk are image UUIDs or names.
- name: Get OpenStack deployment image UUIDs - name: Get OpenStack deployment image UUIDs

View File

@ -40,12 +40,14 @@
command: >- command: >-
'{{ ironic_virtualenv_path }}/bin/openstack' baremetal port set '{{ ironic_virtualenv_path }}/bin/openstack' baremetal port set
{{ uuid.stdout }} {{ uuid.stdout }}
{% if supports_port_physnet %}
--physical-network '{{ physnet }}' --physical-network '{{ physnet }}'
{% endif %}
--local-link-connection switch_id='{{ switch_id }}' --local-link-connection switch_id='{{ switch_id }}'
--local-link-connection switch_info='{{ bridge }}' --local-link-connection switch_info='{{ bridge }}'
--local-link-connection port_id='{{ port_id }}' --local-link-connection port_id='{{ port_id }}'
when: >- when: >-
port_attributes.physical_network != physnet or (supports_port_physnet and port_attributes.physical_network != physnet) or
port_attributes.local_link_connection.switch_id != switch_id or port_attributes.local_link_connection.get('switch_id') != switch_id or
port_attributes.local_link_connection.switch_info != switch_info or port_attributes.local_link_connection.get('switch_info') != switch_info or
port_attributes.local_link_connection.port_id != port_id port_attributes.local_link_connection.get('port_id') != port_id