Merge "Add parameter alarm_granularity to telemetry section"
diff --git a/README.rst b/README.rst
index 4d24d42..5df03f5 100644
--- a/README.rst
+++ b/README.rst
@@ -12,6 +12,8 @@
.. code-block:: yaml
runtest:
+ keystonerc_node: ctl01*
+ test_target: gtw01*
artifact_collector:
enabled: true
artifactory:
diff --git a/_modules/runtest/tempest_sections/dashboard.py b/_modules/runtest/tempest_sections/dashboard.py
index d9a20d0..008af2b 100644
--- a/_modules/runtest/tempest_sections/dashboard.py
+++ b/_modules/runtest/tempest_sections/dashboard.py
@@ -22,7 +22,7 @@
nginx_enable = conditions.BaseRule('nginx.server.enabled', 'eq', True)
if self.get_item_when_condition_match('horizon.server.enabled', horizon_enable):
- if self.get_item_when_condition_match('nginx.server.enabled', nginx_enable):
+ if self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.enabled', nginx_enable):
port = self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.host.port', nginx_enable)
protocol = self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.host.protocol', nginx_enable)
ip = self.get_item_when_condition_match('nginx.server.site.nginx_proxy_openstack_web.host.name', nginx_enable)
@@ -39,4 +39,4 @@
@property
def disable_ssl_certificate_validation(self):
- pass
\ No newline at end of file
+ pass
diff --git a/_modules/runtest/tempest_sections/heat_plugin.py b/_modules/runtest/tempest_sections/heat_plugin.py
index 0f2e16f..219b226 100644
--- a/_modules/runtest/tempest_sections/heat_plugin.py
+++ b/_modules/runtest/tempest_sections/heat_plugin.py
@@ -1,6 +1,8 @@
import base_section
+from runtest import conditions
+
class HeatPlugin(base_section.BaseSection):
name = "heat_plugin"
@@ -53,7 +55,9 @@
@property
def admin_password(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ return self.get_item_when_condition_match(
+ 'keystone.server.admin_password', c)
@property
def admin_project_name(self):
@@ -61,11 +65,20 @@
@property
def admin_username(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ return self.get_item_when_condition_match(
+ 'keystone.server.admin_name', c)
@property
def auth_url(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ protocol = self.get_item_when_condition_match(
+ 'keystone.server.bind.private_protocol', c) or 'http'
+ vip = self.get_item_when_condition_match(
+ '_param.cluster_vip_address', c)
+ port = self.get_item_when_condition_match(
+ 'keystone.server.bind.private_port', c)
+ return "{}://{}:{}".format(protocol, vip, port)
@property
def auth_version(self):
@@ -149,7 +162,9 @@
@property
def password(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ return self.get_item_when_condition_match(
+ 'keystone.server.admin_password', c)
@property
def project_domain_id(self):
@@ -161,11 +176,15 @@
@property
def project_name(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ return self.get_item_when_condition_match(
+ 'keystone.server.admin_tenant', c)
@property
def region(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ return self.get_item_when_condition_match(
+ 'keystone.server.region', c)
@property
def sighup_config_edit_retries(self):
@@ -217,7 +236,9 @@
@property
def username(self):
- pass
+ c = conditions.BaseRule('keystone.server.enabled', 'eq', True)
+ return self.get_item_when_condition_match(
+ 'keystone.server.admin_name', c)
@property
def volume_size(self):
diff --git a/_modules/runtest/tempest_sections/network.py b/_modules/runtest/tempest_sections/network.py
index 1fb61b3..68d4fea 100644
--- a/_modules/runtest/tempest_sections/network.py
+++ b/_modules/runtest/tempest_sections/network.py
@@ -91,7 +91,7 @@
return
res = self.authenticated_openstack_module_call(
- nodes[0], 'neutronng.list_netowkrs')[nodes[0]]['networks']
+ nodes[0], 'neutronng.list_networks')[nodes[0]]['networks']
networks = [n['id'] for n in res if n['name'] == network_name]
if len(networks) != 1:
diff --git a/_modules/runtest/tempest_sections/service_available.py b/_modules/runtest/tempest_sections/service_available.py
index 381eab8..64fd929 100644
--- a/_modules/runtest/tempest_sections/service_available.py
+++ b/_modules/runtest/tempest_sections/service_available.py
@@ -5,16 +5,23 @@
name = "service_available"
options = [
+ 'aodh',
+ 'barbican',
'cinder',
+ 'ceilometer',
'designate',
'glance',
+ 'gnocchi',
'heat',
'ironic',
+ 'manila',
'neutron',
'nova',
+ 'panko',
'sahara',
'swift',
'horizon',
+ 'keystone',
]
@@ -42,10 +49,22 @@
return False
@property
+ def aodh(self):
+ return self._is_service_enabled('aodh')
+
+ @property
+ def barbican(self):
+ return self._is_service_enabled('barbican')
+
+ @property
def cinder(self):
return self._is_service_enabled('cinder')
@property
+ def ceilometer(self):
+ return self._is_service_enabled('ceilometer')
+
+ @property
def designate(self):
return self._is_service_enabled('designate')
@@ -54,6 +73,10 @@
return self._is_service_enabled('glance')
@property
+ def gnocchi(self):
+ return self._is_service_enabled('gnocchi')
+
+ @property
def heat(self):
return self._is_service_enabled('heat')
@@ -62,6 +85,10 @@
return self._is_service_enabled('ironic')
@property
+ def manila(self):
+ return self._is_service_enabled('manila')
+
+ @property
def neutron(self):
return self._is_service_enabled('neutron')
@@ -70,6 +97,10 @@
return self._is_service_enabled('nova')
@property
+ def panko(self):
+ return self._is_service_enabled('panko')
+
+ @property
def sahara(self):
return self._is_service_enabled('sahara')
@@ -79,4 +110,8 @@
@property
def horizon(self):
- return self._is_service_enabled('horizon')
\ No newline at end of file
+ return self._is_service_enabled('horizon')
+
+ @property
+ def keystone(self):
+ return self._is_service_enabled('keystone')
\ No newline at end of file
diff --git a/metadata/service/tempest.yml b/metadata/service/tempest.yml
deleted file mode 100644
index 36ab4ec..0000000
--- a/metadata/service/tempest.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-applications:
- - runtest
-parameters:
- runtest:
- enabled: true
- openstack_version: stable/${_param:openstack_version}
- tempest:
- enabled: true
diff --git a/metadata/service/tempest/glance.yml b/metadata/service/tempest/glance.yml
new file mode 100644
index 0000000..6093c84
--- /dev/null
+++ b/metadata/service/tempest/glance.yml
@@ -0,0 +1,32 @@
+parameters:
+ _param:
+ glance_image_cirros_location: 'http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img'
+ glance_image_fedora_location: 'https://mirror.chpc.utah.edu/pub/fedora/linux/releases/27/CloudImages/x86_64/images/Fedora-Cloud-Base-27-1.6.x86_64.qcow2'
+ glance_image_cirros_name: 'TestCirros-0.3.5'
+ glance_image_fedora_name: 'TestFedora-27-1.6'
+ glance:
+ client:
+ enabled: True
+ identity:
+ admin_identity:
+ image:
+ cirros:
+ name: ${_param:glance_image_cirros_name}
+ location: ${_param:glance_image_cirros_location}
+ import_from_format: 'qcow2'
+ container_format: 'bare'
+ disk_format: 'qcow2'
+ tags:
+ - 'cirros'
+ visibility: public
+ wait_timeout: 1000
+ fedora:
+ name: ${_param:glance_image_fedora_name}
+ location: ${_param:glance_image_fedora_location}
+ import_from_format: 'qcow2'
+ container_format: 'bare'
+ disk_format: 'qcow2'
+ tags:
+ - 'fedora'
+ visibility: public
+ wait_timeout: 1000
\ No newline at end of file
diff --git a/metadata/service/tempest/init.yml b/metadata/service/tempest/init.yml
new file mode 100644
index 0000000..5f00c21
--- /dev/null
+++ b/metadata/service/tempest/init.yml
@@ -0,0 +1,28 @@
+classes:
+ - service.runtest.tempest.glance
+ - service.runtest.tempest.nova
+ - service.runtest.tempest.neutron
+applications:
+ - runtest
+parameters:
+ _param:
+ runtest_heat_plugin_skip_scenario_test_list: 'SoftwareConfigIntegrationTest, VolumeBackupRestoreIntegrationTest'
+ runtest_path_to_ca_file: '/etc/ssl/certs/ca-certificates.crt'
+ tempest_test_target: cfg01*
+ runtest:
+ enabled: true
+ openstack_version: stable/${_param:openstack_version}
+ tempest:
+ enabled: true
+ test_target: ${_param:tempest_test_target}
+ heat_plugin:
+ skip_scenario_test_list: ${_param:runtest_heat_plugin_skip_scenario_test_list}
+ instance_type: 'test-m1.tiny'
+ minimal_instance_type: 'test-m1.extra_tiny'
+ auth_version: 3
+ project_domain_id: default
+ user_domain_id: default
+ disable_ssl_certificate_validation: False
+ ca_file: ${_param:runtest_path_to_ca_file}
+ image_ref: ${glance:client:identity:admin_identity:image:fedora:name}
+ minimal_image_ref: ${glance:client:identity:admin_identity:image:cirros:name}
diff --git a/metadata/service/tempest/neutron.yml b/metadata/service/tempest/neutron.yml
new file mode 100644
index 0000000..a4bcce7
--- /dev/null
+++ b/metadata/service/tempest/neutron.yml
@@ -0,0 +1,20 @@
+parameters:
+ neutron:
+ client:
+ server:
+ admin_identity:
+ network:
+ heat-net:
+ tenant: admin
+ shared: False
+ router_external: True
+ default: True
+ admin_state_up: True
+ subnet:
+ heat_subnet:
+ cidr: 10.20.30.0/24
+ allocation_pools:
+ - start: 10.20.30.10
+ end: 10.20.30.254
+ gateway: 10.20.30.1
+ enable_dhcp: False
\ No newline at end of file
diff --git a/metadata/service/tempest/nova.yml b/metadata/service/tempest/nova.yml
new file mode 100644
index 0000000..34e3d2b
--- /dev/null
+++ b/metadata/service/tempest/nova.yml
@@ -0,0 +1,15 @@
+parameters:
+ nova:
+ client:
+ enabled: True
+ server:
+ admin_identity:
+ flavor:
+ test-m1.tiny:
+ ram: 512
+ disk: 5
+ vcpus: 1
+ test-m1.extra_tiny:
+ ram: 256
+ disk: 1
+ vcpus: 1
\ No newline at end of file
diff --git a/runtest/map.jinja b/runtest/map.jinja
index 7360cbc..6e892f8 100644
--- a/runtest/map.jinja
+++ b/runtest/map.jinja
@@ -8,6 +8,7 @@
'default': {
'cfg_dir': '/root/',
'cfg_name': 'tempest.conf',
+ 'keystonerc': '/root/keystonercv3'
}
}, grain='os', merge=salt['pillar.get']('runtest', {}).get('tempest', {}), base='default') %}
diff --git a/runtest/put_keystone_file.sls b/runtest/put_keystone_file.sls
new file mode 100644
index 0000000..08a4137
--- /dev/null
+++ b/runtest/put_keystone_file.sls
@@ -0,0 +1,9 @@
+{%- from "runtest/map.jinja" import tempest with context %}
+
+{%- set keystone_client_file = salt['mine.get']('*', 'keystonerc_file', 'compound') %}
+
+put_keystone_file:
+ file.managed:
+ - name: {{ tempest.keystonerc }}
+ - contents: '{{ keystone_client_file.values()[0] }}'
+
diff --git a/runtest/salttest/modules/openstack/glance.sls b/runtest/salttest/modules/openstack/glance.sls
index 718a3fe..b208318 100644
--- a/runtest/salttest/modules/openstack/glance.sls
+++ b/runtest/salttest/modules/openstack/glance.sls
@@ -1,10 +1,9 @@
-#glanceng_task_list:
-# module.run:
-# - name: glanceng.task_list
-# - profile: admin_identity
+glanceng_task_list:
+ module.run:
+ - name: glanceng.task_list
+ - profile: admin_identity
-#glanceng_image_schema:
-# module.run:
-# - name: glanceng.image_schema
-# - profile: admin_identity
-
+glanceng_image_schema:
+ module.run:
+ - name: glanceng.image_schema
+ - profile: admin_identity
diff --git a/runtest/tempest.sls b/runtest/tempest.sls
index 06024ac..6f6d3c9 100644
--- a/runtest/tempest.sls
+++ b/runtest/tempest.sls
@@ -13,4 +13,38 @@
- require:
- file: tempest_config_dir
+{%- if tempest.test_target is defined %}
+create_on_target:
+ salt.function:
+ - tgt: {{ tempest.test_target }}
+ - tgt_type: compound
+ - name: file.mkdir
+ - arg:
+ - {{ tempest.cfg_dir }}
+
+copy_to_target:
+ cmd.run:
+ - name: salt-cp {{ tempest.test_target }} {{ tempest.cfg_dir }}/{{ tempest.cfg_name }} {{ tempest.cfg_dir }}/{{ tempest.cfg_name }}
+ - require:
+ - salt: create_on_target
+
+mine_send_keystonerc_file:
+ salt.function:
+ - tgt: 'I@keystone:server and *01*'
+ - tgt_type: compound
+ - name: mine.send
+ - arg:
+ - 'keystonerc_file'
+ - 'mine_function=cmd.shell'
+ - 'cat {{ tempest.keystonerc }}'
+
+put_keystone_rc_file:
+ salt.state:
+ - tgt: {{ tempest.test_target }}
+ - tgt_type: compound
+ - sls: runtest.put_keystone_file
+ - require:
+ - salt: mine_send_keystonerc_file
+
+{%- endif %}
{%- endif -%}