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
|
||||
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" != "akamai" ] || exit 55
|
||||
|
||||
# Import designate library
|
||||
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_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
|
||||
# =====================
|
||||
# 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
|
||||
powerdns = designate.backend.impl_powerdns:PowerDNSBackend
|
||||
dynect = designate.backend.impl_dynect:DynECTBackend
|
||||
akamai = designate.backend.impl_akamai:AkamaiBackend
|
||||
fake = designate.backend.impl_fake:FakeBackend
|
||||
|
||||
designate.backend.agent_backend =
|
||||
|
|
Loading…
Reference in New Issue