Config drive spec uses network_data.json

The filename was incorrectly implemented as network_info.json instead
of network_data.json. Support for reading the correct file already
exists in glean. As such, we need to write both files for user
compatability in the short term, and remove the second file at a
later point in time.

A release note has been added detailing this as well.

Co-Authored-By: Julia Kreger <juliaashleykreger@gmail.com>
Change-Id: I4150f86fbc141dcd6fd12094acab1ca43d76910c
This commit is contained in:
Clint Byrum 2016-05-12 20:47:55 -07:00 committed by Julia Kreger
parent b4b0ff51ba
commit 33d79b09a9
7 changed files with 39 additions and 9 deletions

View File

@ -448,7 +448,7 @@ Deployment and configuration of operating systems
By default, Bifrost deploys a configuration drive which includes the user SSH By default, Bifrost deploys a configuration drive which includes the user SSH
public key, hostname, and the network configuration in the form of public key, hostname, and the network configuration in the form of
network_info.json that can be read/parsed by the network_data.json that can be read/parsed by the
`glean <https://github.com/openstack-infra/glean>`_ utility. This allows for `glean <https://github.com/openstack-infra/glean>`_ utility. This allows for
the deployment of Ubuntu, CentOS, or Fedora "tenants" on baremetal. This file the deployment of Ubuntu, CentOS, or Fedora "tenants" on baremetal. This file
format is not yet supported by Cloud-Init, however it is on track for format is not yet supported by Cloud-Init, however it is on track for

View File

@ -34,12 +34,12 @@ def main():
vlan_id=dict(required=False), vlan_id=dict(required=False),
network_mtu=dict(required=False), network_mtu=dict(required=False),
nics=dict(required=False, type='list'), nics=dict(required=False, type='list'),
node_network_info=dict(required=False, type='dict') node_network_data=dict(required=False, type='dict')
) )
module = AnsibleModule(argument_spec) module = AnsibleModule(argument_spec)
network_metadata = module.params['node_network_info'] network_metadata = module.params['node_network_data']
if not network_metadata: if not network_metadata:
links = [] links = []
networks = [] networks = []

View File

@ -53,8 +53,8 @@ write_interfaces_file: Legacy option to write an debian style network
interfaces configuration file. This is required for interfaces configuration file. This is required for
deployment where simple-init cannot be used, in deployment where simple-init cannot be used, in
particular when using Cirros. particular when using Cirros.
node_network_info: Optional: If defined, the contents are written out to the node_network_data: Optional: If defined, the contents are written out to the
network_info.json file, effectively allowing a user to network_data.json file, effectively allowing a user to
override the network configuration contents based on override the network configuration contents based on
the inventory data. the inventory data.

View File

@ -24,3 +24,6 @@ ironic_url: "http://localhost:6385/"
# Default ISO generation utility # Default ISO generation utility
iso_gen_utility: "mkisofs" iso_gen_utility: "mkisofs"
# Deprecated, remove in Queens release
node_network_info: {}

View File

@ -45,7 +45,7 @@
src: openstack_meta_data.json.j2 src: openstack_meta_data.json.j2
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/meta_data.json" dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/meta_data.json"
- name: "Generate network_info" - name: "Generate network_data"
network_metadata: network_metadata:
ipv4_address: "{{ ipv4_address | default('') }}" ipv4_address: "{{ ipv4_address | default('') }}"
ipv4_gateway: "{{ ipv4_gateway | default('') }}" ipv4_gateway: "{{ ipv4_gateway | default('') }}"
@ -55,12 +55,22 @@
vlan_id: "{{ vlan_id | default('') }}" vlan_id: "{{ vlan_id | default('') }}"
network_mtu: "{{ network_mtu | default('1500') }}" network_mtu: "{{ network_mtu | default('1500') }}"
nics: "{{ nics | default(omit) }}" nics: "{{ nics | default(omit) }}"
node_network_info: "{{ node_network_info | default({}) }}" node_network_data: "{{ node_network_data | default(node_network_info) }}"
when: addressing_mode is undefined or "dhcp" not in addressing_mode when: addressing_mode is undefined or "dhcp" not in addressing_mode
- name: "Place network info template in each openstack/latest folder" - name: "Place network data template in each openstack/latest folder"
template: template:
src: network_info.json.j2 src: network_data.json.j2
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/network_data.json"
when: addressing_mode is undefined or "dhcp" not in addressing_mode
# TODO(TheJulia): Deprecation removal of the old network_info file name
# should likely take place after an elongated deprecation cycle.
# Begind eprecated in the Ocata release suggests Queens as the point
# in which we should remove it.
- name: "Place deprecated network info file location in each openstack/latest folder"
template:
src: network_data.json.j2
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/network_info.json" dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/network_info.json"
when: addressing_mode is undefined or "dhcp" not in addressing_mode when: addressing_mode is undefined or "dhcp" not in addressing_mode

View File

@ -0,0 +1,17 @@
---
deprecations:
- The ``node_network_info`` parameter has been deperecated
in favor for the ``node_network_data`` parameter as the
relaated configurtion drive ``network_info.json`` file was
misnamed origionally, and should have been named
``network_data.json``.
Support for the node_network_info, and the continued
write-out of the network_info.json file in configuration
drives will be removed in the Queens cycle.
fixes:
- When support for passing configuration drive data to the
nodes was originally created, the file was accidently named
incorrectly as ``network_info.json``. The correct filename
is ``network_data.json``. Both files will now be written
until support for writing ``network_info.json`` is removed
in the Queens cycle.