Merge "Initial release of DNS search domain API test"
This commit is contained in:
commit
ad6679d630
@ -47,6 +47,13 @@ NetworkGroup = [
|
|||||||
default={},
|
default={},
|
||||||
help="dict version of l2gw_switch:"
|
help="dict version of l2gw_switch:"
|
||||||
"device_name:,interfaces:,segmentation_id:,"),
|
"device_name:,interfaces:,segmentation_id:,"),
|
||||||
|
cfg.StrOpt('dns_search_domain',
|
||||||
|
default='vmware.com',
|
||||||
|
help="a valid domain that contains host defined at"
|
||||||
|
" attribute host_in_search_domain"),
|
||||||
|
cfg.StrOpt('host_in_search_domain',
|
||||||
|
default='mail',
|
||||||
|
help="host exists in dns_search_domain"),
|
||||||
]
|
]
|
||||||
|
|
||||||
nsxv_group = cfg.OptGroup(name='nsxv',
|
nsxv_group = cfg.OptGroup(name='nsxv',
|
||||||
|
128
vmware_nsx_tempest/tests/nsxv/api/test_dns_search_domain.py
Normal file
128
vmware_nsx_tempest/tests/nsxv/api/test_dns_search_domain.py
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
# Copyright 2016 VMware Inc
|
||||||
|
# All Rights Reserved
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
from tempest_lib.common.utils import data_utils
|
||||||
|
|
||||||
|
from tempest import config
|
||||||
|
from tempest import test
|
||||||
|
|
||||||
|
from vmware_nsx_tempest.tests.nsxv.api import base_provider as base
|
||||||
|
|
||||||
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
|
class DnsSearchDomainTest(base.BaseAdminNetworkTest):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def resource_setup(cls):
|
||||||
|
super(DnsSearchDomainTest, cls).resource_setup()
|
||||||
|
cls.dns_search_domain = CONF.network.dns_search_domain
|
||||||
|
network_name = data_utils.rand_name('dns-search')
|
||||||
|
resp = cls.create_network(client=cls.networks_client,
|
||||||
|
name=network_name)
|
||||||
|
cls.tenant_network = resp.get('network', resp)
|
||||||
|
# addCleanup() only available at instance, not at class
|
||||||
|
resp = cls.create_subnet(cls.tenant_network,
|
||||||
|
name=network_name,
|
||||||
|
client=cls.subnets_client,
|
||||||
|
dns_search_domain=cls.dns_search_domain)
|
||||||
|
cls.tenant_subnet = resp.get('subnet', resp)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def resource_cleanup(cls):
|
||||||
|
# we need to cleanup resouces created at class methods
|
||||||
|
cls._try_delete_resource(cls.networks_client.delete_network,
|
||||||
|
cls.tenant_network['id'])
|
||||||
|
super(DnsSearchDomainTest, cls).resource_cleanup()
|
||||||
|
|
||||||
|
def create_networks(self, network_name):
|
||||||
|
resp = self.create_network(client=self.networks_client,
|
||||||
|
name=network_name)
|
||||||
|
network = resp.get('network', resp)
|
||||||
|
self.addCleanup(self._try_delete_resource,
|
||||||
|
self.networks_client.delete_network,
|
||||||
|
network['id'])
|
||||||
|
resp = self.create_subnet(network,
|
||||||
|
name=network_name,
|
||||||
|
client=self.subnets_client,
|
||||||
|
dns_search_domain=self.dns_search_domain)
|
||||||
|
subnet = resp.get('subnet', resp)
|
||||||
|
return (network, subnet)
|
||||||
|
|
||||||
|
@test.idempotent_id('879d620c-535c-467f-9e62-f2bf3178b5b7')
|
||||||
|
def test_dns_search_domain_crud_operations(self):
|
||||||
|
"""perform CRUD operation on subnet with dns_search_domain."""
|
||||||
|
network_name = data_utils.rand_name('crud-search-domain')
|
||||||
|
network, subnet = self.create_networks(network_name)
|
||||||
|
self.assertEqual('ACTIVE', network['status'])
|
||||||
|
new_name = network_name + "-update"
|
||||||
|
resp = self.update_subnet(
|
||||||
|
subnet['id'], name=new_name,
|
||||||
|
client=self.subnets_client,
|
||||||
|
dns_search_domain=self.dns_search_domain)
|
||||||
|
subnet = resp.get('subnet', resp)
|
||||||
|
self.assertEqual(subnet['name'], new_name)
|
||||||
|
self.assertEqual(subnet['dns_search_domain'],
|
||||||
|
self.dns_search_domain)
|
||||||
|
subnet_list = self.list_subnets(client=self.subnets_client,
|
||||||
|
name=new_name)['subnets']
|
||||||
|
self.assertEqual(1, len(subnet_list))
|
||||||
|
self.delete_subnet(subnet['id'])
|
||||||
|
subnet_list = self.list_subnets(client=self.subnets_client,
|
||||||
|
name=new_name)['subnets']
|
||||||
|
self.assertEqual(0, len(subnet_list))
|
||||||
|
|
||||||
|
@test.idempotent_id('40facdd9-40c0-48a1-bff1-57ba0ed0dc49')
|
||||||
|
def test_list_search_domain(self):
|
||||||
|
subnet_list = self.list_subnets(client=self.subnets_client,
|
||||||
|
subnet_id=self.tenant_subnet['id'])
|
||||||
|
self.assertEqual(1, len(subnet_list))
|
||||||
|
|
||||||
|
@test.idempotent_id('8d023934-b0c8-4588-b48b-17db047a4d8b')
|
||||||
|
def test_show_search_domain(self):
|
||||||
|
resp = self.show_subnet(self.tenant_subnet['id'],
|
||||||
|
client=self.subnets_client)
|
||||||
|
subnet = resp.get('subnet', resp)
|
||||||
|
self.assertEqual(self.dns_search_domain,
|
||||||
|
subnet['dns_search_domain'])
|
||||||
|
|
||||||
|
@test.idempotent_id('2b5990bf-d904-4e18-b197-93f3c061c260')
|
||||||
|
def test_update_subnet_search_domain_field(self):
|
||||||
|
"""attach 2nd subnet to network and update its dns_search_domain."""
|
||||||
|
subnet_name = data_utils.rand_name('upd-search-domain')
|
||||||
|
# 2nd subnet attached to a network, make sure to use different cidr
|
||||||
|
resp = self.create_subnet(self.tenant_network,
|
||||||
|
name=subnet_name,
|
||||||
|
cidr_offset=1,
|
||||||
|
client=self.subnets_client)
|
||||||
|
subnet = resp.get('subnet', resp)
|
||||||
|
self.assertNotIn('dns_search_domain', subnet)
|
||||||
|
resp = self.update_subnet(
|
||||||
|
subnet['id'],
|
||||||
|
client=self.subnets_client,
|
||||||
|
dns_search_domain=self.dns_search_domain)
|
||||||
|
subnet = resp.get('subnet', resp)
|
||||||
|
self.assertEqual(subnet['dns_search_domain'],
|
||||||
|
self.dns_search_domain)
|
||||||
|
# no method to remove dns_search_domain attribute
|
||||||
|
# set to '' to clear search domain
|
||||||
|
resp = self.update_subnet(
|
||||||
|
subnet['id'],
|
||||||
|
client=self.subnets_client,
|
||||||
|
dns_search_domain='')
|
||||||
|
subnet = resp.get('subnet', resp)
|
||||||
|
self.assertEqual(subnet['dns_search_domain'], '')
|
||||||
|
self.delete_subnet(subnet['id'],
|
||||||
|
client=self.subnets_client)
|
Loading…
Reference in New Issue
Block a user