Enable Bionic as a gate test

Change bionic test from dev to gate for 18.05.

Change-Id: I314848bea90a372ef673732d6bce1e34d3083d2a
This commit is contained in:
David Ames 2018-05-08 11:53:22 -07:00
parent 3bc61cfe78
commit 4f5b553153
4 changed files with 71 additions and 20 deletions

View File

@ -147,11 +147,10 @@ class DesignateBindDeployment(amulet_deployment.OpenStackAmuletDeployment):
'designate-zone-manager',
]
# Authenticate admin with keystone endpoint
self.keystone = u.authenticate_keystone_admin(self.keystone_sentry,
user='admin',
password='openstack',
tenant='admin')
# Authenticate admin with keystone
self.keystone_session, self.keystone = u.get_default_keystone_session(
self.keystone_sentry,
openstack_release=self._get_openstack_release())
# Authenticate admin with designate endpoint
designate_ep = self.keystone.service_catalog.url_for(
@ -160,13 +159,22 @@ class DesignateBindDeployment(amulet_deployment.OpenStackAmuletDeployment):
keystone_ep = self.keystone.service_catalog.url_for(
service_type='identity',
interface='publicURL')
self.designate = designate_client.Client(
version='1',
auth_url=keystone_ep,
username="admin",
password="openstack",
tenant_name="admin",
endpoint=designate_ep)
if self._get_openstack_release() >= self.xenial_queens:
self.designate = designate_client.Client(
version='2',
session=self.keystone_session)
self.zones_list = self.designate.zones.list
self.zones_delete = self.designate.zones.delete
else:
self.designate = designate_client.Client(
version='1',
auth_url=keystone_ep,
username="admin",
password="openstack",
tenant_name="admin",
endpoint=designate_ep)
self.zones_list = self.designate.domains.list
self.zones_delete = self.designate.domains.delete
def check_and_wait(self, check_command, interval=2, max_wait=200,
desc=None):
@ -228,9 +236,15 @@ class DesignateBindDeployment(amulet_deployment.OpenStackAmuletDeployment):
def get_domain_id(self, domain_name):
domain_id = None
for dom in self.designate.domains.list():
if dom.name == domain_name:
domain_id = dom.id
for dom in self.zones_list():
if isinstance(dom, dict):
if dom['name'] == domain_name:
domain_id = dom['name']
break
else:
if dom.name == domain_name:
domain_id = dom.id
break
return domain_id
def get_test_domain_id(self):
@ -252,7 +266,7 @@ class DesignateBindDeployment(amulet_deployment.OpenStackAmuletDeployment):
old_dom_id = self.get_test_domain_id()
if old_dom_id:
u.log.debug('Deleting old domain')
self.designate.domains.delete(old_dom_id)
self.zones_delete(old_dom_id)
self.check_and_wait(
self.check_test_domain_gone,
desc='Waiting for domain to disappear')
@ -260,7 +274,11 @@ class DesignateBindDeployment(amulet_deployment.OpenStackAmuletDeployment):
domain = domains.Domain(
name=self.TEST_DOMAIN,
email="fred@amuletexample.com")
new_domain = self.designate.domains.create(domain)
if self._get_openstack_release() >= self.xenial_queens:
new_domain = self.designate.zones.create(
name=domain.name, email=domain.email)
else:
new_domain = self.designate.domains.create(domain)
assert(new_domain is not None)
u.log.debug('Creating new test record')
@ -269,10 +287,16 @@ class DesignateBindDeployment(amulet_deployment.OpenStackAmuletDeployment):
type="A",
data=self.TEST_RECORD[self.TEST_WWW_RECORD])
self.designate.records.create(new_domain.id, _record)
if self._get_openstack_release() >= self.xenial_queens:
_domain_id = new_domain['id']
self.designate.recordsets.create(
_domain_id, _record.name, _record.type, [_record.data])
else:
_domain_id = new_domain.id
self.designate.records.create(_domain_id, _record)
self.check_and_wait(
self.check_slave_resolve_test_record,
desc='Waiting for dns record to propagate')
u.log.debug('Tidy up delete test record')
self.designate.domains.delete(new_domain.id)
self.zones_delete(_domain_id)
u.log.debug('OK')

View File

@ -0,0 +1,27 @@
#!/usr/bin/env python
# Copyright 2016 Canonical Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Amulet tests on a basic designate-bind deployment on xenial-queens."""
from basic_deployment import DesignateBindDeployment
if __name__ == '__main__':
deployment = DesignateBindDeployment(
series='xenial',
openstack='cloud:xenial-queens',
source='cloud:xenial-updates/queens')
deployment.run_tests()

View File

@ -35,7 +35,7 @@ commands =
# Run a specific test as an Amulet smoke test (expected to always pass)
basepython = python2.7
commands =
bundletester -vl DEBUG -r json -o func-results.json gate-basic-xenial-pike --no-destroy
bundletester -vl DEBUG -r json -o func-results.json gate-basic-bionic-queens --no-destroy
[testenv:func27-dfs]
# Run all deploy-from-source tests which are +x (may not always pass!)