def test_zone_create_propagates_to_nameservers(self): LOG.info('Create a zone') _, zone = self.client.create_zone() self.addCleanup(self.client.delete_zone, zone['id']) waiters.wait_for_zone_status(self.client, zone['id'], "ACTIVE") waiters.wait_for_query(self.query_client, zone['name'], "SOA")
def test_zone_create_propagates_to_nameservers(self): LOG.info('Create a zone') zone_name = dns_data_utils.rand_zone_name( name="zone_create_propagates", suffix=self.tld_name) zone = self.client.create_zone(name=zone_name)[1] self.addCleanup(self.wait_zone_delete, self.client, zone['id']) waiters.wait_for_zone_status(self.client, zone['id'], const.ACTIVE) waiters.wait_for_query(self.query_client, zone['name'], const.SOA)
def test_zone_delete_propagates_to_nameservers(self): LOG.info('Create a zone') _, zone = self.client.create_zone() self.addCleanup(self.client.delete_zone, zone['id'], ignore_errors=lib_exc.NotFound) waiters.wait_for_zone_status(self.client, zone['id'], "ACTIVE") waiters.wait_for_query(self.query_client, zone['name'], "SOA") LOG.info('Delete the zone') self.client.delete_zone(zone['id']) waiters.wait_for_zone_404(self.client, zone['id']) waiters.wait_for_query(self.query_client, zone['name'], "SOA", found=False)
def test_zone_abandon(self): LOG.info('Create a PRIMARY zone') zone_name = dns_data_utils.rand_zone_name(name="zone_abandon", suffix=self.tld_name) pr_zone = self.client.create_zone(name=zone_name)[1] self.addCleanup(self.wait_zone_delete, self.client, pr_zone['id']) waiters.wait_for_zone_status(self.client, pr_zone['id'], 'ACTIVE') LOG.info('Ensure we respond with CREATE+PENDING') self.assertEqual('CREATE', pr_zone['action']) self.assertEqual('PENDING', pr_zone['status']) LOG.info('Fetch the zone') self.client.show_zone(pr_zone['id']) LOG.info('Check that the zone was created on Nameserver/BIND') waiters.wait_for_query(self.query_client, pr_zone['name'], "SOA") # Test RBAC expected_allowed = ['os_admin'] if CONF.dns_feature_enabled.enforce_new_defaults: expected_allowed.append('os_system_admin') self.check_CUD_RBAC_enforcement( 'ZonesClient', 'abandon_zone', expected_allowed, False, pr_zone['id'], headers={'x-auth-sudo-project-id': pr_zone['project_id']}) # Test abandoning the zone LOG.info('Abandon a zone') self.admin_client.abandon_zone( pr_zone['id'], headers={'x-auth-sudo-project-id': pr_zone['project_id']}) LOG.info('Wait for the zone to become 404/NotFound in Designate') waiters.wait_for_zone_404(self.client, pr_zone['id']) LOG.info('Check that the zone is still exists in Nameserver/BIND') waiters.wait_for_query(self.query_client, pr_zone['name'], "SOA")
def test_zone_delete_propagates_to_nameservers(self): LOG.info('Create a zone') zone_name = dns_data_utils.rand_zone_name( name="zone_delete_propagates", suffix=self.tld_name) zone = self.client.create_zone(name=zone_name)[1] self.addCleanup(self.wait_zone_delete, self.client, zone['id'], ignore_errors=lib_exc.NotFound) waiters.wait_for_zone_status(self.client, zone['id'], const.ACTIVE) waiters.wait_for_query(self.query_client, zone['name'], const.SOA) LOG.info('Delete the zone') self.client.delete_zone(zone['id']) waiters.wait_for_zone_404(self.client, zone['id']) waiters.wait_for_query(self.query_client, zone['name'], const.SOA, found=False)
def test_zone_abandon_forbidden(self): LOG.info('Create a PRIMARY zone and add to the cleanup') zone_name = dns_data_utils.rand_zone_name( name="zone_abandon_forbidden", suffix=self.tld_name) pr_zone = self.client.create_zone(name=zone_name)[1] self.addCleanup(self.wait_zone_delete, self.client, pr_zone['id']) waiters.wait_for_zone_status(self.client, pr_zone['id'], 'ACTIVE') LOG.info('Ensure we respond with CREATE+PENDING') self.assertEqual('CREATE', pr_zone['action']) self.assertEqual('PENDING', pr_zone['status']) LOG.info('Fetch the zone') self.client.show_zone(pr_zone['id']) LOG.info('Check that the zone was created on Nameserver/BIND') waiters.wait_for_query(self.query_client, pr_zone['name'], "SOA") LOG.info('Abandon a zone as primary client, Expected: should ' 'fail with: 403 forbidden') self.assertRaises(lib_exc.Forbidden, self.client.abandon_zone, zone_id=pr_zone['id'])