-
Notifications
You must be signed in to change notification settings - Fork 924
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LIBCLOUD-772 driver class for GoDaddy DNS #640
LIBCLOUD-772 driver class for GoDaddy DNS #640
Conversation
tonybaloney
commented
Nov 24, 2015
- Implement driver methods
- Document usage and examples
- Add tests and responses based on developer.godaddy.com
Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
As far as test fixtures go - I would recommend to use actual responses you get back when talking to the API. Maybe times before we encountered an issue with out of date or incorrect docs (I just encountered that issue with CloudFlare DNS driver a couple of days ago - some of the responses in the docs were incorrect and out of date). Sadly it looks like most of the provider documentation is still written manually and not automatically generated from code. |
…s, add and update records, cancel domains, check availability, validate purchase requests Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
GoDaddy records don't have IDs, and when you update or query them you combine the name and type, so I turned that into the ID. Just for get_record, for lack of an alternative. |
@Kami your thoughts please. this is complete now |
Yeah, I believe GCE driver does something like that as well. |
@Kami as per your suggestion i used real API responses for the tests as well. except the "purchase domain" one, that would get expensive |
if not self.body: | ||
return None | ||
# json.loads doesn't like the regex expressions used in godaddy schema | ||
self.body = self.body.replace('\\.', '\\\\.') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm, ok :P
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.google.com.au/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=json%20loads%20invalid%20escape yeah I'm not the only one. the other option is to introduce cjson, but adding another prereq to the project for just one regex statement seems excessive
Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
'name': name, | ||
'data': data, | ||
'priority': 1, | ||
'ttl': extra['ttl'] if hasattr(extra, 'ttl') else 5, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just noticed you use hasattr
. This won't work since hasattr
only works on class instances. For dictionaries you should either use key in dict
or dict.get(key, default_value)
.
Thanks. Added some comments. |
Ah, you are fast! :) |
* added method for _format_record to avoid DRY in create and update record * raise record does not exist error Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
…ords Signed-off-by: Anthony Shaw <anthony.p.shaw@gmail.com>
|
ok @Kami done. very thorough code review! |
if extra is None: | ||
extra = {} | ||
new_record = {} | ||
if type is RecordType.SRV: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here, should also use ==
.
A couple of more things. Besides that, LGTM, +1 |
It appears that this driver never worked - https://stackoverflow.com/questions/35553386/apache-libcloud-dns-and-godaddy-name-or-service-not-known I pushed a fix in a3ba6a4 |