barnybug / cli53 Goto Github PK
View Code? Open in Web Editor NEWCommand line tool for Amazon Route 53
License: MIT License
Command line tool for Amazon Route 53
License: MIT License
Hi, I found that a (nearly empty, the default at aws) record set for my domain trips cli53 in two ways. One is that some (all?) of the record sets has no weight. Read below for the second issue:
$ cli53 export mydomain.com
Traceback (most recent call last):
File "/usr/bin/cli53", line 684, in
main()
File "/usr/bin/cli53", line 681, in main
args.func(args)
File "/usr/bin/cli53", line 482, in cmd_export
zone = _get_records(args)
File "/usr/bin/cli53", line 479, in _get_records
return f.get_all_rrsets(r53, info.GetHostedZoneResponse, args.zone)
File "/usr/bin/cli53", line 307, in get_all_rrsets
return self.convert(ghz, rrsets)
File "/usr/bin/cli53", line 327, in convert
rdataset = _create_rdataset(rtype, ttl, values, rrset.weight, rrset.identifier, getattr(rrset, 'region', None))
AttributeError: 'Record' object has no attribute 'weight'
I replaced rrset.weight with None, and then it tripped on rrset.identifier, in the same line.
AttributeError: 'Record' object has no attribute 'identifier'
I then replaced that with None and things went through. I think that None should be made the default for records with non weight and ID. my default set of records for a new domain looks like this:
http://dl.dropbox.com/u/364883/Screenshots/56bz.png
so, it appears that the weight and id are empty by default.
I created an account in IAM which only allow to make changes to specific hostedzone and encounter an error. Without restrictions it worked.
The error:
root@localhost:/home/www# cli53 rrcreate mydomain.com test2 A 127.0.0.1
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 5, in
pkg_resources.run_script('cli53==0.3.1', 'cli53')
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 467, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 1200, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.6/dist-packages/cli53-0.3.1-py2.6.egg/EGG-INFO/scripts/cli53", line 735, in
main()
File "/usr/local/lib/python2.6/dist-packages/cli53-0.3.1-py2.6.egg/EGG-INFO/scripts/cli53", line 731, in main
args = parser.parse_args()
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1703, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1735, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1944, in _parse_known_args
stop_index = consume_positionals(start_index)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1900, in consume_positionals
take_action(action, args)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1809, in take_action
action(self, namespace, argument_values, option_string)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1111, in call
namespace, arg_strings = parser.parse_known_args(arg_strings, namespace)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1735, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1944, in _parse_known_args
stop_index = consume_positionals(start_index)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1900, in consume_positionals
take_action(action, args)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 1793, in take_action
argument_values = self._get_values(action, argument_strings)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 2219, in _get_values
value = self._get_value(action, arg_string)
File "/usr/local/lib/python2.6/dist-packages/argparse-1.2.1-py2.6.egg/argparse.py", line 2248, in _get_value
result = type_func(arg_string)
File "/usr/local/lib/python2.6/dist-packages/cli53-0.3.1-py2.6.egg/EGG-INFO/scripts/cli53", line 517, in Zone
ret = r53.get_all_hosted_zones()
File "/usr/local/lib/python2.6/dist-packages/boto-2.5.2-py2.6.egg/boto/route53/connection.py", line 107, in get_all_hosted_zones
body)
boto.route53.exception.DNSServerError: DNSServerError: 403 Forbidden
SenderAccessDenied
User: mysuer is not authorized to perform: route53:ListHostedZonesdadasdadadasdsaad
This is the policy rules I used. As you can see I use the Full Access policy and edited the resource
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:"
],
"Resource": [
"arn:aws:route53:::hostedzone/ZONE_ID"
]
},
{
"Effect": "Allow",
"Action": [
"elasticloadbalancing:DescribeLoadBalancers"
],
"Resource": [
""
]
}
]
}
One of my TXT records has the following value (don't ask ;-)
"aap\" \"noot"
When I try to remove it cli53 gives an error:
$ cli53.py export example.com
$ORIGIN example.com.
@ 172800 IN NS ns-197.awsdns-24.com.
@ 172800 IN NS ns-1110.awsdns-10.org.
@ 172800 IN NS ns-1984.awsdns-56.co.uk.
@ 172800 IN NS ns-831.awsdns-39.net.
@ 900 IN SOA ns-1984.awsdns-56.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
bar 86400 IN TXT "aap\\\" \\\"noot"
$ cli53.py rrdelete example.com bar TXT
Deleting bar TXT...
Traceback (most recent call last):
File "/home/marco/bin/cli53.py", line 489, in
main()
File "/home/marco/bin/cli53.py", line 486, in main
args.func(args)
File "/home/marco/bin/cli53.py", line 403, in cmd_rrdelete
ret = r53.change_rrsets(args.zone, xml)
File "/usr/lib/python2.5/site-packages/boto/route53/__init__.py", line 221, in change_rrsets
raise exception.DNSServerError(response.status, response.reason, body)
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
SenderInvalidChangeBatch
Tried to delete resource record set bar.example.com., type TXT but the values provided do not match the current values17da61da-2a6b-11e0-8c35-c944823ddc0a
$
Marco
API calls that attempt to list records already in Route53 are failing. This breaks --replace for import, as well as rrlist and export. The stack trace is the same for all cases. None of our records use the weight attribute, which is supposed to be optional.
Traceback (most recent call last):
File "./cli53", line 628, in
main()
File "./cli53", line 625, in main
args.func(args)
File "./cli53", line 548, in cmd_rrlist
zone = _get_records(args)
File "./cli53", line 427, in _get_records
return f.get_all_rrsets(r53, info.GetHostedZoneResponse, args.zone)
File "./cli53", line 265, in get_all_rrsets
return self.convert(ghz, rrsets)
File "./cli53", line 285, in convert
rdataset = _create_rdataset(rtype, ttl, values, rrset.weight, rrset.identifier)
AttributeError: 'Record' object has no attribute 'weight'
After the outage yesterday, our management has decided that we should move to route53.
I've exported the zone file from godaddy, then ran the perl script against it to fix and "CNAME issues"
From the command line, I'm able to create "hosted zones", create "records", list them, etc.
However when I attempt to import the zonefile:
(without the --wait --replace), the command simply returns to the prompt with no indications of anything.
Examining the Route53 console doesn't show any imported records.
If I include --wait --replace, I see the following error:
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 5, in
pkg_resources.run_script('cli53==0.3.2', 'cli53')
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 442, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 1167, in run_script
exec script_code in namespace, namespace
File "/Library/Python/2.6/site-packages/cli53-0.3.2-py2.6.egg/EGG-INFO/scripts/cli53", line 735, in
File "/Library/Python/2.6/site-packages/cli53-0.3.2-py2.6.egg/EGG-INFO/scripts/cli53", line 732, in main
File "/Library/Python/2.6/site-packages/cli53-0.3.2-py2.6.egg/EGG-INFO/scripts/cli53", line 495, in cmd_import
File "/Library/Python/2.6/site-packages/cli53-0.3.2-py2.6.egg/EGG-INFO/scripts/cli53", line 530, in _get_records
File "/Library/Python/2.6/site-packages/cli53-0.3.2-py2.6.egg/EGG-INFO/scripts/cli53", line 351, in get_all_rrsets
File "/Library/Python/2.6/site-packages/cli53-0.3.2-py2.6.egg/EGG-INFO/scripts/cli53", line 367, in convert
AttributeError: 'Record' object has no attribute 'alias_dns_name'
Any suggestions would be most helpful.
Thank you.
Not all zone identifiers have length 14. It's best not to make assumptions about their length.
re_zone_id = re.compile('^[A-Z0-9]{14}$')
This is more of a feature request than an actual issue. Just figured it would be nice to be able to update records, unless this isn't already possible.
Actually I see the --replace option in rrcreate
I think this is what I was looking for
Hi, your one-line Perl script for correcting Godaddy export does not work for me --
(2012/12/02 12:28:14)[0]$ perl -pe 's/(CNAME .+)(?!.)$/$1./i' bizspeaking.com.zone > bizspeaking.com.zone.fixed
(2012/12/02 13:22:42)[0]$ diff -wc bizspeaking.com.zone bizspeaking.com.zone.fixed
*** bizspeaking.com.zone 2012-12-02 12:25:57.298353143 +0800
--- bizspeaking.com.zone.fixed 2012-12-02 13:22:42.314278717 +0800
*** 37,43 ****
; A Records
@ 1800 IN A 173.230.149.183
! ; CNAME Records
blog 3600 IN CNAME bizspeaking.wordpress.com
cf 3600 IN CNAME d1hvliv42vq06p.cloudfront.net
cfa 3600 IN CNAME d1hvliv42vq06p.cloudfront.net
--- 37,43 ----
; A Records
@ 1800 IN A 173.230.149.183
! ; CNAME Records.
blog 3600 IN CNAME bizspeaking.wordpress.com
cf 3600 IN CNAME d1hvliv42vq06p.cloudfront.net
cfa 3600 IN CNAME d1hvliv42vq06p.cloudfront.net
For one, tabs are used in Godaddy export. I also had to include explicit character set, otherwise the match behaves so weird as to be beyond my understanding... --
(2012/12/02 13:22:43)[0]$ perl -pe 's/(\s+CNAME\s+[a-zA-Z0-9.-_]+)(?!.)$/$1./i' bizspeaking.com.zone > bizspeaking.com.zone.fixed
(2012/12/02 13:25:06)[0]$ diff -wc bizspeaking.com.zone bizspeaking.com.zone.fixed
*** bizspeaking.com.zone 2012-12-02 12:25:57.298353143 +0800
--- bizspeaking.com.zone.fixed 2012-12-02 13:25:06.962275555 +0800
*** 37,50 ****
; A Records
@ 1800 IN A 173.230.149.183
! ; CNAME Records
! blog 3600 IN CNAME bizspeaking.wordpress.com
! cf 3600 IN CNAME d1hvliv42vq06p.cloudfront.net
! cfa 3600 IN CNAME d1hvliv42vq06p.cloudfront.net
! mail 3600 IN CNAME ghs.google.com
www 3600 IN CNAME @
; MX Records
--- 37,50 ----
; A Records
@ 1800 IN A 173.230.149.183
! ; CNAME Records.
! blog 3600 IN CNAME bizspeaking.wordpress.com.
! cf 3600 IN CNAME d1hvliv42vq06p.cloudfront.net.
! cfa 3600 IN CNAME d1hvliv42vq06p.cloudfront.net.
! mail 3600 IN CNAME ghs.google.com.
www 3600 IN CNAME @
Hello Im trying to import a long bind file into the amazon dns servers with cli53 and I get two errors depending on what I do..
first I get this one:
Traceback (most recent call last):
File "/home/cfernandez/EC2ACCESS/cli53/bin/cli53", line 22, in
cli53.cli53.main()
File "/home/cfernandez/EC2ACCESS/cli53/src/cli53/cli53.py", line 599, in main
args.func(args)
File "/home/cfernandez/EC2ACCESS/cli53/src/cli53/cli53.py", line 357, in cmd_import
zone = dns.zone.from_text(text, origin=origin, check_origin=True)
File "build/bdist.linux-x86_64/egg/dns/zone.py", line 761, in from_text
File "build/bdist.linux-x86_64/egg/dns/zone.py", line 719, in read
File "build/bdist.linux-x86_64/egg/dns/zone.py", line 518, in check_origin
dns.zone.NoSOA
Im not good reading logs from python at all so kind of confused I do see the NOSOA so I do have the SOA in it but is with my settings still not amazons of course so I just in case comment it out but then I get this:
Traceback (most recent call last):
File "/home/cfernandez/EC2ACCESS/cli53/bin/cli53", line 22, in
cli53.cli53.main()
File "/home/cfernandez/EC2ACCESS/cli53/src/cli53/cli53.py", line 599, in main
args.func(args)
File "/home/cfernandez/EC2ACCESS/cli53/src/cli53/cli53.py", line 357, in cmd_import
zone = dns.zone.from_text(text, origin=origin, check_origin=True)
File "build/bdist.linux-x86_64/egg/dns/zone.py", line 761, in from_text
File "build/bdist.linux-x86_64/egg/dns/zone.py", line 710, in read
File "build/bdist.linux-x86_64/egg/dns/zone.py", line 586, in _rr_line
AttributeError: 'NoneType' object has no attribute 'is_subdomain'
I have some SRV records that were added using plain XML without a trailing '.' in the target. It appears a '.' automatically gets added to the target by dnspython. Unfortunately, that makes it impossible to remove SRV records without a trailing '.' using cli53.py.
Below is an example to reproduce the error, but after inspecting the source code I suspect you can just add another custom class like you did for CNAME and MX. I also reproduced the problem for NS records and assume it exists for PTR.
/tmp/test.xml
<?xml version="1.0" encoding="UTF-8"?> <ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2010-10-01/"> <ChangeBatch> <Comment> Test. </Comment> <Changes> <Change> <Action>CREATE</Action> <ResourceRecordSet> <Name>test.example.com.</Name> <Type>SRV</Type> <TTL>3600</TTL> <ResourceRecords> <ResourceRecord> <Value>20 0 5300 jabber.example.net</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </Change> </Changes> </ChangeBatch> </ChangeResourceRecordSetsRequest>
dnscurl.pl --keyname marco -- -X POST --upload-file /tmp/test.xml -H "Content-Type: text/xml; charset=UTF-8" https://route53.amazonaws.com/2010-10-01/hostedzone/Z3D165WXQJETB0/rrset
Trying to remove the record:
$ cli53.py rrdelete example.com test SRV
Deleting test SRV...
Traceback (most recent call last):
File "/home/marco/bin/cli53.py", line 445, in
main()
File "/home/marco/bin/cli53.py", line 442, in main
args.func(args)
File "/home/marco/bin/cli53.py", line 358, in cmd_rrdelete
ret = r53.change_rrsets(args.zone, xml)
File "/usr/lib/python2.5/site-packages/boto/route53/__init__.py", line 221, in change_rrsets
raise exception.DNSServerError(response.status, response.reason, body)
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
SenderInvalidChangeBatch
Tried to delete resource record set test.example.com., type SRV but the values provided do not match the current valuesbfefa426-0b99-11e0-97ae-7fd6096deaf2
I couldn't find a normal way to remove SPF records... and while i tried to create a new SPF records, it added one weird record that i can't get rid of .
Here are the two problematic entires i want to get rid of, would appreciate your help:
@ 14400 IN TXT "v=spf1 include:sendgrid.net ~all"
vKspf1\032includeHamazonses.com\032Mall 14400 IN SPF "\"" "s" "p" "f" "\""
Test 1:
ubuntu@test:~ ./cli53.py rrdelete mydomain.com "v=spf1 include:secureserver.net ~all" SPF
Record not found: v=spf1 include:secureserver.net ~all
Test 2:
ubuntu@test:~ ./cli53.py rrdelete mydomain.com vKspf1\032includeHamazonses.com\032Mall SPF
Record not found: vKspf1032includeHamazonses.com032Mall
When trying to import a zone file, any problem line causes an exception to be raised. But without knowing which line this error was caused on, it's impossible to know how to fix the zone file.
I have the following LOC entry in a zone file and using the import feature fails with the following errors. The LOC entry is line 55 in the file that the error is throwing on.
;; LOC Records (Location; Geo Lat/Long)
. 300 IN LOC IN LOC 65 36 22.127 N 37 42 20.753 W 254m 10m 100m 10m
» cli53 import --file --replace --wait
Traceback (most recent call last):
File "/bin/cli53", line 5, in
pkg_resources.run_script('cli53==0.3.6', 'cli53')
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 499, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 1239, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/lib/python2.7/site-packages/cli53-0.3.6-py2.7.egg/EGG-INFO/scripts/cli53", line 824, in
main()
File "/usr/lib/python2.7/site-packages/cli53-0.3.6-py2.7.egg/EGG-INFO/scripts/cli53", line 821, in main
args.func(args)
File "/usr/lib/python2.7/site-packages/cli53-0.3.6-py2.7.egg/EGG-INFO/scripts/cli53", line 572, in cmd_import
zone = dns.zone.from_text(text, origin=origin, check_origin=False)
File "/usr/lib/python2.7/site-packages/dnspython-1.10.0-py2.7.egg/dns/zone.py", line 761, in from_text
reader.read()
File "/usr/lib/python2.7/site-packages/dnspython-1.10.0-py2.7.egg/dns/zone.py", line 715, in read
raise dns.exception.SyntaxError("%s:%d: %s" % (filename, line_number, detail))
dns.exception.SyntaxError: :55: expecting an integer
We are trying to create both an SPF entry and an google domain verify entry on our domain.
Adding a second TXT record causes a 400 error (already exists).
The console says to add a new line between two records, but none of the following work:
cli53 rrcreate updater.com '@' TXT '"google-site-verification=kptdGyLC37K_so8MXaWGczg4obJjn1N19E2L5t8m5fg" "v=spf1 a mx include:sendgrid.net include:_spf.google.com ~all"' --ttl 3600
cli53 rrcreate updater.com '@' TXT '"google-site-verification=kptdGyLC37K_so8MXaWGczg4obJjn1N19E2L5t8m5fg"\r"v=spf1 a mx include:sendgrid.net include:_spf.google.com ~all"' --ttl 3600
cli53 rrcreate updater.com '@' TXT "google-site-verification=kptdGyLC37K_so8MXaWGczg4obJjn1N19E2L5t8m5fg \r v=spf1 a mx include:sendgrid.net include:_spf.google.com ~all" --ttl 3600'
etc..
How do you create multiple TXT records with cli53?
Is it possible to add a verbose diff output? It would be nice to be able to use this to see whats about to be applied.
Also supporting tests would be nice as well so that you can load to a parallel zone and run a set of tests against those resolvers before pushing to an active zone.
When I use the cli53 list command, the output only shows the first 100 zones. The output ends with "NextMarker: Z1UWOO378DPC2F", but I can't see any way to enter that on the cmdline to fetch the next 100.
Add support for IAM roles, allowing cli53 to get the access key and secret key via the EC2 Instance Metadata Service.
Negates the need to transfer and store your keys on the server file system.
May want to consider testing for json. I had an old python 2.5.1 on FC8 that failed import boto.route53
due to lack of JSON parser. Fixed it with pip install simplejson
. Easy enough, but I spent a while chasing boto, since that's what the error message stated.
try:
import boto.route53, boto.jsonresponse, boto.exception
except ImportError:
print "Please install latest boto:"
print "pip install boto"
sys.exit(-1)
I'm trying to move a Route 53 zone across AWS accounts.
On the former account, I exported with cli53 export example.com > ~/bindfile
.
When trying to import (on the latter account):
tom@braskami:~$ cli53 import -f ~/bindfile example.com
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 744, in <module>
main()
File "/usr/local/bin/cli53", line 741, in main
args.func(args)
File "/usr/local/bin/cli53", line 500, in cmd_import
zone = dns.zone.from_text(text, origin=origin, check_origin=False)
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 761, in from_text
reader.read()
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 710, in read
self._rr_line()
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 639, in _rr_line
rd.choose_relativity(self.zone.origin, self.relativize)
File "/usr/local/lib/python2.7/dist-packages/dns/rdtypes/nsbase.py", line 66, in choose_relativity
self.target = self.target.choose_relativity(origin, relativize)
AttributeError: 'str' object has no attribute 'choose_relativity'
Any clue what's going on?
boto: 2.5.2
dnspython: 1.10.0
python: 2.7
I'd like to understand the reasoning for setting "exclude=is_root_soa_or_ns" with import.
In my case, I do want to set the SOA and NS records for a zone on import (I check SOA as part of the tests I run on zone changes, and I want to use non-AWS nameservers for the zone).
I'm happy to try to work out a pull request that disables "exclude=is_root_soa_or_ns" via a command-line flag, but I thought I'd ask about motivations for it that I might not understand first.
Thanks!
Andy
Hi,
Thank you for writing cli53 and making it publicly available.
I setup a vanilla Ubuntu 8.04 server but noted that pip is not installed by default, nor is python-boto.
It might be useful to add how to install pip in your install instructions:
sudo apt-get install python-setuptools python-dev build-essential
sudo easy_install pip
sudo apt-get install python-boto
Shaun
Although rrcreate supports latency records, they are write-once only entities.
It is not possible to delete a single latency record nor is it possible to replace a latency record with one having a different value.
To ensure everything is clean I first purge the zone
jdyer@retina:~/Projects/carrier-routing » cli53 rrpurge enum-outbound.int.something.com --confirm
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:44.013Z
Id: /change/C3K1RNP0W1GCF
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:44.646Z
Id: /change/C255RED8RZ42E
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:45.344Z
Id: /change/C1YOGIET1Y15JR
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:45.823Z
Id: /change/CCMOU37LN47EV
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:46.436Z
Id: /change/C2UM5IYJEMEIR
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:46.915Z
Id: /change/CJ5ECFMSETSV
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:47.570Z
Id: /change/C1BAK5AMFU2N4
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:47.963Z
Id: /change/CP0EZ7PDHFBY
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:48.384Z
Id: /change/C2W7KK3FR77NE
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:47:48.791Z
Id: /change/C2JV1A27AXLDZ
I then delete the zone entirely
jdyer@retina:~/Projects/carrier-routing » cli53 delete enum-outbound.int.something.com
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:48:53.227Z
Id: /change/C131O8SZD6JNE
jdyer@retina:~/Projects/carrier-routing »
Then I create the new zone
jdyer@retina:~/Projects/carrier-routing » cli53 create enum-outbound.int.something.com 1 ↵
HostedZone:
ResourceRecordSetCount: 2
CallerReference: c1c271b-6133-4e05-94a7-8194c6c0d7
Config:
Comment: None
Id: /hostedzone/Z2BRIR61QI8PK
Name: enum-outbound.int.something.com.
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:49:14.475Z
Id: /change/C1YQZFMMXPDQW
DelegationSet:
NameServers:
- ns-723.awsdns-23.co.uk
- ns-30.awsdns-38.com
- ns-98.awsdns-59.net
- ns-176.awsdns-06.org
jdyer@retina:~/Projects/carrier-routing »
And then I try to import
jdyer@retina:~/Projects/carrier-routing » cli53 import enum-outbound.int.tropo.com --file enum-outbound.int.tropo.com 1 ↵
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:15.781Z
Id: /change/C4BW3TZ6607U
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:16.451Z
Id: /change/C1UB3S31G2ILC
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:17.177Z
Id: /change/COJJQHH0ZQIS
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:17.586Z
Id: /change/C1JQCSJU5Z03D
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:18.261Z
Id: /change/CJMF4PYNELZ8
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:18.869Z
Id: /change/C3V18I3IXGDWW
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:19.470Z
Id: /change/C1TTV059E53WY
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:19.856Z
Id: /change/CWLLBNVG8I6V
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:20.278Z
Id: /change/C27A1NEQ8LZFJ
ChangeInfo:
Status: PENDING
SubmittedAt: 2013-07-19T21:50:20.957Z
Id: /change/C3TJIXN0FQSSB
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 749, in <module>
main()
File "/usr/local/bin/cli53", line 746, in main
args.func(args)
File "/usr/local/bin/cli53", line 513, in cmd_import
ret = r53.change_rrsets(args.zone, xml)
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/route53/connection.py", line 315, in change_rrsets
body)
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
<?xml version="1.0"?>
<ErrorResponse xmlns="https://route53.amazonaws.com/doc/2012-02-29/"><Error><Type>Sender</Type><Code>InvalidChangeBatch</Code><Message>Tried to create resource record set [name='enum-outbound.int.something.com.', type='SOA'] but it already exists</Message></Error><RequestId>35863895-f0bd-11e2-a593-6336d0de74cc</RequestId></ErrorResponse>
jdyer@retina:~/Projects/carrier-routing » 1 ↵
And here is the top of my zone file I am trying to import
$ORIGIN .
$TTL 3600 ; 1 hour
carrier-routing.int.something.com IN SOA labsdnsmaster100.jyo.somewhere.net. alerts.voxeo.com. (
2013061301 ; serial
300 ; refresh (5 minutes)
60 ; retry (1 minute)
604800 ; expire (1 week)
60 ; minimum (1 minute)
)
$TTL 120 ; 2 minutes
NS labsdns181.las.something.net.
NS labsdns181.orl.something.net.
NS labsdns182.las.something.net.
NS labsdns182.orl.something.net.
NS labsdnsmaster100.jyo.something.net.
$ORIGIN carrier-selection-us.carrier-routing.int.something.com.
* TXT "verboten"
$ORIGIN 0.carrier-selection-us.carrier-routing.int.something.com.
* TXT "verboten"
$ORIGIN 1.carrier-selection-us.carrier-routing.int.something.com.
* TXT "staging-out.carriers.int.something.com"
$ORIGIN 0.1.carrier-selection-us.carrier-routing.int.something.com.
* TXT "verboten"
$ORIGIN 1.1.carrier-selection-us.carrier-routing.int.something.com.
* TXT "staging-out.carriers.int.something.com"
Any idea why this is happening, because I sure dont and I am stuck :(
Please, upgrade to 2011-05-05 R53 API, to include weighted resource record sets.
If this was in the zone file:
gdocs 3600 IN CNAME ghs.google.com
It ended up like this in Route 53:
ghs.google.com.mydomain.com.
I love cli53, but I can't find the license. You have a bunch of commits from different people (https://github.com/barnybug/cli53/contributors), and they technically need to agree to whatever license you pick -- the longer you wait the more difficult it might get to retroactively slap a license on the project.
Or am I missing something?
I tried running cli53.py but ran into issues importing packages.
I noticed that the python path is set to: #!/usr/bin/python
rather than: #!/usr/bin/env python
Changed this and the script works.
I started getting this error yesterday:
$ bin/cli53 rrlist domain.net
Traceback (most recent call last):
File "bin/cli53", line 22, in <module>
cli53.cli53.main()
File "/home/user/cli53/src/cli53/cli53.py", line 495, in main
args.func(args)
File "/home/user/cli53/src/cli53/cli53.py", line 422, in cmd_rrlist
zone = _get_records(args)
File "/home/user/cli53/src/cli53/cli53.py", line 301, in _get_records
return f.get_all_rrsets(r53, info.GetHostedZoneResponse, args.zone)
File "/home/user/cli53/src/cli53/cli53.py", line 181, in get_all_rrsets
return self.convert(ghz, rrsets)
File "/home/user/cli53/src/cli53/cli53.py", line 197, in convert
node = z.get_node(name, create=True)
File "build/bdist.linux-i686/egg/dns/zone.py", line 196, in get_node
File "build/bdist.linux-i686/egg/dns/zone.py", line 172, in find_node
File "build/bdist.linux-i686/egg/dns/zone.py", line 111, in _validate_name
File "build/bdist.linux-i686/egg/dns/name.py", line 602, in from_text
File "build/bdist.linux-i686/egg/dns/name.py", line 572, in from_unicode
UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128)
This patch fixes the glitch for me. I don't know if this is the "right" way to do it (probably want to check for "if default encoding is ascii", or set encoding everywhere to ascii), but it was effective:
diff --git a/src/cli53/cli53.py b/src/cli53/cli53.py
index 166cdcc..52b8a69 100755
--- a/src/cli53/cli53.py
+++ b/src/cli53/cli53.py
@@ -187,6 +187,7 @@ class R53ToBindFormatter(object):
for rrset in rrsets:
name = rrset.name
+ name = name.encode('ascii')
if '\\052' in name:
# * char seems to confuse Amazon and is returned as \\052
name = name.replace('\\052', '*')
When attempting to create multiple A records for sub.domain.com
You get the following error from amazon
Tried to create resource record set sub.domain.com., type A but it already exists
cli53 rrcreate domain.com sub A 1.2.3.4 --ttl 600
cli53 rrcreate domain.com sub A 1.2.3.5 --ttl 600
root@prd-puppet:/cli53/scripts# ./cli53/cli53/scripts# python
Please install latest boto:
pip install boto
(error was: No module named route53)
root@prd-puppet:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import boto
Would it be possible to add a parameter so the comment field for the hosted zone can be used ?
For as far as I know, it can only be filled in upon creation of the hosted zone. Changing it after a zone was created is not possible, at least not through the GUI.
I use that field to group my zones, and it would be very handy if I could use it with cli53.
Regards,
Gill
I'm having the same issue (I think) as this one: #28
I've defined a zone in the AWS console, manually entered some records, and now want to import more records from a zone file. I've removed all commented lines from the file and reduced it to just a couple of lines to test. The file is essentially what follows between the dashed lines, values anonymized:
$ORIGIN example.com
example.com. 86400 IN A 192.168.1.100
www.example.com. 86400 IN A 192.168.1.100
That's it, and I'm still getting the following error dump:
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 607, in
main()
File "/usr/local/bin/cli53", line 604, in main
args.func(args)
File "/usr/local/bin/cli53", line 362, in cmd_import
zone = dns.zone.from_text(text, origin=origin, check_origin=True)
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 761, in from_text
reader.read()
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 719, in read
self.zone.check_origin()
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 518, in check_origin
raise NoSOA
dns.zone.NoSOA
The full command line as run is:
cli53 import example.com -f /home/joel/abs/projects/dns/example.com.test
What am I missing?
Amazon assumes that any domain name value you provide is fully qualified, and thus assumes a trailing dot, even if one is not provided in the Route 53 console. When running cli53 export , cli53 does not make this assumption.
For example, if you have a CNAME alias called "alias" in the example.com zone with value "target.otherdomain.tld" (no trailing dot), Amazon would respond with an answer of
alias.example.com. IN CNAME target.otherdomain.tld.
Off the top of my head, I'm not sure if this goes against the RFCs or not. At any rate, when running cli53 export, the above CNAME info would generate the following record:
alias IN CNAME target.otherdomain.tld
or with --full:
alias.example.com. IN CNAME target.otherdomain.tld
which, because it isn't fully qualified, means BIND would return a response of
alias.example.com. IN CNAME target.otherdomain.tld.example.com.
Obviously a different response than Route 53 for the same data!
Is it possible to create multiple txt records on separate lines per the route53 doc? I tried creating multiple records but cant get them to end up on separate lines in the route53 container.
thanks
Ryan
Hey ,
i tried
./cli53.py rrecreate domain.com '@' MX mailer.something.com
and got 'ValueError: mx records required two parts: priority name'
Is there any different syntax for MX records?
Thanks.
Using Python 2.7, boto 2.6.0, and cli53 0.3.6, I'm seeing this exception occasionally:
With
Traceback (most recent call last):
File "/usr/bin/cli53", line 749, in
main()
File "/usr/bin/cli53", line 746, in main
args.func(args)
File "/usr/bin/cli53", line 660, in cmd_rrpurge
ret = r53.change_rrsets(args.zone, xml)
File "/usr/lib/python2.7/site-packages/boto/route53/connection.py", line 314, in change_rrsets
body)
boto.route53.exception.DNSServerError: DNSServerError: 505 HTTP Version Not Supported
Hi! i tried to replace and then purge zone with weighted records, but received the following:
Tried to delete resource record set [name='vip.site.net.', type='A', set-identifier='srv1] but it was not found
The latest Boto (2.0) supports retrieving credentials from ~/.boto instead of exposing secret keys through environment variables.
[Credentials]
aws_access_key_id = XXXX
aws_secret_access_key = XXXX
Therefore these lines should be removed from cli53.py. Instead catch the Boto exception that would be raised if credentials are not available.
if not (os.getenv('AWS_ACCESS_KEY_ID') and os.getenv('AWS_SECRET_ACCESS_KEY')):
print 'Please set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, e.g.:'
print 'export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXX'
print 'export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
sys.exit(-1)
I think this is a bug....we have two /25 zones that are delegated to us. I'm currently hosting them locally, but want to migrate to Route53. When I try to create a PTR record, it seems to error out due to the unique nature of a /25 zone name.
I researched how to reference the zone name and amazon automatically inserts the \057 instead of the / and it seems to work. It just doesnt seem to work with cli53.
NOTE: if i just create the zone as X.Y.Z.in-addr.arpa, the rrcreate works fine. However this will not work since our ISP is delegating H.X.Y.Z to H.0/25.X.Y.Z.
`doslager@ubuntu:~/barnybug-cli53-9b91908/scripts$ ./cli53 rrcreate --wait 0\05725.X.Y.Z.in-addr.arpa 98 PTR blah.foo.com --ttl 1800
Traceback (most recent call last):
File "./cli53", line 824, in
main()
File "./cli53", line 821, in main
args.func(args)
File "./cli53", line 691, in cmd_rrcreate
ret = r53.change_rrsets(args.zone, xml)
File "/usr/local/lib/python2.7/dist-packages/boto/route53/connection.py", line 315, in change_rrsets
body)
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
SenderInvalidChangeBatch
RRSet with DNS name 98.0925.X.Y.Z.in-addr.arpa. is not permitted in zone 0\05725.X.Y.Z.in-addr.arpa.4269b658-8b68-11e2-a7eb-21b582fee6f0
doslager@ubuntu:~/barnybug-cli53-9b91908/scripts$`
Notice in the error message that it's trying to create an RRset with DNS name 98.0925.X.Y.Z.in-addr.arpa.
It should be 98.0\5725.X.Y.Z.in-addr.arpa.
Hi,
I'm trying to export routing policy failover from Route53. I get error on Ubuntu 12.04 and current cli53-0.3.6 cloned directly today from GitHub:
cli53 export domain.com
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 5, in <module>
pkg_resources.run_script('cli53==0.3.6', 'cli53')
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 499, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1235, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/dist-packages/cli53-0.3.6-py2.7.egg/EGG-INFO/scripts/cli53", line 836, in <module>
main()
File "/usr/local/lib/python2.7/dist-packages/cli53-0.3.6-py2.7.egg/EGG-INFO/scripts/cli53", line 831, in main
args.func(args)
File "/usr/local/lib/python2.7/dist-packages/cli53-0.3.6-py2.7.egg/EGG-INFO/scripts/cli53", line 625, in cmd_export
zone.to_file(sys.stdout, relativize=not args.full)
File "/usr/local/lib/python2.7/dist-packages/dns/zone.py", line 496, in to_file
relativize=relativize)
File "/usr/local/lib/python2.7/dist-packages/dns/node.py", line 52, in to_text
print >> s, rds.to_text(name, **kw)
File "/usr/local/lib/python2.7/dist-packages/dns/rdataset.py", line 214, in to_text
rd.to_text(origin=origin, relativize=relativize, **kw))
AttributeError: 'NoneType' object has no attribute 'to_text'
Settings in Route53:
Name Type Health check id TTL Set ID Health check to associate
----------- --------- --------------- --- ------ -------------------------
domain.com. A ip-address ijfijf-3478... 60 Primary http://ip-address:80/[....
domain.com. A ip-address 60 Secondary
www.domain.com. A ip-address 2gjfi-fjdif... 60 www-Primary http://ip-address:80/.....
Other records are MX, NS, SOA, SPF and CNAME, but those are also used in other domains that exported correctly. This above with failover settings only gives output:
$ORIGIN domain.com.
and then starts to give errors.
When attempting to install cli53 with pip it fails because there is no README file. I renamed "README.markdown" to "README" in the build/cli53 directory and it went fine after that.
Hi Barnybug,
Just trying cli53 for the first time. I've imported a zone file successfully. Then the next thing I tried is making a small change on one record (CNAME record), and then tried to import it again, this time with --replace.
I'm getting this error message:
Traceback (most recent call last):
File "bin/cli53", line 22, in <module>
cli53.cli53.main()
File "/tmp/cli53/src/cli53/cli53.py", line 599, in main
args.func(args)
File "/tmp/cli53/src/cli53/cli53.py", line 379, in cmd_import
ret = r53.change_rrsets(args.zone, xml)
File "/tmp/cli53/eggs/boto-2.1.1-py2.6.egg/boto/route53/connection.py", line 291, in change_rrsets
body)
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
<?xml version="1.0"?>
<ErrorResponse xmlns="https://route53.amazonaws.com/doc/2011-05-05/"><Error><Type>Sender</Type><Code>InvalidChangeBatch</Code><Message>Tried to delete resource record set ********.com., type TXT but the values provided do not match the current values</Message></Error><RequestId>b3f620fe-30d3-11e1-bdf7-b5f61935c370</RequestId></ErrorResponse>
I googled and found issue #5, so it might be a similar problem?
Any help would be highly appreciated.
Python 2.7.2, installed via pip today on Windows.
I can create zones, delete zones, list zones and create records OK.
But if I try and import my DNS file, nothing happens in Route53, and there is no output from the CLI other than a carriage return / blank line before my prompt returns.
Originally, it complained about no origin, but I fixed that in the file. I've tried the replace, editauth, dump and wait options. None of them make any difference, unless I have replace and editauth together in which case I get a traceback with a 400 back from AWS with "A HostedZone must contain at least one NS record for the zone itself." I've already substituted my original DNS servers with some that Route53 assigned originally, so it does have the NS records. I've also tried taking out all the comments in the file, and all the sub-domain entries. I've looked through the source for a debug option, but I can't see one.
Please help! Thanks.
Hi,
I'm trying to use cli53 to migrate zone files from BIND to Route53 and need help.
I created sucessfully a zone with the command "cli53 create teste.com.br" but I'm receiving error messages while trying to import the zone file.
The zone file bellow was checked with named-checkzone, so it appears to be syntactically ok.
infrate@ubuntu1:~$ cat db.teste.com.br
$ORIGIN .
$TTL 3600 ; 1 hour
teste.com.br IN SOA ns.provedor.com.br. hotmaster.provedor.com.br.teste.com.br. (
2010070401 ; serial
7200 ; refresh (2 hours)
3600 ; retry (1 hour)
432000 ; expire (5 days)
3600 ; minimum (1 hour)
)
NS ns1.provedor.com.br.
NS ns2.provedor.com.br.
A 200.200.200.150
MX 5 mx.teste.com.br.
$ORIGIN teste.com.br.
imap CNAME imap.provedor.com.br.
mail CNAME mail.provedor.com.br.
mx CNAME mx.provedor.com.br.
pop CNAME pop.provedor.com.br.
pop3 CNAME pop.provedor.com.br.
smtp CNAME smtp.provedor.com.br.
webmail CNAME webmail.provedor.com.br.
$TTL 300 ; 5 minutes
www A 200.200.200.150
My first try was to import the zone file but received an error:
infrate@ubuntu1:~$ cli53 import -f db.teste.com.br teste.com.br
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 740, in
main()
File "/usr/local/bin/cli53", line 737, in main
args.func(args)
File "/usr/local/bin/cli53", line 513, in cmd_import
ret = r53.change_rrsets(args.zone, xml)
File "/usr/local/lib/python2.6/dist-packages/boto/route53/connection.py", line 314, in change_rrsets
body)
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
SenderInvalidChangeBatch
Tried to create resource record set [name='teste.com.br.', type=SOA'] but it already existsf5ad9eb7-4b71-11e2-b1d6-837ed7ed0574
infrate@ubuntu1:~$
So I removed the SOA and NS records:
infrate@ubuntu1:~$ cat db.teste.com.br
$ORIGIN .
$TTL 3600 ; 1 hour
A 200.200.200.150
MX 5 mx.teste.com.br.
$ORIGIN teste.com.br.
imap CNAME imap.provedor.com.br.
mail CNAME mail.provedor.com.br.
mx CNAME mx.provedor.com.br.
pop CNAME pop.provedor.com.br.
pop3 CNAME pop.provedor.com.br.
smtp CNAME smtp.provedor.com.br.
webmail CNAME webmail.provedor.com.br.
$TTL 300 ; 5 minutes
www A 200.200.200.150
And tryed again:
infrate@ubuntu1:~$ cli53 import -f db.teste.com.br teste.com.br
Traceback (most recent call last):
File "/usr/local/bin/cli53", line 740, in
main()
File "/usr/local/bin/cli53", line 737, in main
args.func(args)
File "/usr/local/bin/cli53", line 497, in cmd_import
zone = dns.zone.from_text(text, origin=origin, check_origin=False)
File "/usr/local/lib/python2.6/dist-packages/dns/zone.py", line 761, in from_text
reader.read()
File "/usr/local/lib/python2.6/dist-packages/dns/zone.py", line 710, in read
self._rr_line()
File "/usr/local/lib/python2.6/dist-packages/dns/zone.py", line 586, in _rr_line
if not name.is_subdomain(self.zone.origin):
AttributeError: 'NoneType' object has no attribute 'is_subdomain'
So I commented the A and MX records:
infrate@ubuntu1:~$ cat db.teste.com.br
$ORIGIN .
$TTL 3600 ; 1 hour
; A 200.200.200.150
; MX 5 mx.teste.com.br.
$ORIGIN teste.com.br.
imap CNAME imap.provedor.com.br.
mail CNAME mail.provedor.com.br.
mx CNAME mx.provedor.com.br.
pop CNAME pop.provedor.com.br.
pop3 CNAME pop.provedor.com.br.
smtp CNAME smtp.provedor.com.br.
webmail CNAME webmail.provedor.com.br.
$TTL 300 ; 5 minutes
www A 200.200.200.150
And this time the import was sucessfull:
infrate@ubuntu1:~$ cli53 import -f db.teste.com.br teste.com.br
ChangeInfo:
Status: PENDING
SubmittedAt: 2012-12-21T13:35:08.342Z
Id: /change/C16Z90CXX45XPJ
However, I have 200 domains to migrate and I need to migrate the A and MX records. Any suggestions to fix the zone file and import it ?
Best Regards,
Presciliano
Python 2.7.2, installed via setup.py install and pip, same results.
Not a python dev but this is what I observed when creating a record:
Traceback (most recent call last):
File "./cli53", line 738, in
main()
File "./cli53", line 735, in main
args.func(args)
File "./cli53", line 602, in cmd_rrcreate
parts = f.create_record(zone, name, rdataset)
File "./cli53", line 285, in create_record
return self._xml_changes(zone, creates=[(name,rdataset)])
TypeError: _xml_changes() takes exactly 4 arguments (3 given)
After diffing an older version which worked, I found one line that seemed key to the issue:
def _xml_changes(self, zone, creates, deletes):
def _xml_changes(self, zone, creates=[], deletes=[]):
Upon manually editing the new cli53 to put back the =[] after creates and deletes, the code runs cleanly.
Success
ChangeInfo:
Status: PENDING
SubmittedAt: 2012-10-03T23:18:19.699Z
Id: /change/C1IRX2TRblahblah
Not sure if this is the proper fix or not, but it did the job.
Let me know if I've missed something here, but I tried to figure this out and couldn't.
Route 53 lets you add an alias to the domain apex, like example.com (with no subdomain) that points to an Elastic Load Balancer. From the documentation it seems you do this with an "A" record:
http://docs.amazonwebservices.com/Route53/latest/DeveloperGuide/index.html?HowToAliasRRS.html
But I get an error when I try to do it with this type of record on clif53. Would be great if it could support it. Thanks!
Traceback (most recent call last):
File "/Applications/AWS/R53/bin/cli53", line 22, in
cli53.cli53.main()
File "/Applications/AWS/R53/src/cli53/cli53.py", line 472, in main
args.func(args)
File "/Applications/AWS/R53/src/cli53/cli53.py", line 342, in cmd_rrcreate
rdataset = _create_rdataset(args.type, args.ttl, args.values)
File "/Applications/AWS/R53/src/cli53/cli53.py", line 202, in _create_rdataset
rdtype = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, value)
File "build/bdist.macosx-10.6-x86_64/egg/dns/rdtypes/IN/A.py", line 32, in init
socket.error: illegal IP address string passed to inet_aton
ex:
$ ./cli53.py export jmtestzone01.com >bak
$ ./cli53.py import -f bak jmtestzone01.com
Traceback (most recent call last):
File "./cli53.py", line 381, in <module>
main()
File "./cli53.py", line 378, in main
args.func(args)
File "./cli53.py", line 224, in cmd_import
raise Exception, 'Could not find origin'
Exception: Could not find origin
Adding "$ORIGIN jmtestzone01.com." to the top of the exported file will help the import command to succeed
when installing using pip and python 3.2 I get:
~ # pip install cli53
Downloading/unpacking cli53
Running setup.py egg_info for package cli53
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/tmp/pip-build/cli53/setup.py", line 4, in <module>
long_description = file('README.markdown','r').read()
NameError: name 'file' is not defined
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/tmp/pip-build/cli53/setup.py", line 4, in <module>
long_description = file('README.markdown','r').read()
NameError: name 'file' is not defined
----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/cli53
Storing complete log in /root/.pip/pip.log
~ # python -V
Python 3.2.3
It could also be useful listing the requirements/dependencies on the homepage of the project
Hi,
According to Chris Moyer (Boto developer) there has been an interface change in some parts of Boto which has caused some functions cli53 to fail when running with the latest Boto, please see https://github.com/boto/boto/issues#issue/90 for details.
Cheers,
/David
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.