summaryrefslogtreecommitdiff
path: root/devstack
diff options
context:
space:
mode:
authorSergey Kraynev <sergejyit@gmail.com>2019-10-03 23:38:10 +0400
committerErik Olof Gunnar Andersson <eandersson@blizzard.com>2020-01-16 18:54:30 +0000
commit318b8d03193d3d9c26842528e9eaf25814df3ba9 (patch)
tree6c7cf1b8d7a385b7ac0299fdd7e47309598a1688 /devstack
parentf355aae93955b76df9ea9ef5554b451df0ac91b4 (diff)
downloaddesignate-318b8d03193d3d9c26842528e9eaf25814df3ba9.tar.gz
Implement create/delete zone for Akamai v2 API
- Ignore duplicate Zone error - Handle error when contractId or gid is missed - Ignore port for masters servers, because Akamai uses only 53 port and does not allow to specify any port in list of masters servers. - Added timeout and retries for soft Zone Delete - Added handling errors on the delete zone action - Added Log info message with RequestId on soft zone delete - Added processing for TsigKey during creation zone - Added devsatck_plugin for akamai_v2 backend Depends-On: https://review.opendev.org/#/c/692819/4 Change-Id: Ib221f4cf0371e70fc6900582d826ffc1bdfc12b9
Diffstat (limited to 'devstack')
-rw-r--r--devstack/designate_plugins/backend-akamai-v2161
1 files changed, 161 insertions, 0 deletions
diff --git a/devstack/designate_plugins/backend-akamai-v2 b/devstack/designate_plugins/backend-akamai-v2
new file mode 100644
index 00000000..ce6a2198
--- /dev/null
+++ b/devstack/designate_plugins/backend-akamai-v2
@@ -0,0 +1,161 @@
+# Configure the Akamai v2 backend
+
+# Requirements:
+# An active Akamai account / contract will be requied to use this DevStack
+# plugin.
+
+# Enable with:
+# DESIGNATE_BACKEND_DRIVER=akamai_v2
+
+# Dependencies:
+# ``functions`` file
+# ``designate`` configuration
+
+# install_designate_backend - install any external requirements
+# configure_designate_backend - make configuration changes, including those to other services
+# init_designate_backend - initialize databases, etc.
+# start_designate_backend - start any external services
+# stop_designate_backend - stop any external services
+# cleanup_designate_backend - remove transient data and cache
+
+# Save trace setting
+DP_AKAMAI_XTRACE=$(set +o | grep xtrace)
+set +o xtrace
+
+# Defaults
+# --------
+
+# DESIGNATE_HOST is IP address of the one of AKAMAI_NAMESERVERS
+DESIGNATE_HOST=${DESIGNATE_HOST:-"193.108.91.197"}
+DESIGNATE_AKAMAI_CLIENT_SECRET=${DESIGNATE_AKAMAI_CLIENT_SECRET:-"client_secret_string"}
+DESIGNATE_AKAMAI_HOST=${DESIGNATE_AKAMAI_HOST:-"akamai_host_string"}
+DESIGNATE_AKAMAI_ACCESS_TOKEN=${DESIGNATE_AKAMAI_ACCESS_TOKEN:-"access_token_string"}
+DESIGNATE_AKAMAI_CLIENT_TOKEN=${DESIGNATE_AKAMAI_CLIENT_TOKEN:-"client_token_string"}
+DESIGNATE_AKAMAI_CONTRACT_ID=${DESIGNATE_AKAMAI_CONTRACT_ID:-"contract_id"}
+DESIGNATE_AKAMAI_GID=${DESIGNATE_AKAMAI_GID:-"group_id"}
+DESIGNATE_AKAMAI_MASTERS=${DESIGNATE_AKAMAI_MASTERS:-"$DESIGNATE_SERVICE_HOST:$DESIGNATE_SERVICE_PORT_MDNS"}
+DESIGNATE_AKAMAI_NAMESERVERS=${DESIGNATE_AKAMAI_NAMESERVERS:-""}
+DESIGNATE_AKAMAI_ALSO_NOTIFIES=${DESIGNATE_AKAMAI_ALSO_NOTIFIES:-"23.14.128.185,23.207.197.166,23.205.121.134,104.122.95.88,72.247.124.98"}
+
+# Sanity Checks
+# -------------
+if [ -z "$DESIGNATE_AKAMAI_NAMESERVERS" ]; then
+ die $LINENO "You must configure DESIGNATE_AKAMAI_NAMESERVERS"
+fi
+
+if [ "$DESIGNATE_SERVICE_PORT_MDNS" != "53" ]; then
+ die $LINENO "Akamai requires DESIGNATE_SERVICE_PORT_MDNS is set to '53'"
+fi
+
+# Entry Points
+# ------------
+
+# install_designate_backend - install any external requirements
+function install_designate_backend {
+ :
+}
+
+# configure_designate_backend - make configuration changes, including those to other services
+function configure_designate_backend {
+ # Generate Designate pool.yaml file
+ sudo tee $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+---
+- name: default
+ description: DevStack Akamai Pool
+ attributes: {}
+
+ targets:
+ - type: akamai
+ description: Akamai API
+ options:
+ host: $DESIGNATE_HOST
+ port: 53
+ akamai_client_secret: $DESIGNATE_AKAMAI_CLIENT_SECRET
+ akamai_host: $DESIGNATE_AKAMAI_HOST
+ akamai_access_token: $DESIGNATE_AKAMAI_ACCESS_TOKEN
+ akamai_client_token: $DESIGNATE_AKAMAI_CLIENT_TOKEN
+ akamai_contract_id: $DESIGNATE_AKAMAI_CONTRACT_ID
+ akamai_gid: $DESIGNATE_AKAMAI_GID
+
+ # NOTE: TSIG key has to be set manully if it's necessary
+ #tsig_key_name: key_test
+ #tsig_key_algorithm: hmac-sha512
+ #tsig_key_secret: test_ley_secret
+
+
+ masters:
+EOF
+
+ # Create a Pool Master for each of the Akamai Masters
+ IFS=',' read -a masters <<< "$DESIGNATE_AKAMAI_MASTERS"
+
+ for master in "${masters[@]}"; do
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ - host: $master
+ port: 53
+EOF
+ done
+
+ # Create a Pool NS Record for each of the Akamai Nameservers
+ IFS=',' read -a nameservers <<< "$DESIGNATE_AKAMAI_NAMESERVERS"
+
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ ns_records:
+EOF
+
+ for nameserver in "${nameservers[@]}"; do
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ - hostname: $nameserver
+ priority: 1
+EOF
+ done
+
+ # Create a Pool Nameserver for each of the Akamai Nameservers
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ nameservers:
+EOF
+
+ for nameserver in "${nameservers[@]}"; do
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ - host: `dig +short A $nameserver | head -n 1`
+ port: 53
+EOF
+ done
+
+ # Create a Pool Also Notifies for each of the Akamai Also Notifies
+ IFS=',' read -a also_notifies <<< "$DESIGNATE_AKAMAI_ALSO_NOTIFIES"
+
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ also_notifies:
+EOF
+
+ for also_notify in "${also_notifies[@]}"; do
+ sudo tee -a $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
+ - host: $also_notify
+ port: 53
+EOF
+ done
+}
+
+# init_designate_backend - initialize databases, etc.
+function init_designate_backend {
+ :
+}
+
+# start_designate_backend - start any external services
+function start_designate_backend {
+ :
+}
+
+# stop_designate_backend - stop any external services
+function stop_designate_backend {
+ :
+}
+
+# cleanup_designate_backend - remove transient data and cache
+function cleanup_designate_backend {
+ :
+}
+
+# Restore xtrace
+$DP_AKAMAI_XTRACE