Merge "Add Akamai EDNS Backend"
This commit is contained in:
commit
4356e49113
|
@ -33,8 +33,9 @@ source $TOP_DIR/exerciserc
|
||||||
# Skip if designate is not enabled
|
# Skip if designate is not enabled
|
||||||
is_service_enabled designate || exit 55
|
is_service_enabled designate || exit 55
|
||||||
|
|
||||||
# Skip if the DynECT backend is in use
|
# Skip if the DynECT or Akamai backend is in use
|
||||||
[ "$DESIGNATE_BACKEND_DRIVER" != "dynect" ] || exit 55
|
[ "$DESIGNATE_BACKEND_DRIVER" != "dynect" ] || exit 55
|
||||||
|
[ "$DESIGNATE_BACKEND_DRIVER" != "akamai" ] || exit 55
|
||||||
|
|
||||||
# Import designate library
|
# Import designate library
|
||||||
source $TOP_DIR/lib/designate
|
source $TOP_DIR/lib/designate
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
# lib/designate_plugins/backend-akamai
|
||||||
|
# Configure the Akamai backend
|
||||||
|
|
||||||
|
# Requirements:
|
||||||
|
# An active Akamai account / contract will be requied to use this DevStack
|
||||||
|
# plugin.
|
||||||
|
|
||||||
|
# Enable with:
|
||||||
|
# DESIGNATE_BACKEND_DRIVER=akamai
|
||||||
|
|
||||||
|
# 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_AKAMAI_USERNAME=${DESIGNATE_AKAMAI_USERNAME:-username}
|
||||||
|
DESIGNATE_AKAMAI_PASSWORD=${DESIGNATE_AKAMAI_PASSWORD:-password}
|
||||||
|
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:-"193.108.155.34:53,23.73.134.141:53,80.67.64.148:53,23.73.134.237:53,23.73.133.141:53,23.73.133.237:53,80.67.64.10:53,72.246.0.10:53,72.247.45.157:53,72.246.192.168:53,193.108.152.143:53,60.254.128.45:53,72.247.45.110:53,72.247.45.65:53,72.247.45.25:53"}
|
||||||
|
|
||||||
|
# Sanity Checks
|
||||||
|
# -------------
|
||||||
|
if [ -z "$DESIGNATE_AKAMAI_NAMESERVERS" ]; then
|
||||||
|
die $LINENO "You must configure DESIGNATE_AKAMAI_NAMESERVERS"
|
||||||
|
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 {
|
||||||
|
iniset $DESIGNATE_CONF pool_target:$DESIGNATE_TARGET_ID type akamai
|
||||||
|
iniset $DESIGNATE_CONF pool_target:$DESIGNATE_TARGET_ID masters $DESIGNATE_AKAMAI_MASTERS
|
||||||
|
iniset $DESIGNATE_CONF pool_target:$DESIGNATE_TARGET_ID options "username: $DESIGNATE_AKAMAI_USERNAME, password: $DESIGNATE_AKAMAI_PASSWORD"
|
||||||
|
|
||||||
|
# Create a Pool Nameserver for each of the Akamai nameservers
|
||||||
|
local nameserver_ids=""
|
||||||
|
IFS=',' read -a nameservers <<< "$DESIGNATE_AKAMAI_NAMESERVERS"
|
||||||
|
|
||||||
|
for nameserver in "${nameservers[@]}"; do
|
||||||
|
local nameserver_id=`uuidgen`
|
||||||
|
iniset $DESIGNATE_CONF pool_nameserver:$nameserver_id host $(dig +short A $nameserver | head -n 1)
|
||||||
|
iniset $DESIGNATE_CONF pool_nameserver:$nameserver_id port 53
|
||||||
|
|
||||||
|
# Append the Nameserver ID to the list
|
||||||
|
nameserver_ids+=${nameserver_id},
|
||||||
|
done
|
||||||
|
|
||||||
|
# Configure the Pool for the set of nameserver IDs, minus the trailing comma
|
||||||
|
iniset $DESIGNATE_CONF pool:$DESIGNATE_POOL_ID nameservers "${nameserver_ids:0:-1}"
|
||||||
|
|
||||||
|
# Configure the Pool to Notify Akamai's Transfer Agents
|
||||||
|
iniset $DESIGNATE_CONF pool:$DESIGNATE_POOL_ID also_notifies "$DESIGNATE_AKAMAI_ALSO_NOTIFIES"
|
||||||
|
}
|
||||||
|
|
||||||
|
# create_designate_ns_records - Create Pool NS Records
|
||||||
|
function create_designate_ns_records_backend {
|
||||||
|
# Build an array of the Akamai nameservers.
|
||||||
|
IFS=',' read -a ns_records <<< "$DESIGNATE_AKAMAI_NAMESERVERS"
|
||||||
|
|
||||||
|
# Create a NS Record for each of the Akamai nameservers
|
||||||
|
for ns_record in "${ns_records[@]}"; do
|
||||||
|
designate server-create --name "${ns_record%%.}."
|
||||||
|
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
|
|
@ -50,6 +50,12 @@ ENABLED_SERVICES+=,designate,designate-central,designate-api,designate-pool-mana
|
||||||
#DESIGNATE_DYNECT_NAMESERVERS=ns1.p13.dynect.net,ns2.p13.dynect.net,ns3.p13.dynect.net,ns4.p13.dynect.net
|
#DESIGNATE_DYNECT_NAMESERVERS=ns1.p13.dynect.net,ns2.p13.dynect.net,ns3.p13.dynect.net,ns4.p13.dynect.net
|
||||||
#DESIGNATE_DYNECT_MASTERS=
|
#DESIGNATE_DYNECT_MASTERS=
|
||||||
|
|
||||||
|
# Akamai Backend
|
||||||
|
#DESIGNATE_AKAMAI_USERNAME=
|
||||||
|
#DESIGNATE_AKAMAI_PASSWORD=
|
||||||
|
#DESIGNATE_AKAMAI_NAMESERVERS=a5-64.akam.net,a11-65.akam.net,a13-66.akam.net,a14-64.akam.net,a20-65.akam.net,a22-66.akam.net
|
||||||
|
#DESIGNATE_AKAMAI_MASTERS=
|
||||||
|
|
||||||
# Other Devstack Config
|
# Other Devstack Config
|
||||||
# =====================
|
# =====================
|
||||||
# Optional TLS Proxy
|
# Optional TLS Proxy
|
||||||
|
|
|
@ -0,0 +1,224 @@
|
||||||
|
# Copyright 2012-2015 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# Author: Kiall Mac Innes <kiall@hp.com>
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
import os
|
||||||
|
|
||||||
|
from oslo_log import log as logging
|
||||||
|
from oslo_config import cfg
|
||||||
|
from suds.client import Client as SudsClient
|
||||||
|
from suds.transport.https import HttpAuthenticated
|
||||||
|
|
||||||
|
from designate import exceptions
|
||||||
|
from designate import utils
|
||||||
|
from designate.backend import base
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
WSDL = os.path.join(os.path.dirname(__file__),
|
||||||
|
'..',
|
||||||
|
'resources',
|
||||||
|
'wsdl',
|
||||||
|
'EnhancedDNS.xml')
|
||||||
|
|
||||||
|
|
||||||
|
class EnhancedDNSException(exceptions.Backend):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class DelegationExists(exceptions.BadRequest, EnhancedDNSException):
|
||||||
|
"""
|
||||||
|
Raised when an attempt to delete a zone which is still delegated to Akamai
|
||||||
|
is made
|
||||||
|
"""
|
||||||
|
error_type = 'delegation_exists'
|
||||||
|
|
||||||
|
|
||||||
|
class DuplicateDomain(exceptions.DuplicateDomain, EnhancedDNSException):
|
||||||
|
"""
|
||||||
|
Raised when an attempt to create a zone which is registered to another
|
||||||
|
Akamai account is made
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Forbidden(exceptions.Forbidden, EnhancedDNSException):
|
||||||
|
"""
|
||||||
|
Raised when an attempt to modify a zone which is registered to another
|
||||||
|
Akamai account is made.
|
||||||
|
|
||||||
|
This appears to be returned when creating a new subdomain of domain which
|
||||||
|
already exists in another Akamai account.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EnhancedDNSHttpAuthenticated(HttpAuthenticated):
|
||||||
|
def addenhanceddnsheaders(self, request):
|
||||||
|
request.headers['Pragma'] = ('akamai-x-get-request-id, '
|
||||||
|
'akamai-x-cache-on, '
|
||||||
|
'akamai-x-cache-remote-on, '
|
||||||
|
'akamai-x-get-cache-key')
|
||||||
|
|
||||||
|
def logenhanceddnsheaders(self, response):
|
||||||
|
request_id = response.headers.get('x-akamai-request-id', '-')
|
||||||
|
cache = response.headers.get('x-cache', '-')
|
||||||
|
cache_key = response.headers.get('x-cache-key', '-')
|
||||||
|
cache_remote = response.headers.get('x-cache-remote', '-')
|
||||||
|
|
||||||
|
LOG.debug('Akamai Request-ID: %s, Cache-Key: %s, Cache: %s, '
|
||||||
|
'Cache-Remote: %s', request_id, cache_key, cache,
|
||||||
|
cache_remote)
|
||||||
|
|
||||||
|
def send(self, request):
|
||||||
|
self.addenhanceddnsheaders(request)
|
||||||
|
|
||||||
|
response = HttpAuthenticated.send(self, request)
|
||||||
|
|
||||||
|
self.logenhanceddnsheaders(response)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
class EnhancedDNSClient(object):
|
||||||
|
"""EnhancedDNS SOAP API Client"""
|
||||||
|
|
||||||
|
def __init__(self, username, password):
|
||||||
|
# Prepare a SUDS transport with the approperiate credentials
|
||||||
|
transport = EnhancedDNSHttpAuthenticated(
|
||||||
|
username=username,
|
||||||
|
password=password,
|
||||||
|
proxy=utils.get_proxies())
|
||||||
|
|
||||||
|
# Prepare a SUDS client
|
||||||
|
self.client = SudsClient(CONF['backend:akamai'].enhanceddns_wsdl,
|
||||||
|
transport=transport)
|
||||||
|
|
||||||
|
def buildZone(self, zoneName, masters, endCustomerId, tsigKeyName=None,
|
||||||
|
tsigKey=None, tsigAlgorithm=None):
|
||||||
|
zone = self.client.factory.create('ns3:Zone')
|
||||||
|
|
||||||
|
# Set some defaults
|
||||||
|
zone.transferMode = "axfr"
|
||||||
|
zone.type = "edns"
|
||||||
|
zone.notify = 1
|
||||||
|
zone.dnssec = False
|
||||||
|
|
||||||
|
# Set the remaining options
|
||||||
|
zone.zoneName = self._sanitizeZoneName(zoneName)
|
||||||
|
zone.masters = masters
|
||||||
|
zone.tsigKeyName = tsigKeyName
|
||||||
|
zone.tsigKey = tsigKey
|
||||||
|
zone.tsigAlgorithm = tsigAlgorithm
|
||||||
|
zone.endCustomerId = endCustomerId
|
||||||
|
|
||||||
|
return zone
|
||||||
|
|
||||||
|
def setZone(self, zone):
|
||||||
|
LOG.debug("Performing setZone with zoneName: %s", zone.zoneName)
|
||||||
|
try:
|
||||||
|
self.client.service.setZone(zone=zone)
|
||||||
|
except Exception as e:
|
||||||
|
if 'You do not have permission to view this zone' in str(e):
|
||||||
|
raise DuplicateDomain()
|
||||||
|
elif 'You do not have access to edit this zone' in str(e):
|
||||||
|
raise Forbidden()
|
||||||
|
else:
|
||||||
|
raise EnhancedDNSException('Akamai Communication Failure: %s'
|
||||||
|
% e)
|
||||||
|
|
||||||
|
def deleteZone(self, zoneName):
|
||||||
|
LOG.debug("Performing deleteZone with zoneName: %s", zoneName)
|
||||||
|
zoneName = self._sanitizeZoneName(zoneName)
|
||||||
|
|
||||||
|
self.deleteZones(zoneNames=[zoneName])
|
||||||
|
|
||||||
|
def deleteZones(self, zoneNames):
|
||||||
|
LOG.debug("Performing deleteZones with zoneNames: %r", zoneNames)
|
||||||
|
zoneNames = [self._sanitizeZoneName(zN) for zN in zoneNames]
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.client.service.deleteZones(zoneNames=zoneNames)
|
||||||
|
except Exception as e:
|
||||||
|
if 'Could not retrive object ID for zone' in str(e):
|
||||||
|
# The zone has already been purged, ignore and move on
|
||||||
|
pass
|
||||||
|
elif 'The following zones are still delegated to Akamai' in str(e):
|
||||||
|
raise DelegationExists()
|
||||||
|
else:
|
||||||
|
raise EnhancedDNSException('Akamai Communication Failure: %s'
|
||||||
|
% e)
|
||||||
|
|
||||||
|
def _sanitizeZoneName(self, zoneName):
|
||||||
|
return zoneName.rstrip('.').lower()
|
||||||
|
|
||||||
|
|
||||||
|
class AkamaiBackend(base.Backend):
|
||||||
|
__plugin_name__ = 'akamai'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_cfg_opts(cls):
|
||||||
|
group = cfg.OptGroup(
|
||||||
|
name='backend:akamai', title='Backend options for Akamai'
|
||||||
|
)
|
||||||
|
|
||||||
|
opts = [
|
||||||
|
cfg.StrOpt('enhanceddns_wsdl',
|
||||||
|
default='file://%s' % WSDL,
|
||||||
|
help='Akamai EnhancedDNS WSDL URL'),
|
||||||
|
]
|
||||||
|
|
||||||
|
return [(group, opts)]
|
||||||
|
|
||||||
|
def __init__(self, target):
|
||||||
|
super(AkamaiBackend, self).__init__(target)
|
||||||
|
|
||||||
|
self.username = self.options.get('username')
|
||||||
|
self.password = self.options.get('password')
|
||||||
|
|
||||||
|
self.tsig_key_name = self.options.get('tsig_key_name', None)
|
||||||
|
self.tsig_key_algorithm = self.options.get('tsig_key_algorithm', None)
|
||||||
|
self.tsig_key_secret = self.options.get('tsig_key_secret', None)
|
||||||
|
|
||||||
|
self.client = EnhancedDNSClient(self.username, self.password)
|
||||||
|
|
||||||
|
def _build_zone(self, domain):
|
||||||
|
masters = ["%(host)s:%(port)d" % m for m in self.masters]
|
||||||
|
|
||||||
|
if self.tsig_key_name is not None:
|
||||||
|
return self.client.buildZone(
|
||||||
|
domain.name,
|
||||||
|
masters,
|
||||||
|
domain.id,
|
||||||
|
self.tsig_key_name,
|
||||||
|
self.tsig_key_secret,
|
||||||
|
self.tsig_key_algorithm)
|
||||||
|
|
||||||
|
else:
|
||||||
|
return self.client.buildZone(
|
||||||
|
domain.name,
|
||||||
|
masters,
|
||||||
|
domain.id)
|
||||||
|
|
||||||
|
def create_domain(self, context, domain):
|
||||||
|
"""Create a DNS domain"""
|
||||||
|
zone = self._build_zone(domain)
|
||||||
|
|
||||||
|
self.client.setZone(zone=zone)
|
||||||
|
|
||||||
|
def delete_domain(self, context, domain):
|
||||||
|
"""Delete a DNS domain"""
|
||||||
|
self.client.deleteZone(zoneName=domain['name'])
|
|
@ -0,0 +1,238 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:akaawsdt="https://control.akamai.com/AWS.xsd" xmlns:akaedns="https://control.akamai.com/2007/May/EnhancedDNS.xsd" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:zoneinfo="https://control.akamai.com/Edns.xsd" targetNamespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd">
|
||||||
|
<!--WSDL created by Apache Axis version: 1.3
|
||||||
|
Built on Jan 26, 2006 (05:12:02 PST)-->
|
||||||
|
<wsdl:types>
|
||||||
|
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd">
|
||||||
|
<import namespace="https://control.akamai.com/AWS.xsd" />
|
||||||
|
<import namespace="https://control.akamai.com/Edns.xsd" />
|
||||||
|
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
<complexType name="ArrayOfString">
|
||||||
|
<complexContent>
|
||||||
|
<restriction base="soapenc:Array">
|
||||||
|
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]" />
|
||||||
|
</restriction>
|
||||||
|
</complexContent>
|
||||||
|
</complexType>
|
||||||
|
<complexType name="ArrayOfZone">
|
||||||
|
<complexContent>
|
||||||
|
<restriction base="soapenc:Array">
|
||||||
|
<attribute ref="soapenc:arrayType" wsdl:arrayType="zoneinfo:Zone[]" />
|
||||||
|
</restriction>
|
||||||
|
</complexContent>
|
||||||
|
</complexType>
|
||||||
|
</schema>
|
||||||
|
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://control.akamai.com/Edns.xsd">
|
||||||
|
<import namespace="https://control.akamai.com/AWS.xsd" />
|
||||||
|
<import namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" />
|
||||||
|
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
<complexType name="Zone">
|
||||||
|
<sequence>
|
||||||
|
<element name="currentDNSKEYRecord" nillable="true" type="xsd:string" />
|
||||||
|
<element name="currentDSRecord" nillable="true" type="xsd:string" />
|
||||||
|
<element name="currentKeyDate" nillable="true" type="xsd:dateTime" />
|
||||||
|
<element name="deletePending" type="xsd:boolean" />
|
||||||
|
<element name="deleteRequested" nillable="true" type="xsd:dateTime" />
|
||||||
|
<element name="dnssec" type="xsd:boolean" />
|
||||||
|
<element name="endCustomerId" nillable="true" type="xsd:string" />
|
||||||
|
<element name="lastAttempt" nillable="true" type="xsd:dateTime" />
|
||||||
|
<element name="lastModifiedDate" nillable="true" type="xsd:dateTime" />
|
||||||
|
<element name="lastStatus" nillable="true" type="xsd:string" />
|
||||||
|
<element name="lastSuccess" nillable="true" type="xsd:dateTime" />
|
||||||
|
<element name="masters" nillable="true" type="akaedns:ArrayOfString" />
|
||||||
|
<element name="newDNSKEYRecord" nillable="true" type="xsd:string" />
|
||||||
|
<element name="newDSRecord" nillable="true" type="xsd:string" />
|
||||||
|
<element name="newKeyDate" nillable="true" type="xsd:dateTime" />
|
||||||
|
<element name="notify" type="xsd:int" />
|
||||||
|
<element name="toplevels" nillable="true" type="akaedns:ArrayOfString" />
|
||||||
|
<element name="transferMode" nillable="true" type="xsd:string" />
|
||||||
|
<element name="tsigAlgorithm" nillable="true" type="xsd:string" />
|
||||||
|
<element name="tsigKey" nillable="true" type="xsd:string" />
|
||||||
|
<element name="tsigKeyName" nillable="true" type="xsd:string" />
|
||||||
|
<element name="type" nillable="true" type="xsd:string" />
|
||||||
|
<element name="zoneName" nillable="true" type="xsd:string" />
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
</schema>
|
||||||
|
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://control.akamai.com/AWS.xsd">
|
||||||
|
<import namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" />
|
||||||
|
<import namespace="https://control.akamai.com/Edns.xsd" />
|
||||||
|
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
|
||||||
|
<complexType name="AWSFault">
|
||||||
|
<sequence />
|
||||||
|
</complexType>
|
||||||
|
</schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="reassignTopLevelsResponse">
|
||||||
|
<wsdl:part name="reassignTopLevelsReturn" type="xsd:boolean" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="setZonesRequest">
|
||||||
|
<wsdl:part name="zones" type="akaedns:ArrayOfZone" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getZoneResponse">
|
||||||
|
<wsdl:part name="getZoneReturn" type="zoneinfo:Zone" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="cancelDeleteZonesResponse">
|
||||||
|
<wsdl:part name="cancelDeleteZonesReturn" type="xsd:boolean" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="deleteZonesResponse">
|
||||||
|
<wsdl:part name="deleteZonesReturn" type="xsd:boolean" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getZonesRequest" />
|
||||||
|
<wsdl:message name="AWSFault">
|
||||||
|
<wsdl:part name="fault" type="akaawsdt:AWSFault" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="setZoneResponse">
|
||||||
|
<wsdl:part name="setZoneReturn" type="xsd:boolean" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="reassignTopLevelsRequest">
|
||||||
|
<wsdl:part name="zones" type="akaedns:ArrayOfZone" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getZoneRequest">
|
||||||
|
<wsdl:part name="zoneName" type="xsd:string" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="setZonesResponse">
|
||||||
|
<wsdl:part name="setZonesReturn" type="xsd:boolean" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="cancelDeleteZonesRequest">
|
||||||
|
<wsdl:part name="zoneNames" type="akaedns:ArrayOfString" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="deleteZonesRequest">
|
||||||
|
<wsdl:part name="zoneNames" type="akaedns:ArrayOfString" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="getZonesResponse">
|
||||||
|
<wsdl:part name="getZonesReturn" type="akaedns:ArrayOfZone" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="setZoneRequest">
|
||||||
|
<wsdl:part name="zone" type="zoneinfo:Zone" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="EDNSService">
|
||||||
|
<wsdl:operation name="getZone" parameterOrder="zoneName">
|
||||||
|
<wsdl:input message="akaedns:getZoneRequest" name="getZoneRequest" />
|
||||||
|
<wsdl:output message="akaedns:getZoneResponse" name="getZoneResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="setZone" parameterOrder="zone">
|
||||||
|
<wsdl:input message="akaedns:setZoneRequest" name="setZoneRequest" />
|
||||||
|
<wsdl:output message="akaedns:setZoneResponse" name="setZoneResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="getZones">
|
||||||
|
<wsdl:input message="akaedns:getZonesRequest" name="getZonesRequest" />
|
||||||
|
<wsdl:output message="akaedns:getZonesResponse" name="getZonesResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="setZones" parameterOrder="zones">
|
||||||
|
<wsdl:input message="akaedns:setZonesRequest" name="setZonesRequest" />
|
||||||
|
<wsdl:output message="akaedns:setZonesResponse" name="setZonesResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="reassignTopLevels" parameterOrder="zones">
|
||||||
|
<wsdl:input message="akaedns:reassignTopLevelsRequest" name="reassignTopLevelsRequest" />
|
||||||
|
<wsdl:output message="akaedns:reassignTopLevelsResponse" name="reassignTopLevelsResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="deleteZones" parameterOrder="zoneNames">
|
||||||
|
<wsdl:input message="akaedns:deleteZonesRequest" name="deleteZonesRequest" />
|
||||||
|
<wsdl:output message="akaedns:deleteZonesResponse" name="deleteZonesResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="cancelDeleteZones" parameterOrder="zoneNames">
|
||||||
|
<wsdl:input message="akaedns:cancelDeleteZonesRequest" name="cancelDeleteZonesRequest" />
|
||||||
|
<wsdl:output message="akaedns:cancelDeleteZonesResponse" name="cancelDeleteZonesResponse" />
|
||||||
|
<wsdl:fault message="akaedns:AWSFault" name="AWSFault" />
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="EnhancedDNS" type="akaedns:EDNSService">
|
||||||
|
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
|
||||||
|
<wsdl:operation name="getZone">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="getZoneRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="getZoneResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="setZone">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="setZoneRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="setZoneResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="getZones">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="getZonesRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="getZonesResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="setZones">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="setZonesRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="setZonesResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="reassignTopLevels">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="reassignTopLevelsRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="reassignTopLevelsResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="deleteZones">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="deleteZonesRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="deleteZonesResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="cancelDeleteZones">
|
||||||
|
<wsdlsoap:operation soapAction="" />
|
||||||
|
<wsdl:input name="cancelDeleteZonesRequest">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="cancelDeleteZonesResponse">
|
||||||
|
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="AWSFault">
|
||||||
|
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AWSFault" namespace="https://control.akamai.com/2007/May/EnhancedDNS.xsd" use="encoded" />
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:service name="EnhancedDNS">
|
||||||
|
<wsdl:port binding="akaedns:EnhancedDNS" name="EnhancedDNS">
|
||||||
|
<wsdlsoap:address location="https://control.akamai.com/webservices/services/EnhancedDNS" />
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
|
@ -81,6 +81,7 @@ designate.backend =
|
||||||
bind9 = designate.backend.impl_bind9:Bind9Backend
|
bind9 = designate.backend.impl_bind9:Bind9Backend
|
||||||
powerdns = designate.backend.impl_powerdns:PowerDNSBackend
|
powerdns = designate.backend.impl_powerdns:PowerDNSBackend
|
||||||
dynect = designate.backend.impl_dynect:DynECTBackend
|
dynect = designate.backend.impl_dynect:DynECTBackend
|
||||||
|
akamai = designate.backend.impl_akamai:AkamaiBackend
|
||||||
fake = designate.backend.impl_fake:FakeBackend
|
fake = designate.backend.impl_fake:FakeBackend
|
||||||
|
|
||||||
designate.backend.agent_backend =
|
designate.backend.agent_backend =
|
||||||
|
|
Loading…
Reference in New Issue