diff --git a/manifests/profile/base/neutron/agents/ovn.pp b/manifests/profile/base/neutron/agents/ovn.pp index c08deb677..8aa0fb189 100644 --- a/manifests/profile/base/neutron/agents/ovn.pp +++ b/manifests/profile/base/neutron/agents/ovn.pp @@ -17,7 +17,9 @@ # OVN Neutron agent profile for tripleo # # [*ovn_db_host*] -# (Optional) The IP-Address where OVN DBs are listening. +# (Optional) The IP-Address where OVN DBs are listening. If passed a list it +# will construct a comma separated string like +# protocol:ip1:port,protocol:ip2:port. # Defaults to hiera('ovn_dbs_vip') # # [*ovn_sbdb_port*] @@ -51,8 +53,14 @@ class tripleo::profile::base::neutron::agents::ovn ( $ovn_chassis_mac_map = hiera('ovn_chassis_mac_map', undef), ) { if $step >= 4 { + if is_string($ovn_db_host) { + $ovn_remote_real = join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_sbdb_port}"], ':') + } elsif is_array($ovn_db_host) { + $ovn_remote_real = join($ovn_db_host.map |$i| { "${protocol}:${normalize_ip_for_uri($i)}:${ovn_sbdb_port}" }, ',') + } + class { 'ovn::controller': - ovn_remote => join([$protocol, normalize_ip_for_uri($ovn_db_host), "${ovn_sbdb_port}"], ':'), + ovn_remote => $ovn_remote_real, enable_ovn_match_northd => true, ovn_chassis_mac_map => $ovn_chassis_mac_map, } diff --git a/manifests/profile/base/neutron/ovn_metadata.pp b/manifests/profile/base/neutron/ovn_metadata.pp index 2e02506d4..9c7c91eff 100644 --- a/manifests/profile/base/neutron/ovn_metadata.pp +++ b/manifests/profile/base/neutron/ovn_metadata.pp @@ -19,7 +19,8 @@ # === Parameters # # [*ovn_db_host*] -# The IP-Address where OVN DBs are listening. +# The IP-Address where OVN DBs are listening. If passed a list it will construct +# a comma separated string like protocol:ip1:port,protocol:ip2:port. # Defaults to hiera('ovn_dbs_vip') # # [*ovn_sb_port*] @@ -65,8 +66,15 @@ class tripleo::profile::base::neutron::ovn_metadata ( ) { if $step >= 4 { include tripleo::profile::base::neutron + + if is_string($ovn_db_host) { + $ovn_sb_connection_real = join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_sb_port}"], ':') + } elsif is_array($ovn_db_host) { + $ovn_sb_connection_real = join($ovn_db_host.map |$i| { "${protocol}:${normalize_ip_for_uri($i)}:${ovn_sb_port}" }, ',') + } + class { 'neutron::agents::ovn_metadata': - ovn_sb_connection => join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_sb_port}"], ':'), + ovn_sb_connection => $ovn_sb_connection_real, ovn_sb_private_key => $ovn_sb_private_key, ovn_sb_certificate => $ovn_sb_certificate, ovn_sb_ca_cert => $ovn_sb_ca_cert, diff --git a/manifests/profile/base/neutron/plugins/ml2/ovn.pp b/manifests/profile/base/neutron/plugins/ml2/ovn.pp index 7398e17de..bd7cd6fdc 100644 --- a/manifests/profile/base/neutron/plugins/ml2/ovn.pp +++ b/manifests/profile/base/neutron/plugins/ml2/ovn.pp @@ -17,7 +17,8 @@ # OVN Neutron ML2 profile for tripleo # # [*ovn_db_host*] -# The IP-Address where OVN DBs are listening. +# The IP-Address where OVN DBs are listening. If passed a list it will construct +# a comma separated string like protocol:ip1:port,protocol:ip2:port. # Defaults to hiera('ovn_dbs_vip') # # [*ovn_nb_port*] @@ -79,9 +80,16 @@ class tripleo::profile::base::neutron::plugins::ml2::ovn ( $step = Integer(hiera('step')) ) { if $step >= 4 { + if is_string($ovn_db_host) { + $ovn_nb_connection_real = join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_nb_port}"], ':') + $ovn_sb_connection_real = join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_sb_port}"], ':') + } elsif is_array($ovn_db_host) { + $ovn_nb_connection_real = join($ovn_db_host.map |$i| { "${protocol}:${normalize_ip_for_uri($i)}:${ovn_nb_port}" }, ',') + $ovn_sb_connection_real = join($ovn_db_host.map |$i| { "${protocol}:${normalize_ip_for_uri($i)}:${ovn_sb_port}" }, ',') + } class { 'neutron::plugins::ml2::ovn': - ovn_nb_connection => join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_nb_port}"], ':'), - ovn_sb_connection => join(["${protocol}", normalize_ip_for_uri($ovn_db_host), "${ovn_sb_port}"], ':'), + ovn_nb_connection => $ovn_nb_connection_real, + ovn_sb_connection => $ovn_sb_connection_real, ovn_nb_private_key => $ovn_nb_private_key, ovn_nb_certificate => $ovn_nb_certificate, ovn_nb_ca_cert => $ovn_nb_ca_cert,