本文整理汇总了Python中dynect.DynectDNS.DynectRest类的典型用法代码示例。如果您正苦于以下问题:Python DynectRest类的具体用法?Python DynectRest怎么用?Python DynectRest使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DynectRest类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: point_dns_to_stack
def point_dns_to_stack(environment, stack_type, name):
import sys
from dynect.DynectDNS import DynectRest # sudo pip install https://github.com/dyninc/Dynect-API-Python-Library/zipball/master
rest_iface = DynectRest()
if 'AWS_CONFIG_DIR' in os.environ:
user_data_filename = os.path.join(os.environ['AWS_CONFIG_DIR'], 'dynect.json')
else:
user_data_filename = 'config/dynect.json'
with open(user_data_filename, 'r') as f:
dynect_credentials = json.load(f)
# Log in
response = rest_iface.execute('/Session/', 'POST', dynect_credentials)
if response['status'] != 'success':
sys.exit("Incorrect credentials")
# Perform action
response = rest_iface.execute('/CNAMERecord/anosrep.org/www.anosrep.org/', 'GET')
# Log out, to be polite
rest_iface.execute('/Session/', 'DELETE')
示例2: setUp
def setUp(self):
self.customer_name = os.environ.get('TEST_DYNDNS_CUSTOMER_NAME')
self.user_name = os.environ.get('TEST_DYNDNS_USER_NAME')
self.password = os.environ.get('TEST_DYNDNS_PASSWORD')
self.zone = os.environ.get('TEST_DYNDNS_ZONE')
if not all((self.customer_name, self.user_name, self.password, self.zone)):
raise SkipTest('Please set env variables TEST_DYNDNS_CUSTOMER_NAME, TEST_DYNDNS_USER_NAME, TEST_DYNDNS_PASSWORD and TEST_DYNDNS_ZONE.')
arguments = {
'customer_name': self.customer_name,
'user_name': self.user_name,
'password': self.password,
}
self.rest_iface = DynectRest()
self.rest_iface.execute('/Session/', 'POST', arguments)
self.rest_iface.execute('/Node/%s/root.%s/' % (self.zone, self.zone), 'DELETE')
self.rest_iface.execute('/Node/%s/cname1.%s/' % (self.zone, self.zone), 'DELETE')
self.rest_iface.execute('/Node/%s/cname2.%s/' % (self.zone, self.zone), 'DELETE')
self.rest_iface.execute('/ARecord/%s/root.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'address': '127.0.0.1'}, 'ttl': 10})
self.rest_iface.execute('/ARecord/%s/root.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'address': '127.0.0.2'}, 'ttl': 10})
self.rest_iface.execute('/ARecord/%s/root.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'address': '127.0.0.3'}, 'ttl': 10})
self.rest_iface.execute('/ARecord/%s/root.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'address': '127.0.0.4'}, 'ttl': 10})
self.rest_iface.execute('/AAAARecord/%s/root.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'address': '::1'}, 'ttl': 10})
self.rest_iface.execute('/AAAARecord/%s/root.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'address': '::2'}, 'ttl': 10})
self.rest_iface.execute('/CNAMERecord/%s/cname1.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'cname': 'root.%s.' % self.zone}, 'ttl': 10})
self.rest_iface.execute('/CNAMERecord/%s/cname2.%s/' % (self.zone, self.zone), 'POST', {'rdata': {'cname': 'cname1.%s.' % self.zone}, 'ttl': 10})
self.rest_iface.execute('/Zone/%s/' % self.zone, 'PUT', {'publish': 'true'})
示例3: queryDynect
def queryDynect(self):
LOG.info('Query DynECT to get the state of GSLBs')
try:
rest_iface = DynectRest()
if CONF.debug and CONF.use_stderr:
rest_iface.verbose = True
# login
credentials = {
'customer_name': CONF.dynect_customer,
'user_name': CONF.dynect_username,
'password': CONF.dynect_password,
}
LOG.debug('credentials = %s', credentials)
response = rest_iface.execute('/Session/', 'POST', credentials)
if response['status'] != 'success':
LOG.error('Failed to create API session: %s', response['msgs'][0]['INFO'])
self.updating = False
return
# Discover all the Zones in DynECT
response = rest_iface.execute('/Zone/', 'GET')
LOG.debug('/Zone/ => %s', json.dumps(response, indent=4))
zone_resources = response['data']
# Discover all the LoadBalancers
for resource in zone_resources:
zone = resource.split('/')[3] # eg. /REST/Zone/guardiannews.com/
response = rest_iface.execute('/LoadBalance/' + zone + '/', 'GET')
LOG.debug('/LoadBalance/%s/ => %s', zone, json.dumps(response, indent=4))
gslb = response['data']
# Discover LoadBalancer pool information.
for lb in gslb:
fqdn = lb.split('/')[4] # eg. /REST/LoadBalance/guardiannews.com/id.guardiannews.com/
response = rest_iface.execute('/LoadBalance/' + zone + '/' + fqdn + '/', 'GET')
LOG.debug('/LoadBalance/%s/%s/ => %s', zone, fqdn, json.dumps(response, indent=4))
status = response['data']['status']
monitor = response['data']['monitor']
self.info['gslb-' + fqdn] = {'status': status, 'gslb': fqdn, 'rawData': monitor}
for pool in response['data']['pool']:
name = '%s-%s' % (fqdn, pool['label'].replace(' ', '-'))
status = '%s:%s:%s' % (pool['status'], pool['serve_mode'], pool['weight'])
self.info['pool-' + name] = {'status': status, 'gslb': fqdn, 'rawData': pool}
LOG.info('Finished object discovery query.')
LOG.debug('GSLBs and Pools: %s', json.dumps(self.info, indent=4))
# logout
rest_iface.execute('/Session/', 'DELETE')
except Exception, e:
LOG.error('Failed to discover GSLBs: %s', e)
self.updating = False
示例4: update_dynect
def update_dynect(rules, ip, customername, username, password, recover = False):
"""
Check id there needs to be updates made and if so call update record for each one
"""
if ip in rules:
dynect = DynectRest()
login(customername, username, password, dynect)
try:
for match in rules[ip]:
if recover:
if update_record(match["zone"], match["fqdn"], match["secondary"], ip, dynect):
print match["fqdn"] + " has recoverd to IP address " + ip
else:
if update_record(match["zone"], match["fqdn"], ip, match["secondary"], dynect):
print match["fqdn"] + " has failed over to IP address " + match["secondary"]
except Exception:
print Exception
traceback.print_exc()
rules = {}
finally:
# Log out, to be polite
dynect.execute('/Session/', 'DELETE')
示例5: queryDynect
def queryDynect():
global info
logging.info('Quering DynECT to get the state of GSLBs')
# Creating DynECT API session
try:
rest_iface = DynectRest()
response = rest_iface.execute('/Session/', 'POST', config)
if response['status'] != 'success':
logging.error('Incorrect credentials')
sys.exit(1)
# Discover all the Zones in DynECT
response = rest_iface.execute('/Zone/', 'GET')
zone_resources = response['data']
# Discover all the LoadBalancers
for item in zone_resources:
zone = item.split('/')[3]
response = rest_iface.execute('/LoadBalance/'+zone+'/', 'GET')
gslb = response['data']
# Discover LoadBalancer pool information.
for lb in gslb:
fqdn = lb.split('/')[4]
response = rest_iface.execute('/LoadBalance/'+zone+'/'+fqdn+'/', 'GET')
info['gslb-'+fqdn] = response['data']['status'], 'gslb-'+fqdn
for i in response['data']['pool']:
name = '%s-%s' % (fqdn, i['label'].replace(' ','-'))
state = '%s:%s:%s' % (i['status'], i['serve_mode'], i['weight'])
parent = 'gslb-'+fqdn
info['pool-'+name] = state, parent
logging.info('Finish quering and object discovery.')
logging.info('GSLBs and Pools: %s', json.dumps(info))
rest_iface.execute('/Session/', 'DELETE')
except Exception, e:
logging.error('Failed to discover GSLBs: %s', e)
pass
示例6: DynectRest
import sys
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
rest_iface = DynectRest()
# Log in
print "Logging in to API"
arguments = {
'customer_name': 'ciscocloud',
'user_name': 'UserName',
'password': 'UserAPIKey',
}
# ciscocloud UserName Cisco!gs1b
response = rest_iface.execute('/Session/', 'POST', arguments)
if response['status'] != 'success':
sys.exit("Incorrect credentials")
# Perform action
print "Get Zone as authentication succeded"
response = rest_iface.execute('/Zone/', 'GET')
if response['status'] != 'sucess':
pretty = PrettyPrinter()
msg = "Getting zone failed: %s " % pretty.pformat(response)
sys.exit(msg)
zone_resources = response['data']
print "Getting zone succeded"
示例7: DynectRest
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
import sys
api = DynectRest()
# We need to login
print "Logging in to API"
args = {
'customer_name': 'ciscocloud',
'user_name': 'UserName',
'password': 'UserAPIKey',
}
response = api.execute('/REST/Session/', 'POST', args)
if response['status'] != 'success':
pretty = PrettyPrinter()
msg = "Login to API failed: %s" % pretty.pformat(response)
sys.exit(msg)
"""
zones = {
'rname' : 'www.gslb.com',
'ttl' : '3600',
'zone' : 'gslb.com',
}
"""
report_data = {
'breakdown' : 'zones',
'end_ts' : '1446535242',
示例8: DynectRest
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
import sys
api = DynectRest()
# We need to login
print "Logging in to API"
args = {
'customer_name': 'ciscocloud',
'user_name': 'UserName',
'password': 'UserAPIKey',
}
response = api.execute('/REST/Session/', 'POST', args)
if response['status'] != 'success':
pretty = PrettyPrinter()
msg = "Login to API failed: %s" % pretty.pformat(response)
sys.exit(msg)
traffic_srv_id = '54eHrIuDkcKpg9DdnmrThgpGCsI'
response_pool= {
'label':'AsiaDC',
'publish' : 'Y' # Mahendra - always publish otherwise it will not be seen on the UI, as changes will get discarded.
}
"""
response_pool= {
'serviceid' : traffic_srv_id,
示例9: DynectRest
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
import sys
api = DynectRest()
# We need to login
print "Logging in to API"
args = {"customer_name": "ciscocloud", "user_name": "UserName", "password": "UserAPIKey"}
response = api.execute("/REST/Session/", "POST", args)
if response["status"] != "success":
pretty = PrettyPrinter()
msg = "Login to API failed: %s" % pretty.pformat(response)
sys.exit(msg)
user_name = "testuser"
print "Deleting User"
url = "/REST/User/%s" % user_name
response = api.execute(url, "DELETE")
if response["status"] != "success":
pretty = PrettyPrinter()
msg = "Deleting the User failed: %s" % pretty.pformat(response)
sys.exit(msg)
示例10: DynectRest
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
import sys
api = DynectRest()
# We need to login
print "Logging in to API"
args = {
'customer_name': 'ciscocloud',
'user_name': 'UserName',
'password': 'UserAPIKey',
}
response = api.execute('/REST/Session/', 'POST', args)
if response['status'] != 'success':
pretty = PrettyPrinter()
msg = "Login to API failed: %s" % pretty.pformat(response)
sys.exit(msg)
"""
zones = {
'rname' : 'www.gslb.com',
'ttl' : '3600',
'zone' : 'gslb.com',
}
"""
active_failover_srv = {
'fqdn' : 'www.gslb.com',
'address' : '1.2.3.4',
示例11: point_dns_to_stack
def point_dns_to_stack(region, stack_type, application, name):
import sys
import os
import json
import boto.ec2.elb
from dynect.DynectDNS import DynectRest # sudo pip install https://github.com/dyninc/Dynect-API-Python-Library/zipball/master
if stack_type == 'stage':
zone = 'anosrep.org'
if application == 'persona':
elbs = {'firefoxos.anosrep.org': 'w-anosrep-org',
'login.anosrep.org': 'w-anosrep-org',
'www.anosrep.org': 'w-anosrep-org',
'static.login.anosrep.org': 'w-login-anosrep-org',
'verifier.login.anosrep.org': 'w-login-anosrep-org'}
elif application == 'bridge-yahoo':
elbs = {'yahoo.login.anosrep.org': 'yahoo-login-anosrep-org'}
elif application == 'bridge-gmail':
elbs = {'gmail.login.anosrep.org': 'gmail-login-anosrep-org'}
else:
raise ValueError("application value is bad : %s" % application)
elif stack_type == 'prod':
zone = 'persona.org'
if application == 'persona':
elbs = {'login.persona.org': 'persona-org',
'www.persona.org': 'persona-org'}
elif application == 'bridge-yahoo':
elbs = {'yahoo.login.persona.org': 'yahoo-login-persona-org'}
elif application == 'bridge-gmail':
elbs = {'gmail.login.persona.org': 'gmail-login-persona-org'}
else:
raise ValueError("application value is bad : %s" % application)
new_names = {}
# TODO : This doesn't work for prod because we need to inject multiple regions into traffic mangement
conn_elb = boto.ec2.elb.connect_to_region(region)
load_balancers = conn_elb.get_all_load_balancers(load_balancer_names=['%s-%s' % (x, name) for x in set(elbs.values())])
for load_balancer in load_balancers:
new_names['-'.join(load_balancer.name.split('-')[:-1])] = load_balancer.dns_name
rest_iface = DynectRest()
if 'AWS_CONFIG_DIR' in os.environ:
user_data_filename = os.path.join(os.environ['AWS_CONFIG_DIR'], 'dynect.json')
else:
user_data_filename = 'config/dynect.json'
with open(user_data_filename, 'r') as f:
dynect_credentials = json.load(f)
# Log in
response = rest_iface.execute('/Session/', 'POST', dynect_credentials)
if response['status'] != 'success':
sys.exit("Incorrect credentials")
for record in elbs.keys():
# Get record_id
uri = '/CNAMERecord/%s/%s/' % (zone, record)
response = rest_iface.execute(uri, 'GET')
record_id = response['data'][0].split('/')[-1]
uri = uri + record_id + '/'
# Get current record
response = rest_iface.execute(uri, 'GET')
old_name = response['data']['rdata']['cname']
# Set new record
new_name = new_names[elbs[record]] + '.'
arguments = {'rdata': {'cname': new_name}}
logging.info('calling "%s" to change the record from "%s" to "%s"' % (uri, old_name, new_name))
response = rest_iface.execute(uri, 'PUT', arguments)
logging.info(json.dumps(response['msgs']))
# Publish the new zone
response = rest_iface.execute('/Zone/%s' % zone, 'PUT', {'publish': 1})
logging.info('new zone published with updates at serial number %s' % response['data']['serial'])
# Log out, to be polite
rest_iface.execute('/Session/', 'DELETE')
示例12: DynectRest
###
import sys, getpass, string
from dynect.DynectDNS import DynectRest # API module available from dynect site
print "Username: ",
user = sys.stdin.readline(80).rstrip()
passwd = getpass.getpass("Password: ")
login_args = { 'customer_name': 'mycompany',
'user_name': user,
'password': passwd, }
zones = [ u'/AllRecord/mycompany.net/', u'/AllRecord/mycompany.co.jp/',
u'/AllRecord/mycompany.com/', ]
try:
rest_iface = DynectRest()
response = rest_iface.execute('/Session/', 'POST', login_args)
if response['status'] != 'success':
sys.exit("Incorrect credentials")
for zone in zones:
response = rest_iface.execute(zone, 'GET')
zone_resources = response['data']
print "\nrecord_type\trecord\t\ttarget"
for resource in zone_resources:
res = rest_iface.execute(resource, 'GET')
rtype = string.lower(res['data']['record_type'])
if rtype == 'cname':
print "%s\t%s\t\t%s" % \
( res['data']['record_type'], res['data']['fqdn'], res['data']['rdata'][rtype] )
elif rtype == 'a':
示例13: DynectRest
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
import sys
api = DynectRest()
# We need to login
print "Logging in to API"
args = {
'customer_name': 'ciscocloud',
'user_name': 'UserName',
'password': 'UserAPIKey',
}
response = api.execute('/REST/Session/', 'POST', args)
if response['status'] != 'success':
pretty = PrettyPrinter()
msg = "Login to API failed: %s" % pretty.pformat(response)
sys.exit(msg)
nodes = [ { 'zone' : 'gslb.com' , 'node' : 'www.gslb.com',}]
criteria = {
'geoip' : { 'country' : [ 'US' ] }
}
records = [
{
'label' : 'USEast007',
'weight' : '5',
'automation' : 'auto',
示例14: DynectRest
from dynect.DynectDNS import DynectRest
from pprint import PrettyPrinter
import sys
api = DynectRest()
# We need to login
print "Logging in to API"
args = {
'customer_name': 'ciscocloud',
'user_name': 'UserName',
'password': 'UserAPIKey',
}
response = api.execute('/REST/Session/', 'POST', args)
if response['status'] != 'success':
pretty = PrettyPrinter()
msg = "Login to API failed: %s" % pretty.pformat(response)
sys.exit(msg)
A_srv_name = 'www3.gslb.com'
arecord = { 'fqdn' : 'www3.gslb.com', 'zone' : 'gslb.com', }
print "Deleting A Record"
url = "/REST/ARecord/gslb.com/%s" % A_srv_name
response = api.execute(url,'DELETE',arecord);
示例15: get_dsf_byfqdn
def get_dsf_byfqdn( dyn_iface, fqdn ):
response = dyn_iface.execute('/DSF/','GET')
for uri in response['data']:
dsf = dyn_iface.execute( uri, 'GET')
for node_dict in dsf['data']['nodes']:
if node_dict['fqdn'] == fqdn:
return uri
return 0
#read API credentials from file
try:
creds = get_creds()
except:
sys.exit('Unable to open configuation file: config.cfg')
dyn_iface = DynectRest()
# Log in
response = dyn_iface.execute('/Session/', 'POST', creds)
if response['status'] != 'success':
sys.exit("Unable to Login to DynECT DNS API. Please check credentials in config.cfg")
#obtain parent uri for DSF service by FQDN
#also possible to get DSF directly by label
dsf_uri = get_dsf_byfqdn( dyn_iface, 'example.dsfexample.com' )
#get full description of service using URI
dsf_desc = dyn_iface.execute(dsf_uri, 'GET')
#grab IDs from service description
#can be used later to direclty access service or other URIs
dsf_id = dsf_desc['data']['service_id']