Erik Olof Gunnar Andersson fb9c2da977 Move to a batch model for incrementing serial
This patch moves the responsibility of incrementing the
serial on a zone from central to the producer. This also
means that NOTIFY is triggered by the producer after the
serial has been incremented. The advantage of this approach
is that we can now batch requests which means less work
for the DNS servers, and it removes the risk of
race-conditions when updating the serial. Finally, the
producer is sharded and is easy to scale which means that
this approach should scale well with many zones.

The disadvantage is that it may take up to 5 seconds longer
for the DNS record to be updated on the DNS server. This
can be lowered by increasing the frequency of the task
that is responsible for incrementing the serial.

Depends-On: https://review.opendev.org/#/c/871266/
Change-Id: I5e9733abaaa40c874e1d80d7b57e563df0f12cee
2023-04-04 03:48:34 +00:00

134 lines
5.2 KiB
INI

[metadata]
name = designate
description = DNS as a Service
long_description = file: README.rst
author = OpenStack
author_email = openstack-discuss@lists.openstack.org
url = https://docs.openstack.org/designate/latest/
python_requires = >=3.8
classifiers =
Environment :: OpenStack
Environment :: No Input/Output (Daemon)
Intended Audience :: Information Technology
Intended Audience :: System Administrators
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.10
Topic :: Internet :: Name Service (DNS)
[files]
packages =
designate
data_files =
etc/designate =
etc/designate/api-paste.ini
etc/designate/rootwrap.conf.sample
etc/designate/rootwrap.d = etc/designate/rootwrap.d/*
[entry_points]
oslo.config.opts =
designate.conf = designate.conf.opts:list_opts
oslo.config.opts.defaults =
designate.conf = designate.common.config:set_defaults
oslo.policy.policies =
designate = designate.common.policies:list_rules
oslo.policy.enforcer =
designate = designate.policy:get_enforcer
console_scripts =
designate-rootwrap = oslo_rootwrap.cmd:main
designate-api = designate.cmd.api:main
designate-central = designate.cmd.central:main
designate-manage = designate.cmd.manage:main
designate-mdns = designate.cmd.mdns:main
designate-sink = designate.cmd.sink:main
designate-agent = designate.cmd.agent:main
designate-worker = designate.cmd.worker:main
designate-producer = designate.cmd.producer:main
designate-status = designate.cmd.status:main
designate.api.admin.extensions =
reports = designate.api.admin.controllers.extensions.reports:ReportsController
quotas = designate.api.admin.controllers.extensions.quotas:QuotasController
zones = designate.api.admin.controllers.extensions.zones:ZonesController
designate.storage =
sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage
designate.notification.handler =
fake = designate.notification_handler.fake:FakeHandler
nova_fixed = designate.notification_handler.nova:NovaFixedHandler
neutron_floatingip = designate.notification_handler.neutron:NeutronFloatingHandler
designate.backend =
bind9 = designate.backend.impl_bind9:Bind9Backend
designate = designate.backend.impl_designate:DesignateBackend
pdns4 = designate.backend.impl_pdns4:PDNS4Backend
dynect = designate.backend.impl_dynect:DynECTBackend
akamai_v2 = designate.backend.impl_akamai_v2:AkamaiBackend
nsd4 = designate.backend.impl_nsd4:NSD4Backend
infoblox = designate.backend.impl_infoblox:InfobloxBackend
fake = designate.backend.impl_fake:FakeBackend
agent = designate.backend.agent:AgentPoolBackend
ns1 = designate.backend.impl_ns1:NS1Backend
designate.backend.agent_backend =
bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend
knot2 = designate.backend.agent_backend.impl_knot2:Knot2Backend
djbdns = designate.backend.agent_backend.impl_djbdns:DjbdnsBackend
denominator = designate.backend.agent_backend.impl_denominator:DenominatorBackend
fake = designate.backend.agent_backend.impl_fake:FakeBackend
gdnsd = designate.backend.agent_backend.impl_gdnsd:GdnsdBackend
msdns = designate.backend.agent_backend.impl_msdns:MSDNSBackend
designate.network_api =
fake = designate.network_api.fake:FakeNetworkAPI
neutron = designate.network_api.neutron:NeutronNetworkAPI
designate.quota =
noop = designate.quota.impl_noop:NoopQuota
storage = designate.quota.impl_storage:StorageQuota
designate.scheduler.filters =
fallback = designate.scheduler.filters.fallback_filter:FallbackFilter
attribute = designate.scheduler.filters.attribute_filter:AttributeFilter
random = designate.scheduler.filters.random_filter:RandomFilter
pool_id_attribute = designate.scheduler.filters.pool_id_attribute_filter:PoolIDAttributeFilter
default_pool = designate.scheduler.filters.default_pool_filter:DefaultPoolFilter
in_doubt_default_pool = designate.scheduler.filters.in_doubt_default_pool_filter:InDoubtDefaultPoolFilter
designate.manage =
database = designate.manage.database:DatabaseCommands
pool = designate.manage.pool:PoolCommands
tlds = designate.manage.tlds:TLDCommands
designate.producer_tasks =
zone_purge = designate.producer.tasks:DeletedZonePurgeTask
periodic_exists = designate.producer.tasks:PeriodicExistsTask
periodic_secondary_refresh = designate.producer.tasks:PeriodicSecondaryRefreshTask
delayed_notify = designate.producer.tasks:PeriodicGenerateDelayedNotifyTask
increment_serial = designate.producer.tasks:PeriodicIncrementSerialTask
worker_periodic_recovery = designate.producer.tasks:WorkerPeriodicRecovery
designate.heartbeat_emitter =
noop = designate.heartbeat_emitter:NoopEmitter
rpc = designate.heartbeat_emitter:RpcEmitter
designate.notification.plugin =
default = designate.notifications:Default
audit = designate.notifications:Audit
wsgi_scripts =
designate-api-wsgi = designate.api.wsgi:init_application