diff --git a/packstack/puppet/modules/packstack/manifests/neutron/ml2.pp b/packstack/puppet/modules/packstack/manifests/neutron/ml2.pp index a69d66428..ae9d16513 100644 --- a/packstack/puppet/modules/packstack/manifests/neutron/ml2.pp +++ b/packstack/puppet/modules/packstack/manifests/neutron/ml2.pp @@ -26,6 +26,7 @@ class packstack::neutron::ml2 () class {'::neutron::plugins::ml2::ovn': ovn_nb_connection => "tcp:${hiera('CONFIG_CONTROLLER_HOST')}:6641", ovn_sb_connection => "tcp:${hiera('CONFIG_CONTROLLER_HOST')}:6642", + ovn_metadata_enabled => true, } } diff --git a/packstack/puppet/modules/packstack/manifests/neutron/ovn_metadata.pp b/packstack/puppet/modules/packstack/manifests/neutron/ovn_metadata.pp new file mode 100644 index 000000000..55c70bb92 --- /dev/null +++ b/packstack/puppet/modules/packstack/manifests/neutron/ovn_metadata.pp @@ -0,0 +1,13 @@ +class packstack::neutron::ovn_metadata () +{ + $ovn_southd = "tcp:${hiera('CONFIG_CONTROLLER_HOST')}:6642" + + class { '::neutron::agents::ovn_metadata': + ovn_sb_connection => $ovn_southd, + shared_secret => hiera('CONFIG_NEUTRON_METADATA_PW'), + metadata_ip => force_ip(hiera('CONFIG_KEYSTONE_HOST_URL')), + debug => hiera('CONFIG_DEBUG_MODE'), + metadata_workers => hiera('CONFIG_SERVICE_WORKERS'), + } + Service<| title == 'controller' |> -> Service<| title == 'ovn-metadata' |> +} diff --git a/packstack/puppet/modules/packstack/manifests/nova/compute.pp b/packstack/puppet/modules/packstack/manifests/nova/compute.pp index fa956c269..368c68def 100644 --- a/packstack/puppet/modules/packstack/manifests/nova/compute.pp +++ b/packstack/puppet/modules/packstack/manifests/nova/compute.pp @@ -21,7 +21,7 @@ class packstack::nova::compute () group => root, require => Package['openstack-nova-migration'], } - + $key_type = hiera('NOVA_MIGRATION_KEY_TYPE') $key_content = hiera('NOVA_MIGRATION_KEY_PUBLIC') @@ -72,13 +72,6 @@ class packstack::nova::compute () $instance_usage_audit_period = 'month' } - # OVN neutron plugin doesn't support metadata - if hiera('CONFIG_NEUTRON_L2_AGENT') == 'ovn' { - $force_config_drive = true - } else { - $force_config_drive = false - } - class { '::nova::compute': enabled => true, vncproxy_host => hiera('CONFIG_KEYSTONE_HOST_URL'), @@ -87,7 +80,7 @@ class packstack::nova::compute () instance_usage_audit => $instance_usage_audit, instance_usage_audit_period => $instance_usage_audit_period, allow_resize_to_same_host => hiera('CONFIG_NOVA_ALLOW_RESIZE_TO_SAME'), - force_config_drive => $force_config_drive + force_config_drive => false, } class { '::nova::placement': diff --git a/packstack/puppet/modules/packstack/manifests/provision/tempest.pp b/packstack/puppet/modules/packstack/manifests/provision/tempest.pp index f050f85c6..0d09b3451 100644 --- a/packstack/puppet/modules/packstack/manifests/provision/tempest.pp +++ b/packstack/puppet/modules/packstack/manifests/provision/tempest.pp @@ -96,23 +96,12 @@ class packstack::provision::tempest () $swift_available = str2bool(hiera('CONFIG_SWIFT_INSTALL')) $configure_tempest = str2bool(hiera('CONFIG_PROVISION_TEMPEST')) - # Metadata service is not supported with OVN plugin - # Some API extensions are not enabled by OVN plugin + # Some API extensions as l3_agent_scheduler are not enabled by OVN plugin $l2_agent = hiera('CONFIG_NEUTRON_L2_AGENT') if $l2_agent == 'ovn' { - $neutron_api_extensions = 'ext-gw-mode,binding,agent,dhcp_agent_scheduler,external-net,quotas,provider,extraroute,router,extra_dhcp_opt,allowed-address-pairs,security-group' - # In last cirros version 0.3.5 there is an issue to use metadata from configdrive which make tempest to fail validation in some jobs. This is fixed in master - # but until a new version of cirros is published we have to disable run_validations. Note that connectivity validation is alwasys done by tempest even with - # run_ssh to false, but it doesn't do additional validation. - $run_ssh = false - tempest_config { 'compute-feature-enabled/metadata_service': - value => 'False', - path => "${tempest_workspace}/etc/tempest.conf", - } + $neutron_api_extensions = 'ext-gw-mode,binding,agent,dhcp_agent_scheduler,external-net,quotas,provider,extraroute,router,extra_dhcp_opt,allowed-address-pairs,security-group,trunk' } else { $neutron_api_extensions = undef - # clients should be able to ssh to instances - $run_ssh = true } class { '::tempest': @@ -141,7 +130,7 @@ class packstack::provision::tempest () image_name_alt => $image_name_alt, image_name => $uec_image_name, image_ssh_user => $image_ssh_user, - run_ssh => $run_ssh, + run_ssh => true, log_file => $log_file, neutron_available => $neutron_available, nova_available => $nova_available, diff --git a/packstack/puppet/templates/compute.pp b/packstack/puppet/templates/compute.pp index 081d78728..5d408e5ae 100644 --- a/packstack/puppet/templates/compute.pp +++ b/packstack/puppet/templates/compute.pp @@ -48,7 +48,9 @@ if hiera('CONFIG_NEUTRON_INSTALL') == 'y' { case hiera('CONFIG_NEUTRON_L2_AGENT') { 'openvswitch': { include '::packstack::neutron::ovs_agent' } 'linuxbridge': { include '::packstack::neutron::lb_agent' } - 'ovn': { include '::packstack::neutron::ovn_agent' } + 'ovn': { include '::packstack::neutron::ovn_agent' + include '::packstack::neutron::ovn_metadata' + } default: { include '::packstack::neutron::ovs_agent' } } include '::packstack::neutron::bridge'