Replace params by hieradata

The params class is the legacy approach to define OS/version specific
values. This replaces the params class by the module hieradata
following the recent standard.

Depends-on: https://review.opendev.org/c/openstack/puppet-vswitch/+/886112
Change-Id: I8d01236c04cf2b61f1c1bf39ecf54ca0a67a33a9
This commit is contained in:
Takashi Kajinami 2023-10-15 17:12:41 +09:00
parent e6d918f616
commit 02512cccbc
8 changed files with 90 additions and 62 deletions

9
data/Debian-family.yaml Normal file
View File

@ -0,0 +1,9 @@
---
ovn::controller::package_name: 'ovn-host'
ovn::controller::service_name: 'ovn-host'
ovn::controller::config_file_path: '/etc/default/ovn-host'
ovn::controller::config_option_name: 'OVN_CTL_OPTS'
ovn::northd::package_name: 'ovn-central'
ovn::northd::service_name: 'ovn-central'
ovn::northd::config_file_path: '/etc/default/ovn-central'
ovn::northd::config_option_name: 'OVN_CTL_OPTS'

9
data/RedHat-family.yaml Normal file
View File

@ -0,0 +1,9 @@
---
ovn::controller::package_name: 'openvswitch-ovn-host'
ovn::controller::service_name: 'ovn-controller'
ovn::controller::config_file_path: '/etc/sysconfig/ovn-controller'
ovn::controller::config_option_name: 'OVN_CONTROLLER_OPTS'
ovn::northd::package_name: 'openvswitch-ovn-central'
ovn::northd::service_name: 'ovn-northd'
ovn::northd::config_file_path: '/etc/sysconfig/ovn-northd'
ovn::northd::config_option_name: 'OVN_NORTHD_OPTS'

16
hiera.yaml Normal file
View File

@ -0,0 +1,16 @@
---
version: 5
defaults:
datadir: 'data'
data_hash: 'yaml_data'
hierarchy:
- name: 'Major operating system version'
path: '%{facts.os.name}-%{facts.os.release.major}.yaml'
- name: 'Operating system'
path: '%{facts.os.release.major}.yaml'
- name: 'Major OS Family version'
path: '%{facts.os.family}-%{facts.os.release.major}.yaml'
- name: 'OS Family'
path: '%{facts.os.family}-family.yaml'
- name: 'Common'
path: 'common.yaml'

View File

