Files
7dc4722383f315d244a937a4a3e9382e5561dd4b
puppet-openstack-integration /manifests /tempest.pp
Takashi Kajinami 7dc4722383 tempest: Cap share API version
Due to pending migration to CentOS Stream 10 we are using old version
of manila in CI. Cap the maximum API version to avoid failure caused
by the newer (and unavailable) API version expected by manila-t-p.
Change-Id: I9f9b905111d5d23cf4604fb58966a8f3e39b3183
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
(cherry picked from commit 09ff119cd1)
2025年11月18日 13:18:17 +00:00

391 lines
12 KiB
Puppet

# Configure the Tempest service
#
# [*aodh*]
# (optional) Define if Aodh needs to be tested.
# Default to false.
#
# [*barbican*]
# (optional) Define if Barbican needs to be tested.
# Default to false.
#
# [*bgpvpn*]
# (optional) Define if BGPVPN needs to be tested.
# Default to false.
#
# [*ceilometer*]
# (optional) Define if Ceilometer needs to be tested.
# Default to false.
#
# [*cinder*]
# (optional) Define if Cinder needs to be tested.
# Default to false.
#
# [*cinder_backup*]
# (optional) Define if Cinder Backup needs to be tested.
# Default to false.
#
# [*cloudkitty*]
# (optional) Define if Cloudkitty needs to be tested.
# Default to false.
#
# [*designate*]
# (optional) Define if Designate needs to be tested.
# Default to false.
#
# [*glance*]
# (optional) Define if Glance needs to be tested.
# Default to true.
#
# [*gnocchi*]
# (optional) Define if Gnocchi needs to be tested.
# Default to false.
#
# [*heat*]
# (optional) Define if Heat needs to be tested.
# Default to false.
#
# [*horizon*]
# (optional) Define if Horizon needs to be tested.
# Default to false.
#
# [*ironic*]
# (optional) Define if Ironic needs to be tested.
# Default to false.
#
# [*ironic_inspector*]
# (optional) Define if Ironic-inspector needs to be tested.
# Default to false.
#
# [*l2gw*]
# (optional) Define if L2GW needs to be tested.
# Default to false.
#
# [*l2gw_switch*]
# (optional) Define a switch name for testing.
# Default to undef.
#
# [*dr*]
# (optional) Define if Neutron Dynamic routing needs to be tested.
# Default to false.
#
# [*magnum*]
# (optional) Define if Magmum needs to be tested.
# Default to false.
#
# [*manila*]
# (optional) Define if Manila needs to be tested.
# Default to false.
#
# [*mistral*]
# (optional) Define if Mistral needs to be tested.
# Default to false.
#
# [*neutron*]
# (optional) Define if Neutron needs to be tested.
# Default to true.
#
# [*nova*]
# (optional) Define if Nova needs to be tested.
# Default to true.
#
# [*octavia*]
# (optional) Define if Octavia needs to be tested.
# Default to false.
#
# [*swift*]
# (optional) Define if Swift needs to be tested.
# Default to false.
#
# [*trove*]
# (optional) Define if Trove needs to be tested.
# Default to false.
#
# [*vitrage*]
# (optional) Define if Vitrage needs to be tested.
# Default to false.
#
# [*fwaas*]
# (optional) Define if Neutron FWaaS needs to be tested.
# Default to false.
#
# [*vpnaas*]
# (optional) Define if Neutron VPNaaS needs to be tested.
# Default to false.
#
# [*taas*]
# (optional) Define if Neutron TaaS needs to be tested.
# Default to false.
#
# [*watcher*]
# (optional) Define if Watcher needs to be tested.
# Default to false.
#
# [*zaqar*]
# (optional) Define if Zaqar needs to be tested.
# Default to false.
#
# [*reseller_admin_role*]
# (optional) User role that has reseller admin.
# Defaults to ResellerAdmin
#
# [*attach_encrypted_volume*]
# (optional) Define if Encrypted Volumes need to be tested.
# Default to false.
#
# [*configure_images*]
# (optional) Define if images are configured for tempest.
# Default to true.
#
# [*configure_networks*]
# (optional) Define if networks are configured for tempest.
# Default to true.
#
# [*neutron_driver*]
# (optional) Neutron Driver to test
# Can be: openvswitch, linuxbridge or ovn.
# Defaults to 'openvswitch'.
#
# [*neutron_api_extensions*]
# (optional) Define list of neutron API extensions to test.
# The list is known to work with the repo; this reflects extensions enabled
# in neutron gate, for the most part (minus features not configured like
# trunk, dns-integration, qos, or port_security support)
#
# [*image_format*]
# (optional) Format of glance images to be created.
# Defaults to 'qcow2'
#
# [*share_protocol*]
# (optional) Protocol used in Manila shares
# Defaults to 'NFS'
#
class openstack_integration::tempest (
$aodh = false,
$barbican = false,
$bgpvpn = false,
$ceilometer = false,
$cinder = false,
$cinder_backup = false,
$cloudkitty = false,
$designate = false,
$glance = true,
$gnocchi = false,
$heat = false,
$horizon = false,
$ironic = false,
$ironic_inspector = false,
$l2gw = false,
$l2gw_switch = undef,
$dr = false,
$magnum = false,
$manila = false,
$mistral = false,
$neutron = true,
$nova = true,
$octavia = false,
$swift = false,
$trove = false,
$watcher = false,
$vitrage = false,
$fwaas = false,
$vpnaas = false,
$taas = false,
$zaqar = false,
$reseller_admin_role = 'ResellerAdmin',
$attach_encrypted_volume = false,
$configure_images = true,
$configure_networks = true,
$neutron_driver = 'openvswitch',
$neutron_api_extensions = undef,
$image_format = 'qcow2',
$share_protocol = 'NFS',
) {
include openstack_integration::config
include openstack_integration::params
if $neutron_api_extensions != undef {
$neutron_api_extensions_real = $neutron_api_extensions
} else {
$neutron_base_extensions = [
'address-scope',
'agent',
'allowed-address-pairs',
'auto-allocated-topology',
'availability_zone',
'binding',
'default-subnetpools',
'dns-domain-ports',
'dns-integration',
'ext-gw-mode',
'external-net',
'extra_dhcp_opt',
'extraroute',
'flavors',
'multi-provider',
'net-mtu',
'network-ip-availability',
'network_availability_zone',
'pagination',
'project-id',
'provider',
'quotas',
'rbac-policies',
'router',
'router_availability_zone',
'security-group',
'service-type',
'sorting',
'standard-attr-description',
'standard-attr-revisions',
'standard-attr-timestamp',
'subnet_allocation',
'tag',
'tag-ext',
]
if $neutron_driver == 'ovn' {
$neutron_agent_scheduler_extensions = []
$neutron_l3_extensions = []
$neutron_metering_extensions = []
} else {
$neutron_agent_scheduler_extensions = ['dhcp_agent_scheduler', 'l3_agent_scheduler']
$neutron_l3_extensions = ['dvr', 'l3-flavors', 'l3-ha']
$neutron_metering_extensions = $ceilometer ? {
true => ['metering'],
default => []
}
}
$neutron_l2gw_extensions = $l2gw ? {
true => ['l2-gateway', 'l2gateway-connection'],
default => []
}
$neutron_bgpvpn_extensions = $bgpvpn ? {
true => ['bgpvpn'],
default => [],
}
$neutron_fwaas_extensions = $fwaas ? {
true => ['fwaas_v2'],
default => [],
}
$neutron_vpnaas_extensions = $vpnaas ? {
true => ['vpnaas'],
default => [],
}
$neutron_taas_extensions = $taas ? {
true => ['taas', 'taas-vlan-filter'],
default => [],
}
$neutron_api_extensions_real = sort(
$neutron_base_extensions +
$neutron_agent_scheduler_extensions +
$neutron_l3_extensions +
$neutron_metering_extensions +
$neutron_l2gw_extensions +
$neutron_bgpvpn_extensions +
$neutron_fwaas_extensions +
$neutron_vpnaas_extensions +
$neutron_taas_extensions
)
}
$dashboard_url = $facts['os']['family'] ? {
'RedHat' => "${openstack_integration::config::base_url}/dashboard",
default => "${openstack_integration::config::base_url}/horizon"
}
$metric_backends = $gnocchi ? {
true => ['gnocchi'],
default => [],
}
class { 'tempest':
debug => true,
use_stderr => false,
log_file => 'tempest.log',
http_timeout => 120,
tempest_clone_owner => $facts['identity']['user'],
git_clone => false,
tempest_clone_path => '/tmp/openstack/tempest',
lock_path => '/tmp/openstack/tempest',
configure_images => $configure_images,
configure_networks => $configure_networks,
identity_uri_v3 => "${openstack_integration::config::keystone_auth_uri}/v3",
admin_username => 'admin',
admin_project_name => 'openstack',
admin_password => 'a_big_secret',
admin_domain_name => 'Default',
username => 'demo',
password => 'secrete',
project_name => 'demo',
user_domain_name => 'Default',
project_domain_name => 'Default',
tempest_roles => ['member', 'creator'], # needed to use barbican.
reseller_admin_role => $reseller_admin_role,
image_name => 'cirros',
image_name_alt => 'cirros_alt',
cinder_available => $cinder,
cinder_backup_available => $cinder_backup,
cloudkitty_available => $cloudkitty,
designate_available => $designate,
glance_available => $glance,
horizon_available => $horizon,
nova_available => $nova,
octavia_available => $octavia,
neutron_available => $neutron,
neutron_l2gw_available => $l2gw,
barbican_available => $barbican,
ceilometer_available => $ceilometer,
aodh_available => $aodh,
trove_available => $trove,
heat_available => $heat,
swift_available => $swift,
ironic_available => $ironic,
ironic_inspector_available => $ironic_inspector,
zaqar_available => $zaqar,
manila_available => $manila,
mistral_available => $mistral,
vitrage_available => $vitrage,
gnocchi_available => $gnocchi,
watcher_available => $watcher,
public_network_name => 'public',
neutron_api_extensions => $neutron_api_extensions_real,
dashboard_url => $dashboard_url,
flavor_ref => '42',
flavor_ref_alt => '84',
db_flavor_ref => '42',
image_ssh_user => 'cirros',
image_alt_ssh_user => 'cirros',
# TODO(emilien) optimization by 1/ using Hiera to configure Glance image source
# and 2/ if running in the gate, use /home/jenkins/cache/files/ cirros image.
img_file => "/tmp/openstack/image/cirros-0.6.2-x86_64-disk-${image_format}.img",
img_disk_format => $image_format,
compute_build_interval => 10,
ca_certificates_file => $openstack_integration::params::ca_bundle_cert_path,
attach_encrypted_volume => $attach_encrypted_volume,
vnc_console => true,
tempest_workspace => '/tmp/openstack/tempest',
run_ssh => true,
l2gw_switch => $l2gw_switch,
heat_image_name => 'cirros',
heat_flavor_ref => '84',
baremetal_driver => 'fake-hardware',
baremetal_enabled_hardware_types => ['ipmi', 'fake-hardware'],
load_balancer_test_with_noop => true,
share_multitenancy_enabled => false,
share_enable_protocols => [downcase($share_protocol)],
share_capability_storage_protocol => $share_protocol,
# TODO(tkajinam): Remove this once we complete migration to c10s.
share_max_microversion => '2.89',
designate_nameservers => ["${openstack_integration::config::ip_for_url}:5322"],
metric_backends => $metric_backends,
}
if $magnum {
class { 'tempest::magnum':
provision_image => false,
}
}
}