diff --git a/ci/environments/scenario012-multinode-containers.yaml b/ci/environments/scenario012-multinode-containers.yaml index ec7c8ecc90..4b646988a7 100644 --- a/ci/environments/scenario012-multinode-containers.yaml +++ b/ci/environments/scenario012-multinode-containers.yaml @@ -77,6 +77,7 @@ parameter_defaults: NeutronTypeDrivers: local,vxlan,vlan,flat IronicDefaultNetworkInterface: neutron IronicAutomatedClean: false + IronicApiMaxRetries: 180 NeutronFlatNetworks: datacentre NeutronNetworkVLANRanges: 'datacentre:500:599,tenant:300:399' ML2HostConfigs: { "net-ans-br": { "ansible_network_os": "openvswitch", "ansible_host": "127.0.0.1", "ansible_user": "root", "ansible_ssh_private_key_file": "/etc/puppet/ci-key"}} diff --git a/ci/environments/scenario012-standalone.yaml b/ci/environments/scenario012-standalone.yaml index 8b457f0abb..95be38854b 100644 --- a/ci/environments/scenario012-standalone.yaml +++ b/ci/environments/scenario012-standalone.yaml @@ -34,6 +34,7 @@ parameter_defaults: NeutronMechanismDrivers: ovn,ansible NeutronNetworkType: vlan NeutronTypeDrivers: local,geneve,vlan,flat + IronicApiMaxRetries: 180 IronicDefaultNetworkInterface: neutron IronicAutomatedClean: false NeutronFlatNetworks: datacentre diff --git a/deployment/nova/nova-ironic-container-puppet.yaml b/deployment/nova/nova-ironic-container-puppet.yaml index 4989b80ddc..d9a2397532 100644 --- a/deployment/nova/nova-ironic-container-puppet.yaml +++ b/deployment/nova/nova-ironic-container-puppet.yaml @@ -50,6 +50,10 @@ parameters: type: boolean tags: - role_specific + IronicApiMaxRetries: + description: The number of times to retry when a request conflicts. If set to 0, only try once, no retries. + type: number + default: -1 conditions: @@ -59,6 +63,8 @@ conditions: - equals: [{get_param: NovaNfsEnabled}, true] - equals: [{get_param: [RoleParameters, NovaNfsEnabled]}, ''] - equals: [{get_param: [RoleParameters, NovaNfsEnabled]}, true] + ironic_api_max_retry_cond: + equals: [{get_param: IronicApiMaxRetries}, -1] resources: @@ -104,6 +110,11 @@ outputs: nova::ironic::common::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]} nova::ironic::common::username: 'ironic' nova::ironic::common::api_endpoint: {get_param: [EndpointMap, IronicInternal, uri]} + - if: + - ironic_api_max_retry_cond + - {} + - nova::ironic::common::api_max_retries: + get_param: IronicApiMaxRetries puppet_config: config_volume: nova puppet_tags: nova_config,nova_paste_api_ini diff --git a/environments/services/neutron-ml2-ansible.yaml b/environments/services/neutron-ml2-ansible.yaml index e40f047893..109ad7b72c 100644 --- a/environments/services/neutron-ml2-ansible.yaml +++ b/environments/services/neutron-ml2-ansible.yaml @@ -2,6 +2,7 @@ resource_registry: OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2Ansible parameter_defaults: + IronicApiMaxRetries: 180 IronicDefaultNetworkInterface: neutron NeutronMechanismDrivers: openvswitch,ansible NeutronTypeDrivers: local,vxlan,vlan,flat