Merge "Add devops_template for each test in fuel_library and puppet-openstack mapping"
This commit is contained in:
commit
3c878da14c
@ -12,9 +12,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
from devops.helpers.helpers import wait
|
||||
from devops.helpers.templates import yaml_template_load
|
||||
|
||||
from proboscis import TestProgram
|
||||
from proboscis import SkipTest
|
||||
@ -83,7 +85,13 @@ class TestBasic(object):
|
||||
@property
|
||||
def env(self):
|
||||
if self.__env is None:
|
||||
self.__env = EnvironmentModel(self._devops_config)
|
||||
# hack before we find proper solution for loading devops templates
|
||||
external_config = os.environ.get("DEVOPS_SETTINGS_TEMPLATE", None)
|
||||
if external_config:
|
||||
config = yaml_template_load(external_config)
|
||||
else:
|
||||
config = self._devops_config
|
||||
self.__env = EnvironmentModel(config)
|
||||
return self.__env
|
||||
|
||||
@property
|
||||
|
235
gates_tests/devops_templates/default.yaml
Normal file
235
gates_tests/devops_templates/default.yaml
Normal file
@ -0,0 +1,235 @@
|
||||
---
|
||||
aliases:
|
||||
|
||||
dynamic_address_pool:
|
||||
- &pool_default !os_env POOL_DEFAULT, 10.109.0.0/16:24
|
||||
|
||||
default_interface_model:
|
||||
- &interface_model !os_env INTERFACE_MODEL, e1000
|
||||
|
||||
template:
|
||||
devops_settings:
|
||||
env_name: !os_env ENV_NAME
|
||||
|
||||
address_pools:
|
||||
# Network pools used by the environment
|
||||
|
||||
fuelweb_admin-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
vlan_start: 0
|
||||
|
||||
# Reserved IP addresses.
|
||||
# - 'l2_network_device' will be used as an IP address for creating
|
||||
# libvirt network with assigned IP on it, if specified.
|
||||
# - 'gateway' should be used in fuel-qa framework to get the gateway
|
||||
# of the address pool. Can be different from libvirt IP address
|
||||
# in case if a network already have another gateway.
|
||||
# - all other IP addresses specified in the template can be used
|
||||
# for different purposes in different test cases.
|
||||
ip_reserved:
|
||||
|
||||
# Address of the gateway in the address pool fuelweb_admin-pool01.
|
||||
# If string - than is used 'as is', as a real IP address
|
||||
# If numeric - than assumed as a relative address
|
||||
# from the start of the address pool.
|
||||
gateway: +1
|
||||
|
||||
# Libvirt bridge will get this IP address
|
||||
l2_network_device: +1
|
||||
|
||||
# IP ranges, reserved in the address pool.
|
||||
# - 'default' IP range stands for 'default' nodegroup in Fuel.
|
||||
# - any other IP range names such as 'floating' can be specified to
|
||||
# provide a special IP ranges to configure cluster settings.
|
||||
# For special test cases, several IP ranges can be configured here
|
||||
# for different networks. Names of these ranges should be
|
||||
# agreed for template and test cases.
|
||||
ip_ranges:
|
||||
|
||||
# Relative or real IP addresses
|
||||
default: [+2, -2] # admin IP range for 'default' nodegroup name
|
||||
|
||||
public-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
vlan_start: 0
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, +127] # public IP range for 'default' nodegroup name
|
||||
floating: [+128, -2]
|
||||
|
||||
storage-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
vlan_start: 101
|
||||
|
||||
management-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
vlan_start: 102
|
||||
|
||||
private-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
vlan_start: 960
|
||||
vlan_end: 1000
|
||||
|
||||
groups:
|
||||
- name: rack-01
|
||||
driver:
|
||||
name: devops.driver.libvirt
|
||||
params:
|
||||
connection_string: !os_env CONNECTION_STRING, qemu:///system
|
||||
storage_pool_name: !os_env STORAGE_POOL_NAME, default
|
||||
stp: True
|
||||
hpet: False
|
||||
use_host_cpu: !os_env DRIVER_USE_HOST_CPU, true
|
||||
|
||||
network_pools: # Address pools for OpenStack networks.
|
||||
# Actual names should be used for keys
|
||||
# (the same as in Nailgun, for example)
|
||||
|
||||
fuelweb_admin: fuelweb_admin-pool01
|
||||
public: public-pool01
|
||||
storage: storage-pool01
|
||||
management: management-pool01
|
||||
private: private-pool01
|
||||
|
||||
l2_network_devices: # Libvirt bridges. It is *NOT* Nailgun networks
|
||||
admin:
|
||||
address_pool: fuelweb_admin-pool01
|
||||
dhcp: false
|
||||
forward:
|
||||
mode: nat
|
||||
|
||||
public:
|
||||
address_pool: public-pool01
|
||||
dhcp: false
|
||||
forward:
|
||||
mode: nat
|
||||
|
||||
storage:
|
||||
address_pool: storage-pool01
|
||||
dhcp: false
|
||||
|
||||
management:
|
||||
address_pool: management-pool01
|
||||
dhcp: false
|
||||
|
||||
private:
|
||||
address_pool: private-pool01
|
||||
dhcp: false
|
||||
|
||||
nodes:
|
||||
- name: admin # Custom name of VM for Fuel admin node
|
||||
role: fuel_master # Fixed role for Fuel master node properties
|
||||
params:
|
||||
vcpu: !os_env ADMIN_NODE_CPU, 2
|
||||
memory: !os_env ADMIN_NODE_MEMORY, 3072
|
||||
boot:
|
||||
- hd
|
||||
- cdrom # for boot from usb - without 'cdrom'
|
||||
volumes:
|
||||
- name: system
|
||||
capacity: !os_env ADMIN_NODE_VOLUME_SIZE, 75
|
||||
format: qcow2
|
||||
- name: iso
|
||||
source_image: !os_env ISO_PATH # if 'source_image' set, then volume capacity is calculated from it's size
|
||||
format: raw
|
||||
device: cdrom # for boot from usb - 'disk'
|
||||
bus: ide # for boot from usb - 'usb'
|
||||
interfaces:
|
||||
- label: eth0
|
||||
l2_network_device: admin # Libvirt bridge name. It is *NOT* a Nailgun network
|
||||
interface_model: *interface_model
|
||||
network_config:
|
||||
eth0:
|
||||
networks:
|
||||
- fuelweb_admin
|
||||
|
||||
# Slave nodes
|
||||
|
||||
- name: slave-01
|
||||
role: fuel_slave
|
||||
params: &rack-01-slave-node-params
|
||||
vcpu: !os_env SLAVE_NODE_CPU, 2
|
||||
memory: !os_env SLAVE_NODE_MEMORY, 3072
|
||||
boot:
|
||||
- network
|
||||
- hd
|
||||
volumes:
|
||||
- name: system
|
||||
capacity: !os_env NODE_VOLUME_SIZE, 50
|
||||
format: qcow2
|
||||
- name: cinder
|
||||
capacity: !os_env NODE_VOLUME_SIZE, 50
|
||||
format: qcow2
|
||||
- name: swift
|
||||
capacity: !os_env NODE_VOLUME_SIZE, 50
|
||||
format: qcow2
|
||||
|
||||
# List of node interfaces
|
||||
interfaces:
|
||||
- label: eth0
|
||||
l2_network_device: admin # Libvirt bridge name. It is *NOT* Nailgun networks
|
||||
interface_model: *interface_model
|
||||
- label: eth1
|
||||
l2_network_device: public
|
||||
interface_model: *interface_model
|
||||
- label: eth2
|
||||
l2_network_device: storage
|
||||
interface_model: *interface_model
|
||||
- label: eth3
|
||||
l2_network_device: management
|
||||
interface_model: *interface_model
|
||||
- label: eth4
|
||||
l2_network_device: private
|
||||
interface_model: *interface_model
|
||||
|
||||
# How Nailgun/OpenStack networks should assigned for interfaces
|
||||
network_config:
|
||||
eth0:
|
||||
networks:
|
||||
- fuelweb_admin # Nailgun/OpenStack network name
|
||||
eth1:
|
||||
networks:
|
||||
- public
|
||||
eth2:
|
||||
networks:
|
||||
- storage
|
||||
eth3:
|
||||
networks:
|
||||
- management
|
||||
eth4:
|
||||
networks:
|
||||
- private
|
||||
|
||||
|
||||
- name: slave-02
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-03
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-04
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-05
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-06
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-07
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-08
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
- name: slave-09
|
||||
role: fuel_slave
|
||||
params: *rack-01-slave-node-params
|
||||
|
@ -1,4 +1,6 @@
|
||||
bvt_2:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- apache
|
||||
- apache_api_proxy
|
||||
- apache_mpm
|
||||
@ -95,9 +97,13 @@ bvt_2:
|
||||
|
||||
|
||||
deploy_ha_controller_neutron_example:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- plugins
|
||||
|
||||
deploy_heat_ha:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- aodh
|
||||
- ceilometer
|
||||
- ceilometer_ha
|
||||
@ -108,6 +114,8 @@ deploy_heat_ha:
|
||||
- roles/mongo
|
||||
|
||||
ha_neutron:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- cinder
|
||||
- openstack-cinder
|
||||
- roles/cinder
|
||||
@ -115,13 +123,19 @@ ha_neutron:
|
||||
- openstack_cinder
|
||||
|
||||
reduced_footprint:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- generate_vms
|
||||
- vm_libvirt
|
||||
|
||||
ha_neutron_firewall:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- firewall
|
||||
|
||||
ha_neutron_mysql_termination:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- galera
|
||||
- mysql
|
||||
- mysql.access.cnf
|
||||
@ -130,6 +144,8 @@ ha_neutron_mysql_termination:
|
||||
- mysql_user_access
|
||||
|
||||
ironic_deploy_ceph:
|
||||
devops_settings_template: devops_templates/ironic_template.yaml
|
||||
modules:
|
||||
- ceph
|
||||
- ironic
|
||||
- ironic-conductor
|
||||
@ -137,9 +153,13 @@ ironic_deploy_ceph:
|
||||
- roles/ironic_conductor
|
||||
|
||||
deploy_murano_ha_with_tun:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- murano
|
||||
|
||||
deploy_ha_dns_ntp:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- dns
|
||||
- ntp
|
||||
- resolvconf
|
||||
@ -147,22 +167,34 @@ deploy_ha_dns_ntp:
|
||||
- resolv.dnsmasq.conf
|
||||
|
||||
deploy_sahara_ha_tun:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- sahara
|
||||
- sahara_templates
|
||||
|
||||
neutron_vlan_ha:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- swift
|
||||
- proxy
|
||||
|
||||
positive_cic_maintenance_mode:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- umm
|
||||
|
||||
deploy_ha_cgroup:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- cgroups
|
||||
|
||||
basic_env_for_hugepages:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- allocated_hugepages
|
||||
|
||||
test_logrotate:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
modules:
|
||||
- apache2.logrotate
|
||||
- apache2.prerotate
|
||||
|
@ -1,4 +1,6 @@
|
||||
bvt_2:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
projects:
|
||||
- openstack/puppet-ceph
|
||||
- openstack/puppet-glance
|
||||
- openstack/puppet-horizon
|
||||
@ -10,19 +12,29 @@ bvt_2:
|
||||
- openstack/puppet-oslo
|
||||
|
||||
neutron_vlan_ha:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
projects:
|
||||
- openstack/puppet-cinder
|
||||
- openstack/puppet-swift
|
||||
|
||||
deploy_sahara_ha_tun:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
projects:
|
||||
- openstack/puppet-sahara
|
||||
|
||||
deploy_murano_ha_with_tun:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
projects:
|
||||
- openstack/puppet-murano
|
||||
|
||||
ironic_deploy_ceph:
|
||||
devops_settings_template: devops_templates/ironic_template.yaml
|
||||
projects:
|
||||
- openstack/puppet-ironic
|
||||
|
||||
deploy_heat_ha:
|
||||
devops_settings_template: devops_templates/default.yaml
|
||||
projects:
|
||||
- openstack/puppet-aodh
|
||||
- openstack/puppet-ceilometer
|
||||
- openstack/puppet-heat
|
||||
|
@ -12,6 +12,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import itertools
|
||||
import os
|
||||
import yaml
|
||||
|
||||
@ -19,7 +20,6 @@ from proboscis import register
|
||||
from proboscis.asserts import assert_equal
|
||||
from devops.helpers import helpers
|
||||
|
||||
|
||||
from fuelweb_test.helpers.fuel_actions import BaseActions
|
||||
from fuelweb_test.helpers.gerrit.gerrit_info_provider import \
|
||||
FuelLibraryModulesProvider
|
||||
@ -304,7 +304,9 @@ def fuel_library_modules_mapping(modules):
|
||||
mapping = yaml.load(f)
|
||||
|
||||
if modules and isinstance(modules, dict):
|
||||
all_modules = set([j for i in mapping.values() for j in i])
|
||||
all_modules = set(list(itertools.chain.from_iterable(
|
||||
[mapping[test_group]['modules'] for test_group in mapping])))
|
||||
|
||||
logger.debug(
|
||||
"List of puppet modules covered by system_tests {}".format(
|
||||
all_modules))
|
||||
@ -313,7 +315,7 @@ def fuel_library_modules_mapping(modules):
|
||||
|
||||
# checking that module from review covered by system_test
|
||||
for module in modules.keys():
|
||||
if module.split('.')[0] not in all_modules:
|
||||
if module not in all_modules:
|
||||
logger.warning(
|
||||
"{}:{} module not exist or not covered by system_test"
|
||||
.format(module, modules[module]))
|
||||
@ -326,10 +328,23 @@ def fuel_library_modules_mapping(modules):
|
||||
set(modules)):
|
||||
for test in mapping:
|
||||
test_intersection = len(
|
||||
set(mapping[test]).intersection(set(modules)))
|
||||
set(mapping[test]['modules']).intersection(set(modules)))
|
||||
if test_intersection > max_intersection:
|
||||
max_intersection = test_intersection
|
||||
system_test = test
|
||||
|
||||
devops_template = mapping[system_test]['devops_settings_template']
|
||||
|
||||
import gates_tests
|
||||
|
||||
path_to_template = os.path.join(
|
||||
os.path.dirname(os.path.abspath(gates_tests.__file__)),
|
||||
devops_template)
|
||||
|
||||
logger.debug("devops template is {}".format(path_to_template))
|
||||
|
||||
os.environ['DEVOPS_SETTINGS_TEMPLATE'] = path_to_template
|
||||
|
||||
# To completely check ceph module we can't mix ceph and cinder togeher
|
||||
else:
|
||||
logger.warning(
|
||||
@ -365,7 +380,8 @@ def openstack_puppet_project_mapping(project):
|
||||
"r") as f:
|
||||
mapping = yaml.load(f)
|
||||
|
||||
all_projects = set([j for i in mapping.values() for j in i])
|
||||
all_projects = set(list(itertools.chain.from_iterable(
|
||||
[mapping[test_group]['modules'] for test_group in mapping])))
|
||||
logger.debug(
|
||||
"List of openstack/puppet-projects "
|
||||
"covered by system_tests {}".format(
|
||||
@ -382,9 +398,21 @@ def openstack_puppet_project_mapping(project):
|
||||
# find test group which cover project edited in review
|
||||
system_test = "bvt_2"
|
||||
for test in mapping:
|
||||
if project in mapping[test]:
|
||||
if project in mapping[test]['projects']:
|
||||
system_test = test
|
||||
break
|
||||
|
||||
devops_template = mapping[system_test]['devops_settings_template']
|
||||
|
||||
import gates_tests
|
||||
|
||||
path_to_template = os.path.join(
|
||||
os.path.dirname(os.path.abspath(gates_tests.__file__)),
|
||||
devops_template)
|
||||
|
||||
logger.debug("devops template is {}".format(path_to_template))
|
||||
|
||||
os.environ['DEVOPS_SETTINGS_TEMPLATE'] = path_to_template
|
||||
logger.info(
|
||||
"Edited project in review - '{}'"
|
||||
" will be checked by next system test: {}".format(
|
||||
|
Loading…
Reference in New Issue
Block a user