vmware-nsx-tempest-plugin/vmware_nsx_tempest_plugin/tests/nsxv/api/test_dns_search_domain.py

130 lines
5.8 KiB
Python

# 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 import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
from vmware_nsx_tempest_plugin.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.project_network = resp.get('network', resp)
# addCleanup() only available at instance, not at class
resp = cls.create_subnet(cls.project_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
test_utils.call_and_ignore_notfound_exc(
cls.networks_client.delete_network,
cls.project_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(test_utils.call_and_ignore_notfound_exc,
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)
@decorators.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))
@decorators.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))
@decorators.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'])
@decorators.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.project_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)