def main(argv): cli_utils.setup_logging() parser = argparse.ArgumentParser() parser.add_argument('-d', '--domain_name', help='DNS Domain Name. ' 'Must end in a .', default='mojo.serverstack.') options = parser.parse_args() domain_name = cli_utils.parse_arg(options, 'domain_name') os_version = openstack_utils.get_current_os_versions( 'keystone')['keystone'] if os_version >= 'queens': designate_api = '2' else: designate_api = '1' keystone_session = openstack_utils.get_overcloud_keystone_session() nova_client = openstack_utils.get_nova_session_client(keystone_session) des_client = mojo_os_utils.get_designate_session_client( keystone_session, all_tenants=True, client_version=designate_api) for server in nova_client.servers.list(): for addr_info in server.addresses['private']: if addr_info['OS-EXT-IPS:type'] == 'floating': mojo_os_utils.check_dns_entry( des_client, addr_info['addr'], domain_name, '{}.{}'.format(server.name, domain_name))
def main(argv): cli_utils.setup_logging() try: cacert = os.path.join(os.environ.get('MOJO_LOCAL_DIR'), 'cacert.pem') os.stat(cacert) except FileNotFoundError: cacert = None parser = argparse.ArgumentParser() parser.add_argument('-d', '--domain_name', help='DNS Domain Name. ' 'Must end in a .', default='mojo.serverstack.') options = parser.parse_args() domain_name = cli_utils.parse_arg(options, 'domain_name') os_version = openstack_utils.get_current_os_versions( 'keystone')['keystone'] if os_version >= 'mitaka': designate_api = '2' else: designate_api = '1' keystone_session = openstack_utils.get_overcloud_keystone_session( verify=cacert) nova_client = openstack_utils.get_nova_session_client(keystone_session) des_client = mojo_os_utils.get_designate_session_client( keystone_session, all_tenants=True, client_version=designate_api) for server in nova_client.servers.list(): for addr_info in server.addresses['private']: if addr_info['OS-EXT-IPS:type'] == 'floating': mojo_os_utils.check_dns_entry( des_client, addr_info['addr'], domain_name, '{}.{}'.format(server.name, domain_name))
def main(argv): cli_utils.setup_logging() # Setup client keystone_session = openstack_utils.get_overcloud_keystone_session() os_version = openstack_utils.get_current_os_versions( 'keystone')['keystone'] if os_version >= 'queens': designate_api_version = '2' else: designate_api_version = '1' client = mojo_os_utils.get_designate_session_client( keystone_session, client_version=designate_api_version) designate_api_version = 2 zone = mojo_os_utils.create_or_return_zone( client, TEST_DOMAIN, TEST_DOMAIN_EMAIL) mojo_os_utils.create_or_return_recordset( client, zone['id'], 'www', 'A', [TEST_RECORD[TEST_WWW_RECORD]]) # Test record is in bind and designate mojo_os_utils.check_dns_entry( client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version) mojo_utils.add_unit('designate-bind') mojo_os_utils.check_dns_entry( client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version) mojo_utils.delete_oldest('designate-bind') mojo_os_utils.check_dns_entry( client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version)
def main(argv): cli_utils.setup_logging() # Setup client try: cacert = os.path.join(os.environ.get('MOJO_LOCAL_DIR'), 'cacert.pem') os.stat(cacert) except FileNotFoundError: cacert = None keystone_session = openstack_utils.get_overcloud_keystone_session( verify=cacert) os_version = openstack_utils.get_current_os_versions( 'keystone')['keystone'] if os_version >= 'mitaka': designate_api_version = '2' else: designate_api_version = '1' client = mojo_os_utils.get_designate_session_client( keystone_session, client_version=designate_api_version) zone = mojo_os_utils.create_or_return_zone(client, TEST_DOMAIN, TEST_DOMAIN_EMAIL) mojo_os_utils.create_or_return_recordset(client, zone['id'], 'www', 'A', [TEST_RECORD[TEST_WWW_RECORD]]) # Test record is in bind and designate mojo_os_utils.check_dns_entry(client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version) mojo_utils.add_unit('designate-bind') mojo_os_utils.check_dns_entry(client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version) mojo_utils.delete_oldest('designate-bind') mojo_os_utils.check_dns_entry(client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version)
def main(argv): mojo_utils.setup_logging() # Setup client overcloud_novarc = mojo_utils.get_overcloud_auth() keystone_session = mojo_os_utils.get_keystone_session(overcloud_novarc, scope='PROJECT') client = mojo_os_utils.get_designate_session_client(keystone_session) os_version = mojo_os_utils.get_current_os_versions('keystone')['keystone'] if os_version >= 'queens': designate_api_version = 2 zone = mojo_os_utils.create_or_return_zone(client, TEST_DOMAIN, TEST_DOMAIN_EMAIL) rs = mojo_os_utils.create_or_return_recordset( client, zone['id'], 'www', 'A', [TEST_RECORD[TEST_WWW_RECORD]]) else: designate_api_version = 1 # Create test domain and record in test domain domain = mojo_os_utils.create_designate_dns_domain( client, TEST_DOMAIN, TEST_DOMAIN_EMAIL) record = mojo_os_utils.create_designate_dns_record( client, domain.id, TEST_WWW_RECORD, "A", TEST_RECORD[TEST_WWW_RECORD]) # Test record is in bind and designate mojo_os_utils.check_dns_entry(client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version) mojo_utils.add_unit('designate-bind') mojo_os_utils.check_dns_entry(client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version) mojo_utils.delete_oldest('designate-bind') mojo_os_utils.check_dns_entry(client, TEST_RECORD[TEST_WWW_RECORD], TEST_DOMAIN, record_name=TEST_WWW_RECORD, designate_api=designate_api_version)
def main(argv): cli_utils.setup_logging() parser = argparse.ArgumentParser() parser.add_argument('-r', '--resolver', help='Resolver address. ' 'Usually designate-bind address.', required=False) parser.add_argument('-d', '--domain_name', help='DNS Domain Name. ' 'Must end in a .', default='mojo.serverstack.') parser.add_argument('-e', '--email', help='Email address', default='*****@*****.**') parser.add_argument('-b', '--bind-service', help='Bind Service Name', default='designate-bind') options = parser.parse_args() bind_service_name = cli_utils.parse_arg(options, 'bind_service') resolver = cli_utils.parse_arg(options, 'resolver') bind_unit = mojo_utils.get_juju_units(bind_service_name)[0] if not resolver: resolver = mojo_utils.get_juju_unit_ip(bind_unit) domain_name = cli_utils.parse_arg(options, 'domain_name') email = cli_utils.parse_arg(options, 'email') nameserver = 'ns1.{}'.format(domain_name) logging.info('Setting up designate {} {}'.format(nameserver, resolver)) os_version = openstack_utils.get_current_os_versions( 'keystone')['keystone'] try: cacert = os.path.join(os.environ.get('MOJO_LOCAL_DIR'), 'cacert.pem') os.stat(cacert) except FileNotFoundError: cacert = None keystone_session = openstack_utils.get_overcloud_keystone_session( verify=cacert) neutronc = openstack_utils.get_neutron_session_client(keystone_session) if os_version >= 'queens': designatec = mojo_os_utils.get_designate_session_client( keystone_session, client_version='2') zone = mojo_os_utils.create_or_return_zone(designatec, domain_name, email) mojo_os_utils.create_or_return_recordset(designatec, zone['id'], 'www', 'A', [resolver]) else: designatec = mojo_os_utils.get_designate_session_client( keystone_session, client_version='1') if not mojo_os_utils.get_designate_server_id(designatec, nameserver): logging.info('Creating server {}'.format(nameserver)) server = Server(name=nameserver) server_id = designatec.servers.create(server) assert (server_id is not None) else: logging.info('{} server already exists.'.format(nameserver)) domain_id = mojo_os_utils.get_designate_domain_id( designatec, domain_name) if not domain_id: logging.info('Creating domain {}'.format(domain_name)) domain = Domain(name=domain_name, email=email) domain_id = designatec.domains.create(domain) assert (domain_id is not None) else: logging.info('{} domain already exists.'.format(domain_name)) if not mojo_os_utils.get_designate_record_id(designatec, domain_id, nameserver): logging.info('Creating NS record {}'.format(nameserver)) ns_record = Record(name=nameserver, type="A", data=resolver) record_id = designatec.records.create(domain_id, ns_record) assert (record_id is not None) else: logging.info('{} record already exists.'.format(nameserver)) logging.info('Update network to use domain {}'.format(domain_name)) net_uuid = openstack_utils.get_net_uuid(neutronc, 'private') mojo_os_utils.update_network_dns(neutronc, net_uuid, domain_name)
def main(argv): mojo_utils.setup_logging() parser = argparse.ArgumentParser() parser.add_argument('-r', '--resolver', help='Resolver address. ' 'Usually designate-bind address.', required=False) parser.add_argument('-d', '--domain_name', help='DNS Domain Name. ' 'Must end in a .', default='mojo.serverstack.') parser.add_argument('-e', '--email', help='Email address', default='*****@*****.**') parser.add_argument('-b', '--bind-service', help='Bind Service Name', default='designate-bind') options = parser.parse_args() bind_service_name = mojo_utils.parse_mojo_arg(options, 'bind_service') resolver = mojo_utils.parse_mojo_arg(options, 'resolver') bind_unit = mojo_utils.get_juju_units(service=bind_service_name)[0] if not resolver: resolver = mojo_utils.get_juju_unit_ip(bind_unit) domain_name = mojo_utils.parse_mojo_arg(options, 'domain_name') email = mojo_utils.parse_mojo_arg(options, 'email') nameserver = 'ns1.{}'.format(domain_name) logging.info('Setting up designate {} {}'.format(nameserver, resolver)) overcloud_novarc = mojo_utils.get_overcloud_auth() os_version = mojo_os_utils.get_current_os_versions('keystone')['keystone'] # Keystone policy.json shipped the charm with liberty requires a domain # scoped token. Bug #1649106 if os_version == 'liberty': scope = 'DOMAIN' else: scope = 'PROJECT' keystone_session = mojo_os_utils.get_keystone_session(overcloud_novarc, scope=scope) neutronc = mojo_os_utils.get_neutron_session_client(keystone_session) if os_version >= 'queens': designatec = mojo_os_utils.get_designate_session_client( keystone_session, client_version='2') zone = mojo_os_utils.create_or_return_zone( designatec, domain_name, email) rs = mojo_os_utils.create_or_return_recordset( designatec, zone['id'], 'www', 'A', [resolver]) else: designatec = mojo_os_utils.get_designate_session_client( keystone_session, client_version='1') if not mojo_os_utils.get_designate_server_id(designatec, nameserver): logging.info('Creating server {}'.format(nameserver)) server = Server(name=nameserver) server_id = designatec.servers.create(server) assert(server_id is not None) else: logging.info('{} server already exists.'.format(nameserver)) domain_id = mojo_os_utils.get_designate_domain_id( designatec, domain_name) if not domain_id: logging.info('Creating domain {}'.format(domain_name)) domain = Domain(name=domain_name, email=email) domain_id = designatec.domains.create(domain) assert(domain_id is not None) else: logging.info('{} domain already exists.'.format(domain_name)) if not mojo_os_utils.get_designate_record_id(designatec, domain_id, nameserver): logging.info('Creating NS record {}'.format(nameserver)) ns_record = Record( name=nameserver, type="A", data=resolver) record_id = designatec.records.create(domain_id, ns_record) assert(record_id is not None) else: logging.info('{} record already exists.'.format(nameserver)) logging.info('Update network to use domain {}'.format(domain_name)) net_uuid = mojo_os_utils.get_net_uuid(neutronc, 'private') mojo_os_utils.update_network_dns(neutronc, net_uuid, domain_name)