Description of problem: In our guide, OVNAvailabilityZone parameter can configure as a role specific parameter like: ~~~ parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1' ControllerCentralParameters: OVNCMSOptions: 'enable-chassis-as-gw' OVNAvailabilityZone: 'az-central,az-datacenter2,az-datacenter1' NetworkerDatacenter1Parameters: OVNCMSOptions: 'enable-chassis-as-gw' OVNAvailabilityZone: 'az-datacenter1' NetworkerDatacenter2Parameters: OVNCMSOptions: 'enable-chassis-as-gw' OVNAvailabilityZone: 'az-datacenter2' ~~~ However, this configuration doesn't reflect the value to OVS option. Version-Release number of selected component (if applicable): openstack-tripleo-heat-templates-14.3.1-0.20221208160327.feca772.el9ost.noarch How reproducible: Everytime when a user run overcloud deploy. Steps to Reproduce: 1. Set the role specific configuration of OVNAvailabilityZone. 2. Run overcloud deploy command with the template. 3. Check the OVS option on the configured node like: ovs-vsctl get Open_vSwitch . external-ids Actual results: The assigned value is not reflected. Expected results: The assigned value is reflected Additional info: If you assign a value to OVNAvailabilityZone parameter, hieradata doesn't contain the value of OVNAvailabilityZone at "ovn::controller::ovn_cms_options".
It seems the OVNAvailabilityZone parameter is declared as a role-specific parameter but it lacks actual implementation to support role-specific definitions. Here we resolve OVNAvailabilityZone as a heat template parameter and this does not allow override via RoleParameter. https://github.com/openstack/tripleo-heat-templates/blob/stable/wallaby/deployment/ovn/ovn-controller-container-puppet.yaml#L233 Furthermore, the condition to detect whether the tht parameter is set does not honor role specific parameter and checks only the base one. https://github.com/openstack/tripleo-heat-templates/blob/stable/wallaby/deployment/ovn/ovn-controller-container-puppet.yaml#L208