diff --git a/src/lib/charm/openstack/designate.py b/src/lib/charm/openstack/designate.py index 351448c..81d7e58 100644 --- a/src/lib/charm/openstack/designate.py +++ b/src/lib/charm/openstack/designate.py @@ -787,3 +787,20 @@ class DesignateCharmVictoria(DesignateCharmRocky): 'designate-producer', 'bind9utils', 'python3-designate', 'python3-apt'] + + +class DesignateCharmCaracal(DesignateCharmRocky): + + release = 'caracal' + + packages = ['designate-api', 'designate-central', + 'designate-common', 'designate-mdns', + 'designate-worker', 'designate-sink', + 'designate-producer', 'bind9utils', + 'python3-designate', + 'python3-apt'] + + services = ['designate-mdns', 'designate-producer', + 'designate-worker', + 'designate-central', 'designate-sink', + 'designate-api'] diff --git a/src/templates/caracal/designate.conf b/src/templates/caracal/designate.conf new file mode 100644 index 0000000..5493f3b --- /dev/null +++ b/src/templates/caracal/designate.conf @@ -0,0 +1,341 @@ +# Caracal +[DEFAULT] +# Where an option is commented out, but filled in this shows the default +# value of that optiona aaa + +######################## +## General Configuration +######################## +# Show more verbose log output (sets INFO log level output) +verbose = {{ options.verbose }} + +# Show debugging output in logs (sets DEBUG log level output) +debug = {{ options.debug }} + +# Top-level directory for maintaining designate's state +#state_path = /var/lib/designate + +# Log Configuration +#log_config = None + +# Log directory +#logdir = /var/log/designate + +# Use "sudo designate-rootwrap /etc/designate/rootwrap.conf" to use the real +# root filter facility. +# Change to "sudo" to skip the filtering and just run the comand directly +#root_helper = sudo designate-rootwrap /etc/designate/rootwrap.conf + +# Which networking API to use, Defaults to neutron +#network_api = neutron + +{%- if options.default_ttl %} +# TTL Value (integer value) +default_ttl = {{ options.default_ttl }} +{%- endif %} +{%- if options.default_soa_refresh_min %} +# SOA refresh-min value (integer value) +default_soa_refresh_min = {{ options.default_soa_refresh_min }} +{%- endif %} +{%- if options.default_soa_refresh_max %} +# SOA max value (integer value) +default_soa_refresh_max = {{ options.default_soa_refresh_max }} +{%- endif %} +{%- if options.default_soa_retry %} +# SOA retry (integer value) +default_soa_retry = {{ options.default_soa_retry }} +{%- endif %} +{%- if options.default_soa_minimum %} +# SOA minimum value (integer value) +default_soa_minimum = {{ options.default_soa_minimum }} +{%- endif %} +# SOA expire (integer value) +default_soa_expire = {{ options.default_soa_expire }} + +{% include "parts/section-transport-url" %} + +#----------------------- +# RabbitMQ Config +#----------------------- +{% include "parts/section-oslo-messaging-rabbit" %} + +######################## +## Service Configuration +######################## +#----------------------- +# Central Service +#----------------------- +[service:central] +# Number of central worker processes to spawn +workers = {{ options.workers }} + +# Number of central greenthreads to spawn +#threads = 1000 + +# Maximum domain name length +#max_domain_name_len = 255 + +# Maximum recordset name length +#max_recordset_name_len = 255 + +# Minimum TTL +#min_ttl = None + +# The name of the default pool +#default_pool_id = '794ccc2c-d751-44fe-b57f-8894c9f5c842' + +## Managed resources settings + +# Email to use for managed resources like domains created by the FloatingIP API +managed_resource_email = {{ options.managed_resource_email }} + +{%- if options.managed_resource_tenant_id %} +# Tenant ID to own all managed resources - like auto-created records etc. +managed_resource_tenant_id = {{ options.managed_resource_tenant_id }} +{%- endif %} + +#----------------------- +# API Service +#----------------------- +[service:api] +# Number of api worker processes to spawn +#workers = None + +# Number of api greenthreads to spawn +#threads = 1000 + +# Enable host request headers +enable_host_header = true + +# The base uri used in responses +api_base_uri = '{{ options.external_endpoints.designate_api.url }}' + +# API host:port pairs to listen on (list value) +# NOTE:tinwood - Listen on every interface; fix for BUG #1734156 +listen = 0.0.0.0:{{ options.service_listen_info.designate_api.port }} + +# Maximum line size of message headers to be accepted. max_header_line may +# need to be increased when using large tokens (typically those generated by +# the Keystone v3 API with big service catalogs). +#max_header_line = 16384 + +# Authentication strategy to use - can be either "noauth" or "keystone" +#auth_strategy = keystone + +# Enable Version 1 API (deprecated) +enable_api_v1 = True + +# Enabled API Version 1 extensions +# Can be one or more of : diagnostics, quotas, reports, sync, touch +#enabled_extensions_v1 = +enabled_extensions_v1 = sync, touch + +# Enable Version 2 API +enable_api_v2 = True + +# Enabled API Version 2 extensions +#enabled_extensions_v2 = + +# Default per-page limit for the V2 API, a value of None means show all results +# by default +#default_limit_v2 = 20 + +# Max page size in the V2 API +#max_limit_v2 = 1000 + +# Enable Admin API (experimental) +#enable_api_admin = False +enable_api_admin = {{ options.enable_admin_api }} + +# Enabled Admin API extensions +# Can be one or more of : reports, quotas, counts, tenants, zones +# zone export is in zones extension +#enabled_extensions_admin = +{% if options.enable_admin_api -%} +enabled_extensions_admin = reports, quotas, counts, tenants, zones +{%- endif %} + +# Default per-page limit for the Admin API, a value of None means show all results +# by default +#default_limit_admin = 20 + +# Max page size in the Admin API +#max_limit_admin = 1000 + +# Show the pecan HTML based debug interface (v2 only) +# This is only useful for development, and WILL break python-designateclient +# if an error occurs +#pecan_debug = False + +#----------------------- +# Keystone Middleware +#----------------------- +{% include "parts/section-keystone-authtoken" %} + +#----------------------- +# Sink Service +#----------------------- +[service:sink] +# List of notification handlers to enable, configuration of these needs to +# correspond to a [handler:my_driver] section below or else in the config +# Can be one or more of : nova_fixed, neutron_floatingip +enabled_notification_handlers = {{ options.notification_handlers }} + +#----------------------- +# mDNS Service +#----------------------- +[service:mdns] +# Number of mdns worker processes to spawn +#workers = None + +# Number of mdns greenthreads to spawn +#threads = 1000 + +# mDNS Bind Host +#host = 0.0.0.0 + +# mDNS Port Number +#port = 5354 + +# mDNS TCP Backlog +#tcp_backlog = 100 + +# mDNS TCP Receive Timeout +#tcp_recv_timeout = 0.5 + +# Enforce all incoming queries (including AXFR) are TSIG signed +#query_enforce_tsig = False + +# Send all traffic over TCP +#all_tcp = False + +# Maximum message size to emit +#max_message_size = 65535 + +#----------------------- +# Worker Service +#----------------------- +[service:worker] +enabled = True + +################################### +## Pool Manager Cache Configuration +################################### +#----------------------- +# SQLAlchemy Pool Manager Cache +#----------------------- +[pool_manager_cache:sqlalchemy] +connection = {{ shared_db.designate_pool_uri }} +#connection = sqlite:///$state_path/designate_pool_manager.sqlite +#connection_debug = 100 +#connection_trace = False +#sqlite_synchronous = True +#idle_timeout = 3600 +#max_retries = 10 +#retry_interval = 10 + +#----------------------- +# Memcache Pool Manager Cache +#----------------------- +[pool_manager_cache:memcache] +#memcached_servers = None +#expiration = 3600 + + +############## +## Network API +############## +[network_api:neutron] +# Comma separated list of values, formatted "|" +#endpoints = RegionOne|http://localhost:9696 +#endpoint_type = publicURL +#timeout = 30 +#admin_username = designate +#admin_password = designate +#admin_tenant_name = designate +#auth_url = http://localhost:35357/v2.0 +#insecure = False +#auth_strategy = keystone +#ca_certificates_file = + +######################## +## Storage Configuration +######################## +#----------------------- +# SQLAlchemy Storage +#----------------------- +[storage:sqlalchemy] +# Database connection string - to configure options for a given implementation +# like sqlalchemy or other see below +#connection = sqlite:///$state_path/designate.sqlite +connection = {{ shared_db.designate_uri }} +#connection_debug = 0 +#connection_trace = False +#sqlite_synchronous = True +#idle_timeout = 3600 +#max_retries = 10 +#retry_interval = 10 + +######################## +## Handler Configuration +######################## +#----------------------- +# Nova Fixed Handler +#----------------------- +#format = '%(hostname)s.%(domain)s' + +############################# +## Agent Backend Configuration +############################# +[backend:agent:bind9] +#rndc_config_file = /etc/rndc.conf +#rndc_key_file = /etc/rndc.key +#zone_file_path = $state_path/zones +#query_destination = 127.0.0.1 +# +[backend:agent:denominator] +#name = dynect +#config_file = /etc/denominator.conf + +######################## +## Library Configuration +######################## +[oslo_concurrency] +# Path for Oslo Concurrency to store lock files, defaults to the value +# of the state_path setting. +#lock_path = $state_path + +######################## +## Coordination +######################## +[coordination] +{% if coordinator_memcached.url -%} +backend_url = {{ coordinator_memcached.url }} +{%- endif %} + +######################## +## Hook Points +######################## +# Hook Points are enabled when added to the config and there has been +# a package that provides the corresponding named designate.hook_point +# entry point. + +# [hook_point:name_of_hook_point] +# some_param_for_hook = 42 +# Hooks can be disabled in the config +# enabled = False + +# Hook can also be applied to the import path when the hook has not +# been given an explicit name. The name is created from the hook +# target function / method: +# +# name = '%s.%s' % (func.__module__, func.__name__) + +# [hook_point:designate.api.v2.controllers.zones.get_one] + +{% include "parts/section-oslo-middleware" %} + +[producer_task:zone_purge] + +# How old deleted records should be (deleted_at) to be purged, in seconds +time_threshold = {{ options.zone_purge_time_threshold }}