puppet-openstack-integration/manifests/tempest.pp

375 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.
#
# [*designate*]
# (optional) Define if Designate needs to be tested.
# Default to false.
#
# [*ec2api*]
# (optional) Define if EC2-API 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.
#
# [*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.
#
# [*sahara*]
# (optional) Define if Sahara needs to be tested.
# Default to false.
#
# [*murano*]
# (optional) Define if Murano 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.
#
# [*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,
$designate = false,
$ec2api = false,
$glance = true,
$gnocchi = false,
$heat = false,
$horizon = false,
$ironic = false,
$l2gw = false,
$l2gw_switch = undef,
$dr = false,
$magnum = false,
$manila = false,
$mistral = false,
$murano = false,
$neutron = true,
$nova = true,
$octavia = false,
$sahara = false,
$swift = false,
$trove = false,
$watcher = false,
$vitrage = 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_api_extensions_real = sort(
$neutron_base_extensions +
$neutron_agent_scheduler_extensions +
$neutron_l3_extensions +
$neutron_metering_extensions +
$neutron_l2gw_extensions +
$neutron_bgpvpn_extensions
)
}
$dashboard_url = $facts['os']['family'] ? {
'RedHat' => "${::openstack_integration::config::base_url}/dashboard",
default => "${::openstack_integration::config::base_url}/horizon"
}
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',
tempest_config_file => '/tmp/openstack/tempest/etc/tempest.conf',
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',
auth_version => 'v3',
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,
designate_available => $designate,
glance_available => $glance,
horizon_available => $horizon,
nova_available => $nova,
octavia_available => $octavia,
neutron_available => $neutron,
neutron_bgpvpn_available => $bgpvpn,
neutron_l2gw_available => $l2gw,
neutron_dr_available => $dr,
barbican_available => $barbican,
ceilometer_available => $ceilometer,
aodh_available => $aodh,
trove_available => $trove,
sahara_available => $sahara,
heat_available => $heat,
swift_available => $swift,
ironic_available => $ironic,
zaqar_available => $zaqar,
manila_available => $manila,
mistral_available => $mistral,
vitrage_available => $vitrage,
gnocchi_available => $gnocchi,
ec2api_available => $ec2api,
watcher_available => $watcher,
public_network_name => 'public',
neutron_api_extensions => join(any2array($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,
manage_tests_packages => true,
attach_encrypted_volume => $attach_encrypted_volume,
murano_available => $murano,
tempest_workspace => '/tmp/openstack/tempest',
run_ssh => true,
l2gw_switch => $l2gw_switch,
disable_dashboard_ssl_validation => true,
ec2api_tester_roles => ['member'],
aws_ec2_url => "${::openstack_integration::config::base_url}:8788/",
aws_region => 'regionOne',
# TODO(tkajinam): we have to configure image id parameters but we have to
# obtain id from EC2 api.
heat_image_name => 'cirros',
heat_flavor_ref => '84',
baremetal_driver => 'fake-hardware',
baremetal_enabled_hardware_types => 'ipmi,fake-hardware',
load_balancer_member_role => 'member',
load_balancer_admin_role => 'admin',
load_balancer_observer_role => 'member',
load_balancer_global_observer_role => 'admin',
load_balancer_test_with_noop => true,
share_multitenancy_enabled => false,
share_enable_protocols => [downcase($share_protocol)],
share_capability_storage_protocol => $share_protocol,
designate_nameservers => "${::openstack_integration::config::ip_for_url}:5322",
}
if $magnum {
class { 'tempest::magnum':
provision_image => false,
tempest_config_file => '/tmp/openstack/tempest/etc/tempest.conf',
}
}
}