├── .coveragerc ├── .gitignore ├── .gitreview ├── .stestr.conf ├── .zuul.yaml ├── CONTRIBUTING.rst ├── LICENSE ├── README.rst ├── api-ref └── source │ ├── conf.py │ ├── dns-api-v2-blacklist.inc │ ├── dns-api-v2-index.rst │ ├── dns-api-v2-limits.inc │ ├── dns-api-v2-pool.inc │ ├── dns-api-v2-quota.inc │ ├── dns-api-v2-recordset.inc │ ├── dns-api-v2-reverse-floatingips.inc │ ├── dns-api-v2-service-status.inc │ ├── dns-api-v2-shared-zones.inc │ ├── dns-api-v2-tld.inc │ ├── dns-api-v2-tsigkey.inc │ ├── dns-api-v2-zone-export.inc │ ├── dns-api-v2-zone-import.inc │ ├── dns-api-v2-zone-ownership-transfer-accept.inc │ ├── dns-api-v2-zone-ownership-transfer-request.inc │ ├── dns-api-v2-zone-tasks.inc │ ├── dns-api-v2-zone.inc │ ├── index.rst │ ├── parameters.yaml │ ├── samples │ ├── blacklists │ │ ├── blacklist-response.json │ │ ├── create-blacklist-request.json │ │ ├── list-blacklists-response.json │ │ ├── update-blacklist-request.json │ │ └── update-blacklist-response.json │ ├── limits │ │ └── get-limits-response.json │ ├── pools │ │ ├── list-pools-response.json │ │ └── show-pool-response.json │ ├── quotas │ │ ├── get-quotas-response.json │ │ ├── set-quotas-request.json │ │ └── set-quotas-response.json │ ├── recordsets │ │ ├── create-mx-recordset-request.json │ │ ├── create-mx-recordset-response.json │ │ ├── create-recordset-request.json │ │ ├── create-recordset-response.json │ │ ├── create-spf-recordset-request.json │ │ ├── create-spf-recordset-response.json │ │ ├── create-srv-recordset-request.json │ │ ├── create-srv-recordset-response.json │ │ ├── create-sshfp-recordset-request.json │ │ ├── create-sshfp-recordset-response.json │ │ ├── delete-recordset-response.json │ │ ├── list-all-recordset-response.json │ │ ├── list-recordset-in-zone-response.json │ │ ├── show-recordset-response.json │ │ ├── update-recordset-request.json │ │ └── update-recordset-response.json │ ├── reverse_floatingips │ │ ├── list-ptr-record-response.json │ │ ├── ptr-record-response.json │ │ ├── set-ptr-record-request.json │ │ └── unset-ptr-record-request.json │ ├── service_status │ │ ├── service_status_list.json │ │ └── service_status_show.json │ ├── tlds │ │ ├── create-tld-request.json │ │ ├── list-tlds-response.json │ │ ├── tld-response.json │ │ ├── update-tld-request.json │ │ └── update-tld-response.json │ ├── tsigkeys │ │ ├── create-tsigkey-request.json │ │ ├── list-tsigkeys-response.json │ │ ├── tsigkey-response.json │ │ ├── update-tsigkey-request.json │ │ └── update-tsigkey-response.json │ ├── versions │ │ └── get-versions-response.json │ └── zones │ │ ├── create-zone-export-response.json │ │ ├── create-zone-import-response.json │ │ ├── create-zone-request.json │ │ ├── create-zone-transfer-accept-request.json │ │ ├── create-zone-transfer-accept-response.json │ │ ├── create-zone-transfer-request-request.json │ │ ├── create-zone-transfer-request-response.json │ │ ├── delete-zone-response.json │ │ ├── list-share-zone-response.json │ │ ├── list-zone-export-response.json │ │ ├── list-zone-import-response.json │ │ ├── list-zone-transfer-accept-response.json │ │ ├── list-zone-transfer-request-response.json │ │ ├── list-zones-response.json │ │ ├── poolmove-zone-request.json │ │ ├── share-zone-request.json │ │ ├── share-zone-response.json │ │ ├── show-zone-export-content.txt │ │ ├── show-zone-export-response.json │ │ ├── show-zone-import-response.json │ │ ├── show-zone-nameservers-response.json │ │ ├── show-zone-transfer-request-response.json │ │ ├── update-zone-request.json │ │ ├── update-zone-response.json │ │ ├── update-zone-transfer-request-request.json │ │ ├── update-zone-transfer-request-response.json │ │ └── zone-response.json │ └── status.yaml ├── bindep.txt ├── contrib ├── designate-ext-samplehandler │ ├── .gitignore │ ├── MANIFEST.in │ ├── README.rst │ ├── designate_ext_samplehandler │ │ ├── __init__.py │ │ ├── notification_handler │ │ │ ├── __init__.py │ │ │ └── sample.py │ │ └── version.py │ ├── requirements.txt │ ├── setup.cfg │ ├── setup.py │ └── test-requirements.txt ├── dns_dump_dnspy.py ├── dns_dump_hex_to_text.py ├── dns_dump_raw.py ├── dns_dump_server.py ├── vagrant │ ├── README.rst │ ├── Vagrantfile │ ├── local.conf │ └── setup_ubuntu_devstack └── zoneextractor.py ├── designate.sublime-project ├── designate ├── __init__.py ├── api │ ├── __init__.py │ ├── admin │ │ ├── __init__.py │ │ ├── app.py │ │ ├── controllers │ │ │ ├── __init__.py │ │ │ ├── extensions │ │ │ │ ├── __init__.py │ │ │ │ ├── counts.py │ │ │ │ ├── export.py │ │ │ │ ├── quotas.py │ │ │ │ ├── reports.py │ │ │ │ ├── tenants.py │ │ │ │ └── zones.py │ │ │ └── root.py │ │ └── views │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ └── extensions │ │ │ ├── __init__.py │ │ │ ├── quotas.py │ │ │ └── reports.py │ ├── middleware.py │ ├── service.py │ ├── v2 │ │ ├── __init__.py │ │ ├── app.py │ │ ├── controllers │ │ │ ├── __init__.py │ │ │ ├── blacklists.py │ │ │ ├── common.py │ │ │ ├── errors.py │ │ │ ├── floatingips.py │ │ │ ├── limits.py │ │ │ ├── pools.py │ │ │ ├── quotas.py │ │ │ ├── recordsets.py │ │ │ ├── rest.py │ │ │ ├── reverse.py │ │ │ ├── root.py │ │ │ ├── service_status.py │ │ │ ├── tlds.py │ │ │ ├── tsigkeys.py │ │ │ └── zones │ │ │ │ ├── __init__.py │ │ │ │ ├── nameservers.py │ │ │ │ ├── recordsets.py │ │ │ │ ├── sharedzones.py │ │ │ │ └── tasks │ │ │ │ ├── __init__.py │ │ │ │ ├── abandon.py │ │ │ │ ├── exports.py │ │ │ │ ├── imports.py │ │ │ │ ├── pool_move.py │ │ │ │ ├── transfer_accepts.py │ │ │ │ ├── transfer_requests.py │ │ │ │ └── xfr.py │ │ └── patches.py │ ├── versions.py │ └── wsgi.py ├── backend │ ├── __init__.py │ ├── base.py │ ├── impl_akamai_v2.py │ ├── impl_bind9.py │ ├── impl_designate.py │ ├── impl_dynect.py │ ├── impl_fake.py │ ├── impl_infoblox.py │ ├── impl_ns1.py │ ├── impl_nsd4.py │ └── impl_pdns4.py ├── central │ ├── __init__.py │ ├── rpcapi.py │ └── service.py ├── cmd │ ├── __init__.py │ ├── api.py │ ├── central.py │ ├── manage.py │ ├── mdns.py │ ├── producer.py │ ├── sink.py │ ├── status.py │ └── worker.py ├── common │ ├── __init__.py │ ├── config.py │ ├── constants.py │ ├── decorators │ │ ├── __init__.py │ │ ├── lock.py │ │ ├── notification.py │ │ └── rpc.py │ ├── keystone.py │ ├── policies │ │ ├── __init__.py │ │ ├── base.py │ │ ├── blacklist.py │ │ ├── context.py │ │ ├── pool.py │ │ ├── quota.py │ │ ├── record.py │ │ ├── recordset.py │ │ ├── service_status.py │ │ ├── shared_zones.py │ │ ├── tenant.py │ │ ├── tld.py │ │ ├── tsigkey.py │ │ ├── zone.py │ │ ├── zone_export.py │ │ ├── zone_import.py │ │ ├── zone_transfer_accept.py │ │ └── zone_transfer_request.py │ └── profiler.py ├── conf │ ├── __init__.py │ ├── api.py │ ├── base.py │ ├── central.py │ ├── coordination.py │ ├── dynect.py │ ├── heartbeat_emitter.py │ ├── keystone.py │ ├── mdns.py │ ├── network_api.py │ ├── opts.py │ ├── producer.py │ ├── proxy.py │ ├── sink.py │ ├── storage.py │ └── worker.py ├── context.py ├── coordination.py ├── dnsmiddleware.py ├── dnsutils.py ├── exceptions.py ├── hacking │ ├── __init__.py │ └── checks.py ├── heartbeat_emitter.py ├── i18n.py ├── locale │ ├── en_GB │ │ └── LC_MESSAGES │ │ │ └── designate.po │ ├── ko_KR │ │ └── LC_MESSAGES │ │ │ └── designate.po │ └── ru │ │ └── LC_MESSAGES │ │ └── designate.po ├── manage │ ├── __init__.py │ ├── base.py │ ├── database.py │ ├── pool.py │ └── tlds.py ├── mdns │ ├── __init__.py │ ├── handler.py │ └── service.py ├── network_api │ ├── __init__.py │ ├── base.py │ ├── fake.py │ └── neutron.py ├── notification_handler │ ├── __init__.py │ ├── base.py │ ├── fake.py │ ├── neutron.py │ └── nova.py ├── notifications.py ├── objects │ ├── __init__.py │ ├── adapters │ │ ├── __init__.py │ │ ├── api_v2 │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── blacklist.py │ │ │ ├── floating_ip.py │ │ │ ├── pool.py │ │ │ ├── pool_attribute.py │ │ │ ├── pool_ns_record.py │ │ │ ├── quota.py │ │ │ ├── record.py │ │ │ ├── recordset.py │ │ │ ├── service_status.py │ │ │ ├── shared_zone.py │ │ │ ├── tld.py │ │ │ ├── tsigkey.py │ │ │ ├── validation_error.py │ │ │ ├── zone.py │ │ │ ├── zone_attribute.py │ │ │ ├── zone_export.py │ │ │ ├── zone_import.py │ │ │ ├── zone_master.py │ │ │ ├── zone_transfer_accept.py │ │ │ └── zone_transfer_request.py │ │ ├── base.py │ │ └── yaml │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── pool.py │ │ │ ├── pool_also_notify.py │ │ │ ├── pool_attribute.py │ │ │ ├── pool_catalog_zone.py │ │ │ ├── pool_nameserver.py │ │ │ ├── pool_ns_record.py │ │ │ ├── pool_target.py │ │ │ ├── pool_target_master.py │ │ │ └── pool_target_option.py │ ├── base.py │ ├── blacklist.py │ ├── fields.py │ ├── floating_ip.py │ ├── pool.py │ ├── pool_also_notify.py │ ├── pool_attribute.py │ ├── pool_catalog_zone.py │ ├── pool_nameserver.py │ ├── pool_ns_record.py │ ├── pool_target.py │ ├── pool_target_master.py │ ├── pool_target_option.py │ ├── quota.py │ ├── record.py │ ├── recordset.py │ ├── rrdata_a.py │ ├── rrdata_aaaa.py │ ├── rrdata_caa.py │ ├── rrdata_cert.py │ ├── rrdata_cname.py │ ├── rrdata_mx.py │ ├── rrdata_naptr.py │ ├── rrdata_ns.py │ ├── rrdata_ptr.py │ ├── rrdata_soa.py │ ├── rrdata_spf.py │ ├── rrdata_srv.py │ ├── rrdata_sshfp.py │ ├── rrdata_txt.py │ ├── service_status.py │ ├── shared_zone.py │ ├── tenant.py │ ├── tld.py │ ├── tsigkey.py │ ├── validation_error.py │ ├── zone.py │ ├── zone_attribute.py │ ├── zone_export.py │ ├── zone_import.py │ ├── zone_master.py │ ├── zone_transfer_accept.py │ └── zone_transfer_request.py ├── plugin.py ├── policy.py ├── producer │ ├── __init__.py │ ├── service.py │ └── tasks.py ├── quota │ ├── __init__.py │ ├── base.py │ ├── impl_noop.py │ └── impl_storage.py ├── resources │ ├── schemas │ │ └── admin │ │ │ └── quota.json │ └── templates │ │ ├── bind9-zone.jinja2 │ │ ├── dnsmasq-zone.jinja2 │ │ └── export-zone.jinja2 ├── rpc.py ├── scheduler │ ├── __init__.py │ ├── base.py │ └── filters │ │ ├── __init__.py │ │ ├── attribute_filter.py │ │ ├── base.py │ │ ├── default_pool_filter.py │ │ ├── fallback_filter.py │ │ ├── in_doubt_default_pool_filter.py │ │ ├── pool_id_attribute_filter.py │ │ └── random_filter.py ├── schema.py ├── service.py ├── sink │ ├── __init__.py │ └── service.py ├── storage │ ├── __init__.py │ ├── sql.py │ └── sqlalchemy │ │ ├── __init__.py │ │ ├── alembic.ini │ │ ├── alembic │ │ ├── README │ │ ├── env.py │ │ ├── legacy_utils.py │ │ ├── script.py.mako │ │ └── versions │ │ │ ├── 0bcf910ea823_add_zone_attributes.py │ │ │ ├── 15b34ff3ecb8_fix_service_charset.py │ │ │ ├── 304d41c3847a_add_services.py │ │ │ ├── 7977deaa5167_add_rrset_indexes_for_filtering_perf.py │ │ │ ├── 867a331ce1fc_domain_to_zone_rename.py │ │ │ ├── 9099de8ae11c_add_catalog_zones.py │ │ │ ├── 91eb1eb7c882_support_caa_records.py │ │ │ ├── 93a00a815f07_unique_service_status.py │ │ │ ├── a005af3aa38e_add_increment_serial.py │ │ │ ├── a69b45715cc1_add_delayed_notify_column.py │ │ │ ├── b20189fd288e_shared_zone.py │ │ │ ├── b8999fd10721_support_naptr_records.py │ │ │ ├── bfcfc4a07487_unique_ns_record.py │ │ │ ├── c9f427f7180a_liberty.py │ │ │ ├── d04819112169_new_pools_tables.py │ │ │ ├── d9a1883e93e9_add_fks.py │ │ │ ├── e5e2199ed76e_support_cert_records.py │ │ │ └── f9f969f9d85e_change_managed_column_types.py │ │ ├── base.py │ │ ├── tables.py │ │ ├── types.py │ │ └── utils.py ├── tests │ ├── README │ ├── __init__.py │ ├── base_fixtures.py │ ├── functional │ │ ├── README │ │ ├── __init__.py │ │ ├── api │ │ │ ├── __init__.py │ │ │ ├── admin │ │ │ │ ├── __init__.py │ │ │ │ └── extensions │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_quotas.py │ │ │ │ │ └── test_reports.py │ │ │ ├── test_middleware.py │ │ │ ├── test_service.py │ │ │ └── v2 │ │ │ │ ├── __init__.py │ │ │ │ ├── test_api.py │ │ │ │ ├── test_blacklists.py │ │ │ │ ├── test_floatingips.py │ │ │ │ ├── test_hostheaders.py │ │ │ │ ├── test_import_export.py │ │ │ │ ├── test_limits.py │ │ │ │ ├── test_pools.py │ │ │ │ ├── test_quotas.py │ │ │ │ ├── test_recordsets.py │ │ │ │ ├── test_service_status.py │ │ │ │ ├── test_shared_zones.py │ │ │ │ ├── test_tlds.py │ │ │ │ ├── test_tsigkeys.py │ │ │ │ ├── test_zone_exports.py │ │ │ │ ├── test_zone_recordsets.py │ │ │ │ ├── test_zone_transfers.py │ │ │ │ └── test_zones.py │ │ ├── central │ │ │ ├── __init__.py │ │ │ ├── test_basic.py │ │ │ └── test_service.py │ │ ├── manage │ │ │ ├── __init__.py │ │ │ ├── test_database.py │ │ │ ├── test_pool.py │ │ │ ├── test_tlds.py │ │ │ └── test_update_pool.py │ │ ├── mdns │ │ │ ├── __init__.py │ │ │ ├── test_handler.py │ │ │ └── test_service.py │ │ ├── notification_handler │ │ │ ├── __init__.py │ │ │ ├── test_base.py │ │ │ ├── test_neutron.py │ │ │ └── test_nova.py │ │ ├── producer │ │ │ ├── __init__.py │ │ │ ├── test_service.py │ │ │ └── test_tasks.py │ │ ├── quota │ │ │ ├── __init__.py │ │ │ ├── test_quota.py │ │ │ └── test_storage.py │ │ ├── test_context.py │ │ ├── test_dnsmiddleware.py │ │ ├── test_dnsutils.py │ │ ├── test_migration.py │ │ ├── test_sqlalchemy.py │ │ ├── test_storage.py │ │ ├── test_upgrade_checks.py │ │ └── worker │ │ │ ├── __init__.py │ │ │ ├── test_notify.py │ │ │ └── test_worker_tasks.py │ ├── resources │ │ ├── __init__.py │ │ ├── pools_yaml │ │ │ ├── bind9_pools.yaml │ │ │ ├── multiple-pools.yaml │ │ │ ├── pools-catalog-zone.yaml │ │ │ ├── pools.yaml │ │ │ └── sample_output.yaml │ │ ├── sample_notifications │ │ │ ├── neutron │ │ │ │ ├── floatingip.delete.start.json │ │ │ │ ├── floatingip.update.end_associate.json │ │ │ │ ├── floatingip.update.end_disassociate.json │ │ │ │ ├── port.create.end.json │ │ │ │ ├── port.create.start.json │ │ │ │ ├── port.delete.end.json │ │ │ │ └── port.delete.start.json │ │ │ └── nova │ │ │ │ ├── compute.instance.create.end-2.json │ │ │ │ ├── compute.instance.create.end.json │ │ │ │ ├── compute.instance.create.start.json │ │ │ │ ├── compute.instance.delete.start.json │ │ │ │ ├── compute.instance.shutdown.end.json │ │ │ │ ├── compute.instance.shutdown.start.json │ │ │ │ ├── network.floating_ip.allocate.json │ │ │ │ ├── network.floating_ip.associate.json │ │ │ │ ├── network.floating_ip.deallocate.json │ │ │ │ ├── network.floating_ip.disassociate.json │ │ │ │ ├── scheduler.run_instance.end.json │ │ │ │ ├── scheduler.run_instance.scheduled.json │ │ │ │ └── scheduler.run_instance.start.json │ │ ├── tlds │ │ │ ├── tlds_list │ │ │ ├── tlds_list_with_descriptions │ │ │ ├── tlds_list_with_extra_fields │ │ │ └── tlds_list_with_invalid_tlds │ │ └── zonefiles │ │ │ ├── example.com.zone │ │ │ ├── malformed_example.com.zone │ │ │ ├── noorigin_example.com.zone │ │ │ ├── nosoa_example.com.zone │ │ │ ├── two_example.com.zone │ │ │ └── zerosoa_example.com.zone │ └── unit │ │ ├── README │ │ ├── __init__.py │ │ ├── api │ │ ├── __init__.py │ │ ├── test_admin_api.py │ │ ├── test_middleware.py │ │ ├── test_root.py │ │ ├── test_version.py │ │ ├── test_wsgi.py │ │ └── v2 │ │ │ ├── __init__.py │ │ │ ├── test_abandon.py │ │ │ ├── test_api_v2.py │ │ │ ├── test_floatingips.py │ │ │ ├── test_patches.py │ │ │ ├── test_pool_move.py │ │ │ ├── test_quotas.py │ │ │ ├── test_recordsets.py │ │ │ ├── test_rest_controller.py │ │ │ └── test_zones.py │ │ ├── backend │ │ ├── __init__.py │ │ ├── test_akamai_v2.py │ │ ├── test_base.py │ │ ├── test_bind9.py │ │ ├── test_designate.py │ │ ├── test_dynect.py │ │ ├── test_fake.py │ │ ├── test_infoblox.py │ │ ├── test_ns1.py │ │ ├── test_nsd4.py │ │ └── test_pdns4.py │ │ ├── central │ │ ├── __init__.py │ │ ├── test_central.py │ │ └── test_lock_decorator.py │ │ ├── cmd │ │ ├── __init__.py │ │ ├── test_cmd.py │ │ └── test_manage.py │ │ ├── common │ │ ├── __init__.py │ │ ├── test_keystone.py │ │ ├── test_profiler.py │ │ ├── test_regex.py │ │ ├── test_rpc_logging.py │ │ └── test_zone_lock.py │ │ ├── manage │ │ ├── __init__.py │ │ ├── test_base.py │ │ └── test_pool.py │ │ ├── mdns │ │ ├── __init__.py │ │ ├── test_handler.py │ │ └── test_service.py │ │ ├── network_api │ │ ├── __init__.py │ │ ├── test_base.py │ │ ├── test_fake.py │ │ └── test_neutron.py │ │ ├── notification_handler │ │ ├── __init__.py │ │ ├── test_fake.py │ │ ├── test_neutron.py │ │ └── test_nova.py │ │ ├── objects │ │ ├── __init__.py │ │ ├── test_adapters.py │ │ ├── test_adapters_v2_api.py │ │ ├── test_adapters_yaml.py │ │ ├── test_base.py │ │ ├── test_fields.py │ │ ├── test_floating_ip.py │ │ ├── test_quota.py │ │ ├── test_recordset.py │ │ ├── test_rrdata_a.py │ │ ├── test_rrdata_aaaa.py │ │ ├── test_rrdata_caa.py │ │ ├── test_rrdata_cert.py │ │ ├── test_rrdata_cname.py │ │ ├── test_rrdata_mx.py │ │ ├── test_rrdata_naptr.py │ │ ├── test_rrdata_ns.py │ │ ├── test_rrdata_ptr.py │ │ ├── test_rrdata_soa.py │ │ ├── test_rrdata_spf.py │ │ ├── test_rrdata_srv.py │ │ ├── test_rrdata_sshfp.py │ │ ├── test_rrdata_txt.py │ │ ├── test_zone.py │ │ └── test_zone_master.py │ │ ├── producer │ │ ├── __init__.py │ │ ├── test_service.py │ │ └── test_tasks.py │ │ ├── scheduler │ │ ├── __init__.py │ │ ├── test_basic.py │ │ ├── test_filters.py │ │ └── test_permutations.py │ │ ├── sink │ │ ├── __init__.py │ │ ├── test_notifications.py │ │ └── test_service.py │ │ ├── storage │ │ ├── __init__.py │ │ └── impl_sqlalchemy │ │ │ ├── __init__.py │ │ │ ├── alembic │ │ │ ├── __init__.py │ │ │ └── test_legacy_utils.py │ │ │ └── test_sqlalchemy.py │ │ ├── test_conf.py │ │ ├── test_context.py │ │ ├── test_coordination.py │ │ ├── test_dnsmiddleware.py │ │ ├── test_dnsutils.py │ │ ├── test_heartbeat_emitter.py │ │ ├── test_notifications.py │ │ ├── test_rpc.py │ │ ├── test_schema.py │ │ ├── test_service.py │ │ ├── test_utils.py │ │ ├── utils.py │ │ └── workers │ │ ├── __init__.py │ │ ├── test_base_task.py │ │ ├── test_notify.py │ │ ├── test_processing.py │ │ ├── test_rpcapi.py │ │ ├── test_service.py │ │ ├── test_task_config.py │ │ ├── test_xfr.py │ │ └── test_zone_tasks.py ├── utils.py ├── version.py ├── worker │ ├── README.md │ ├── __init__.py │ ├── processing.py │ ├── rpcapi.py │ ├── service.py │ └── tasks │ │ ├── __init__.py │ │ ├── base.py │ │ └── zone.py └── wsgi │ ├── __init__.py │ └── api.py ├── devstack ├── README.rst ├── designate_plugins │ ├── backend-akamai-v2 │ ├── backend-bind9 │ ├── backend-designate │ ├── backend-dynect │ ├── backend-fake │ ├── backend-infoblox │ ├── backend-multipool-bind9 │ ├── backend-ns1 │ ├── backend-pdns4 │ ├── backend-pdns4-mysql-db.sql │ └── backend-pdns4-pgsql-db.sql ├── exercise.sh ├── files │ └── apache-designate-api.template ├── gate │ ├── gate_hook.sh │ ├── post_test_hook.sh │ ├── run_cli_tests.sh │ └── run_tempest_tests.sh ├── lib │ └── wsgi ├── plugin.sh ├── settings └── upgrade │ ├── from-xena │ └── upgrade-designate │ ├── resources.sh │ ├── settings │ ├── shutdown.sh │ └── upgrade.sh ├── doc ├── ext │ ├── __init__.py │ ├── assets │ │ ├── support-matrix.css │ │ └── support-matrix.js │ ├── custom_css.py │ └── support_matrix.py ├── requirements.txt └── source │ ├── _extra │ └── .htaccess │ ├── _static │ └── .placeholder │ ├── admin │ ├── backends │ │ ├── akamai_v2.rst │ │ ├── bind9.rst │ │ ├── index.rst │ │ ├── infoblox.rst │ │ ├── ns1.rst │ │ ├── pdns4.rst │ │ └── sample_yaml_snippets │ │ │ ├── akamai-v2.yaml │ │ │ ├── bind.yaml │ │ │ ├── ns1.yaml │ │ │ └── pdns4.yaml │ ├── blacklists.rst │ ├── config.rst │ ├── ha.rst │ ├── index.rst │ ├── multiple-pools.rst │ ├── notifications.rst │ ├── policy.rst │ ├── pool-scheduler.rst │ ├── pools.rst │ ├── production-guidelines.rst │ ├── quotas.rst │ ├── samples │ │ ├── config.rst │ │ ├── index.rst │ │ └── policy-yaml.rst │ ├── support-matrix.ini │ ├── support-matrix.rst │ ├── tlds.rst │ ├── troubleshooting.rst │ └── upgrades │ │ ├── index.rst │ │ ├── kilo.rst │ │ ├── mitaka.rst │ │ ├── newton.rst │ │ └── ocata.rst │ ├── cli │ ├── designate-manage.rst │ ├── designate-status.rst │ └── index.rst │ ├── conf.py │ ├── configuration │ └── index.rst │ ├── contributor │ ├── architecture.rst │ ├── devstack.rst │ ├── getting-involved.rst │ ├── gmr.rst │ ├── index.rst │ ├── integrations.rst │ ├── sourcedoc │ │ ├── api.rst │ │ ├── backend.rst │ │ ├── central.rst │ │ ├── index.rst │ │ ├── mdns.rst │ │ ├── objects.rst │ │ ├── quota.rst │ │ ├── sink.rst │ │ └── storage.rst │ └── ubuntu-dev.rst │ ├── diagrams │ ├── Designate-MultiZone.dia │ ├── Designate-PowerDNS-Detail.dia │ ├── Designate-Simple.dia │ └── README │ ├── examples │ └── basic-pools-sample.yaml │ ├── images │ ├── Designate-Arch.png │ ├── Designate-Arch.svg │ ├── Designate-DNS-Integration.png │ ├── Designate-DNS-Integration.svg │ ├── Designate-DNS-Overview.png │ ├── Designate-DNS-Overview.svg │ ├── Designate-DNS-Resolvers.png │ └── Designate-DNS-Resolvers.svg │ ├── index.rst │ ├── install │ ├── common_prerequisites.rst │ ├── create-zone.rst │ ├── get_started.rst │ ├── index.rst │ ├── install-rdo.rst │ ├── install-ubuntu.rst │ ├── install.rst │ ├── next-steps.rst │ └── verify.rst │ ├── intro │ └── index.rst │ ├── reference │ ├── glossary.rst │ └── index.rst │ └── user │ ├── importexport.rst │ ├── index.rst │ ├── manage-ptr-records.rst │ ├── manage-recordsets.rst │ ├── manage-zones.rst │ ├── neutron-integration.rst │ ├── secondary-zones.rst │ ├── shared-zones.rst │ └── zone-transfer.rst ├── etc └── designate │ ├── README-designate.conf.txt │ ├── api-paste.ini │ ├── designate-config-generator.conf │ ├── designate-policy-generator.conf │ ├── policy.yaml.sample │ ├── pools.yaml.sample │ ├── pools.yaml.sample-akamai_v2 │ ├── pools.yaml.sample-bind │ ├── pools.yaml.sample-infoblox │ ├── pools.yaml.sample-multiple-pools │ ├── rootwrap.conf │ └── rootwrap.d │ ├── bind9.filters │ ├── djbdns.filters │ └── knot2.filters ├── playbooks ├── designate-bind9 │ └── post.yaml ├── designate-pdns4 │ └── post.yaml └── enable-fips.yaml ├── rally-jobs ├── README.rst ├── designate-designate.yaml ├── extra │ └── README.rst └── plugins │ ├── README.rst │ └── __init__.py ├── releasenotes ├── notes │ ├── .placeholder │ ├── Add-API-versioning-f5747a0bc766fb14.yaml │ ├── Add-Shared-Zones-47df0368bb3ee466.yaml │ ├── Add-Tsig-secret-validation-5d2f3875d32efd83.yaml │ ├── Bump-dnspython-requirement-to-2.2.1-a3d062a1e16cc8a9.yaml │ ├── CAA_NAPTR_records-5e2e466a5bc18a31.yaml │ ├── CERT_records-eb9b786f480851ff.yaml │ ├── Deprecate-the-agent-framework-a87c5e286694fb38.yaml │ ├── Fix-Delete-back-end-zone-resources-upon-zone-deletion-da0051432c95c8e2.yaml │ ├── Fix-designate-manage-pool-update-with-missing-attributes-3037b2dad30f84e2.yaml │ ├── Fix-jsonschema-4.16.0-compatibility-aa65062bc55552f2.yaml │ ├── Fix-list-and-show-shared-zones-8a42a6b5f4910fc7.yaml │ ├── Fix-metadata.bind-use-on-upgrade-3ca33425f341ac5b.yaml │ ├── Fix-recordset-records-quota-76ed3095dd2afbbe.yaml │ ├── Fix-share-zone-with-zone-owner-31a20c57a65c0cc4.yaml │ ├── Fix-to-address-denylist-invalid-patterns-not-being-checked-ec1f1316ccc6cb1d.yaml │ ├── Fix-update-zone-create-zone-ada1fd81de479492.yaml │ ├── Fix-zone-list-when-zone-shared-more-than-once-288b57cafeba82df.yaml │ ├── Mention-sizelimit-tuning-for-zone-import-6d806b32c668c9c9.yaml │ ├── Remove-Akamai-eNDS-backend-1c73a734e8f8ddfa.yaml │ ├── Replace-neutronclient-with-openstacksdk-5ae199bc327376b9.yaml │ ├── Require-all-projects-for-set-quotas-with-non-project-scoped-tokens-ffe3082db3dbb55b.yaml │ ├── Support-scoped-tokens-6b7d6052a258cd11.yaml │ ├── Switch-to-alembic-migrations-15b7701f4e8b37c1.yaml │ ├── Update-for-SQLAlchemy-2.x-d4a5e2e3227f199e.yaml │ ├── Workaround-unassigned-opcode-14-d5e1c759db58bb10.yaml │ ├── add-catalog-zone-support-8e9c14c3f01e00fc.yaml │ ├── add-multiple-pools-docs-19071225709c5702.yaml │ ├── agent-port-number-c28462562a74cbf9.yaml │ ├── akamai-v2-5a3edb35f59a17c2.yaml │ ├── api-dot-json-324038360202e86b.yaml │ ├── api-mdns-multiple-bind-c78853de46ee587d.yaml │ ├── attribute-filter-f06a53b61f5fd111.yaml │ ├── batch-increment-serial-07485eb3bbbac6c3.yaml │ ├── bp-designate-os-profiler-3f507d5e1e319f3d.yaml │ ├── bug-1755788-txt-spf-validation-d18e43c12691132a.yaml │ ├── bug-1768824-service_statuses-constraint-7a30eb78dc63b86f.yaml │ ├── bug-1827070-service_status-multiple-workers-cf99fe9e4eaf57ff.yaml │ ├── bug-1828534-ensure-coordination-ids-are-encoded-b5f32b9e16339251.yaml │ ├── bug-1832799-allow-topic-override-7540c14a10b8e3ae.yaml │ ├── bug-1926429-allow-ttl-min-of-zero-688f7c2cf095d89d.yaml │ ├── bug-1958533-allow-caa-mail-subaddr-d02cdc46bbb118ad.yaml │ ├── bug-1967825-c3463edde9a9dd7a.yaml │ ├── bug-2015762-sink-delete-fails-intermittently-53168cf5cd830b59.yaml │ ├── bugfix-1971856-3938a55b5494b8b8.yaml │ ├── cfg-notification-remove.yaml │ ├── clean-up-neutron-opts-1ff35105972d3acb.yaml │ ├── cleanup-api-options-dalmetian-32e879f025ab6580.yaml │ ├── deprecate-json-formatted-policy-file-a6a464a8d35e02a5.yaml │ ├── deprecate-ssl-middleware-opts-bee401944e40fc63.yaml │ ├── djbdns-agent-backend-c84e9eeab48d2e01.yaml │ ├── drop-py-2-7-737ea2547cb7ea06.yaml │ ├── edgegrid-optional-ab7662a9e71612d3.yaml │ ├── enable-host-header-d759b65d8b0e67a1.yaml │ ├── enforce-utf8-tables-mysql-274b5c3c1afe4b3b.yaml │ ├── experimental-wsgi-support-8370a8d9b298d5ca.yaml │ ├── fix-backlog-1a13bd80729c2bed.yaml │ ├── fix-designate-manage-pool-7d812f938e894133.yaml │ ├── fix-recordset-status-204e2747ef47d5ad.yaml │ ├── fix-refresh-secondary-zone-task-79f68d3f7377181c.yaml │ ├── fix-service-status-ba18270651011ee6.yaml │ ├── fix-zone-transfer-request-scoped-token-fc9d3be407e1a50a.yaml │ ├── improved-infoblox-backend-e24cee40ba568e65.yaml │ ├── knot-agent-backend-db2893aa97d85a1d.yaml │ ├── mdns-rpc-moved-0e7eea194064834a.yaml │ ├── mdns-tcp-keepidle-5ef6ec194a892f8a.yaml │ ├── mini-dns-tcp-c1a15742f5c71739.yaml │ ├── multilevel-tlds-3dadd285fed82715.yaml │ ├── new-ptr-status-69958252a2f294c9.yaml │ ├── new-service-layer-8023c242de89075a.yaml │ ├── newton-rc-1-eddc78fac760b98a.yaml │ ├── pdns4-tsig-1fda534c01d90138.yaml │ ├── pluggable-notifications-bd049b755a2ace9c.yaml │ ├── policy-in-code-8d3f4f89e2ede50f.yaml │ ├── pool-config-db-45a2cad74e22d95e.yaml │ ├── pool-listener-6689ffa50345ba6e.yaml │ ├── pool-manager-disabled-ff8582b5f86d2360.yaml │ ├── pool_scheduler-32e34dda9484ef9a.yaml │ ├── quotas-validate-project-36a2a88b66bc6d63.yaml │ ├── recordset-api-2c82abf569f7623e.yaml │ ├── remove-deprecated-agent-1ef95b8608e2a41b.yaml │ ├── remove-deprecated-mdns-options-d720efab5ab275d6.yaml │ ├── remove-deprecated-storage-driver-option-e3b5e3448e81c8cb.yaml │ ├── remove-more-unused-rpc-calls-d0199cf5518da6d6.yaml │ ├── remove-netaddr-requirement-ab9b9c2d15aa8e1c.yaml │ ├── remove-py38-28e9b2f3df6af4ac.yaml │ ├── remove-unused-rpc-calls-b123902ea0c55c19.yaml │ ├── remove-v1-api-e38de408c6454de2.yaml │ ├── remove-wsgi-scripts-d848069ac50cf062.yaml │ ├── removed-deprecated-managed-210a00cdaf975b8f.yaml │ ├── removed-mdns-notify-cae01bac02d214a9.yaml │ ├── removed-metrics-11a53cf88e1ea224.yaml │ ├── removed-pool-manager-a1a9466aceb44b9f.yaml │ ├── removing-deprectated-pdns-mysql-backend-1babc968f5778ae6.yaml │ ├── rpc-version-update-f87b852b361d0aad.yaml │ ├── service-status-ab0e696c8f5fdef8.yaml │ ├── soa_refresh_interval_randomization-fcc1d0d63124699b.yaml │ ├── stein-upgrade-checkers-cli-b8518126fff82be6.yaml │ ├── unused-rpc-calls-7df4dcbcc19c6f60.yaml │ ├── update-designate-manage-command-af0aec02ab582d50.yaml │ ├── v1-disabled-ffebc0434fa0665f.yaml │ ├── v2-api-quotas-dd7e189cddcf7b96.yaml │ ├── validate-doublequotes-6c4ed4f65a9d5e4b.yaml │ ├── worker-executor-84d983c92dd13b49.yaml │ ├── zone-pool-move-7bb8e1f0839c3c0d.yaml │ ├── zone_name-null-zone-trasfer-request-response-a2e316872798d1df.yaml │ └── zones_unlimited_quota-81a2dfba1f532c9c.yaml └── source │ ├── 2023.1.rst │ ├── 2023.2.rst │ ├── 2024.1.rst │ ├── 2024.2.rst │ ├── 2025.1.rst │ ├── _static │ └── .placeholder │ ├── _templates │ └── .placeholder │ ├── conf.py │ ├── index.rst │ ├── liberty.rst │ ├── locale │ ├── en_GB │ │ └── LC_MESSAGES │ │ │ └── releasenotes.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ └── releasenotes.po │ └── ja │ │ └── LC_MESSAGES │ │ └── releasenotes.po │ ├── mitaka.rst │ ├── newton.rst │ ├── ocata.rst │ ├── pike.rst │ ├── queens.rst │ ├── rocky.rst │ ├── stein.rst │ ├── train.rst │ ├── unreleased.rst │ ├── ussuri.rst │ ├── victoria.rst │ ├── wallaby.rst │ ├── xena.rst │ ├── yoga.rst │ └── zed.rst ├── requirements.txt ├── roles ├── bind-logs-conf │ ├── defaults │ │ └── main.yaml │ └── tasks │ │ └── main.yaml └── pdns4-logs-conf │ ├── defaults │ └── main.yaml │ └── tasks │ └── main.yaml ├── setup.cfg ├── setup.py ├── test-requirements.txt ├── tools ├── install_venv.py ├── install_venv_common.py ├── mysql_pending_notify_bench │ ├── README │ └── runner └── with_venv.sh └── tox.ini /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = designate 4 | omit = designate/tests/*,designate/hacking/* 5 | concurrency = greenlet 6 | 7 | [report] 8 | ignore_errors = True 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Python related files 3 | 4 | *.dat 5 | *.egg* 6 | *.pyc 7 | TAGS 8 | build 9 | 10 | # Test related files 11 | 12 | *.log 13 | .coverage 14 | .coverage.* 15 | .tox 16 | .venv 17 | cover 18 | flake8_results.html 19 | functionaltests/.testrepository/ 20 | functionaltests/tempest.log 21 | htmlcov/ 22 | venv 23 | 24 | # Files created by releasenotes build 25 | releasenotes/build 26 | 27 | # Editors 28 | 29 | *.sublime-workspace 30 | *.swp 31 | 32 | # Misc 33 | 34 | *.DS_Store 35 | *.idea 36 | *.ipynb 37 | *.orig 38 | .stestr/ 39 | *.sqlite 40 | *.sqlite3 41 | /.ipynb_checkpoints/* 42 | /bind9 43 | /dnsmasq 44 | AUTHORS 45 | ChangeLog 46 | contrib/vagrant/.vagrant/ 47 | designate/versioninfo 48 | dist 49 | doc/source/_static/*.sample 50 | doc/build/* 51 | doc/source/api/* 52 | api-ref/build/* 53 | etc/designate/*.conf.sample 54 | etc/designate/*.yaml 55 | var/* 56 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/designate.git 5 | -------------------------------------------------------------------------------- /.stestr.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | test_path=${OS_TEST_PATH:-./designate/tests} 3 | top_dir=./ 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | The source repository for this project can be found at: 2 | 3 | https://opendev.org/openstack/designate 4 | 5 | Pull requests submitted through GitHub are not monitored. 6 | 7 | To start contributing to OpenStack, follow the steps in the contribution guide 8 | to set up and use Gerrit: 9 | 10 | https://docs.openstack.org/contributors/code-and-documentation/quick-start.html 11 | 12 | Bugs should be filed on Launchpad: 13 | 14 | https://bugs.launchpad.net/designate 15 | 16 | For more specific information about contributing to this repository, see the 17 | designate contributor guide: 18 | 19 | https://docs.openstack.org/designate/latest/contributor/getting-involved.html#contributing 20 | -------------------------------------------------------------------------------- /api-ref/source/dns-api-v2-index.rst: -------------------------------------------------------------------------------- 1 | :tocdepth: 2 2 | 3 | =========== 4 | DNS v2 API 5 | =========== 6 | 7 | .. rest_expand_all:: 8 | 9 | .. include:: dns-api-v2-zone.inc 10 | .. include:: dns-api-v2-zone-import.inc 11 | .. include:: dns-api-v2-zone-export.inc 12 | .. include:: dns-api-v2-zone-tasks.inc 13 | .. include:: dns-api-v2-shared-zones.inc 14 | .. include:: dns-api-v2-zone-ownership-transfer-request.inc 15 | .. include:: dns-api-v2-zone-ownership-transfer-accept.inc 16 | .. include:: dns-api-v2-recordset.inc 17 | .. include:: dns-api-v2-pool.inc 18 | .. include:: dns-api-v2-limits.inc 19 | .. include:: dns-api-v2-tld.inc 20 | .. include:: dns-api-v2-tsigkey.inc 21 | .. include:: dns-api-v2-blacklist.inc 22 | .. include:: dns-api-v2-quota.inc 23 | .. include:: dns-api-v2-service-status.inc 24 | .. include:: dns-api-v2-reverse-floatingips.inc 25 | -------------------------------------------------------------------------------- /api-ref/source/samples/blacklists/blacklist-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "This is a blacklisted domain.", 3 | "links": { 4 | "self": "http://127.0.0.1:9001/v2/blacklists/af91edb5-ede8-453f-af13-feabdd088f9c" 5 | }, 6 | "pattern": "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$", 7 | "created_at": "2016-05-20 06:15:42", 8 | "updated_at": null, 9 | "id": "af91edb5-ede8-453f-af13-feabdd088f9c" 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/blacklists/create-blacklist-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "pattern" : "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$", 3 | "description" : "This is a blacklisted domain." 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/blacklists/list-blacklists-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "blacklists": [ 3 | { 4 | "description": "This is a blacklisted domain.", 5 | "links": { 6 | "self": "http://127.0.0.1:9001/v2/blacklists/af91edb5-ede8-453f-af13-feabdd088f9c" 7 | }, 8 | "pattern": "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$", 9 | "created_at": "2016-05-20 06:15:42", 10 | "updated_at": null, 11 | "id": "af91edb5-ede8-453f-af13-feabdd088f9c" 12 | }, 13 | { 14 | "description": "Example blacklisted domain.", 15 | "links": { 16 | "self": "http://127.0.0.1:9001/v2/blacklists/f26e22f8-619f-4738-9077-0586e7cb76bd" 17 | }, 18 | "pattern": "^examples\\.com\\.$", 19 | "created_at": "2016-05-20 06:22:12", 20 | "updated_at": null, 21 | "id": "f26e22f8-619f-4738-9077-0586e7cb76bd" 22 | } 23 | ], 24 | "links": { 25 | "self": "http://127.0.0.1:9001/v2/blacklists" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /api-ref/source/samples/blacklists/update-blacklist-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "pattern" : "^examples\\.com\\.$", 3 | "description" : "Updated the description" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/blacklists/update-blacklist-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Updated the description", 3 | "links": { 4 | "self": "http://127.0.0.1:9001/v2/blacklists/f26e22f8-619f-4738-9077-0586e7cb76bd" 5 | }, 6 | "pattern": "^examples\\.com\\.$", 7 | "created_at": "2016-05-20 06:22:12", 8 | "updated_at": "2016-05-20 06:41:34", 9 | "id": "f26e22f8-619f-4738-9077-0586e7cb76bd" 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/limits/get-limits-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "max_page_limit": 1000, 3 | "max_recordset_name_length": 255, 4 | "max_recordset_records": 20, 5 | "max_zone_name_length": 255, 6 | "max_zone_records": 500, 7 | "max_zone_recordsets": 500, 8 | "max_zones": 10, 9 | "min_ttl": null 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/pools/show-pool-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": null, 3 | "id": "d1716333-8c16-490f-85ee-29af36907605", 4 | "project_id": "noauth-project", 5 | "created_at": "2015-02-23T21:56:33.000000", 6 | "attributes": null, 7 | "ns_records": [ 8 | { 9 | "hostname": "ns2.example.org.", 10 | "priority": 1 11 | } 12 | ], 13 | "links": { 14 | "self": "http://127.0.0.1:9001/v2/pools/d1716333-8c16-490f-85ee-29af36907605" 15 | }, 16 | "name": "example_pool", 17 | "updated_at": null 18 | } 19 | -------------------------------------------------------------------------------- /api-ref/source/samples/quotas/get-quotas-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "api_export_size": 1000, 3 | "recordset_records": 20, 4 | "zone_records": 500, 5 | "zone_recordsets": 500, 6 | "zones": 100 7 | } 8 | -------------------------------------------------------------------------------- /api-ref/source/samples/quotas/set-quotas-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "zones": 500 3 | } 4 | -------------------------------------------------------------------------------- /api-ref/source/samples/quotas/set-quotas-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "api_export_size": 1000, 3 | "recordset_records": 20, 4 | "zone_records": 500, 5 | "zone_recordsets": 500, 6 | "zones": 500 7 | } 8 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-mx-recordset-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "mail.example.org.", 3 | "description" : "An MX recordset.", 4 | "type" : "MX", 5 | "ttl" : 3600, 6 | "records" : [ 7 | "10 mail1.example.org.", 8 | "20 mail2.example.org.", 9 | "30 mail3.example.org.", 10 | "40 mail4.example.org." 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-mx-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "PENDING", 3 | "description": "An MX recordset.", 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/c3c1f506-adcf-4751-ae5b-1c5ff00d2e1a" 6 | }, 7 | "created_at": "2016-06-21 06:34:36", 8 | "updated_at": null, 9 | "records": [ 10 | "10 mail1.example.org.", 11 | "30 mail3.example.org.", 12 | "20 mail2.example.org.", 13 | "40 mail4.example.org." 14 | ], 15 | "zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8", 16 | "version": 1, 17 | "ttl": 3600, 18 | "action": "CREATE", 19 | "zone_name": "example.org.", 20 | "type": "MX", 21 | "id": "c3c1f506-adcf-4751-ae5b-1c5ff00d2e1a", 22 | "name": "mail.example.org." 23 | } 24 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-recordset-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "example.org.", 3 | "description" : "This is an example record set.", 4 | "type" : "A", 5 | "ttl" : 3600, 6 | "records" : [ 7 | "10.1.0.2" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "This is an example record set.", 3 | "links": { 4 | "self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648" 5 | }, 6 | "updated_at": null, 7 | "records": [ 8 | "10.1.0.2" 9 | ], 10 | "ttl": 3600, 11 | "id": "f7b10e9b-0cae-4a91-b162-562bc6096648", 12 | "name": "example.org.", 13 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 14 | "zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f", 15 | "zone_name": "example.com.", 16 | "created_at": "2014-10-24T19:59:44.000000", 17 | "version": 1, 18 | "type": "A", 19 | "status": "PENDING", 20 | "action": "CREATE" 21 | } 22 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-spf-recordset-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "foospf.example.org.", 3 | "description" : "An SPF recordset.", 4 | "type" : "SPF", 5 | "ttl" : 3600, 6 | "records" : [ 7 | "v=spf1 +all" 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-spf-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "PENDING", 3 | "description": "An SPF recordset.", 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/c05a6740-2602-4439-bb70-187dd6547c13" 6 | }, 7 | "created_at": "2016-06-21 12:31:44", 8 | "updated_at": null, 9 | "records": [ 10 | "v=spf1 +all" 11 | ], 12 | "zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8", 13 | "version": 1, 14 | "ttl": 3600, 15 | "action": "CREATE", 16 | "zone_name": "example.org.", 17 | "type": "SPF", 18 | "id": "c05a6740-2602-4439-bb70-187dd6547c13", 19 | "name": "foospf.example.org." 20 | } 21 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-srv-recordset-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "_http._tcp.example.org.", 3 | "description" : "An SRV recordset.", 4 | "type" : "SRV", 5 | "ttl" : 3600, 6 | "records" : [ 7 | "10 0 5060 www.example.org." 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-srv-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "PENDING", 3 | "description": "An SRV recordset.", 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/cc3299b3-c3cd-47e5-9876-8c1d4ad1b88e" 6 | }, 7 | "created_at": "2016-06-21 12:44:38", 8 | "updated_at": null, 9 | "records": [ 10 | "10 0 5060 www.example.org." 11 | ], 12 | "zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8", 13 | "version": 1, 14 | "ttl": 3600, 15 | "action": "CREATE", 16 | "zone_name": "example.org.", 17 | "type": "SRV", 18 | "id": "cc3299b3-c3cd-47e5-9876-8c1d4ad1b88e", 19 | "name": "_http._tcp.example.org." 20 | } 21 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-sshfp-recordset-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "foo.example.org.", 3 | "description" : "An SSHFP recordset.", 4 | "type" : "SSHFP", 5 | "ttl" : 3600, 6 | "records" : [ 7 | "1 2 6467a09c59607b01fef22ef6918c44a2eaaa14a5e055cfe91bf614b5796d2df0" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/create-sshfp-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "ACTIVE", 3 | "description": null, 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/5fb9d67c-86ac-4ae9-80d5-4c23f7a16b29" 6 | }, 7 | "created_at": "2016-06-21 12:15:35", 8 | "updated_at": null, 9 | "records": [ 10 | "2 1 75e080122854693164599205f49d7475ed17d09b" 11 | ], 12 | "zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8", 13 | "version": 1, 14 | "ttl": 3600, 15 | "action": "NONE", 16 | "zone_name": "example.org.", 17 | "type": "SSHFP", 18 | "id": "5fb9d67c-86ac-4ae9-80d5-4c23f7a16b29", 19 | "name": "foo.example.org." 20 | } 21 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/delete-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Updated description", 3 | "links": { 4 | "self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648" 5 | }, 6 | "updated_at": null, 7 | "records": [ 8 | "10.1.0.2", 9 | "10.1.0.3" 10 | ], 11 | "ttl": null, 12 | "id": "f7b10e9b-0cae-4a91-b162-562bc6096648", 13 | "name": "example.org.", 14 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 15 | "zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f", 16 | "zone_name": "example.com.", 17 | "created_at": "2014-10-24T19:59:44.000000", 18 | "version": 2, 19 | "type": "A", 20 | "status": "PENDING", 21 | "action": "DELETE" 22 | } 23 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/list-all-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "recordsets": [ 3 | { 4 | "description": "This is an example record set.", 5 | "links": { 6 | "self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648" 7 | }, 8 | "updated_at": null, 9 | "records": [ 10 | "10.1.0.2" 11 | ], 12 | "ttl": 3600, 13 | "id": "f7b10e9b-0cae-4a91-b162-562bc6096648", 14 | "name": "example.org.", 15 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 16 | "zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f", 17 | "zone_name": "example.com.", 18 | "created_at": "2014-10-24T19:59:44.000000", 19 | "version": 1, 20 | "type": "A", 21 | "status": "PENDING", 22 | "action": "CREATE" 23 | } 24 | ], 25 | "links": { 26 | "self": "http://127.0.0.1:9001/v2/recordsets?limit=1", 27 | "next": "http://127.0.0.1:9001/v2/recordsets?limit=1&marker=45fd892d-7a67-4f65-9df0-87273f228d6c" 28 | }, 29 | "metadata": { 30 | "total_count": 2 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/show-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "This is an example record set.", 3 | "links": { 4 | "self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648" 5 | }, 6 | "updated_at": null, 7 | "records": [ 8 | "10.1.0.2" 9 | ], 10 | "ttl": 3600, 11 | "id": "f7b10e9b-0cae-4a91-b162-562bc6096648", 12 | "name": "example.org.", 13 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 14 | "zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f", 15 | "zone_name": "example.com.", 16 | "created_at": "2014-10-24T19:59:44.000000", 17 | "version": 1, 18 | "type": "A", 19 | "status": "ACTIVE", 20 | "action": "NONE" 21 | } 22 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/update-recordset-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "description" : "Updated description", 3 | "ttl" : null, 4 | "records" : [ 5 | "10.1.0.2", 6 | "10.1.0.3" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /api-ref/source/samples/recordsets/update-recordset-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Updated description", 3 | "links": { 4 | "self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648" 5 | }, 6 | "updated_at": null, 7 | "records": [ 8 | "10.1.0.2", 9 | "10.1.0.3" 10 | ], 11 | "ttl": null, 12 | "id": "f7b10e9b-0cae-4a91-b162-562bc6096648", 13 | "name": "example.org.", 14 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 15 | "zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f", 16 | "zone_name": "example.com.", 17 | "created_at": "2014-10-24T19:59:44.000000", 18 | "version": 2, 19 | "type": "A", 20 | "status": "PENDING", 21 | "action": "UPDATE" 22 | } 23 | -------------------------------------------------------------------------------- /api-ref/source/samples/reverse_floatingips/list-ptr-record-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "links": { 3 | "self": "http://127.0.0.1:9001/v2/reverse/floatingips" 4 | }, 5 | "floatingips": [ 6 | { 7 | "status": "ACTIVE", 8 | "ptrdname": "smtp.example.com.", 9 | "description": null, 10 | "links": { 11 | "self": "http://127.0.0.1:9001/v2/reverse/floatingips/RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96" 12 | }, 13 | "ttl": 600, 14 | "address": "172.24.4.10", 15 | "action": "NONE", 16 | "id": "RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96" 17 | }, 18 | { 19 | "status": "ACTIVE", 20 | "ptrdname": "tftp.example.com.", 21 | "description": null, 22 | "links": { 23 | "self": "http://127.0.0.1:9001/v2/reverse/floatingips/RegionOne:9860717d-3da6-43df-a0ec-fa8b0e71ea86" 24 | }, 25 | "ttl": 600, 26 | "address": "172.24.4.6", 27 | "action": "NONE", 28 | "id": "RegionOne:9860717d-3da6-43df-a0ec-fa8b0e71ea86" 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /api-ref/source/samples/reverse_floatingips/ptr-record-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "PENDING", 3 | "ptrdname": "smtp.example.com.", 4 | "description": "This is a floating ip for 127.0.0.1", 5 | "links": { 6 | "self": "http://127.0.0.1:9001/v2/reverse/floatingips/RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96" 7 | }, 8 | "ttl": 600, 9 | "address": "172.24.4.10", 10 | "action": "CREATE", 11 | "id": "RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /api-ref/source/samples/reverse_floatingips/set-ptr-record-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "ptrdname" : "smtp.example.com.", 3 | "description" : "This is a floating ip for 10.0.0.8", 4 | "ttl": 600 5 | } 6 | -------------------------------------------------------------------------------- /api-ref/source/samples/reverse_floatingips/unset-ptr-record-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "ptrdname": null 3 | } 4 | -------------------------------------------------------------------------------- /api-ref/source/samples/service_status/service_status_list.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_statuses": [ 3 | { 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/service_statuses/af91edb5-ede8-453f-af13-feabdd088f9c" 6 | }, 7 | "hostname": "dns-2.example.com.", 8 | "status": "UP", 9 | "service_name": "api", 10 | "stats": null, 11 | "capabilities": null, 12 | "created_at": "2016-05-20 06:15:42", 13 | "heartbeated_at": "2016-07-20 12:14:41", 14 | "id": "af91edb5-ede8-453f-af13-feabdd088f9c" 15 | } 16 | ], 17 | "links": { 18 | "self": "http://127.0.0.1:9001/v2/service_statuses" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /api-ref/source/samples/service_status/service_status_show.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "c0bcb136-5f5c-4427-9f89-99d457819917", 3 | "hostname": "dns-2.example.com", 4 | "service_name": "central", 5 | "status": "UP", 6 | "stats": {}, 7 | "capabilities": {}, 8 | "heartbeated_at": "2021-03-24T23:51:12.000000", 9 | "created_at": "2021-03-22T20:59:24.000000", 10 | "updated_at": "2021-03-24T23:51:12.000000", 11 | "links": { 12 | "self": "http://10.21.21.88/v2/service_statuses/c0bcb136-5f5c-4427-9f89-99d457819917" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /api-ref/source/samples/tlds/create-tld-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "com", 3 | "description" : "tld description" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/tlds/list-tlds-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "tlds": [ 3 | { 4 | "name": "edu", 5 | "links": { 6 | "self": "http://127.0.0.1:9001/v2/tlds/a7bba387-712b-4b42-9368-4508642c6113" 7 | }, 8 | "created_at": "2016-05-10 05:21:40", 9 | "updated_at": null, 10 | "id": "a7bba387-712b-4b42-9368-4508642c6113", 11 | "description": "demo TLD" 12 | }, 13 | { 14 | "name": "com", 15 | "links": { 16 | "self": "http://127.0.0.1:9001/v2/tlds/cfee7486-7ce4-4851-9c38-7b0fe3d42ee9" 17 | }, 18 | "created_at": "2016-05-18 05:07:58", 19 | "updated_at": null, 20 | "id": "cfee7486-7ce4-4851-9c38-7b0fe3d42ee9", 21 | "description": "tld description" 22 | } 23 | ], 24 | "links": {"self": "http://127.0.0.1:9001/v2/tlds" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /api-ref/source/samples/tlds/tld-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com", 3 | "links": { 4 | "self": "http://127.0.0.1:9001/v2/tlds/cfee7486-7ce4-4851-9c38-7b0fe3d42ee9" 5 | }, 6 | "created_at": "2016-05-18 05:07:58", 7 | "updated_at": null, 8 | "id": "cfee7486-7ce4-4851-9c38-7b0fe3d42ee9", 9 | "description": "tld description" 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/tlds/update-tld-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "org", 3 | "description" : "Updated the name from com to org" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/tlds/update-tld-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "org", 3 | "links": { 4 | "self": "http://127.0.0.1:9001/v2/tlds/cfee7486-7ce4-4851-9c38-7b0fe3d42ee9" 5 | }, 6 | "created_at": "2016-05-18 05:07:58", 7 | "updated_at": "2016-05-18 05:45:24", 8 | "id": "cfee7486-7ce4-4851-9c38-7b0fe3d42ee9", 9 | "description": "Updated the name from com to org" 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/tsigkeys/create-tsigkey-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Example key", 3 | "algorithm": "hmac-sha256", 4 | "secret": "SomeSecretKey", 5 | "scope": "POOL", 6 | "resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3" 7 | } 8 | -------------------------------------------------------------------------------- /api-ref/source/samples/tsigkeys/tsigkey-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "links": { 3 | "self": "http://127.0.0.1:9001/v2/tsigkeys/c429b860-9f68-4e5f-a2ff-65760a64ceaa" 4 | }, 5 | "name": "Example key", 6 | "algorithm": "hmac-sha256", 7 | "resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3", 8 | "created_at": "2016-05-19 05:52:45", 9 | "updated_at": null, 10 | "secret": "SomeSecretKey", 11 | "scope": "POOL", 12 | "id": "c429b860-9f68-4e5f-a2ff-65760a64ceaa" 13 | } 14 | -------------------------------------------------------------------------------- /api-ref/source/samples/tsigkeys/update-tsigkey-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example_tsigkey", 3 | "scope": "ZONE" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/tsigkeys/update-tsigkey-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "links": { 3 | "self": "http://127.0.0.1:9001/v2/tsigkeys/c429b860-9f68-4e5f-a2ff-65760a64ceaa" 4 | }, 5 | "name": "example_tsigkey", 6 | "algorithm": "hmac-sha256", 7 | "resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3", 8 | "created_at": "2016-05-19 05:52:45", 9 | "updated_at": "2016-05-19 06:29:14", 10 | "secret": "SomeSecretKey", 11 | "scope": "ZONE", 12 | "id": "c429b860-9f68-4e5f-a2ff-65760a64ceaa" 13 | } 14 | -------------------------------------------------------------------------------- /api-ref/source/samples/versions/get-versions-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "versions": [{ 3 | "id": "v2", 4 | "links": [{ 5 | "href": "http://198.51.100.88/dns/v2", 6 | "rel": "self" 7 | }, { 8 | "href": "https://docs.openstack.org/api-ref/dns", 9 | "rel": "help" 10 | }], 11 | "status": "SUPPORTED", 12 | "updated": "2022-06-29T00:00:00Z" 13 | }, { 14 | "id": "v2.0", 15 | "links": [{ 16 | "href": "http://198.51.100.88/dns/v2", 17 | "rel": "self" 18 | }, { 19 | "href": "https://docs.openstack.org/api-ref/dns", 20 | "rel": "help" 21 | }], 22 | "status": "CURRENT", 23 | "updated": "2022-06-29T00:00:00Z" 24 | }] 25 | } 26 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-export-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "PENDING", 3 | "zone_id": "074e805e-fe87-4cbb-b10b-21a06e215d41", 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720" 6 | }, 7 | "created_at": "2015-08-27T20:57:03.000000", 8 | "updated_at": null, 9 | "version": 1, 10 | "location": null, 11 | "message": null, 12 | "project_id": "1", 13 | "id": "8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720" 14 | } 15 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-import-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "PENDING", 3 | "zone_id": null, 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/tasks/imports/074e805e-fe87-4cbb-b10b-21a06e215d41" 6 | }, 7 | "created_at": "2015-05-08T15:43:42.000000", 8 | "updated_at": null, 9 | "version": 1, 10 | "message": null, 11 | "project_id": "1", 12 | "id": "074e805e-fe87-4cbb-b10b-21a06e215d41" 13 | } 14 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "tier": "gold", "ha": "true" 4 | }, 5 | "name": "example.org.", 6 | "email": "joe@example.org", 7 | "type": "PRIMARY", 8 | "ttl": 7200, 9 | "description": "This is an example zone." 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-transfer-accept-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "key":"FUGXMZ5N", 3 | "zone_transfer_request_id":"794fdf58-6e1d-41da-8b2d-16b6d10c8827" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-transfer-accept-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "COMPLETE", 3 | "zone_id": "b4542f5a-f1ea-4ec1-b850-52db9dc3f465", 4 | "links": { 5 | "self": "http://10.0.4.46:9001/v2/zones/tasks/transfer_accepts/fe8c30f5-42f6-4af1-8cbf-e31a810d8c33", 6 | "zone": "http://10.0.4.46:9001/v2/zones/b4542f5a-f1ea-4ec1-b850-52db9dc3f465" 7 | }, 8 | "created_at": "2016-06-22 06:13:55", 9 | "updated_at": "null", 10 | "key": "FUGXMZ5N", 11 | "project_id": "2e43de7ce3504a8fb90a45382532c37e", 12 | "id": "fe8c30f5-42f6-4af1-8cbf-e31a810d8c33", 13 | "zone_transfer_request_id": "794fdf58-6e1d-41da-8b2d-16b6d10c8827" 14 | } 15 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-transfer-request-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_id": "1" 3 | } 4 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/create-zone-transfer-request-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "created_at": "2014-07-17T20:34:40.882579", 3 | "description": null, 4 | "id": "f2ad17b5-807a-423f-a991-e06236c247be", 5 | "key": "9Z2R50Y0", 6 | "project_id": "1", 7 | "status": "ACTIVE", 8 | "target_project_id": "123456", 9 | "updated_at": null, 10 | "zone_id": "6b78734a-aef1-45cd-9708-8eb3c2d26ff8", 11 | "zone_name": "qa.dev.example.com.", 12 | "links": { 13 | "self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/f2ad17b5-807a-423f-a991-e06236c247be" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/delete-zone-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3", 3 | "pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2", 4 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 5 | "name": "example.org.", 6 | "email": "joe@example.org", 7 | "ttl": 600, 8 | "serial": 1404757531, 9 | "status": "PENDING", 10 | "action": "DELETE", 11 | "description": "Updated Description", 12 | "masters": [], 13 | "type": "PRIMARY", 14 | "transferred_at": null, 15 | "version": 1, 16 | "created_at": "2014-07-07T18:25:31.275934", 17 | "updated_at": null, 18 | "links": { 19 | "self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/list-zone-export-response.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "exports": [ 4 | { 5 | "status": "COMPLETE", 6 | "zone_id": "17a8d6b3-6ace-4857-b113-a707c5f975b1", 7 | "links": { 8 | "self": "http://127.0.0.1:9001/v2/zones/tasks/exports/204be410-0a9c-44b8-839e-bc4df3bb0d9a", 9 | "export": "http://127.0.0.1:9001/v2/zones/tasks/exports/204be410-0a9c-44b8-839e-bc4df3bb0d9a/export" 10 | }, 11 | "created_at": "2016-04-04T01:53:29.000000", 12 | "updated_at": "2016-04-04T01:53:29.000000", 13 | "version": 2, 14 | "location": "designate://v2/zones/tasks/exports/204be410-0a9c-44b8-839e-bc4df3bb0d9a/export", 15 | "message": null, 16 | "project_id": "1de6e2fdc22342d3bef6340c7b70f497", 17 | "id": "204be410-0a9c-44b8-839e-bc4df3bb0d9a" 18 | } 19 | ], 20 | "links": { 21 | "self": "http://127.0.0.1:9001/v2/zones/tasks/exports" 22 | }, 23 | "metadata": { 24 | "total_count": 1 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/poolmove-zone-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "pool_id": "8e6f1c59-15e7-4a14-8640-8d5e07f95b10" 3 | } 4 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/share-zone-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "target_project_id": "232e37df46af42089710e2ae39111c2f" 3 | } 4 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/share-zone-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "fd40b017-bf97-461c-8d30-d4e922b28edd", 3 | "zone_id": "a3365b47-ee93-43ad-9a60-2b2ca96b1898", 4 | "project_id": "16ade46c85a1435bb86d9138d37da57e", 5 | "target_project_id": "232e37df46af42089710e2ae39111c2f", 6 | "created_at": "2022-11-30T22:20:27.000000", 7 | "updated_at": null, 8 | "links": { 9 | "self": "http://127.0.0.1:60053/v2/zones/a3365b47-ee93-43ad-9a60-2b2ca96b1898/shares/fd40b017-bf97-461c-8d30-d4e922b28edd", 10 | "zone": "http://127.0.0.1:60053/v2/zones/a3365b47-ee93-43ad-9a60-2b2ca96b1898" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/show-zone-export-content.txt: -------------------------------------------------------------------------------- 1 | $ORIGIN example.com. 2 | $TTL 42 3 | 4 | example.com. IN SOA ns.designate.com. nsadmin.example.com. ( 5 | 1394213803 ; serial 6 | 3600 ; refresh 7 | 600 ; retry 8 | 86400 ; expire 9 | 3600 ; minimum 10 | ) 11 | 12 | 13 | example.com. IN NS ns.designate.com. 14 | 15 | 16 | example.com. IN MX 10 mail.example.com. 17 | ns.example.com. IN A 10.0.0.1 18 | mail.example.com. IN A 10.0.0.2 19 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/show-zone-export-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "COMPLETE", 3 | "zone_id": "6625198b-d67d-47dc-8d29-f90bd60f3ac4", 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720", 6 | "export": "http://127.0.0.1:9001/v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720/export" 7 | }, 8 | "created_at": "2015-08-27T20:57:03.000000", 9 | "updated_at": "2015-08-27T20:57:03.000000", 10 | "version": 2, 11 | "location": "designate://v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720/export", 12 | "message": null, 13 | "project_id": "noauth-project", 14 | "id": "8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720" 15 | } 16 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/show-zone-import-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "COMPLETE", 3 | "zone_id": "6625198b-d67d-47dc-8d29-f90bd60f3ac4", 4 | "links": { 5 | "self": "http://127.0.0.1:9001/v2/zones/tasks/imports/074e805e-fe87-4cbb-b10b-21a06e215d41", 6 | "href": "http://127.0.0.1:9001/v2/zones/6625198b-d67d-47dc-8d29-f90bd60f3ac4" 7 | }, 8 | "created_at": "2015-05-08T15:43:42.000000", 9 | "updated_at": "2015-05-08T15:43:42.000000", 10 | "version": 2, 11 | "message": "example.com. imported", 12 | "project_id": "noauth-project", 13 | "id": "074e805e-fe87-4cbb-b10b-21a06e215d41" 14 | } 15 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/show-zone-nameservers-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "nameservers": [ 3 | { 4 | "hostname": "ns1.example.com.", 5 | "priority": 10 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/show-zone-transfer-request-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "This is scoped to the requesting project", 3 | "id": "efd2d720-b0c4-43d4-99f7-d9b53e08860d", 4 | "zone_id": "2c4d5e37-f823-4bee-9859-031cb44f80e7", 5 | "zone_name": "subdomain.example.com.", 6 | "status": "ACTIVE", 7 | "links": { 8 | "self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/efd2d720-b0c4-43d4-99f7-d9b53e08860d" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/update-zone-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "ttl": 600, 3 | "description": "Updated Description" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/update-zone-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3", 3 | "pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2", 4 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 5 | "name": "example.org.", 6 | "email": "joe@example.org", 7 | "ttl": 600, 8 | "serial": 1404757531, 9 | "status": "PENDING", 10 | "action": "UPDATE", 11 | "description": "Updated Description", 12 | "masters": [], 13 | "type": "PRIMARY", 14 | "transferred_at": null, 15 | "version": 1, 16 | "created_at": "2014-07-07T18:25:31.275934", 17 | "updated_at": null, 18 | "attributes": { 19 | "tier": "gold", "ha": "true" 20 | }, 21 | "links": { 22 | "self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/update-zone-transfer-request-request.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "This is scoped to the new project", 3 | "target_project_id": "987654" 4 | } 5 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/update-zone-transfer-request-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "This is scoped to the new project", 3 | "target_project_id": "987654", 4 | "id": "efd2d720-b0c4-43d4-99f7-d9b53e08860d", 5 | "zone_id": "2c4d5e37-f823-4bee-9859-031cb44f80e7", 6 | "zone_name": "subdomain.example.com.", 7 | "status": "ACTIVE", 8 | "links": { 9 | "self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/efd2d720-b0c4-43d4-99f7-d9b53e08860d" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /api-ref/source/samples/zones/zone-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3", 3 | "pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2", 4 | "project_id": "4335d1f0-f793-11e2-b778-0800200c9a66", 5 | "name": "example.org.", 6 | "email": "joe@example.org", 7 | "ttl": 7200, 8 | "serial": 1404757531, 9 | "status": "ACTIVE", 10 | "action": "CREATE", 11 | "description": "This is an example zone.", 12 | "masters": [], 13 | "type": "PRIMARY", 14 | "transferred_at": null, 15 | "version": 1, 16 | "created_at": "2014-07-07T18:25:31.275934", 17 | "updated_at": null, 18 | "attributes": { 19 | "tier": "gold", "ha": "true" 20 | }, 21 | "links": { 22 | "self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bindep.txt: -------------------------------------------------------------------------------- 1 | # Docs package dependencies 2 | graphviz [doc] 3 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.dat 3 | TAGS 4 | *.egg* 5 | build 6 | .coverage 7 | .tox 8 | cover 9 | venv 10 | .venv 11 | *.sublime-workspace 12 | *.sqlite 13 | var/* 14 | etc/*.conf 15 | etc/*.ini 16 | AUTHORS 17 | ChangeLog 18 | doc/source/api/* 19 | doc/build/* 20 | dist 21 | designate_ext_samplehandler/versioninfo 22 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include AUTHORS 2 | include ChangeLog 3 | include designate_ext_samplehandler/versioninfo 4 | include *.txt *.ini *.cfg *.rst *.md 5 | 6 | exclude .gitignore 7 | exclude .gitreview 8 | exclude *.sublime-project 9 | 10 | global-exclude *.pyc 11 | 12 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/README.rst: -------------------------------------------------------------------------------- 1 | Sample Designate Notification Handler Extension 2 | =============================================== 3 | 4 | This repo provides a sample plugin for a custom notification handler. 5 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/designate_ext_samplehandler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/contrib/designate-ext-samplehandler/designate_ext_samplehandler/__init__.py -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/designate_ext_samplehandler/notification_handler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/contrib/designate-ext-samplehandler/designate_ext_samplehandler/notification_handler/__init__.py -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/designate_ext_samplehandler/version.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | import pbr.version 17 | 18 | version_info = pbr.version.VersionInfo('designate-ext-samplehandler') 19 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/requirements.txt: -------------------------------------------------------------------------------- 1 | pbr 2 | -e git+https://github.com/openstack/designate.git#egg=designate 3 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 13 | # implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT 18 | import setuptools 19 | 20 | setuptools.setup( 21 | setup_requires=['pbr'], 22 | pbr=True) 23 | -------------------------------------------------------------------------------- /contrib/designate-ext-samplehandler/test-requirements.txt: -------------------------------------------------------------------------------- 1 | hacking>=0.8.0,<0.9 2 | -------------------------------------------------------------------------------- /contrib/dns_dump_dnspy.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 3 | # 4 | # Author: Kiall Mac Innes 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | import binascii 18 | 19 | import dns 20 | import dns.message 21 | import dns.rdatatype 22 | 23 | 24 | # Prepare a Packet 25 | request = dns.message.make_query( 26 | qname='example.com.', 27 | rdtype=dns.rdatatype.A, 28 | ) 29 | request.set_opcode(dns.opcode.UPDATE) 30 | 31 | # Print the hex representation of the Request 32 | print(binascii.b2a_hex(request.to_wire())) 33 | -------------------------------------------------------------------------------- /contrib/dns_dump_hex_to_text.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 3 | # 4 | # Author: Kiall Mac Innes 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | import binascii 18 | import sys 19 | 20 | import dns 21 | import dns.message 22 | import dns.rdatatype 23 | 24 | 25 | unhexed = binascii.unhexlify(sys.argv[1]) 26 | response = dns.message.from_wire(unhexed) 27 | 28 | print(response.to_text()) 29 | -------------------------------------------------------------------------------- /contrib/dns_dump_raw.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 3 | # 4 | # Author: Kiall Mac Innes 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | import binascii 18 | import sys 19 | 20 | import dns 21 | import dns.message 22 | 23 | wire = sys.argv[1] 24 | 25 | # Prepare the Message 26 | message = dns.message.from_wire(binascii.a2b_hex(wire)) 27 | 28 | # Print the test representation of the message 29 | print(message.to_text()) 30 | -------------------------------------------------------------------------------- /contrib/dns_dump_server.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 3 | # 4 | # Author: Kiall Mac Innes 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | import binascii 18 | import socket 19 | 20 | # Bind to UDP 5355 21 | sock_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 22 | sock_udp.bind(('', 5355)) 23 | 24 | # Receive a Packet 25 | payload, addr = sock_udp.recvfrom(8192) 26 | 27 | # Print the hex representation of the packet 28 | print(binascii.b2a_hex(payload)) 29 | 30 | # The request just happens to be a kinda-ish valid response 31 | sock_udp.sendto(payload, addr) 32 | -------------------------------------------------------------------------------- /contrib/vagrant/README.rst: -------------------------------------------------------------------------------- 1 | See devstack/README.rst or use setup_ubuntu_devstack 2 | -------------------------------------------------------------------------------- /designate/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/api/__init__.py -------------------------------------------------------------------------------- /designate/api/admin/controllers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/api/admin/controllers/__init__.py -------------------------------------------------------------------------------- /designate/api/admin/controllers/extensions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/api/admin/controllers/extensions/__init__.py -------------------------------------------------------------------------------- /designate/api/admin/controllers/extensions/reports.py: -------------------------------------------------------------------------------- 1 | # COPYRIGHT 2014 Rackspace 2 | # 3 | # Author: Betsy Luzader 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | from oslo_log import log as logging 18 | 19 | from designate.api.admin.controllers.extensions import counts 20 | from designate.api.admin.controllers.extensions import tenants 21 | from designate.api.v2.controllers import rest 22 | 23 | LOG = logging.getLogger(__name__) 24 | 25 | 26 | class ReportsController(rest.RestController): 27 | 28 | @staticmethod 29 | def get_path(): 30 | return '.reports' 31 | 32 | counts = counts.CountsController() 33 | tenants = tenants.TenantsController() 34 | -------------------------------------------------------------------------------- /designate/api/admin/controllers/extensions/zones.py: -------------------------------------------------------------------------------- 1 | # COPYRIGHT 2015 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from oslo_log import log as logging 16 | 17 | from designate.api.admin.controllers.extensions import export 18 | from designate.api.v2.controllers import rest 19 | 20 | LOG = logging.getLogger(__name__) 21 | 22 | 23 | class ZonesController(rest.RestController): 24 | 25 | @staticmethod 26 | def get_path(): 27 | return '.zones' 28 | 29 | def __init__(self): 30 | super().__init__() 31 | 32 | export = export.ExportController() 33 | -------------------------------------------------------------------------------- /designate/api/admin/views/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/api/admin/views/__init__.py -------------------------------------------------------------------------------- /designate/api/admin/views/extensions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/api/admin/views/extensions/__init__.py -------------------------------------------------------------------------------- /designate/api/v2/controllers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/api/v2/controllers/__init__.py -------------------------------------------------------------------------------- /designate/api/v2/controllers/errors.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Graham Hayes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | from pecan import expose 18 | 19 | from designate import exceptions 20 | 21 | 22 | class ErrorsController: 23 | 24 | @expose(content_type='text/plain') 25 | @expose(content_type='text/dns') 26 | @expose(content_type='application/json') 27 | def not_found(self): 28 | raise exceptions.NotFound('resource not found') 29 | 30 | @expose(content_type='text/plain') 31 | @expose(content_type='text/dns') 32 | @expose(content_type='application/json') 33 | def method_not_allowed(self): 34 | raise exceptions.MethodNotAllowed() 35 | -------------------------------------------------------------------------------- /designate/api/v2/controllers/reverse.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Endre Karlson 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | from designate.api.v2.controllers import floatingips 17 | from designate.api.v2.controllers import rest 18 | 19 | 20 | class ReverseController(rest.RestController): 21 | floatingips = floatingips.FloatingIPController() 22 | -------------------------------------------------------------------------------- /designate/backend/impl_fake.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 eBay Inc. 2 | # 3 | # Author: Ron Rickard 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | from oslo_log import log as logging 17 | 18 | from designate.backend import base 19 | 20 | 21 | LOG = logging.getLogger(__name__) 22 | 23 | 24 | class FakeBackend(base.Backend): 25 | __plugin_name__ = 'fake' 26 | 27 | def create_zone(self, context, zone): 28 | LOG.info('Create Zone %r', zone) 29 | 30 | def delete_zone(self, context, zone, zone_params=None): 31 | LOG.info('Delete Zone %r', zone) 32 | -------------------------------------------------------------------------------- /designate/central/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/central/__init__.py -------------------------------------------------------------------------------- /designate/cmd/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | import eventlet 17 | 18 | eventlet.monkey_patch(os=False) 19 | -------------------------------------------------------------------------------- /designate/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/common/__init__.py -------------------------------------------------------------------------------- /designate/common/decorators/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/common/decorators/__init__.py -------------------------------------------------------------------------------- /designate/conf/keystone.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | from keystoneauth1 import loading as ksa_loading 14 | from oslo_config import cfg 15 | 16 | KEYSTONE_GROUP = cfg.OptGroup( 17 | name='keystone', 18 | title='Access to Keystone API') 19 | 20 | 21 | def register_opts(conf): 22 | conf.register_group(KEYSTONE_GROUP) 23 | ksa_loading.register_adapter_conf_options(conf, KEYSTONE_GROUP) 24 | ksa_loading.register_session_conf_options(conf, KEYSTONE_GROUP) 25 | conf.set_default('service_type', 'identity', group=KEYSTONE_GROUP) 26 | 27 | 28 | def list_opts(): 29 | return { 30 | KEYSTONE_GROUP: (ksa_loading.get_adapter_conf_options() + 31 | ksa_loading.get_session_conf_options()) 32 | } 33 | -------------------------------------------------------------------------------- /designate/conf/storage.py: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Managed I.T. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | from oslo_config import cfg 17 | from oslo_db import options 18 | 19 | STORAGE_GROUP = cfg.OptGroup( 20 | name='storage:sqlalchemy', 21 | title="Configuration for SQLAlchemy Storage" 22 | ) 23 | 24 | 25 | def register_opts(conf): 26 | conf.register_group(STORAGE_GROUP) 27 | conf.register_opts(options.database_opts, group=STORAGE_GROUP) 28 | 29 | 30 | def list_opts(): 31 | return { 32 | STORAGE_GROUP: options.database_opts, 33 | } 34 | -------------------------------------------------------------------------------- /designate/hacking/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/hacking/__init__.py -------------------------------------------------------------------------------- /designate/i18n.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | import oslo_i18n as i18n 17 | 18 | 19 | _translators = i18n.TranslatorFactory(domain='designate') 20 | 21 | # The primary translation function using the well-known name "_" 22 | _ = _translators.primary 23 | 24 | # Translators for log levels. 25 | # 26 | # The abbreviated names are meant to reflect the usual use of a short 27 | # name like '_'. The "L" is for "log" and the other letter comes from 28 | # the level. 29 | _LI = _translators.log_info 30 | _LW = _translators.log_warning 31 | _LE = _translators.log_error 32 | _LC = _translators.log_critical 33 | -------------------------------------------------------------------------------- /designate/locale/ko_KR/LC_MESSAGES/designate.po: -------------------------------------------------------------------------------- 1 | # Andreas Jaeger , 2016. #zanata 2 | # Lee Jongwon , 2020. #zanata 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: designate VERSION\n" 6 | "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" 7 | "POT-Creation-Date: 2024-06-30 17:43+0000\n" 8 | "MIME-Version: 1.0\n" 9 | "Content-Type: text/plain; charset=UTF-8\n" 10 | "Content-Transfer-Encoding: 8bit\n" 11 | "PO-Revision-Date: 2020-10-05 02:04+0000\n" 12 | "Last-Translator: Lee Jongwon \n" 13 | "Language-Team: Korean (South Korea)\n" 14 | "Language: ko_KR\n" 15 | "X-Generator: Zanata 4.3.3\n" 16 | "Plural-Forms: nplurals=1; plural=0\n" 17 | 18 | #, python-format 19 | msgid "%s is not a valid project ID." 20 | msgstr "%s는 유효한 프로젝트 ID가 아닙니다." 21 | 22 | msgid "Duplicate service status" 23 | msgstr "중복된 서비스 상태" 24 | 25 | msgid "Duplicated services found in service_statuses table." 26 | msgstr "service_status 테이블에 중복된 서비스가 발견 됨" 27 | 28 | msgid "KeystoneV3 endpoint not found" 29 | msgstr "KeystoneV3 엔드포인트를 찾을 수 없음" 30 | 31 | msgid "Unknown sort direction, must be 'desc' or 'asc'" 32 | msgstr "알 수 없는 정렬 방향입니다. 'desc' 또는 'asc'여야 함" 33 | 34 | msgid "serve() can only be called once" 35 | msgstr "serve()는 한 번만 호출할 수 있음" 36 | -------------------------------------------------------------------------------- /designate/manage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/manage/__init__.py -------------------------------------------------------------------------------- /designate/mdns/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/mdns/__init__.py -------------------------------------------------------------------------------- /designate/network_api/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Endre Karlson 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | 18 | from oslo_config import cfg 19 | from oslo_log import log 20 | 21 | from designate.network_api import base 22 | 23 | 24 | LOG = log.getLogger(__name__) 25 | 26 | neutron_opts = [ 27 | cfg.StrOpt('network_api', default='neutron', help='Which API to use.') 28 | ] 29 | 30 | cfg.CONF.register_opts(neutron_opts) 31 | 32 | 33 | def get_network_api(network_api_driver): 34 | LOG.debug('Loading network_api driver: %s', network_api_driver) 35 | 36 | cls = base.NetworkAPI.get_driver(network_api_driver) 37 | 38 | return cls() 39 | -------------------------------------------------------------------------------- /designate/notification_handler/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | from oslo_log import log 18 | 19 | from designate.notification_handler import base 20 | 21 | 22 | LOG = log.getLogger(__name__) 23 | 24 | 25 | def get_notification_handlers(enabled_extensions): 26 | LOG.debug("Loading notification handlers") 27 | 28 | extensions = base.NotificationHandler.get_extensions(enabled_extensions) 29 | 30 | return [e() for e in extensions] 31 | -------------------------------------------------------------------------------- /designate/objects/adapters/api_v2/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/objects/adapters/api_v2/__init__.py -------------------------------------------------------------------------------- /designate/objects/adapters/yaml/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/objects/adapters/yaml/__init__.py -------------------------------------------------------------------------------- /designate/objects/adapters/yaml/pool_also_notify.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | from designate import objects 15 | from designate.objects.adapters.yaml import base 16 | 17 | 18 | class PoolAlsoNotifyYAMLAdapter(base.YAMLAdapter): 19 | ADAPTER_OBJECT = objects.PoolAlsoNotify 20 | MODIFICATIONS = { 21 | 'fields': { 22 | 'host': { 23 | 'read_only': False 24 | }, 25 | 'port': { 26 | 'read_only': False 27 | } 28 | } 29 | } 30 | 31 | 32 | class PoolAlsoNotifyListYAMLAdapter(base.YAMLAdapter): 33 | ADAPTER_OBJECT = objects.PoolAlsoNotifyList 34 | MODIFICATIONS = {} 35 | -------------------------------------------------------------------------------- /designate/objects/adapters/yaml/pool_nameserver.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | from designate import objects 15 | from designate.objects.adapters.yaml import base 16 | 17 | 18 | class PoolNameserverYAMLAdapter(base.YAMLAdapter): 19 | ADAPTER_OBJECT = objects.PoolNameserver 20 | MODIFICATIONS = { 21 | 'fields': { 22 | 'host': { 23 | 'read_only': False 24 | }, 25 | 'port': { 26 | 'read_only': False 27 | } 28 | } 29 | } 30 | 31 | 32 | class PoolNameserverListYAMLAdapter(base.YAMLAdapter): 33 | ADAPTER_OBJECT = objects.PoolNameserverList 34 | MODIFICATIONS = {} 35 | -------------------------------------------------------------------------------- /designate/objects/adapters/yaml/pool_ns_record.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from designate import objects 16 | from designate.objects.adapters.yaml import base 17 | 18 | 19 | class PoolNsRecordYAMLAdapter(base.YAMLAdapter): 20 | ADAPTER_OBJECT = objects.PoolNsRecord 21 | MODIFICATIONS = { 22 | 'fields': { 23 | 'priority': { 24 | 'read_only': False 25 | }, 26 | 'hostname': { 27 | 'read_only': False 28 | } 29 | } 30 | } 31 | 32 | 33 | class PoolNsRecordListYAMLAdapter(base.YAMLAdapter): 34 | ADAPTER_OBJECT = objects.PoolNsRecordList 35 | MODIFICATIONS = {} 36 | -------------------------------------------------------------------------------- /designate/producer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/producer/__init__.py -------------------------------------------------------------------------------- /designate/quota/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | from oslo_log import log as logging 17 | 18 | import designate.conf 19 | from designate.quota import base 20 | 21 | 22 | CONF = designate.conf.CONF 23 | LOG = logging.getLogger(__name__) 24 | 25 | 26 | def get_quota(): 27 | quota_driver = CONF.quota_driver 28 | 29 | LOG.debug("Loading quota driver: %s", quota_driver) 30 | 31 | cls = base.Quota.get_driver(quota_driver) 32 | 33 | return cls() 34 | -------------------------------------------------------------------------------- /designate/resources/templates/dnsmasq-zone.jinja2: -------------------------------------------------------------------------------- 1 | # Example input: 2 | # {'mail.example.com.': {'A': ['192.0.2.1', '192.0.2.2']}, 'www.example.com.': {'A': ['192.0.2.1', '192.0.2.2']}} 3 | {% for name in template_data -%} 4 | {% for rdtype in template_data[name] -%} 5 | # RecordSet: {{name}} / {{rdtype}} 6 | {% for record in template_data[name][rdtype] -%} 7 | {{record}} {{name}} 8 | {% endfor %} 9 | {% endfor %} 10 | {%- endfor %} 11 | -------------------------------------------------------------------------------- /designate/resources/templates/export-zone.jinja2: -------------------------------------------------------------------------------- 1 | $ORIGIN {{ zone.name }} 2 | $TTL {{ zone.ttl }} 3 | 4 | {% for recordset in recordsets -%} 5 | {{recordset[0]}} {{recordset[1] or ''}} IN {{recordset[2]}} {{recordset[3]}} 6 | {% endfor %} 7 | 8 | -------------------------------------------------------------------------------- /designate/scheduler/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Hewlett Packard Enterprise Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from designate.scheduler import base 16 | 17 | 18 | def get_scheduler(storage): 19 | return base.Scheduler(storage=storage) 20 | -------------------------------------------------------------------------------- /designate/scheduler/filters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/scheduler/filters/__init__.py -------------------------------------------------------------------------------- /designate/sink/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/sink/__init__.py -------------------------------------------------------------------------------- /designate/storage/sqlalchemy/alembic/README: -------------------------------------------------------------------------------- 1 | Please use the "designate-manage database" command for database management. 2 | 3 | Developers adding new migrations can run 'alembic -m ""' from 4 | the designate/storage/sqlalchemy directory where the alembic.ini file is 5 | located. 6 | -------------------------------------------------------------------------------- /designate/storage/sqlalchemy/alembic/script.py.mako: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | """${message} 14 | 15 | Revision ID: ${up_revision} 16 | Revises: ${down_revision | comma,n} 17 | Create Date: ${create_date} 18 | 19 | """ 20 | from alembic import op 21 | import sqlalchemy as sa 22 | ${imports if imports else ""} 23 | 24 | # revision identifiers, used by Alembic. 25 | revision = ${repr(up_revision)} 26 | down_revision = ${repr(down_revision)} 27 | branch_labels = ${repr(branch_labels)} 28 | depends_on = ${repr(depends_on)} 29 | 30 | 31 | def upgrade() -> None: 32 | ${upgrades if upgrades else "pass"} 33 | -------------------------------------------------------------------------------- /designate/tests/README: -------------------------------------------------------------------------------- 1 | This directory contains all Designate tests. 2 | 3 | Examples: 4 | 5 | tox -e py3 6 | tox -e py3 -- tests.unit 7 | tox -e py3 -- tests.unit.backend 8 | tox -e py3 -- tests.functional 9 | tox -e py3 -- tests.functional.api 10 | -------------------------------------------------------------------------------- /designate/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Managed I.T. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | 18 | import eventlet 19 | 20 | 21 | eventlet.monkey_patch(os=False) 22 | -------------------------------------------------------------------------------- /designate/tests/functional/README: -------------------------------------------------------------------------------- 1 | This directory contains all functional tests. 2 | 3 | Examples: 4 | 5 | tox -e py3 -- tests.functional 6 | tox -e py3 -- tests.functional.api 7 | -------------------------------------------------------------------------------- /designate/tests/functional/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/api/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/api/admin/extensions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/api/admin/extensions/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/api/v2/test_api.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | 14 | from designate.tests.functional.api import v2 15 | 16 | 17 | class ApiV2DisableTest(v2.ApiV2TestCase): 18 | def setUp(self): 19 | self.config(enable_api_v2=False, group='service:api') 20 | super().setUp() 21 | 22 | def test_disable_v2_api(self): 23 | urls = ['zones', 'pools', 'service_statuses'] 24 | 25 | for url in urls: 26 | response = self.client.get('/%s/' % url, expect_errors=True) 27 | 28 | self.assertEqual(404, response.status_code) 29 | self.assertEqual(b'', response.body) 30 | -------------------------------------------------------------------------------- /designate/tests/functional/central/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/central/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/manage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/manage/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/mdns/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/mdns/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/notification_handler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/notification_handler/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/producer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/producer/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/quota/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/quota/__init__.py -------------------------------------------------------------------------------- /designate/tests/functional/worker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/functional/worker/__init__.py -------------------------------------------------------------------------------- /designate/tests/resources/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2013 eNovance SAS 2 | # 3 | # Author: Artom Lifshitz 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | import os 18 | 19 | # The idea here is that anything that needs resources can do: 20 | # 21 | # from designate.tests import resources 22 | # my_resource_path = os.path.join(resources.path, my_resource_folder) 23 | path = os.path.dirname(os.path.realpath(__file__)) 24 | -------------------------------------------------------------------------------- /designate/tests/resources/pools_yaml/bind9_pools.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: bind 4 | description: Default BIND Pool 5 | 6 | ns_records: 7 | - hostname: ns1-1.example.org. 8 | priority: 1 9 | - hostname: ns1-2.example.org. 10 | priority: 2 11 | - hostname: ns1-3.example.org. 12 | priority: 3 13 | 14 | nameservers: 15 | - host: 192.0.2.2 16 | port: 53 17 | - host: 192.0.2.3 18 | port: 53 19 | 20 | targets: 21 | - type: bind9 22 | description: BIND Instance 23 | masters: 24 | - host: 192.0.2.5 25 | port: 5354 26 | - host: 192.0.2.6 27 | port: 5354 28 | - host: 192.0.2.7 29 | port: 5354 30 | options: 31 | host: ::1 32 | port: 5322 33 | rndc_host: ::1 34 | rndc_port: 953 35 | rndc_config_file: /etc/bind/rndc.conf 36 | rndc_key_file: /etc/bind/rndc.key 37 | also_notifies: 38 | - host: 192.0.2.4 39 | port: 53 40 | -------------------------------------------------------------------------------- /designate/tests/resources/pools_yaml/pools-catalog-zone.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: default 4 | description: Default PowerDNS 4 Pool 5 | 6 | attributes: 7 | type: internal 8 | 9 | ns_records: 10 | - hostname: ns1-1.example.org. 11 | priority: 1 12 | - hostname: ns1-2.example.org. 13 | priority: 2 14 | 15 | nameservers: 16 | - host: 192.0.2.2 17 | port: 53 18 | - host: 192.0.2.3 19 | port: 53 20 | 21 | targets: 22 | - type: pdns4 23 | description: PowerDNS 4 Server 24 | masters: 25 | - host: 192.0.2.1 26 | port: 5354 27 | options: 28 | api_endpoint: http://192.0.2.1:8081 29 | api_token: api_key 30 | also_notifies: 31 | - host: 192.0.2.4 32 | port: 53 33 | 34 | catalog_zone: 35 | catalog_zone_fqdn: example.org. 36 | catalog_zone_refresh: '60' 37 | -------------------------------------------------------------------------------- /designate/tests/resources/pools_yaml/pools.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: default 4 | description: Default PowerDNS 4 Pool 5 | 6 | attributes: 7 | type: internal 8 | 9 | ns_records: 10 | - hostname: ns1-1.example.org. 11 | priority: 1 12 | - hostname: ns1-2.example.org. 13 | priority: 2 14 | 15 | nameservers: 16 | - host: 192.0.2.2 17 | port: 53 18 | - host: 192.0.2.3 19 | port: 53 20 | 21 | targets: 22 | - type: pdns4 23 | description: PowerDNS 4 Server 24 | masters: 25 | - host: 192.0.2.1 26 | port: 5354 27 | options: 28 | api_endpoint: http://192.0.2.1:8081 29 | api_token: api_key 30 | also_notifies: 31 | - host: 192.0.2.4 32 | port: 53 33 | -------------------------------------------------------------------------------- /designate/tests/resources/pools_yaml/sample_output.yaml: -------------------------------------------------------------------------------- 1 | - also_notifies: 2 | - host: 192.0.2.4 3 | port: 53 4 | attributes: {} 5 | catalog_zone: 6 | catalog_zone_fqdn: example.com. 7 | catalog_zone_refresh: 60 8 | description: Default PowerDNS 4 Pool 9 | id: cf2e8eab-76cd-4162-bf76-8aeee3556de0 10 | name: default 11 | nameservers: 12 | - host: 192.0.2.2 13 | port: 53 14 | - host: 192.0.2.3 15 | port: 53 16 | ns_records: 17 | - hostname: ns1-1.example.org. 18 | priority: 1 19 | - hostname: ns1-2.example.org. 20 | priority: 2 21 | targets: 22 | - description: PowerDNS 4 Server 23 | masters: 24 | - host: 192.0.2.1 25 | port: 5354 26 | options: 27 | api_endpoint: http://192.0.2.1:8081 28 | api_token: api_key 29 | type: pdns4 30 | -------------------------------------------------------------------------------- /designate/tests/resources/sample_notifications/neutron/floatingip.delete.start.json: -------------------------------------------------------------------------------- 1 | { 2 | "_context_roles": [ 3 | "Member", 4 | "anotherrole" 5 | ], 6 | "_context_request_id": "req-e905e3d8-7c3b-4d0b-a5aa-7c0f14b0b9df", 7 | "_context_read_deleted": "no", 8 | "event_type": "floatingip.delete.start", 9 | "_context_user_name": "demo", 10 | "_context_project_name": "demo", 11 | "timestamp": "2014-01-17 11:30:41.456481", 12 | "_context_tenant_name": "demo", 13 | "_context_tenant": "c97027dd880d4c129ae7a4ba7edade05", 14 | "message_id": "9d30a752-5121-4cf0-bce4-86c2260dbbbc", 15 | "_unique_id": "8eca7bd4402c44449123f0b20eda2c2d", 16 | "_context_is_admin": false, 17 | "_context_timestamp": "2014-01-17 11:30:41.452922", 18 | "_context_project_id": "c97027dd880d4c129ae7a4ba7edade05", 19 | "_context_tenant_id": "c97027dd880d4c129ae7a4ba7edade05", 20 | "_context_user": "5e0e5ccd874044ff9f5eb9017bf9be5e", 21 | "_context_user_id": "5e0e5ccd874044ff9f5eb9017bf9be5e", 22 | "publisher_id": "network.i-00000cac", 23 | "payload": { 24 | "floatingip_id": "f38ff2b6-cd4d-433e-8a9c-9e00dfc05b1e" 25 | }, 26 | "priority": "INFO" 27 | } -------------------------------------------------------------------------------- /designate/tests/resources/sample_notifications/neutron/floatingip.update.end_associate.json: -------------------------------------------------------------------------------- 1 | { 2 | "priority" : "INFO", 3 | "message_id" : "281218d3-0764-4397-b844-936c93fb89e6", 4 | "event_type" : "floatingip.update.end", 5 | "_context_roles" : [ 6 | "Member", 7 | "admin" 8 | ], 9 | "_context_tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", 10 | "timestamp" : "2012-11-18 01:29:29.497899", 11 | "_context_is_admin" : false, 12 | "_context_user_id" : "4ce5c085e09a478ea4edcd667a92df78", 13 | "payload" : { 14 | "floatingip" : { 15 | "floating_network_id" : "d9edfcd5-f245-4f45-be26-4383942fd74c", 16 | "tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", 17 | "fixed_ip_address" : "172.16.59.10", 18 | "router_id" : "62c1fd2b-8149-4222-8d6b-e581c55e5264", 19 | "port_id" : "289ed46b-274c-444d-9fd4-bddf8acc7d7c", 20 | "floating_ip_address" : "192.0.2.201", 21 | "id" : "f38ff2b6-cd4d-433e-8a9c-9e00dfc05b1e" 22 | } 23 | }, 24 | "_context_timestamp" : "2012-11-18 01:29:29.443215", 25 | "publisher_id" : "network.svc02.os.lan", 26 | "_context_read_deleted" : "no" 27 | } 28 | -------------------------------------------------------------------------------- /designate/tests/resources/sample_notifications/neutron/floatingip.update.end_disassociate.json: -------------------------------------------------------------------------------- 1 | { 2 | "priority" : "INFO", 3 | "message_id" : "e9667b80-d2dc-4687-b2c6-2e648520157c", 4 | "event_type" : "floatingip.update.end", 5 | "_context_roles" : [ 6 | "Member", 7 | "admin" 8 | ], 9 | "_context_tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", 10 | "timestamp" : "2012-11-18 01:35:08.312766", 11 | "_context_is_admin" : false, 12 | "_context_user_id" : "4ce5c085e09a478ea4edcd667a92df78", 13 | "payload" : { 14 | "floatingip" : { 15 | "floating_network_id" : "d9edfcd5-f245-4f45-be26-4383942fd74c", 16 | "tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", 17 | "fixed_ip_address" : null, 18 | "router_id" : null, 19 | "port_id" : null, 20 | "floating_ip_address" : "192.0.2.201", 21 | "id" : "f38ff2b6-cd4d-433e-8a9c-9e00dfc05b1e" 22 | } 23 | }, 24 | "_context_timestamp" : "2012-11-18 01:35:08.281731", 25 | "publisher_id" : "network.svc02.os.lan", 26 | "_context_read_deleted" : "no" 27 | } 28 | -------------------------------------------------------------------------------- /designate/tests/resources/sample_notifications/neutron/port.create.start.json: -------------------------------------------------------------------------------- 1 | {"_context_is_admin": false, 2 | "_context_read_deleted": "no", 3 | "_context_roles": ["Member"], 4 | "_context_tenant_id": "c97027dd880d4c129ae7a4ba7edade05", 5 | "_context_timestamp": "2012-11-16 16:29:50.355267", 6 | "_context_user_id": "4ce5c085e09a478ea4edcd667a92df78", 7 | "event_type": "port.create.start", 8 | "message_id": "287c6fec-824a-437e-83ea-35ebee28cd69", 9 | "payload": {"port": {"admin_state_up": true, 10 | "device_id": "f2171ae4-c74f-44ef-8cde-908644c279f1", 11 | "device_owner": "compute:nova", 12 | "network_id": "3caf2cc1-6157-42f3-bb02-85b1a893f363", 13 | "tenant_id": "c97027dd880d4c129ae7a4ba7edade05"}}, 14 | "priority": "INFO", 15 | "publisher_id": "network.svc02.os.lan", 16 | "timestamp": "2012-11-16 16:29:50.356334"} 17 | -------------------------------------------------------------------------------- /designate/tests/resources/sample_notifications/neutron/port.delete.end.json: -------------------------------------------------------------------------------- 1 | { 2 | "priority" : "INFO", 3 | "message_id" : "7925245b-f8df-48c2-aced-1cfda0a88211", 4 | "event_type" : "port.delete.end", 5 | "_context_roles" : [ 6 | "Member" 7 | ], 8 | "_context_tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", 9 | "timestamp" : "2012-11-16 12:56:17.213472", 10 | "_context_is_admin" : false, 11 | "_context_user_id" : "4ce5c085e09a478ea4edcd667a92df78", 12 | "payload" : { 13 | "port_id" : "bfdcb007-f68d-46bd-8150-abcae9fb3af6" 14 | }, 15 | "_context_timestamp" : "2012-11-16 12:56:17.154672", 16 | "publisher_id" : "network.svc02.os.lan", 17 | "_context_read_deleted" : "no" 18 | } 19 | -------------------------------------------------------------------------------- /designate/tests/resources/sample_notifications/neutron/port.delete.start.json: -------------------------------------------------------------------------------- 1 | { 2 | "priority" : "INFO", 3 | "message_id" : "95ecdca3-967f-40aa-9469-d9fccc91d64b", 4 | "event_type" : "port.delete.start", 5 | "_context_roles" : [ 6 | "Member" 7 | ], 8 | "_context_tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", 9 | "timestamp" : "2012-11-16 12:56:17.155860", 10 | "_context_is_admin" : false, 11 | "_context_user_id" : "4ce5c085e09a478ea4edcd667a92df78", 12 | "payload" : { 13 | "port_id" : "bfdcb007-f68d-46bd-8150-abcae9fb3af6" 14 | }, 15 | "_context_timestamp" : "2012-11-16 12:56:17.154672", 16 | "publisher_id" : "network.svc02.os.lan", 17 | "_context_read_deleted" : "no" 18 | } 19 | -------------------------------------------------------------------------------- /designate/tests/resources/tlds/tlds_list: -------------------------------------------------------------------------------- 1 | first.test, 2 | second.test, 3 | third.test, 4 | fourth.test, 5 | fifth.test, 6 | -------------------------------------------------------------------------------- /designate/tests/resources/tlds/tlds_list_with_descriptions: -------------------------------------------------------------------------------- 1 | first.test,first 2 | second.test,second 3 | third.test,third 4 | fourth.test,fourth 5 | fifth.test,fifth 6 | -------------------------------------------------------------------------------- /designate/tests/resources/tlds/tlds_list_with_extra_fields: -------------------------------------------------------------------------------- 1 | first.test,first,test1 2 | second.test,second,test2 3 | third.test,third,test3 4 | fourth.test,fourth,test4 5 | fifth.test,fifth,test5 6 | -------------------------------------------------------------------------------- /designate/tests/resources/tlds/tlds_list_with_invalid_tlds: -------------------------------------------------------------------------------- 1 | com., 2 | .com, 3 | com\n, 4 | first.test, 5 | first.test, 6 | first.test,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -------------------------------------------------------------------------------- /designate/tests/resources/zonefiles/example.com.zone: -------------------------------------------------------------------------------- 1 | $ORIGIN example.com. 2 | example.com. 600 IN SOA ns1.example.com. nsadmin.example.com. ( 3 | 2013091101 ; serial 4 | 7200 ; refresh 5 | 3600 ; retry 6 | 2419200 ; expire 7 | 10800 ; minimum 8 | ) 9 | ipv4.example.com. 300 IN A 192.0.2.1 10 | ipv6.example.com. 10800 IN AAAA 2001:db8:: 11 | cname.example.com. 10800 IN CNAME example.com. 12 | example.com. 10800 IN MX 5 192.0.2.2 13 | example.com. 10800 IN MX 10 192.0.2.3 14 | _http._tcp.example.com. 10800 IN SRV 10 0 80 192.0.2.4 15 | _http._tcp.example.com. 10800 IN SRV 10 5 80 192.0.2.5 16 | example.com. 10800 IN TXT "abc" "def" 17 | example.com. 10800 IN SPF "v=spf1 mx a" 18 | example.com. 10800 IN NS ns1.example.com. 19 | example.com. 10800 IN NS ns2.example.com. 20 | delegation.example.com. 10800 IN NS ns1.example.com. 21 | 1.2.0.192.in-addr.arpa. 10800 IN PTR ipv4.example.com. 22 | -------------------------------------------------------------------------------- /designate/tests/resources/zonefiles/malformed_example.com.zone: -------------------------------------------------------------------------------- 1 | $ORIGIN example.com. 2 | example.com. 600 IN SOA ns1.example.com. nsadmin.example.com. ( 3 | 2013091101 ; serial 4 | 7200 ; refresh 5 | 3600 ; retry 6 | 2419200 ; expire 7 | 10800 ; minimum 8 | ) 9 | ipv4.example.com. 600 IN A 192.0.2.1 10 | ipv6.example.com. 600 IN AAAA 2001:db8:: 11 | 12 | _)) 13 | > *\ _~ 14 | `;'\\__-' \_ 15 | | ) _ \ \ 16 | / / `` w w 17 | w w 18 | 19 | cname.example.com. 600 IN CNAME example.com. 20 | example.com. 600 IN MX 5 192.0.2.2 21 | example.com. 600 IN MX 10 192.0.2.3 22 | _http._tcp.example.com. 600 IN SRV 10 0 80 192.0.2.4 23 | _http._tcp.example.com. 600 IN SRV 10 5 80 192.0.2.5 24 | example.com. 600 IN TXT "abc" "def" 25 | example.com. 600 IN SPF "v=spf1 mx a" 26 | example.com. 600 IN NS ns1.example.com. 27 | example.com. 600 IN NS ns2.example.com. 28 | 1.2.0.192.in-addr.arpa. 600 IN PTR ipv4.example.com. 29 | -------------------------------------------------------------------------------- /designate/tests/resources/zonefiles/noorigin_example.com.zone: -------------------------------------------------------------------------------- 1 | example.com. 600 IN SOA ns1.example.com. nsadmin.example.com. ( 2 | 2013091101 ; serial 3 | 7200 ; refresh 4 | 3600 ; retry 5 | 2419200 ; expire 6 | 10800 ; minimum 7 | ) 8 | ipv4.example.com. 600 IN A 192.0.2.1 9 | ipv6.example.com. 600 IN AAAA 2001:db8:: 10 | cname.example.com. 600 IN CNAME example.com. 11 | example.com. 600 IN MX 5 192.0.2.2 12 | example.com. 600 IN MX 10 192.0.2.3 13 | _http._tcp.example.com. 600 IN SRV 10 0 80 192.0.2.4 14 | _http._tcp.example.com. 600 IN SRV 10 5 80 192.0.2.5 15 | example.com. 600 IN TXT "abc" "def" 16 | example.com. 600 IN SPF "v=spf1 mx a" 17 | example.com. 600 IN NS ns1.example.com. 18 | example.com. 600 IN NS ns2.example.com. 19 | 1.2.0.192.in-addr.arpa. 600 IN PTR ipv4.example.com. 20 | -------------------------------------------------------------------------------- /designate/tests/resources/zonefiles/nosoa_example.com.zone: -------------------------------------------------------------------------------- 1 | $ORIGIN example.com. 2 | ipv4.example.com. 600 IN A 192.0.2.1 3 | ipv6.example.com. 600 IN AAAA 2001:db8:: 4 | cname.example.com. 600 IN CNAME example.com. 5 | example.com. 600 IN MX 5 192.0.2.2 6 | example.com. 600 IN MX 10 192.0.2.3 7 | _http._tcp.example.com. 600 IN SRV 10 0 80 192.0.2.4 8 | _http._tcp.example.com. 600 IN SRV 10 5 80 192.0.2.5 9 | example.com. 600 IN TXT "abc" "def" 10 | example.com. 600 IN SPF "v=spf1 mx a" 11 | example.com. 600 IN NS ns1.example.com. 12 | example.com. 600 IN NS ns2.example.com. 13 | 1.2.0.192.in-addr.arpa. 600 IN PTR ipv4.example.com. 14 | -------------------------------------------------------------------------------- /designate/tests/resources/zonefiles/two_example.com.zone: -------------------------------------------------------------------------------- 1 | $ORIGIN example2.com. 2 | example2.com. 600 IN SOA ns1.example2.com. nsadmin.example2.com. ( 3 | 2013091101 ; serial 4 | 7200 ; refresh 5 | 3600 ; retry 6 | 2419200 ; expire 7 | 10800 ; minimum 8 | ) 9 | ipv4.example2.com. 300 IN A 192.0.2.1 10 | ipv6.example2.com. IN AAAA 2001:db8:: 11 | cname.example2.com. IN CNAME example2.com. 12 | example2.com. IN MX 5 192.0.2.2 13 | example2.com. IN MX 10 192.0.2.3 14 | _http._tcp.example2.com. IN SRV 10 0 80 192.0.2.4 15 | _http._tcp.example2.com. IN SRV 10 5 80 192.0.2.5 16 | example2.com. IN TXT "abc" "def" 17 | example2.com. IN SPF "v=spf1 mx a" 18 | example2.com. IN NS ns1.example2.com. 19 | example2.com. IN NS ns2.example2.com. 20 | delegation.example2.com. IN NS ns1.example2.com. 21 | 1.2.0.192.in-addr.arpa. IN PTR ipv4.example2.com. 22 | -------------------------------------------------------------------------------- /designate/tests/resources/zonefiles/zerosoa_example.com.zone: -------------------------------------------------------------------------------- 1 | $ORIGIN example.com. 2 | example.com. 0 IN SOA ns1.example.com. nsadmin.example.com. ( 3 | 2013091101 ; serial 4 | 7200 ; refresh 5 | 3600 ; retry 6 | 2419200 ; expire 7 | 10800 ; minimum 8 | ) 9 | ipv4.example.com. 300 IN A 192.0.2.1 10 | ipv6.example.com. 10800 IN AAAA 2001:db8:: 11 | cname.example.com. 10800 IN CNAME example.com. 12 | example.com. 10800 IN MX 5 192.0.2.2 13 | example.com. 10800 IN MX 10 192.0.2.3 14 | _http._tcp.example.com. 10800 IN SRV 10 0 80 192.0.2.4 15 | _http._tcp.example.com. 10800 IN SRV 10 5 80 192.0.2.5 16 | example.com. 10800 IN TXT "abc" "def" 17 | example.com. 10800 IN SPF "v=spf1 mx a" 18 | example.com. 10800 IN NS ns1.example.com. 19 | example.com. 10800 IN NS ns2.example.com. 20 | delegation.example.com. 10800 IN NS ns1.example.com. 21 | 1.2.0.192.in-addr.arpa. 10800 IN PTR ipv4.example.com. 22 | -------------------------------------------------------------------------------- /designate/tests/unit/README: -------------------------------------------------------------------------------- 1 | This directory contains all unit tests. 2 | 3 | Examples: 4 | 5 | tox -e py3 -- tests.unit 6 | tox -e py3 -- tests.unit.backend 7 | -------------------------------------------------------------------------------- /designate/tests/unit/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/api/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/api/v2/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/api/v2/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/backend/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/backend/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/central/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/central/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/cmd/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/cmd/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/common/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/manage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/manage/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/mdns/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/mdns/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/network_api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/network_api/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/notification_handler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/notification_handler/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/objects/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/objects/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/producer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/producer/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/scheduler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/scheduler/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/sink/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/sink/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/storage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/storage/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/storage/impl_sqlalchemy/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/storage/impl_sqlalchemy/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/storage/impl_sqlalchemy/alembic/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/storage/impl_sqlalchemy/alembic/__init__.py -------------------------------------------------------------------------------- /designate/tests/unit/test_schema.py: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Managed I.T. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | import oslotest.base 17 | 18 | from designate import schema 19 | 20 | 21 | class TestSchema(oslotest.base.BaseTestCase): 22 | def test_constructor(self): 23 | quota = schema.Schema('admin', 'quota') 24 | 25 | self.assertIsInstance(quota, schema.Schema) 26 | -------------------------------------------------------------------------------- /designate/tests/unit/workers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/tests/unit/workers/__init__.py -------------------------------------------------------------------------------- /designate/version.py: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Managed I.T. 2 | # 3 | # Author: Kiall Mac Innes 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | import pbr.version 17 | 18 | 19 | version_info = pbr.version.VersionInfo('designate') 20 | version_string = version_info.version_string 21 | -------------------------------------------------------------------------------- /designate/worker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/worker/__init__.py -------------------------------------------------------------------------------- /designate/worker/tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/worker/tasks/__init__.py -------------------------------------------------------------------------------- /designate/wsgi/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/designate/wsgi/__init__.py -------------------------------------------------------------------------------- /designate/wsgi/api.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | """WSGI application entry-point for the Designate API.""" 14 | 15 | import threading 16 | 17 | from designate.api import wsgi 18 | 19 | application = None 20 | 21 | lock = threading.Lock() 22 | with lock: 23 | if application is None: 24 | application = wsgi.init_application() 25 | -------------------------------------------------------------------------------- /devstack/README.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | Enabling in Devstack 3 | ==================== 4 | 5 | **WARNING**: the stack.sh script must be run in a disposable VM that is not 6 | being created automatically, see the README.md file in the "devstack" 7 | repository. See contrib/vagrant to create a vagrant VM. 8 | 9 | 1. Download DevStack:: 10 | 11 | git clone https://opendev.org/openstack/devstack.git 12 | cd devstack 13 | 14 | 2. Add this repo as an external repository:: 15 | 16 | > cat local.conf 17 | [[local|localrc]] 18 | enable_plugin designate https://opendev.org/openstack/designate 19 | 20 | **Note:** Running with a multipool option: 21 | Perform the above step, and in addition set the backend driver and 22 | scheduler filters:: 23 | 24 | SCHEDULER_FILTERS=attribute,pool_id_attributes,in_doubt_default_pool 25 | DESIGNATE_BACKEND_DRIVER=multipool-bind9 26 | 27 | 3. run ``stack.sh`` 28 | -------------------------------------------------------------------------------- /devstack/files/apache-designate-api.template: -------------------------------------------------------------------------------- 1 | 2 | Require all granted 3 | 4 | 5 | 6 | WSGIDaemonProcess designate-api processes=%APIWORKERS% threads=1 user=%USER% display-name=%{GROUP} %VIRTUALENV% 7 | WSGIProcessGroup designate-api 8 | WSGIScriptAlias / %DESIGNATE_BIN_DIR%/designate-api-wsgi 9 | WSGIApplicationGroup %{GLOBAL} 10 | WSGIPassAuthorization On 11 | = 2.4> 12 | ErrorLogFormat "%M" 13 | 14 | ErrorLog /var/log/%APACHE_NAME%/designate-api.log 15 | %SSLENGINE% 16 | %SSLCERTFILE% 17 | %SSLKEYFILE% 18 | 19 | 20 | Alias /dns %DESIGNATE_BIN_DIR%/designate-api-wsgi 21 | 22 | SetHandler wsgi-script 23 | Options +ExecCGI 24 | WSGIProcessGroup designate-api 25 | WSGIApplicationGroup %{GLOBAL} 26 | WSGIPassAuthorization On 27 | -------------------------------------------------------------------------------- /devstack/gate/gate_hook.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ex 4 | 5 | pushd $BASE/new/devstack 6 | 7 | DEVSTACK_GATE_DESIGNATE_DRIVER=${DEVSTACK_GATE_DESIGNATE_DRIVER:-pdns4} 8 | 9 | export KEEP_LOCALRC=1 10 | export ENABLED_SERVICES=designate,designate-api,designate-central,designate-sink,designate-mdns,designate-worker,designate-producer 11 | 12 | echo "DESIGNATE_SERVICE_PORT_DNS=5322" >> $BASE/new/devstack/localrc 13 | echo "DESIGNATE_BACKEND_DRIVER=$DEVSTACK_GATE_DESIGNATE_DRIVER" >> $BASE/new/devstack/localrc 14 | echo "DESIGNATE_PERIODIC_RECOVERY_INTERVAL=20" >> $BASE/new/devstack/localrc 15 | echo "DESIGNATE_PERIODIC_SYNC_INTERVAL=20" >> $BASE/new/devstack/localrc 16 | 17 | 18 | # Pass through any DESIGNATE_ env vars to the localrc file 19 | env | grep -E "^DESIGNATE_" >> $BASE/new/devstack/localrc || : 20 | 21 | popd 22 | 23 | # Run DevStack Gate 24 | $BASE/new/devstack-gate/devstack-vm-gate.sh 25 | -------------------------------------------------------------------------------- /devstack/gate/run_cli_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | DESIGNATE_CLI_DIR=${DESIGNATE_CLI_DIR:-"$BASE/new/python-designateclient"} 16 | TEMPEST_DIR=${TEMPEST_DIR:-"$BASE/new/tempest"} 17 | export TEMPEST_CONFIG=$TEMPEST_DIR/etc/tempest.conf 18 | 19 | pushd $DESIGNATE_CLI_DIR 20 | 21 | # we need the actual openstack executable which is not installed by tox 22 | virtualenv "$DESIGNATE_CLI_DIR/.venv" 23 | source "$DESIGNATE_CLI_DIR/.venv/bin/activate" 24 | pip install python-openstackclient 25 | pip install . 26 | 27 | tox -e functional -- --concurrency 4 28 | popd 29 | -------------------------------------------------------------------------------- /devstack/upgrade/from-xena/upgrade-designate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Designate moved from using mod_wsgi to running uwsgi with an Apache proxy 4 | # pass-through for devstack in the yoga release cycle. 5 | # This upgrade script updates the Apache configuration to switch the wsgi 6 | # approach during a xena->yoga grenade test. 7 | # Since this is a from-* script, it will run after installing the new code 8 | # but before the upgraded code is started. 9 | 10 | function configure_designate_upgrade { 11 | source $GRENADE_DIR/functions 12 | source ${TARGET_DEVSTACK_DIR}/lib/apache 13 | DESIGNATE_DEVSTACK_DIR=$(dirname $(dirname $0)) 14 | source $DESIGNATE_DEVSTACK_DIR/lib/wsgi 15 | 16 | # Disable the old site using mod_wsgi 17 | disable_apache_site designate-api 18 | 19 | # Setup the apache uswgi site "designate-api-wsgi" 20 | designate_configure_uwsgi 21 | enable_apache_site designate-api-wsgi 22 | restart_apache_server 23 | 24 | # Switch designate-api to run under uwsgi 25 | stop_process designate-api 26 | run_process "designate-api" "$(which uwsgi) --procname-prefix designate-api --ini $DESIGNATE_UWSGI_CONF" 27 | } 28 | -------------------------------------------------------------------------------- /devstack/upgrade/settings: -------------------------------------------------------------------------------- 1 | register_project_for_upgrade designate 2 | register_db_to_save designate 3 | 4 | devstack_localrc base enable_plugin designate https://opendev.org/openstack/designate 5 | devstack_localrc target enable_plugin designate https://opendev.org/openstack/designate 6 | 7 | devstack_localrc base enable_service designate-api designate-central designate-producer designate-worker designate-mdns designate-sink designate 8 | devstack_localrc target enable_service designate-api designate-central designate-producer designate-worker designate-mdns designate-sink designate 9 | 10 | BASE_RUN_SMOKE=False 11 | TARGET_RUN_SMOKE=False 12 | -------------------------------------------------------------------------------- /devstack/upgrade/shutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ``shutdown-designate`` 4 | 5 | set -o errexit 6 | 7 | source $GRENADE_DIR/grenaderc 8 | source $GRENADE_DIR/functions 9 | 10 | # We need base DevStack functions for this 11 | source $BASE_DEVSTACK_DIR/functions 12 | source $BASE_DEVSTACK_DIR/stackrc # needed for status directory 13 | 14 | source $BASE_DEVSTACK_DIR/lib/tls 15 | source ${GITDIR[designate]}/devstack/plugin.sh 16 | 17 | set -o xtrace 18 | 19 | stop_process designate-central 20 | stop_process designate-api 21 | stop_process designate-mdns 22 | stop_process designate-sink 23 | stop_process designate-worker 24 | stop_process designate-producer 25 | 26 | 27 | # sanity check that service is actually down 28 | ensure_services_stopped designate-api designate-central designate-mdns designate-sink designate-worker designate-producer 29 | 30 | -------------------------------------------------------------------------------- /doc/ext/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/ext/__init__.py -------------------------------------------------------------------------------- /doc/ext/assets/support-matrix.css: -------------------------------------------------------------------------------- 1 | .docs-body #dns-server-driver-support-matrix h1 { 2 | display: block; 3 | } 4 | 5 | .docs-book-wrapper.wide { 6 | width: 90% !important 7 | } 8 | -------------------------------------------------------------------------------- /doc/ext/assets/support-matrix.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | $('.docs-book-wrapper:has(#dns-server-driver-support-matrix)').addClass('wide') 3 | })(); 4 | -------------------------------------------------------------------------------- /doc/ext/custom_css.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2014 Red Hat, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | def setup(app): 16 | app.add_css_file('designate-docs.css') 17 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | sphinx>=2.0.0,!=2.1.0 # BSD 5 | sphinxcontrib-httpdomain>=1.3.0 # BSD 6 | reno>=3.1.0 # Apache-2.0 7 | os-api-ref>=1.4.0 # Apache-2.0 8 | openstackdocstheme>=2.2.0 # Apache-2.0 9 | -------------------------------------------------------------------------------- /doc/source/_extra/.htaccess: -------------------------------------------------------------------------------- 1 | redirectmatch 301 ^/designate/([^/]+)/admin/designate-manage.html$ /designate/$1/cli/designate-manage.html 2 | -------------------------------------------------------------------------------- /doc/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/_static/.placeholder -------------------------------------------------------------------------------- /doc/source/admin/backends/index.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Copyright 2013 Hewlett-Packard Development Company, L.P. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | not use this file except in compliance with the License. You may obtain 6 | a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | 16 | DNS Server Plugin Documentation 17 | =============================== 18 | 19 | Contents: 20 | 21 | .. toctree:: 22 | :maxdepth: 1 23 | :glob: 24 | 25 | * 26 | 27 | For a list of drivers and the status of each drivers testing please go to 28 | :ref:`driver_matrix` 29 | -------------------------------------------------------------------------------- /doc/source/admin/backends/sample_yaml_snippets/bind.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | - type: bind9 3 | description: BIND9 Server 1 4 | 5 | # List out the designate-mdns servers from which BIND servers should 6 | # request zone transfers (AXFRs) from. 7 | masters: 8 | - host: 192.0.2.1 9 | port: 5354 10 | 11 | # BIND Configuration options 12 | options: 13 | host: 192.0.2.2 14 | port: 53 15 | rndc_host: 192.0.2.2 16 | rndc_port: 953 17 | rndc_key_file: /etc/designate/rndc.key 18 | clean_zonefile: false 19 | -------------------------------------------------------------------------------- /doc/source/admin/backends/sample_yaml_snippets/ns1.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | - type: ns1 3 | description: NS1 DNS Server 4 | 5 | # List out the designate-mdns servers from which NS1 servers should 6 | # request zone transfers (AXFRs) from. 7 | masters: 8 | - host: 192.0.2.1 9 | port: 5354 10 | 11 | # NS1 Configuration options 12 | options: 13 | #NS1 XFR container ip and port 14 | host: 192.0.2.2 15 | port: 5302 16 | #NS1 API enpoint IP address or name (Core container). Enter only base address or name. 17 | #Plugin will generate full api address, e.g. https://192.0.2.2/v1/zones/ 18 | api_endpoint: 192.0.2.2 19 | #NS1 API key 20 | api_token: changeme 21 | # If a tsigkey is needed, uncomment the line below and insert the key name, algorithm and value 22 | # NOTE: TSIG key has to be set manually 23 | #tsigkey_name: testkey 24 | #tsigkey_hash: hmac-sha512 25 | #tsigkey_value: 4EJz00m4ZWe005HjLiXRedJbSnCUx5Dt+4wVYsBweG5HKAV6cqSVJ/oem/6mLgDNFAlLP3Jg0npbg1SkP7RMDg== 26 | -------------------------------------------------------------------------------- /doc/source/admin/backends/sample_yaml_snippets/pdns4.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | - type: pdns4 3 | description: PowerDNS4 DNS Server 4 | 5 | # List out the designate-mdns servers from which PowerDNS servers should 6 | # request zone transfers (AXFRs) from. 7 | masters: 8 | - host: 192.0.2.1 9 | port: 5354 10 | 11 | # PowerDNS Configuration options 12 | options: 13 | host: 192.0.2.1 14 | port: 53 15 | api_endpoint: http://127.0.0.1:8081 16 | api_token: changeme 17 | api_ca_cert: /etc/ssl/certs/ca-certificates.crt 18 | # If a tsigkey is needed, uncomment the line below and insert the name 19 | # tsigkey_name: 20 | -------------------------------------------------------------------------------- /doc/source/admin/config.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | Config Documentation 3 | ==================== 4 | 5 | The following is an overview of all available configuration in Designate. For a 6 | sample configuration file, refer to :doc:`samples/config`. 7 | 8 | .. show-options:: 9 | :config-file: etc/designate/designate-config-generator.conf 10 | -------------------------------------------------------------------------------- /doc/source/admin/index.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | Administration guide 3 | ==================== 4 | 5 | In this section, you will find documentation relevant for administering 6 | and operating Designate. 7 | 8 | Contents: 9 | 10 | .. toctree:: 11 | :maxdepth: 1 12 | 13 | tlds 14 | backends/index 15 | ha 16 | pools 17 | pool-scheduler 18 | multiple-pools 19 | blacklists 20 | quotas 21 | policy 22 | config 23 | notifications 24 | production-guidelines 25 | upgrades/index 26 | troubleshooting 27 | samples/index 28 | support-matrix 29 | -------------------------------------------------------------------------------- /doc/source/admin/samples/config.rst: -------------------------------------------------------------------------------- 1 | ============== 2 | designate.conf 3 | ============== 4 | 5 | .. only:: html 6 | 7 | .. literalinclude:: ../../_static/designate.conf.sample 8 | :language: ini 9 | 10 | .. only:: latex 11 | 12 | Please refer to the online version of this documentation for a full 13 | config file example. 14 | -------------------------------------------------------------------------------- /doc/source/admin/samples/index.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Sample configuration files 3 | ========================== 4 | 5 | Configuration files can alter how designate behaves at runtime and by default 6 | are located in ``/etc/designate/``. Links to sample configuration files can be 7 | found below: 8 | 9 | .. toctree:: 10 | 11 | policy-yaml.rst 12 | config.rst 13 | -------------------------------------------------------------------------------- /doc/source/admin/samples/policy-yaml.rst: -------------------------------------------------------------------------------- 1 | =========== 2 | policy.yaml 3 | =========== 4 | 5 | Use the ``policy.yaml`` file to define additional access controls that apply to 6 | the DNS service: 7 | 8 | .. literalinclude:: ../../_static/designate.policy.yaml.sample 9 | :language: yaml 10 | -------------------------------------------------------------------------------- /doc/source/admin/support-matrix.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _driver_matrix: 3 | 4 | DNS Server Driver Support Matrix 5 | ================================ 6 | 7 | This info should be maintained along with the list of current driver 8 | maintainers responsible for the "Non Integrated" backends. 9 | The upkeep of this list will fall on the PTL or his/her delegate. 10 | 11 | Should a backend's grade be in dispute, it falls on the current project PTL 12 | to make the final decision after listening to all sides concerns. 13 | 14 | .. support_matrix:: 15 | -------------------------------------------------------------------------------- /doc/source/admin/upgrades/index.rst: -------------------------------------------------------------------------------- 1 | ======== 2 | Upgrades 3 | ======== 4 | 5 | In this section, you will find documentation relevant for upgrading Designate. 6 | 7 | .. note:: The :ref:`designate-status upgrade check ` 8 | command can be used to verify a deployment before starting services 9 | with new code. 10 | 11 | Contents: 12 | 13 | .. toctree:: 14 | :maxdepth: 2 15 | 16 | kilo 17 | mitaka 18 | newton 19 | ocata 20 | -------------------------------------------------------------------------------- /doc/source/cli/index.rst: -------------------------------------------------------------------------------- 1 | Command-Line Interface Reference 2 | ================================ 3 | 4 | Users can interact with designate using the Openstack client via the 5 | commands provided by the `designate plugin`_ 6 | 7 | Information on the commands available through Designate's Command Line 8 | Interface (CLI) can be found in this section. 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | 14 | designate-manage 15 | designate-status 16 | 17 | .. _designate plugin: https://docs.openstack.org/python-openstackclient/latest/cli/plugin-commands/designate.html 18 | -------------------------------------------------------------------------------- /doc/source/contributor/index.rst: -------------------------------------------------------------------------------- 1 | .. _developer_documentation: 2 | 3 | ======================= 4 | Developer documentation 5 | ======================= 6 | 7 | In this section, you will find documentation relevant to developing 8 | Designate. 9 | 10 | Contents: 11 | 12 | .. toctree:: 13 | :maxdepth: 2 14 | 15 | getting-involved 16 | Designate Tempest Plugin 17 | architecture 18 | gmr 19 | sourcedoc/index 20 | ubuntu-dev 21 | integrations 22 | 23 | Other modules 24 | ~~~~~~~~~~~~~ 25 | 26 | .. toctree:: 27 | :maxdepth: 1 28 | 29 | python-designateclient 30 | designate-dashboard 31 | designate-tempest-plugin 32 | designate-specs 33 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/api.rst: -------------------------------------------------------------------------------- 1 | .. _api: 2 | 3 | *** 4 | API 5 | *** 6 | 7 | .. _api-middleware: 8 | 9 | API Middleware 10 | =============== 11 | 12 | .. automodule:: designate.api.middleware 13 | :members: 14 | :undoc-members: 15 | :show-inheritance: 16 | 17 | .. _api-service: 18 | 19 | API Service 20 | =========== 21 | 22 | .. automodule:: designate.api.service 23 | :members: 24 | :undoc-members: 25 | :show-inheritance: 26 | 27 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/central.rst: -------------------------------------------------------------------------------- 1 | .. _central: 2 | 3 | ******* 4 | Central 5 | ******* 6 | 7 | .. _rpcapi: 8 | 9 | Central RPC API 10 | =============== 11 | .. automodule:: designate.central.rpcapi 12 | :members: 13 | :undoc-members: 14 | :show-inheritance: 15 | 16 | Central Service 17 | =============== 18 | 19 | .. automodule:: designate.central.service 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/index.rst: -------------------------------------------------------------------------------- 1 | Source Code Documentation 2 | ------------------------- 3 | 4 | .. toctree:: 5 | :maxdepth: 3 6 | 7 | api 8 | backend 9 | central 10 | mdns 11 | objects 12 | quota 13 | sink 14 | storage 15 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/mdns.rst: -------------------------------------------------------------------------------- 1 | .. _mdns: 2 | 3 | **** 4 | MDNS 5 | **** 6 | 7 | MDNS Handler 8 | ============ 9 | .. automodule:: designate.mdns.handler 10 | :members: 11 | :undoc-members: 12 | :show-inheritance: 13 | 14 | 15 | MDNS Service 16 | ============ 17 | .. automodule:: designate.mdns.service 18 | :members: 19 | :undoc-members: 20 | :show-inheritance: 21 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/quota.rst: -------------------------------------------------------------------------------- 1 | .. _quota: 2 | 3 | ***** 4 | Quota 5 | ***** 6 | 7 | .. _quota-base: 8 | 9 | Quota Base 10 | ========== 11 | 12 | .. automodule:: designate.quota.base 13 | :members: 14 | :undoc-members: 15 | :show-inheritance: 16 | 17 | .. _quota-storage: 18 | 19 | Quota Storage 20 | ============= 21 | 22 | .. automodule:: designate.quota.impl_storage 23 | :members: 24 | :undoc-members: 25 | :show-inheritance: 26 | 27 | 28 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/sink.rst: -------------------------------------------------------------------------------- 1 | .. _sink: 2 | 3 | **** 4 | Sink 5 | **** 6 | 7 | .. _sink-service: 8 | 9 | Sink Service 10 | ============ 11 | 12 | .. automodule:: designate.sink.service 13 | :members: 14 | :undoc-members: 15 | :show-inheritance: 16 | 17 | 18 | -------------------------------------------------------------------------------- /doc/source/contributor/sourcedoc/storage.rst: -------------------------------------------------------------------------------- 1 | .. _storage: 2 | 3 | ******* 4 | Storage 5 | ******* 6 | 7 | .. _storage-base: 8 | 9 | Storage Base 10 | ============= 11 | 12 | .. automodule:: designate.storage.sqlalchemy 13 | :members: 14 | :undoc-members: 15 | :show-inheritance: 16 | 17 | 18 | -------------------------------------------------------------------------------- /doc/source/diagrams/Designate-MultiZone.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/diagrams/Designate-MultiZone.dia -------------------------------------------------------------------------------- /doc/source/diagrams/Designate-PowerDNS-Detail.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/diagrams/Designate-PowerDNS-Detail.dia -------------------------------------------------------------------------------- /doc/source/diagrams/Designate-Simple.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/diagrams/Designate-Simple.dia -------------------------------------------------------------------------------- /doc/source/diagrams/README: -------------------------------------------------------------------------------- 1 | Summary 2 | ======= 3 | Dia is the preferred multi-platform tool for drawing images. 4 | 5 | Initial Dia files were built using dia (0.97.2-15ubuntu1) and dia-shapes (0.6.0-1) 6 | 7 | -------------------------------------------------------------------------------- /doc/source/images/Designate-Arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/images/Designate-Arch.png -------------------------------------------------------------------------------- /doc/source/images/Designate-DNS-Integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/images/Designate-DNS-Integration.png -------------------------------------------------------------------------------- /doc/source/images/Designate-DNS-Overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/images/Designate-DNS-Overview.png -------------------------------------------------------------------------------- /doc/source/images/Designate-DNS-Resolvers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/doc/source/images/Designate-DNS-Resolvers.png -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- 1 | =========================================== 2 | Designate, a DNSaaS component for OpenStack 3 | =========================================== 4 | 5 | Designate is a multi-tenant DNSaaS service for OpenStack. It provides a REST 6 | API with integrated Keystone authentication. It can be configured to 7 | auto-generate records based on Nova and Neutron actions. Designate supports 8 | a variety of DNS servers including Bind9 and PowerDNS 4. 9 | 10 | Contents 11 | ~~~~~~~~ 12 | 13 | .. toctree:: 14 | :maxdepth: 1 15 | 16 | intro/index 17 | install/index 18 | contributor/index 19 | user/index 20 | admin/index 21 | configuration/index 22 | cli/index 23 | reference/index 24 | 25 | For information on the Designate API, see the 26 | `API Reference `_. 27 | 28 | This documentation is generated by the Sphinx toolkit and lives in the 29 | `source tree `_. 30 | -------------------------------------------------------------------------------- /doc/source/install/common_prerequisites.rst: -------------------------------------------------------------------------------- 1 | Prerequisites 2 | ------------- 3 | 4 | Before you install and configure the DNS service, 5 | you must create service credentials and API endpoints. 6 | 7 | #. Source the ``admin`` credentials to gain access to 8 | admin-only CLI commands: 9 | 10 | .. code-block:: console 11 | 12 | $ source admin-openrc 13 | 14 | #. To create the service credentials, complete these steps: 15 | 16 | * Create the ``designate`` user: 17 | 18 | .. code-block:: console 19 | 20 | $ openstack user create --domain default --password-prompt designate 21 | 22 | * Add the ``admin`` role to the ``designate`` user: 23 | 24 | .. code-block:: console 25 | 26 | $ openstack role add --project service --user designate admin 27 | 28 | * Create the designate service entities: 29 | 30 | .. code-block:: console 31 | 32 | $ openstack service create --name designate --description "DNS" dns 33 | 34 | #. Create the DNS service API endpoint: 35 | 36 | .. code-block:: console 37 | 38 | $ openstack endpoint create --region RegionOne \ 39 | dns public http://controller:9001/ 40 | -------------------------------------------------------------------------------- /doc/source/install/index.rst: -------------------------------------------------------------------------------- 1 | ===================================== 2 | Installing OpenStack DNS as a Service 3 | ===================================== 4 | 5 | Manual Designate installation 6 | ----------------------------- 7 | 8 | This chapter assumes a working setup of OpenStack following the 9 | `OpenStack Installation Tutorial `_. 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | get_started 15 | install 16 | verify 17 | create-zone 18 | next-steps 19 | 20 | Quickstart with Kolla 21 | --------------------- 22 | 23 | Following the `Designate in Kolla 24 | `_ 25 | to quickly install and setup Designate. 26 | -------------------------------------------------------------------------------- /doc/source/install/install.rst: -------------------------------------------------------------------------------- 1 | .. _install: 2 | 3 | Install and configure 4 | ~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | This section describes how to install and configure the 7 | DNS service, code-named designate, on the controller node. 8 | 9 | This section assumes that you already have a working OpenStack 10 | environment with at least the Identity service installed. 11 | 12 | Note that installation and configuration vary by distribution. 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | 17 | install-rdo.rst 18 | install-ubuntu.rst 19 | -------------------------------------------------------------------------------- /doc/source/install/next-steps.rst: -------------------------------------------------------------------------------- 1 | .. _next-steps: 2 | 3 | Next steps 4 | ~~~~~~~~~~ 5 | 6 | Your OpenStack environment now includes the designate service. 7 | 8 | To add additional services, see the `OpenStack install guide 9 | `_. 10 | 11 | To learn more about the designate service, read the :ref:`Designate 12 | developer documentation `. 13 | -------------------------------------------------------------------------------- /doc/source/reference/index.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | Designate Reference 3 | =================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | Application Programming Interface 11 | Command Line Interface Reference 12 | 13 | .. only:: html 14 | 15 | Indices and Search 16 | ------------------ 17 | 18 | * :ref:`genindex` 19 | * :ref:`modindex` 20 | * :ref:`search` 21 | -------------------------------------------------------------------------------- /doc/source/user/index.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | User guide 3 | ========== 4 | 5 | In this section, you will find documentation relevant for using 6 | Designate. 7 | 8 | Contents: 9 | 10 | Managing Zones 11 | -------------- 12 | 13 | .. toctree:: 14 | :maxdepth: 2 15 | 16 | manage-zones 17 | importexport 18 | zone-transfer 19 | secondary-zones 20 | shared-zones 21 | 22 | Working with Recordsets 23 | ----------------------- 24 | 25 | .. toctree:: 26 | :maxdepth: 2 27 | 28 | manage-recordsets 29 | manage-ptr-records 30 | neutron-integration 31 | -------------------------------------------------------------------------------- /etc/designate/README-designate.conf.txt: -------------------------------------------------------------------------------- 1 | To generate the sample designate.conf file, run the following command from the 2 | top level of the designate directory: 3 | 4 | tox -e genconfig 5 | -------------------------------------------------------------------------------- /etc/designate/designate-config-generator.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | output_file = etc/designate/designate.conf.sample 3 | wrap_width = 80 4 | namespace = designate.conf 5 | namespace = oslo.log 6 | namespace = oslo.messaging 7 | namespace = oslo.policy 8 | namespace = oslo.reports 9 | namespace = oslo.service.periodic_task 10 | namespace = oslo.service.service 11 | namespace = oslo.service.sslutils 12 | namespace = oslo.service.wsgi 13 | namespace = oslo.db 14 | namespace = oslo.middleware 15 | namespace = oslo.concurrency 16 | namespace = oslo.versionedobjects 17 | namespace = keystonemiddleware.auth_token 18 | -------------------------------------------------------------------------------- /etc/designate/designate-policy-generator.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | output_file = etc/designate/policy.yaml.sample 3 | namespace = designate -------------------------------------------------------------------------------- /etc/designate/rootwrap.conf: -------------------------------------------------------------------------------- 1 | # Configuration for designate-rootwrap 2 | # This file should be owned by (and only-writeable by) the root user 3 | 4 | [DEFAULT] 5 | # List of directories to load filter definitions from (separated by ','). 6 | # These directories MUST all be only writeable by root ! 7 | filters_path=/etc/designate/rootwrap.d,/usr/share/designate/rootwrap 8 | 9 | # List of directories to search executables in, in case filters do not 10 | # explicitely specify a full path (separated by ',') 11 | # If not specified, defaults to system PATH environment variable. 12 | # These directories MUST all be only writeable by root ! 13 | exec_dirs=/sbin,/usr/sbin,/bin,/usr/bin 14 | 15 | # Enable logging to syslog 16 | # Default value is False 17 | use_syslog=False 18 | 19 | # Which syslog facility to use. 20 | # Valid values include auth, authpriv, syslog, user0, user1... 21 | # Default value is 'syslog' 22 | syslog_log_facility=syslog 23 | 24 | # Which messages to log. 25 | # INFO means log all usage 26 | # ERROR means only log unsuccessful attempts 27 | syslog_log_level=ERROR 28 | 29 | # Rootwrap daemon exits after this seconds of inactivity 30 | daemon_timeout=600 31 | 32 | # Rootwrap daemon limits itself to that many file descriptors (Linux only) 33 | rlimit_nofile=1024 34 | -------------------------------------------------------------------------------- /etc/designate/rootwrap.d/bind9.filters: -------------------------------------------------------------------------------- 1 | # designate-rootwrap command filters for nodes on which designate is 2 | # expected to control network 3 | # 4 | # This file should be owned by (and only-writable by) the root user 5 | 6 | # format seems to be 7 | # cmd-name: filter-name, raw-command, user, args 8 | 9 | [Filters] 10 | rndc: CommandFilter, /usr/sbin/rndc, root 11 | -------------------------------------------------------------------------------- /etc/designate/rootwrap.d/djbdns.filters: -------------------------------------------------------------------------------- 1 | [Filters] 2 | tcpclient: CommandFilter, /usr/bin/tcpclient, root 3 | axfr-get: CommandFilter, /usr/bin/axfr-get, root 4 | tinydns-data: CommandFilter, /usr/bin/tinydns-data, root 5 | -------------------------------------------------------------------------------- /etc/designate/rootwrap.d/knot2.filters: -------------------------------------------------------------------------------- 1 | # cmd-name: filter-name, raw-command, user, args 2 | [Filters] 3 | knotc: CommandFilter, /usr/sbin/knotc, root 4 | -------------------------------------------------------------------------------- /playbooks/designate-bind9/post.yaml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | become: True 3 | roles: 4 | - bind-logs-conf 5 | -------------------------------------------------------------------------------- /playbooks/designate-pdns4/post.yaml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | become: True 3 | roles: 4 | - pdns4-logs-conf 5 | -------------------------------------------------------------------------------- /playbooks/enable-fips.yaml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | roles: 3 | - enable-fips 4 | -------------------------------------------------------------------------------- /rally-jobs/README.rst: -------------------------------------------------------------------------------- 1 | Rally job related files 2 | ======================= 3 | 4 | This directory contains rally tasks and plugins that are run by OpenStack CI. 5 | 6 | 7 | Structure: 8 | 9 | * designate-designate.yaml is rally task that will be run in gates 10 | 11 | * plugins - directory where you can add rally plugins. Almost everything in 12 | Rally is plugin. Benchmark context, Benchmark scenario, SLA checks, Generic 13 | cleanup resources, .... 14 | 15 | * extra - all files from this directory will be copy pasted to gates, so you 16 | are able to use absolute path in rally tasks. 17 | Files will be in ~/.rally/extra/* 18 | 19 | 20 | Useful links: 21 | 22 | * More about Rally: https://rally.readthedocs.org/en/latest/ 23 | 24 | * Rally release notes: https://rally.readthedocs.org/en/latest/release_notes.html 25 | 26 | * How to add rally-gates: https://rally.readthedocs.org/en/latest/gates.html 27 | 28 | * About plugins: https://rally.readthedocs.org/en/latest/plugins.html 29 | 30 | * Plugin samples: https://github.com/openstack/rally/tree/master/samples/plugins 31 | -------------------------------------------------------------------------------- /rally-jobs/extra/README.rst: -------------------------------------------------------------------------------- 1 | Extra files 2 | =========== 3 | 4 | All files from this directory will be copy pasted to gates, so you are able to 5 | use absolute path in rally tasks. Files will be in ~/.rally/extra/* 6 | -------------------------------------------------------------------------------- /rally-jobs/plugins/README.rst: -------------------------------------------------------------------------------- 1 | 2 | Rally plugins 3 | ============= 4 | 5 | 6 | All `*.py` modules from this directory will auto loaded by Rally and all 7 | plugins will be discoverable. There is no need in any extra configuration 8 | and there is no difference between writing them here and in rally code base. 9 | 10 | Note that it is better to push to Rally code base all interested and useful 11 | benchmarks, as that simplifies a lot life of operators. 12 | -------------------------------------------------------------------------------- /rally-jobs/plugins/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/rally-jobs/plugins/__init__.py -------------------------------------------------------------------------------- /releasenotes/notes/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/releasenotes/notes/.placeholder -------------------------------------------------------------------------------- /releasenotes/notes/Add-API-versioning-f5747a0bc766fb14.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds simple API versioning for Designate. Designate API minor releases are 5 | additive to the API major revision and share the same URL path. Subsequent 6 | minor versions are a superset of the previous versions of the same major 7 | revision. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/Add-Shared-Zones-47df0368bb3ee466.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Zones can now be shared with other projects, allowing them to create and 5 | manage recordsets and records in the zone. 6 | other: 7 | - | 8 | Now that zones can be shared with multiple projects, recordsets and records 9 | can have project identifiers that are different than the parent zone. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/Add-Tsig-secret-validation-5d2f3875d32efd83.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | So far, Tsig could have been created with empty secrets. This 5 | patch adds a configuration option to enable/disable empty secrets 6 | on tsig creation, to maintain compatibility. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/Bump-dnspython-requirement-to-2.2.1-a3d062a1e16cc8a9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Designate has increased the minimum version of dnspython to 2.2.1 for the 5 | antelope (2023.1) release to reflect support for python 3.10. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/CAA_NAPTR_records-5e2e466a5bc18a31.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | CAA and NAPTR recordset types have been added. All users should be able to use these types 5 | from the API and openstack client. These can be disabled (like other record types) by 6 | setting the `[DEFAULT].supported-record-type` config variable in all designate services. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/CERT_records-eb9b786f480851ff.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | CERT recordset type have been added. All users should be able to use this type 5 | from the API and openstack client. This can be disabled (like other record types) by 6 | setting the `[DEFAULT].supported-record-type` config variable in all designate services. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/Deprecate-the-agent-framework-a87c5e286694fb38.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The backend agent framework and agent based drivers are deprecated for 5 | removal in the "C" release. The following backend agent drivers are now 6 | deprecated: Bind9 (Agent), Denominator, Microsoft DNS (Agent), 7 | Djbdns (Agent), Gdnsd (Agent), Knot2 (Agent). 8 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-Delete-back-end-zone-resources-upon-zone-deletion-da0051432c95c8e2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Currently designate does not provide zone specific option to delete the 5 | zone resources (such as files) on the back-end (e.g. bind9) when the zone 6 | is deleted. To fix this add a header ``x-designate-hard-delete`` which will 7 | be used in the zone delete API to delete zone files on the back-end. This 8 | is in addition to the existing per-pool configration option that will 9 | override this new header option. This option is restricted for admin. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-designate-manage-pool-update-with-missing-attributes-3037b2dad30f84e2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | So far, the yaml Adapter made every designate-manage pool command 5 | fail if the pools.yaml file was missing any of the pool attributes. 6 | This patch makes the adapter to continue without raising any error. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-jsonschema-4.16.0-compatibility-aa65062bc55552f2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed designate compatibility with jsonschema >= 4.16.0. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-list-and-show-shared-zones-8a42a6b5f4910fc7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed an issue where zones shared with other projects may not be visible 5 | when a zone list or zone show request is made by the other projects. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-metadata.bind-use-on-upgrade-3ca33425f341ac5b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fix an issue where on upgrade, the alembic migration will fail when using 5 | SQLAlchemy 2.x. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-recordset-records-quota-76ed3095dd2afbbe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed an issue that caused the recordset_records quota to not be enforced. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-share-zone-with-zone-owner-31a20c57a65c0cc4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed a bug that allowed users to create a zone share for the zone owner. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-to-address-denylist-invalid-patterns-not-being-checked-ec1f1316ccc6cb1d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes `bug 1934252`_ which ignored invalid denylist patterns. The fix 5 | entailed checking the pattern string via regular expression compiler and 6 | testing for zero length. 7 | 8 | Previously you could create blacklist/denylist using string that cannot 9 | be used either as a regex or as a zone name, for example: 10 | patterns = ['', ``'#(*&^%$%$#@$']`` 11 | 12 | In addition, the server will return a 400 BadRequest response to an 13 | invalid pattern. 14 | 15 | .. _Bug 1934252: https://bugs.launchpad.net/designate/+bug/1934252 16 | 17 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-update-zone-create-zone-ada1fd81de479492.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed an issue where new BIND9 pool instances may fail on zone update. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/Fix-zone-list-when-zone-shared-more-than-once-288b57cafeba82df.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed issues with list zones and recordsets when a zone is shared with more 5 | than one project. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/Mention-sizelimit-tuning-for-zone-import-6d806b32c668c9c9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The example "api-paste.ini" file for Designate has been updated to enable 5 | the oslo middleware sizelimit filter by default. If you update your 6 | "api-paste.ini" to the version with sizelimit in it, you will need to 7 | adjust the [oslo_middleware] max_request_body_size setting in the 8 | Designate configuration file to be large enough to accommodate the expected 9 | maximum zone import size in your deployment. The oslo middleware 10 | max_request_body_size default is 114688 bytes. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/Remove-Akamai-eNDS-backend-1c73a734e8f8ddfa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The Akamai eDNS backend has reached it's end of life and has been removed. 5 | Please upgrade to the Akamai v2 backend. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/Replace-neutronclient-with-openstacksdk-5ae199bc327376b9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Designate will now use the openstacksdk to access neutron instead of the 5 | deprecated neutronclient. The python-neutronclient module requirement has 6 | been replaced by the openstacksdk module. 7 | other: 8 | - | 9 | Designate will now use the openstacksdk to access neutron instead of the 10 | deprecated neutronclient. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/Require-all-projects-for-set-quotas-with-non-project-scoped-tokens-ffe3082db3dbb55b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed an issue where set-quotas will always return the default quotas if 5 | it was called with a non-project scoped token and the all-projects flag 6 | was not set. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/Support-scoped-tokens-6b7d6052a258cd11.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes support for keystone default roles and scoped tokens. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/Switch-to-alembic-migrations-15b7701f4e8b37c1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Designate will now use Alembic migrations for database schema updates. 5 | This transition will automatically be handled for upgrades. 6 | The sqlalchemy-migrate package has been removed from the Designate 7 | requirements and the alembic package has been added. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/Update-for-SQLAlchemy-2.x-d4a5e2e3227f199e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed compatibility issues with SQLAlchemy 2.x. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/Workaround-unassigned-opcode-14-d5e1c759db58bb10.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Workaround the use of an unassigned opcode(14) by Designate that fails 5 | validation when used with dnspython >= 2.3.0. 6 | 7 | `LP#2002950 `__ -------------------------------------------------------------------------------- /releasenotes/notes/add-catalog-zone-support-8e9c14c3f01e00fc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add support for providing catalog zones. 5 | 6 | Designate can now optionally provide catalog zones for pools. Defined in 7 | `RFC 9432 `_, catalog zones 8 | allow for provisioning of DNS zones on secondary nameservers through the 9 | sole means of DNS. A special zone, the catalog zone, serves as a list of 10 | all zones the secondary nameservers should serve and for which they will 11 | set themselves up automatically. The synchronization of zones via a catalog 12 | zone happens via known and proven AXFR, just like for a zone's DNS records. 13 | 14 | Provisioning via catalog zones is already supported by popular DNS 15 | implementations, such as BIND9, Knot and PowerDNS (and likely others). 16 | Apart from being a standardized provisioning model, the main advantage of 17 | catalog zones is the scalability and robustness of keeping secondary 18 | nameservers in sync. 19 | -------------------------------------------------------------------------------- /releasenotes/notes/add-multiple-pools-docs-19071225709c5702.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Add multiple pools guidance docs to Admin, User, and CLI docs. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/agent-port-number-c28462562a74cbf9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - The default port which the designate-agent service listens on has changed 4 | from 53 to 5358. This matches the port we have always used in the sample 5 | configuration, and the port used in the agent backend class. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/akamai-v2-5a3edb35f59a17c2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new backend driver to support the Akamai FastDNS V2 API 5 | upgrade: 6 | - | 7 | The Akamai eDNS API endpoint has been removed, users should migrate to 8 | the Akamai v2 driver for the FastDNS V2 API. -------------------------------------------------------------------------------- /releasenotes/notes/api-dot-json-324038360202e86b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Designate no longer will attempt to guess content type based on 4 | an extension to the URL. So GET /v2/zones.json is no longer an 5 | acceptable URL. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/api-mdns-multiple-bind-c78853de46ee587d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - designate-mdns, designate-agent and designate-api can now bind to multiple 4 | host:port pairs via the new "listen" configuration arguments for eacg 5 | service. 6 | deprecations: 7 | - designate-api's api_host and api_port configuration options have been 8 | deprecated, please use the new combined "listen" argument in place of 9 | these. 10 | - designate-mdns's host and port configuration options have been 11 | deprecated, please use the new combined "listen" argument in place of 12 | these. 13 | - designate-agents's host and port configuration options have been 14 | deprecated, please use the new combined "listen" argument in place of 15 | these. 16 | -------------------------------------------------------------------------------- /releasenotes/notes/attribute-filter-f06a53b61f5fd111.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Addition of the "attribute" filter for scheduling zones across pools. 4 | This can be enabled in the ``[service:central]`` section of the config 5 | by adding ``attribute`` to the list of values in the ``filters`` option. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/batch-increment-serial-07485eb3bbbac6c3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Moved zone serial updates to a `designate-producer` task called 5 | `increment_serial` to fix race conditions and to reduce the number of 6 | updates to the upstream DNS servers when performing multiple DNS updates. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/bp-designate-os-profiler-3f507d5e1e319f3d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | OSprofiler support was introduced. To allow its usage, the api-paste.ini 5 | file needs to be modified to contain osprofiler middleware. Also 6 | `[profiler]` section needs to be added to the designate.conf file with 7 | `enabled`, `hmac_keys` and `trace_sqlalchemy` flags defined. 8 | security: 9 | - OSprofiler support requires passing of trace information 10 | between various OpenStack services. This information is 11 | securely signed by one of HMAC keys, defined in designate.conf 12 | configuration file. To allow cross-project tracing user should use the key, 13 | that is common among all OpenStack services they want to trace. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1755788-txt-spf-validation-d18e43c12691132a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | TXT and SPF records are now validated for empty spaces in the values. 5 | If record value has empty space it should use "" quotation according to 6 | RFC-1035 section 5.1. Use of single quotation mark within record value 7 | requires quote symbol to be escaped with backslash. 8 | 9 | See `bug 1755788`_ for more information. 10 | 11 | .. _bug 1755788: https://bugs.launchpad.net/designate/+bug/1755788 12 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1768824-service_statuses-constraint-7a30eb78dc63b86f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | If there are duplicate service entries in the service_statuses table 5 | and the db sync command fails, you may need to truncate the 6 | service_statuses table. 7 | fixes: 8 | - | 9 | Fixed `bug 1768824`_ which could cause the service_statuses table 10 | to be flooded with duplicate service entries. 11 | 12 | We fixed this by introducing a new unique constraint to the 13 | service_statuses table. 14 | 15 | .. _Bug 1768824: https://bugs.launchpad.net/designate/+bug/1768824 16 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1827070-service_status-multiple-workers-cf99fe9e4eaf57ff.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed a bug preventing `service_statuses` from properly updating 5 | when Designate services were configured with multiple workers. 6 | 7 | See `bug 1827070`_ for more information. 8 | 9 | .. _bug 1827070: https://bugs.launchpad.net/designate/+bug/1827070 10 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1828534-ensure-coordination-ids-are-encoded-b5f32b9e16339251.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | A bug that prevented Designate from starting up when services 5 | are running a mixture of Python 2 and 3 has been fixed, but there is 6 | still an issue when running a mixture of a patched and unpatched 7 | versions of Designate under Python 3. 8 | 9 | See `bug 1828534`_ for more information. 10 | 11 | .. _bug 1828534: https://bugs.launchpad.net/designate/+bug/1828534 12 | fixes: 13 | - | 14 | Fixed an `issue`_ when upgrading to Python 3 (where bytes and str are 15 | different types) and _update_partitions() attempts to sort types of 'str' 16 | and 'bytes', causing designate-producer to crash. 17 | 18 | .. _issue: https://bugs.launchpad.net/designate/+bug/1828534 19 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1832799-allow-topic-override-7540c14a10b8e3ae.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | It was previously not possible to override the topics for various serivces (e.g. mdns), 5 | due to `bug 1832799`_. This has been fixed, and these services now use a common option name to 6 | override the topic. 7 | 8 | e.g. 9 | 10 | .. code-block:: ini 11 | 12 | [service:mdns] 13 | topic = mdns 14 | 15 | .. _bug 1832799: https://bugs.launchpad.net/designate/+bug/1832799 16 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1926429-allow-ttl-min-of-zero-688f7c2cf095d89d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Allows for a minimum TTL value of zero to be used instead of 1. As stated 5 | in RFC https://datatracker.ietf.org/doc/html/rfc2181#section-8. 6 | 7 | .. _bug 1926429: https://bugs.launchpad.net/designate/+bug/1926429 8 | 9 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1958533-allow-caa-mail-subaddr-d02cdc46bbb118ad.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | CAA records now allow the use of `+` prefixed subadresses like 5 | `security+caa@example.net` within mail urls. 6 | (https://www.rfc-editor.org/rfc/rfc5233.html#section-1) 7 | 8 | See `bug 1958533`_ for more information. 9 | 10 | .. _bug 1958533: https://bugs.launchpad.net/designate/+bug/1958533 11 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1967825-c3463edde9a9dd7a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``[service:api] max_header_line`` parameter has been deprecated. This 5 | parameter has hd no effect since the Train release. Use 6 | the ``[DEFAULT] max_header_line`` parameter of the ``oslo.service`` library 7 | instead. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-2015762-sink-delete-fails-intermittently-53168cf5cd830b59.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed `bug 2015762`_ which could cause managed records to 5 | occasionally fail to delete due to a race condition. 6 | 7 | .. _Bug 2015762: https://bugs.launchpad.net/designate/+bug/2015762 8 | -------------------------------------------------------------------------------- /releasenotes/notes/bugfix-1971856-3938a55b5494b8b8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes bug where requests to powerDNS fail if the dns is configured for TLS 5 | traffic. 6 | 7 | It does so by adding a configuration variable, `api_ca_cert`, users can 8 | use to declare the location of the CA cert needed to verify TLS 9 | traffic. 10 | 11 | `LP#1971856 `__ 12 | -------------------------------------------------------------------------------- /releasenotes/notes/cfg-notification-remove.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | critical: 3 | - The `format` cfg in nova and neutron notification both will remove in the Pike. 4 | Please set ``formatv4`` and ``formatv6`` in the ``[handler:nova_fixed]`` 5 | and ``[handler:neutron_floatingip]`` your designate config file. 6 | 7 | ``formatv4 = '%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(zone)s'`` 8 | ``formatv4 = '%(hostname)s.%(project)s.%(zone)s'`` 9 | ``formatv4 = '%(hostname)s.%(zone)s'`` 10 | ``formatv6 = '%(hostname)s.%(project)s.%(zone)s'`` 11 | ``formatv6 = '%(hostname)s.%(zone)s'`` 12 | 13 | - The above config which you need to put or uncomment them into/in 14 | designate config file. 15 | -------------------------------------------------------------------------------- /releasenotes/notes/clean-up-neutron-opts-1ff35105972d3acb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following deprecated options in the ``network_api:neutron`` section 5 | have been removed. 6 | 7 | - ``admin_username`` 8 | - ``admin_password`` 9 | - ``admin_tenant_name`` 10 | - ``auth_url`` 11 | - ``auth_strategy`` 12 | -------------------------------------------------------------------------------- /releasenotes/notes/cleanup-api-options-dalmetian-32e879f025ab6580.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following deprecated options have been removed. 5 | 6 | - ``[service:api] max_header_line`` 7 | - ``[service:api] secure_proxy_ssl_header`` 8 | - ``[service:api] override_proto`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-json-formatted-policy-file-a6a464a8d35e02a5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The default value of ``[oslo_policy] policy_file`` config option has 5 | been changed from ``policy.json`` to ``policy.yaml``. 6 | Operators who are utilizing customized or previously generated 7 | static policy JSON files (which are not needed by default), should 8 | generate new policy files or convert them in YAML format. Use the 9 | `oslopolicy-convert-json-to-yaml 10 | `_ 11 | tool to convert a JSON to YAML formatted policy file in 12 | backward compatible way. 13 | deprecations: 14 | - | 15 | Use of JSON policy files was deprecated by the ``oslo.policy`` library 16 | during the Victoria development cycle. As a result, this deprecation is 17 | being noted in the Wallaby cycle with an anticipated future removal of support 18 | by ``oslo.policy``. As such operators will need to convert to YAML policy 19 | files. Please see the upgrade notes for details on migration of any 20 | custom policy files. 21 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-ssl-middleware-opts-bee401944e40fc63.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following parameters have been deprecated. These parameters have had 5 | no effect since SSLMiddleware was removed during Ussuri cycle. 6 | 7 | - ``[service:api] secure_proxy_ssl_header`` 8 | - ``[service:api] override_proto`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/djbdns-agent-backend-c84e9eeab48d2e01.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - An experimental agent backend to support TinyDNS, the DNS resolver 4 | from the djbdns tools. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-py-2-7-737ea2547cb7ea06.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Python 2.7 will not be maintained past 2020 and because of that we are 4 | dropping Python 2 support. 5 | upgrade: 6 | - | 7 | Python 2.7 support has been dropped. Last release of Designate 8 | to support python 2.7 is OpenStack Train. The minimum version of Python now 9 | supported by Designate is Python 3.6. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/edgegrid-optional-ab7662a9e71612d3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``edgegrid-python`` library is now an optional dependency and should 5 | be installed additionally if the Akamai v2 Backend is used. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/enable-host-header-d759b65d8b0e67a1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``[service:api]`` option ``enable_host_header`` is now enabled by 5 | default. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/enforce-utf8-tables-mysql-274b5c3c1afe4b3b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Database tables are now explicitly created with charset=utf8. This resolves 5 | an issue running ``designate-manage database sync`` when the designate 6 | database was not created with the default charset set to utf8. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/experimental-wsgi-support-8370a8d9b298d5ca.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added an experimental entrypoint for wsgi called ``designate-api-wsgi``. -------------------------------------------------------------------------------- /releasenotes/notes/fix-backlog-1a13bd80729c2bed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed the ignored ``[DEFAULT] backlog`` option. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-designate-manage-pool-7d812f938e894133.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed an issue in central where "designate manage pool update" may return 5 | an error designate.exceptions.MissingProjectID when attempting to create a 6 | new pool. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-recordset-status-204e2747ef47d5ad.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed a bug with the recordset status implementation to make it report 5 | its status more accurately. 6 | 7 | A recordset will now always report its highest priority state when it 8 | contains multiple records. The order of priority is, 9 | `ERROR`, `PENDING`, `ACTIVE` and `DELETED`. 10 | 11 | See `bug 1842994`_ for more information. 12 | 13 | .. _bug 1842994: https://bugs.launchpad.net/designate/+bug/1842994 14 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-refresh-secondary-zone-task-79f68d3f7377181c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Refresh secondary zone task was broken. It failed all the time. 5 | If MDNS didn't get NOTIFY from master server, the secondary zone didn't get 6 | updates. Now it's fixed. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-service-status-ba18270651011ee6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed an issue with the API reference using the wrong path for list 5 | service statuses. In addition a compatibility workaround was added 6 | for the incorrect /v2/service_status path. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-zone-transfer-request-scoped-token-fc9d3be407e1a50a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed a bug where deleting a zone transfer request may fail when using 5 | a system scoped token. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/improved-infoblox-backend-e24cee40ba568e65.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The existing Infoblox driver has been updated and is now based on the 5 | official Infoblox client. 6 | 7 | The following new options were added to the pool config for Infoblox. 8 | 9 | - ``wapi_host`` 10 | - ``wapi_version`` 11 | - ``cert`` 12 | - ``key`` 13 | 14 | upgrade: 15 | - | 16 | The deprecated Infoblox configuration options in ``desginate.conf`` 17 | has now been removed. All Infoblox configuration should now be in the 18 | ``pools.yaml`` configuration file. 19 | 20 | In addition, the ``infoblox-client`` library is now a dependency for 21 | the Infoblox driver and should be installed additionally if the 22 | Infoblox Backend is used. 23 | -------------------------------------------------------------------------------- /releasenotes/notes/knot-agent-backend-db2893aa97d85a1d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - An experimental agent backend to support Knot DNS 2 4 | -------------------------------------------------------------------------------- /releasenotes/notes/mdns-rpc-moved-0e7eea194064834a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``SECONDARY zone`` RPC calls were moved from the ``mdns`` service to ``worker`` 5 | service. When upgrading multi-controller deployments we recommend that you 6 | restart the ``central`` and ``worker`` services first to move the 7 | ``SECONDARY zone`` calls to the ``worker``, and once both services has been 8 | upgraded go ahead and restart the ``mdns`` service. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/mdns-tcp-keepidle-5ef6ec194a892f8a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``[service:mdns] tcp_keepidle`` option has been added. This option 5 | allows customizing TCP keepidle set for socket used by designate-mdns. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/mini-dns-tcp-c1a15742f5c71739.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | issues: 3 | - The fix for minidns's issues TCP can cause minidns to fail to send some messages. 4 | This manifests itself with eventlet not being able to send all the data 5 | before socket is closed. 6 | critical: 7 | - Previous versions of eventlet changed the behaviour of socket.send() to 8 | match socket.sendall(). in eventlet 0.18.0 this changed and it reverted 9 | to the traditional behaviour. MiniDNS has been updated to allow minidns to 10 | push large zone transfers over long range network connections 11 | -------------------------------------------------------------------------------- /releasenotes/notes/multilevel-tlds-3dadd285fed82715.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Check for multi level tlds 5 | 6 | Previously we only checked for the last label of a TLD 7 | which does not work for `co.uk` or custom internal 8 | TLDs that deployers may use 9 | -------------------------------------------------------------------------------- /releasenotes/notes/new-ptr-status-69958252a2f294c9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Added new state ``INACTIVE`` to the Floating IP status to indicate that 5 | it is not currently associated to a DNS record. -------------------------------------------------------------------------------- /releasenotes/notes/new-service-layer-8023c242de89075a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The previously deprecated options ``api_host``, ``api_port``, ``host`` and 5 | ``port`` have been permanently removed and are replaced by ``listen``. 6 | 7 | e.g. 8 | 9 | .. code-block:: ini 10 | 11 | [service:api] 12 | listen = 0.0.0.0:9001 13 | 14 | .. 15 | - | 16 | The Designate ``sink`` service will now use the heartbeat reporting system to 17 | report its status. This was already the case for all other Designate 18 | services. 19 | -------------------------------------------------------------------------------- /releasenotes/notes/newton-rc-1-eddc78fac760b98a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | This release has started the migration of our services to a 4 | ``worker`` and ``producer`` model. This has started by deprecating 5 | ``designate-zone-manager`` and ``designate-pool-manager``. 6 | We have also added support for new DNS Servers, and added scheduling 7 | across pools. 8 | features: 9 | - Added ``designate-worker`` and ``designate-producer``. This will allow for 10 | better scaling across a designate system as we move forward. 11 | upgrade: 12 | - To enable ``designate-worker`` and ``designate-producer`` add a section to 13 | your ``designate.conf`` called ``[service:worker]`` and add an option 14 | ``enabled = True``. Then stop ``designate-pool-manager`` and 15 | ``designate-zone-manager``, and start ``designate-worker`` and 16 | ``designate-producer`` 17 | deprecations: 18 | - Both ``designate-zone-manager`` and ``designate-pool-manager`` are now 19 | deprecated and will be removed in a future release. 20 | -------------------------------------------------------------------------------- /releasenotes/notes/pdns4-tsig-1fda534c01d90138.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds a new option for pools using the ``pdns4`` backend: ``tsigkey_name``. 5 | This allows deployers to specify a tsig key that is installed in powerdns 6 | to use for AFXR requests. This key name is the name used to create the key 7 | in powerdns, not the Designate UUID based ID for the key. 8 | 9 | .. note:: This is only available in the 4.2.x versions (and above) of pdns. 10 | 11 | -------------------------------------------------------------------------------- /releasenotes/notes/pluggable-notifications-bd049b755a2ace9c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Operators now have a choice in the type of notification payload 4 | content that Designate can emit via oslo.messaging's Notifier. 5 | 6 | The default plugin is configured to emit the same information 7 | that the notifications previous to this patch emitted. So there 8 | is no functional change. 9 | 10 | Operators can write their own notification plugins that exist 11 | in designate/notifications.py. 12 | 13 | An "audit" plugin is included. This plugin emits object changes, 14 | if they exist, along with zone ids, zone/recordset names. 15 | 16 | A plugin can define multiple payloads from a single notification 17 | to be emitted at once, if desirable. 18 | 19 | The selection of a plugin is defined by python entrypoints (for 20 | driver availability) and the new "notification_plugin" option 21 | in the "DEFAULT" config section. 22 | -------------------------------------------------------------------------------- /releasenotes/notes/policy-in-code-8d3f4f89e2ede50f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Designate now support policy in code, which means if users don't want to 5 | modify any of policy rules, they can remove or comment all of rules in 6 | policy file or even not deploy it at all. Because from now, Designate keeps 7 | all default policies under `designate/common/policies` module. 8 | Users can modify/generate `policy.yaml` file which will override policy 9 | rules in code if those rules show in `policy.yaml` file. 10 | Users also still use `policy.json` file but oslo team recommend that we 11 | should use the newer YAML format instead. 12 | 13 | other: 14 | - | 15 | Default `policy.json` file is now removed as Designate now generate the 16 | default policies from code. Please be aware that when using that file in 17 | your environment. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/pool-config-db-45a2cad74e22d95e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - New method of updating Pools. 4 | We have a new sub command on the ``designate-manage`` utility. 5 | upgrade: 6 | - Upgrade from Liberty to Mitaka *will* require downtime due to migration 7 | of Pool Configuration data from config files, to the database. 8 | See the Upgrade Documentation for full details. 9 | - Pool Names are now required to be unique. If there is 2 pools with the same 10 | name - this will need to be changed before the upgrade is performed. 11 | deprecations: 12 | - Create / Update / Delete API methods on /v2/pools/ 13 | Using these messages **will** cause unforseen issues with pools. We highly recommend 14 | that the policy file be updated to restrict create / update / delete from all users 15 | -------------------------------------------------------------------------------- /releasenotes/notes/pool-listener-6689ffa50345ba6e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Designate-Sink service now supports notification listener pooling 5 | for those oslo.messaging drivers that support this feature 6 | (currently those are ``rabbit``/``kombu`` and ``kafka``). 7 | `Listener pools `_ 8 | is an alternative to specifying several topics for notification consumers 9 | in configuration of service that emits notifications. 10 | 11 | To enable listener pooling, set the option 12 | ``[service:sink]listener_pool_name`` to some string value, that must be the 13 | same for all designate-sink service instances. 14 | Default value of this option (``None``) disables notification listener 15 | pooling. 16 | -------------------------------------------------------------------------------- /releasenotes/notes/pool-manager-disabled-ff8582b5f86d2360.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - New installs will now have pool manager disabled by 4 | default and will use the worker and producer services. 5 | To continue to use pool manager set ``enabled=False`` 6 | in the ``[service:worker]`` of your config. -------------------------------------------------------------------------------- /releasenotes/notes/pool_scheduler-32e34dda9484ef9a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Schedule across pools. See https://docs.openstack.org/designate/latest/admin/pool-scheduler.html#default-provided-filters for the built in filters 4 | upgrade: 5 | - The default option for the scheduler filters will be 6 | ``attribute, pool_id_attribute, random``. 7 | - To maintain exact matching behaviour (if you have multiple pools) you will 8 | need to set the ``scheduler_filters`` option in ``[service:central]`` to 9 | ``default_pool`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/quotas-validate-project-36a2a88b66bc6d63.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Designate can verify validity of the project id when setting quotas for it. 5 | This feature is enabled by setting a new configuration option 6 | ``[service:api]quotas_verify_project_id`` to ``True`` (default is ``False`` 7 | for backward compatibility). 8 | -------------------------------------------------------------------------------- /releasenotes/notes/recordset-api-2c82abf569f7623e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - A new recordset api ``/v2/recordsets`` is exposed with GET method 4 | allowed only. The api can be used for retrieving recordsets across all the 5 | zones under a tenant. Filtering on certain fields is supported as well. -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-agent-1ef95b8608e2a41b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Designate-agent removal is complete in this version of designate. 4 | upgrade: 5 | - | 6 | The agent and all agent backends has been removed and can no longer be used. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-mdns-options-d720efab5ab275d6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Removed previously deprecated ``service:mdns`` configuration options. These are now 5 | configured under ``service:worker`` instead. 6 | 7 | - ``all_tcp`` 8 | - ``xfr_timeout`` 9 | - ``topic`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-storage-driver-option-e3b5e3448e81c8cb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Removed previously deprecated ``storage_driver`` configuration option. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-more-unused-rpc-calls-d0199cf5518da6d6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Removed the following unused central rpc calls. This should not impact 5 | normal installations, but if these are used in any custom written backends 6 | or plugins that you are using, you will need to update your code before 7 | upgrading. 8 | 9 | - ``count_records`` 10 | - ``count_recordsets`` 11 | - ``count_zones`` 12 | - ``count_tenants`` 13 | - ``delete_zone_transfer_accept`` 14 | - ``find_blacklist`` 15 | - ``find_record`` 16 | - ``find_zone`` 17 | - ``find_zone_transfer_accept`` 18 | - ``find_zone_transfer_request`` 19 | - ``get_record`` 20 | - ``get_quota`` 21 | - ``update_zone_transfer_accept`` 22 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-netaddr-requirement-ab9b9c2d15aa8e1c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | The netaddr python module has been removed as a Designate requirement. It 5 | has been replaced with the python standard library 'ipaddress' module. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-py38-28e9b2f3df6af4ac.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for Python 3.8 has been removed. Now the minimum python version 5 | supported is 3.9 . 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-unused-rpc-calls-b123902ea0c55c19.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Removed the following unused central rpc calls. This should not impact 5 | normal installations, but if these are used in any custom written backends 6 | or plugins that you are using, you will need to update your code before 7 | upgrading. 8 | 9 | - ``create_record`` 10 | - ``update_record`` 11 | - ``delete_record`` 12 | - ``sync_record`` 13 | - ``sync_zone`` 14 | - ``sync_zones`` 15 | - ``touch_zone`` 16 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-v1-api-e38de408c6454de2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | V1 API removal is complete in this version of designate. 4 | upgrade: 5 | - | 6 | Any tooling using the V1 API needs to be reworked to use the v2 API 7 | critical: 8 | - | 9 | V1 API has been removed 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-wsgi-scripts-d848069ac50cf062.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new module, ``designate.wsgi``, has been added as a place to gather WSGI 5 | ``application`` objects. This is intended to ease deployment by providing 6 | a consistent location for these objects. For example, if using uWSGI then 7 | instead of: 8 | 9 | .. code-block:: ini 10 | 11 | [uwsgi] 12 | wsgi-file = /bin/designate-api-wsgi 13 | 14 | You can now use: 15 | 16 | .. code-block:: ini 17 | 18 | [uwsgi] 19 | module = designate.wsgi.api:application 20 | 21 | This also simplifies deployment with other WSGI servers that expect module 22 | paths such as gunicorn. 23 | upgrade: 24 | - | 25 | The WSGI script ``designate-api-wsgi`` has been removed. Deployment tooling 26 | should instead reference the Python module path for the wsgi module in 27 | Designate, ``designate.wsgi.api:application`` if their chosen WSGI server 28 | supports this (gunicorn, uWSGI, etc.) or implement a .wsgi script 29 | themselves if not (mod_wsgi). 30 | -------------------------------------------------------------------------------- /releasenotes/notes/removed-deprecated-managed-210a00cdaf975b8f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Custom notification handlers that created unmanaged records will need to be updated, 5 | as we no longer support the creation of unmanaged records using the sink. 6 | 7 | See `designate/notification_handler/base.py` for more details. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/removed-mdns-notify-cae01bac02d214a9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Removed previously deprecated ``[service:mdns]`` option ``notify``. All 5 | DNS notifications now happens using the worker service. -------------------------------------------------------------------------------- /releasenotes/notes/removed-metrics-11a53cf88e1ea224.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Removed the ``monascastatsd`` based metrics solution as all calls using 5 | it has been changed or removed and designate is no longer tracking 6 | any metrics using the metrics endpoint. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/removed-pool-manager-a1a9466aceb44b9f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Pool-Manager removal is complete in this version of designate. 4 | upgrade: 5 | - | 6 | The pool-manager has been removed and can no longer be used. Instead 7 | the worker and producer service should be used. 8 | 9 | Because of this the ``[service:worker]`` option ``enabled`` has been 10 | permanently removed, and in addition the ``notify`` option under the same 11 | section has been deprecated for removal. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/removing-deprectated-pdns-mysql-backend-1babc968f5778ae6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The PowerDNS MySQL based backend has been deprecated since the introduction 5 | of the PowerDNS 4 driver and is now being removed. 6 | 7 | -------------------------------------------------------------------------------- /releasenotes/notes/rpc-version-update-f87b852b361d0aad.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The Designate Central RPC API version was updated and may not be backwards 5 | compatible with an older version of the Designate RPC API. When upgrading 6 | a multi-controller deployment make sure that all designate-central services 7 | are upgraded before starting the designate-worker service. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/service-status-ab0e696c8f5fdef8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - All designate services will now report to designate-central when they 4 | are running. This is implmented as a heartbeat reporting system. 5 | 6 | There is also a new API endpoint in the v2 API - 7 | $API_BASE/v2/service_status. 8 | 9 | This will show the list of services running, and when they last reported 10 | as running. Currently the "stats" and "capabilities" values will be 11 | blank, but will be updated in the future as services implement them. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/soa_refresh_interval_randomization-fcc1d0d63124699b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Randomize SOA refresh interval to stagger AXFRs across multiple zones and 4 | resolvers. 5 | Introduce the new configuration parameters default-soa-refresh-min and 6 | default-soa-refresh-max 7 | deprecations: 8 | - default-soa-refresh configuration option 9 | -------------------------------------------------------------------------------- /releasenotes/notes/stein-upgrade-checkers-cli-b8518126fff82be6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new ``designate-status upgrade check`` command has been added which can 5 | be used to validate a deployment before starting services with new code. 6 | See the documentation for details: 7 | https://docs.openstack.org/designate/latest/cli/designate-status.html 8 | -------------------------------------------------------------------------------- /releasenotes/notes/unused-rpc-calls-7df4dcbcc19c6f60.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Removed the following unused central rpc calls. This should not impact 5 | normal installations, but if these are used in any custom written backends 6 | or plugins that you are using, you will need to update your code before 7 | upgrading. 8 | 9 | - ``find_records`` 10 | - ``find_recordset`` 11 | - ``update_zone_import`` 12 | -------------------------------------------------------------------------------- /releasenotes/notes/update-designate-manage-command-af0aec02ab582d50.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Update command ``designate-manage pool update``, change ``--dry_run`` to 5 | ``--dry-run``, and change ``--delete`` and ``--dry-run`` as switchs not 6 | key value pair. 7 | e.g. 8 | 9 | .. code-block:: bash 10 | 11 | $ designate-manage pool update --file pools.yml --delete --dry-run 12 | 13 | -------------------------------------------------------------------------------- /releasenotes/notes/v1-disabled-ffebc0434fa0665f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | critical: 3 | - The ``v1`` API is now off by default. To re-enable the V1 API 4 | please set ``enable_api_v1 = True`` in the ``[service:api]`` section 5 | of your designate config file. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/v2-api-quotas-dd7e189cddcf7b96.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - This adds the quotas api from /admin to /v2 with some changes. 4 | 5 | All users can GET /v2/quotas/ 6 | 7 | Users with "All-Projects" permission can view other projects 8 | (by setting X-Auth-All-Projects:True in the HTTP Headers) 9 | 10 | Users with "All-Projects" and "set-quotas" can set other 11 | projects quotas 12 | 13 | Moved the API rendering to Designate Object based rendering 14 | fixes: 15 | - V1 API Users can now query v1/quotas/ for quotas 16 | -------------------------------------------------------------------------------- /releasenotes/notes/validate-doublequotes-6c4ed4f65a9d5e4b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Verify that if a TXT record starts with a double quote, it also ends with 4 | a double quote. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/worker-executor-84d983c92dd13b49.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | To allow for python3.7 support, the `designate-worker` service was changed 5 | from a `ThreadPoolExecutor` to a `GreenThreadPoolExecutor`. This should 6 | no impact for most deployments, but in some cases it may cause performance 7 | degredation. In these cases, tuning `[service:worker].workers` and 8 | `[service:worker].threads` alleviate the issues. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/zone-pool-move-7bb8e1f0839c3c0d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added zone pool move command which allows admin user to move zone from 5 | pool A to specified pool B. This command overcome the issues observed in 6 | zone export-import thereby reducing hours of time of large zone imports 7 | (e.g. 20-30k records). Please note, if you have moved a zone to a 8 | different pool, the pool must be configured with a proper tsig key for 9 | mini-DNS query operations. Without this, you cannot have overlapping zones 10 | in different pools. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/zone_name-null-zone-trasfer-request-response-a2e316872798d1df.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Added zone_name in zone trasfer request response. Closed bug#1580014 4 | -------------------------------------------------------------------------------- /releasenotes/notes/zones_unlimited_quota-81a2dfba1f532c9c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Allow the user to set resource quota to unlimited by assigning 5 | a negative value to the resource quota value. 6 | -------------------------------------------------------------------------------- /releasenotes/source/2023.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2023.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/2023.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2023.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2023.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2023.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2025.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2025.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2025.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/_templates/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/designate/6ebeb372617a236979cd583a656af82d8a136051/releasenotes/source/_templates/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Designate Release Notes 3 | ========================= 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | unreleased 9 | 2025.1 10 | 2024.2 11 | 2024.1 12 | 2023.2 13 | 2023.1 14 | zed 15 | yoga 16 | xena 17 | wallaby 18 | victoria 19 | ussuri 20 | train 21 | stein 22 | rocky 23 | queens 24 | pike 25 | ocata 26 | newton 27 | mitaka 28 | liberty 29 | -------------------------------------------------------------------------------- /releasenotes/source/liberty.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Liberty Series Release Notes 3 | ============================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/liberty 7 | -------------------------------------------------------------------------------- /releasenotes/source/mitaka.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Mitaka Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/mitaka 7 | -------------------------------------------------------------------------------- /releasenotes/source/newton.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Newton Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/newton 7 | -------------------------------------------------------------------------------- /releasenotes/source/ocata.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Ocata Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/ocata 7 | -------------------------------------------------------------------------------- /releasenotes/source/pike.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Pike Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/pike 7 | -------------------------------------------------------------------------------- /releasenotes/source/queens.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Queens Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/queens 7 | -------------------------------------------------------------------------------- /releasenotes/source/rocky.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Rocky Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/rocky 7 | -------------------------------------------------------------------------------- /releasenotes/source/stein.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Stein Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/stein 7 | -------------------------------------------------------------------------------- /releasenotes/source/train.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Train Series Release Notes 3 | ========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/train 7 | -------------------------------------------------------------------------------- /releasenotes/source/unreleased.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Current Series Release Notes 3 | ============================== 4 | 5 | .. release-notes:: 6 | -------------------------------------------------------------------------------- /releasenotes/source/ussuri.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Ussuri Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/ussuri 7 | -------------------------------------------------------------------------------- /releasenotes/source/victoria.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Victoria Series Release Notes 3 | ============================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/victoria 7 | -------------------------------------------------------------------------------- /releasenotes/source/wallaby.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Wallaby Series Release Notes 3 | ============================ 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/wallaby 7 | -------------------------------------------------------------------------------- /releasenotes/source/xena.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Xena Series Release Notes 3 | ========================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/xena 7 | -------------------------------------------------------------------------------- /releasenotes/source/yoga.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Yoga Series Release Notes 3 | ========================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/yoga 7 | -------------------------------------------------------------------------------- /releasenotes/source/zed.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Zed Series Release Notes 3 | ======================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/zed 7 | -------------------------------------------------------------------------------- /roles/bind-logs-conf/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | stage_dir: "{{ ansible_user_dir }}" 2 | -------------------------------------------------------------------------------- /roles/bind-logs-conf/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Ensure target directory exists 2 | file: 3 | path: "{{ stage_dir }}/etc/bind" 4 | state: directory 5 | 6 | - name: Find bind config files 7 | find: 8 | path: /etc/bind 9 | file_type: any 10 | register: bind_configs 11 | 12 | - name: Dereference bind configs 13 | stat: 14 | path: "{{ item.path }}" 15 | with_items: "{{ bind_configs.files }}" 16 | register: bind_configs_deref 17 | 18 | - name: Link configurations 19 | file: 20 | src: "{{ item.stat.lnk_source | default(item.stat.path) }}" 21 | dest: "{{ stage_dir }}/etc/bind/{{ item.stat.path | basename }}" 22 | state: hard 23 | with_items: "{{ bind_configs_deref.results }}" 24 | when: item.stat.isreg or item.stat.islnk 25 | 26 | # NOTE(frickler) Copied from devstack role export-devstack-journal 27 | - name: Ensure {{ stage_dir }}/logs exists 28 | become: true 29 | file: 30 | path: "{{ stage_dir }}/logs" 31 | state: directory 32 | owner: "{{ ansible_user }}" 33 | 34 | - name: Collect bind journal 35 | become: true 36 | shell: 37 | cmd: | 38 | journalctl -o short-precise --unit named > {{ stage_dir }}/logs/bind9.txt 39 | -------------------------------------------------------------------------------- /roles/pdns4-logs-conf/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | stage_dir: "{{ ansible_user_dir }}" 2 | -------------------------------------------------------------------------------- /roles/pdns4-logs-conf/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Ensure target directory exists 2 | file: 3 | path: "{{ stage_dir }}/etc/powerdns" 4 | state: directory 5 | 6 | - name: Find pdns config files 7 | find: 8 | path: /etc/powerdns 9 | file_type: any 10 | register: pdns_configs 11 | 12 | - name: Dereference pdns4 configs 13 | stat: 14 | path: "{{ item.path }}" 15 | with_items: "{{ pdns_configs.files }}" 16 | register: pdns_configs_deref 17 | 18 | - name: Link configurations 19 | file: 20 | src: "{{ item.stat.lnk_source | default(item.stat.path) }}" 21 | dest: "{{ stage_dir }}/etc/powerdns/{{ item.stat.path | basename }}" 22 | state: hard 23 | with_items: "{{ pdns_configs_deref.results }}" 24 | when: item.stat.isreg or item.stat.islnk 25 | 26 | # NOTE(frickler) Copied from devstack role export-devstack-journal 27 | - name: Ensure {{ stage_dir }}/logs exists 28 | become: true 29 | file: 30 | path: "{{ stage_dir }}/logs" 31 | state: directory 32 | owner: "{{ ansible_user }}" 33 | 34 | - name: Collect pdns journal 35 | become: true 36 | shell: 37 | cmd: | 38 | journalctl -o short-precise --unit pdns > {{ stage_dir }}/logs/pdns.txt.gz 39 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | import setuptools 17 | 18 | setuptools.setup( 19 | setup_requires=['pbr>=2.0.0'], 20 | pbr=True) 21 | -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | # Hacking already pins down pep8, pyflakes and flake8 2 | hacking>=6.1.0,<6.2.0 # Apache-2.0 3 | coverage!=4.4,>=4.0 # Apache-2.0 4 | fixtures>=3.0.0 # Apache-2.0/BSD 5 | stestr>=2.0.0 # Apache-2.0 6 | oslotest>=3.2.0 # Apache-2.0 7 | requests-mock>=1.2.0 # Apache-2.0 8 | testtools>=2.2.0 # MIT 9 | testscenarios>=0.4 # Apache-2.0/BSD 10 | WebTest>=2.0.27 # MIT 11 | tempest>=21.0.0 # Apache-2.0 12 | # Bandit security code scanner 13 | bandit>=1.1.0 # Apache-2.0 14 | doc8>=0.6.0 # Apache-2.0 15 | Pygments>=2.2.0 # BSD license 16 | pymemcache!=1.3.0,>=1.2.9 # Apache 2.0 License 17 | PyMySQL>=0.8.0 # MIT License 18 | edgegrid-python>=1.1.1 # Apache-2.0 19 | infoblox-client>=0.6.0 # Apache-2.0 20 | bashate>=0.5.1 # Apache-2.0 21 | -------------------------------------------------------------------------------- /tools/with_venv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | TOOLS_PATH=${TOOLS_PATH:-$(dirname $0)} 3 | VENV_PATH=${VENV_PATH:-${TOOLS_PATH}} 4 | VENV_DIR=${VENV_NAME:-/../.venv} 5 | TOOLS=${TOOLS_PATH} 6 | VENV=${VENV:-${VENV_PATH}/${VENV_DIR}} 7 | source ${VENV}/bin/activate && "$@" 8 | --------------------------------------------------------------------------------