@ -5,6 +5,19 @@
#
# === Parameters:
#
# [*package_name*]
# (required) Name of ovn-controller package.
#
# [*service_name*]
# (required) Name of ovn-controller service.
#
# [*config_file_path*]
# (required) File path of the ovn-controller config file
#
# [*config_option_name*]
# (required) Name of the environment variable to customize options to launch
# the ovn-controller service.
#
# [*ovn_remote*]
# (Required) URL of the remote ovn southbound db.
# Example: 'tcp:127.0.0.1:6642'
@ -127,6 +140,10 @@
# Defaults to []
#
class ovn::controller(
String[1] $service_name,
String[1] $package_name,
Stdlib::Absolutepath $config_file_path,
String[1] $config_option_name,
String $ovn_remote,
String $ovn_encap_ip,
String $package_ensure = 'present',
@ -154,8 +171,6 @@ class ovn::controller(
Array[String[1]] $ovn_controller_extra_opts = [],
) {
include ovn::params
if $enable_dpdk and ! $datapath_type {
fail('Datapath type must be set when DPDK is enabled')
}
@ -170,15 +185,17 @@ class ovn::controller(
service { 'controller':
ensure => true,
name => $::ovn::params::ovn_controller_service_name,
name => $service_name,
enable => true,
subscribe => Vs_config['external_ids:ovn-remote']
subscribe => Vs_config['external_ids:ovn-remote'],
tag => 'ovn',
}
package { $::ovn::params::ovn_controller_package_name:
package { 'ovn-controller':
ensure => $package_ensure,
notify => Service['controller'],
name => $::ovn::params::ovn_controller_package_name,
name => $package_name,
tag => 'ovn',
}
if $ovn_controller_ssl_key and $ovn_controller_ssl_cert and $ovn_controller_ssl_ca_cert {
@ -196,9 +213,9 @@ class ovn::controller(
$ovn_controller_opts = join($ovn_controller_ssl_opts + $ovn_controller_extra_opts, ' ')
augeas { 'config-ovn-controller':
context => $::ovn::params::ovn_controller_context,
changes => "set ${$::ovn::params::ovn_controller_option_name} '\"${ovn_controller_opts}\"'",
require => Package[$::ovn::params::ovn_controller_package_name],
context => "/files${config_file_path}",
changes => "set ${config_option_name} '\"${ovn_controller_opts}\"'",
require => Package['ovn-controller'],
notify => Service['controller'],
}

View File

@ -3,8 +3,21 @@
#
# installs ovn package starts the ovn-northd service
#
# [*package_name*]
# (required) Name of ovn-northd package.
#
# [*service_name*]
# (required) Name of ovn-northd service.
#
# [*config_file_path*]
# (required) File path of the ovn-controller config file
#
# [*config_option_name*]
# (required) Name of the environment variable to customize options to launch
# the ovn-controller service.
#
# [*package_ensure*]
# (Optional) State of the openvswitch package
# (Optional) State of the ovn-northd package
# Defaults to 'present'.
#
# [*dbs_listen_ip*]
@ -68,6 +81,10 @@
# Defaults to []
#
class ovn::northd(
String[1] $package_name,
String[1] $service_name,
Stdlib::Absolutepath $config_file_path,
String[1] $config_option_name,
String $package_ensure = 'present',
String $dbs_listen_ip = '0.0.0.0',
Optional[String] $dbs_cluster_local_addr = undef,
@ -85,7 +102,6 @@ class ovn::northd(
Optional[Stdlib::Absolutepath] $ovn_sb_db_ssl_ca_cert = undef,
Array[String] $ovn_northd_extra_opts = [],
) {
include ovn::params
include vswitch::ovs
$dbs_listen_ip_real = normalize_ip_for_uri($dbs_listen_ip)
@ -212,24 +228,26 @@ class ovn::northd(
' ')
augeas { 'config-ovn-northd':
context => $::ovn::params::ovn_northd_context,
changes => "set ${$::ovn::params::ovn_northd_option_name} '\"${ovn_northd_opts}\"'",
require => Package[$::ovn::params::ovn_northd_package_name],
context => "/files${config_file_path}",
changes => "set ${config_option_name} '\"${ovn_northd_opts}\"'",
require => Package['ovn-northd'],
before => Service['northd'],
}
service { 'northd':
ensure => true,
enable => true,
name => $::ovn::params::ovn_northd_service_name,
require => Service['openvswitch']
name => $service_name,
require => Service['openvswitch'],
tag => 'ovn',
}
package { $::ovn::params::ovn_northd_package_name:
package { 'ovn-northd':
ensure => $package_ensure,
name => $::ovn::params::ovn_northd_package_name,
name => $package_name,
notify => Service['northd'],
require => Package[$::vswitch::params::ovs_package_name]
require => Package['openvswitch'],
tag => 'ovn',
}
# NOTE(tkajinam): We have to escapte [ and ] otherwise egrep intereprets

View File

@ -1,33 +0,0 @@
# ovn params
# == Class: ovn::params
#
# This class defines the variable like
#
class ovn::params {
include openstacklib::defaults
case $facts['os']['family'] {
'RedHat': {
$ovn_northd_package_name = 'openvswitch-ovn-central'
$ovn_controller_package_name = 'openvswitch-ovn-host'
$ovn_northd_service_name = 'ovn-northd'
$ovn_northd_context = '/files/etc/sysconfig/ovn-northd'
$ovn_northd_option_name = 'OVN_NORTHD_OPTS'
$ovn_controller_service_name = 'ovn-controller'
$ovn_controller_context = '/files/etc/sysconfig/ovn-controller'
$ovn_controller_option_name = 'OVN_CONTROLLER_OPTS'
}
'Debian': {
$ovn_northd_package_name = 'ovn-central'
$ovn_controller_package_name = 'ovn-host'
$ovn_northd_service_name = 'ovn-central'
$ovn_northd_context = '/files/etc/default/ovn-central'
$ovn_northd_option_name = 'OVN_CTL_OPTS'
$ovn_controller_service_name = 'ovn-host'
$ovn_controller_context = '/files/etc/default/ovn-host'
$ovn_controller_option_name = 'OVN_CTL_OPTS'
}
default: {
fail " Osfamily ${facts['os']['family']} not supported yet"
}
}
}

View File

@ -10,10 +10,6 @@ describe 'ovn::controller' do
end
shared_examples_for 'ovn controller' do
it 'includes params' do
is_expected.to contain_class('ovn::params')
end
it 'includes controller' do
is_expected.to contain_class('ovn::controller')
end
@ -27,7 +23,7 @@ describe 'ovn::controller' do
end
it 'installs controller package' do
is_expected.to contain_package(platform_params[:ovn_controller_package_name]).with(
is_expected.to contain_package('ovn-controller').with(
:ensure => 'present',
:name => platform_params[:ovn_controller_package_name],
:notify => 'Service[controller]'

View File

@ -224,10 +224,6 @@ describe 'ovn::northd' do
end
shared_examples_for 'ovn northd' do
it 'includes params' do
is_expected.to contain_class('ovn::params')
end
it 'starts northd' do
is_expected.to contain_service('northd').with(
:ensure => true,
@ -237,7 +233,7 @@ describe 'ovn::northd' do
end
it 'installs package' do
is_expected.to contain_package(platform_params[:ovn_northd_package_name]).with(
is_expected.to contain_package('ovn-northd').with(
:ensure => 'present',
:name => platform_params[:ovn_northd_package_name],
:notify => 'Service[northd]'