Repository: libcloud
Updated Branches:
  refs/heads/trunk dc4daeef4 -> b5cb7bfd3


Completed documentation and examples for the GoDaddy driver.

Signed-off-by: Anthony Shaw <anthony.p.s...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/ab5f76da
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/ab5f76da
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/ab5f76da

Branch: refs/heads/trunk
Commit: ab5f76daab1c14c83549e544f0549cfd3e25588c
Parents: 7e087d6
Author: Anthony Shaw <anthony.p.s...@gmail.com>
Authored: Thu Dec 3 10:02:06 2015 +1100
Committer: Anthony Shaw <anthony.p.s...@gmail.com>
Committed: Thu Dec 3 10:37:58 2015 +1100

----------------------------------------------------------------------
 CHANGES.rst                                    |   4 +-
 docs/_static/images/provider_logos/godaddy.png | Bin 0 -> 86453 bytes
 docs/dns/drivers/godaddy.rst                   |  96 +++++++++++++++++++-
 docs/examples/dns/create_record_custom_ttl.py  |   4 +-
 docs/examples/dns/godaddy/adding_records.py    |  10 ++
 docs/examples/dns/godaddy/listing_records.py   |  12 +++
 docs/examples/dns/godaddy/listing_zones.py     |  10 ++
 docs/examples/dns/godaddy/pricing_domain.py    |  11 +++
 docs/examples/dns/godaddy/purchasing_domain.py |  16 ++++
 docs/examples/dns/godaddy/updating_records.py  |  15 +++
 libcloud/test/dns/test_godaddy.py              |   2 +-
 11 files changed, 174 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index a3ff33c..4b8a104 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -117,8 +117,8 @@ DNS
   (GITHUB-621)
   [Alejandro Pereira]
 
-- Introduced GoDaddy DNS Driver
-  (LIBCLOUD-772, GITHUB-640)
+- Introduced GoDaddy DNS Driver with examples and documentation
+  (LIBCLOUD-772, GITHUB-640, LIBCLOUD-778)
   [Anthony Shaw]
 
 Changes with Apache Libcloud 0.19.0

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/_static/images/provider_logos/godaddy.png
----------------------------------------------------------------------
diff --git a/docs/_static/images/provider_logos/godaddy.png 
b/docs/_static/images/provider_logos/godaddy.png
new file mode 100644
index 0000000..730e4a2
Binary files /dev/null and b/docs/_static/images/provider_logos/godaddy.png 
differ

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/dns/drivers/godaddy.rst
----------------------------------------------------------------------
diff --git a/docs/dns/drivers/godaddy.rst b/docs/dns/drivers/godaddy.rst
index fc3d2c4..f2238fb 100644
--- a/docs/dns/drivers/godaddy.rst
+++ b/docs/dns/drivers/godaddy.rst
@@ -4,14 +4,107 @@ GoDaddy DNS Driver Documentation
 `GoDaddy`_ provide domain name registration and are the worlds largest with 
over 13 million customers. They also provide nameservers and DNS hosting as
 well as cloud and website hosting.
 
-See more at https://www.godaddy.com/
+.. figure:: /_static/images/provider_logos/godaddy.png
+    :align: center
+    :width: 300
+    :target: https://www.godaddy.com/
+
+Further information on `GoDaddy`_ API is available on the `GoDaddy API 
Website`_
+
+Driver features
+---------------
+
+* Manage the records for GoDaddy hosted domains
+* Price and purchase domains with an existing GoDaddy account
+* Fetch legal agreements required to register and purchase domains for a range 
of TLDs
+* Submit completed agreements to purchase domains
 
 Instantiating the driver
 -------------------------------------
 
+Before you instantiate a driver, you will need a GoDaddy account.
+
+Once you have an account you need to request a Production key on the GoDaddy 
API website: 
+https://developer.godaddy.com/getstarted#access 
+
+You can then use these details to instantiate a driver with the arguments:
+
+* `shopper_id` - Your customer ID
+* `key` - An API key
+* `secret` - The matching secret for the API key
+
 .. literalinclude:: /examples/dns/godaddy/instantiate_driver.py
    :language: python
 
+Listing zones
+---------------
+
+.. literalinclude:: /examples/dns/godaddy/listing_zones.py
+   :language: python
+
+Returns
+
+::
+
+    Zone : wassle-layer.com
+    Expires: 2018-09-30T18:22:00Z
+    Zone : wizzle-wobble.org
+    Expires: 2017-01-04T04:02:07Z
+
+Listing records
+---------------
+
+.. literalinclude:: /examples/dns/godaddy/listing_records.py
+   :language: python
+
+Returns
+
+::
+
+    Type : CNAME
+    Data: @
+    TTL: 3600
+    Type : CNAME
+    Data: @
+    TTL: 3600
+    Type : MX
+    Data: mailstore1.secureserver.net
+    TTL: 3600
+    Type : MX
+    Data: smtp.secureserver.net
+    TTL: 3600
+
+Adding records
+--------------
+
+.. literalinclude:: /examples/dns/godaddy/adding_records.py
+   :language: python
+
+Updating records
+----------------
+
+.. literalinclude:: /examples/dns/godaddy/updating_records.py
+   :language: python
+
+It is important to note that the GoDaddy API does not give records a unique 
identifier.
+So if you have multiple existing records for a single data and type, e.g. 2 A 
records for www, they will both be replaced with 1 record if you run the 
update_records method
+
+Pricing a domain
+----------------
+
+The driver supports checking the availability of a domain that you would like 
to purchase.
+
+.. literalinclude:: /examples/dns/godaddy/pricing_domain.py
+   :language: python
+
+Purchasing a domain
+-------------------
+
+Domains can be purchased by requesting the agreement schema, which is a JSON 
schema and submitted a completed document.
+
+.. literalinclude:: /examples/dns/godaddy/purchasing_domain.py
+   :language: python
+
 API Docs
 --------
 
@@ -20,3 +113,4 @@ API Docs
     :inherited-members:
 
 .. _`GoDaddy`: https://godaddy.com/
+.. _`GoDaddy API Website`: https://developer.godaddy.com/doc
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/create_record_custom_ttl.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/create_record_custom_ttl.py 
b/docs/examples/dns/create_record_custom_ttl.py
index 4632a57..3a1dd72 100644
--- a/docs/examples/dns/create_record_custom_ttl.py
+++ b/docs/examples/dns/create_record_custom_ttl.py
@@ -8,6 +8,6 @@ driver = cls(*CREDENTIALS_ZERIGO)
 
 zone = [z for z in driver.list_zones() if z.domain == 'example.com'][0]
 
-extra = {'ttl': 900}
+ttl = 900
 record = zone.create_record(name='www', type=RecordType.A, data='127.0.0.1',
-                            extra=extra)
+                            ttl=ttl)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/godaddy/adding_records.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/godaddy/adding_records.py 
b/docs/examples/dns/godaddy/adding_records.py
new file mode 100644
index 0000000..a54a496
--- /dev/null
+++ b/docs/examples/dns/godaddy/adding_records.py
@@ -0,0 +1,10 @@
+from libcloud.dns.types import Provider, RecordType
+from libcloud.dns.providers import get_driver
+
+cls = get_driver(Provider.GODADDY)
+driver = cls('customer_id', 'api_key', 'api_secret')
+zone = driver.get_zone('waffle-machines.com')
+record = zone.create_record(name='www',
+                            type=RecordType.A,
+                            data='127.0.0.1',
+                            ttl=5)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/godaddy/listing_records.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/godaddy/listing_records.py 
b/docs/examples/dns/godaddy/listing_records.py
new file mode 100644
index 0000000..8ae1703
--- /dev/null
+++ b/docs/examples/dns/godaddy/listing_records.py
@@ -0,0 +1,12 @@
+from libcloud.dns.types import Provider
+from libcloud.dns.providers import get_driver
+
+cls = get_driver(Provider.GODADDY)
+driver = cls('customer_id', 'api_key', 'api_secret')
+
+zone = driver.get_zone('wazzle-flooble.com')
+records = driver.list_records(zone)
+for record in records:
+    print("Type : %s" % record.type)
+    print("Data: %s" % record.data)
+    print("TTL: %s" % record.ttl)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/godaddy/listing_zones.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/godaddy/listing_zones.py 
b/docs/examples/dns/godaddy/listing_zones.py
new file mode 100644
index 0000000..7704c8d
--- /dev/null
+++ b/docs/examples/dns/godaddy/listing_zones.py
@@ -0,0 +1,10 @@
+from libcloud.dns.types import Provider
+from libcloud.dns.providers import get_driver
+
+cls = get_driver(Provider.GODADDY)
+driver = cls('customer_id', 'api_key', 'api_secret')
+
+zones = driver.list_zones()
+for zone in zones:
+    print("Domain : %s" % zone.domain)
+    print("Expires: %s" % zone.extra['expires'])

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/godaddy/pricing_domain.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/godaddy/pricing_domain.py 
b/docs/examples/dns/godaddy/pricing_domain.py
new file mode 100644
index 0000000..4b9b40e
--- /dev/null
+++ b/docs/examples/dns/godaddy/pricing_domain.py
@@ -0,0 +1,11 @@
+from libcloud.dns.types import Provider
+from libcloud.dns.providers import get_driver
+
+cls = get_driver(Provider.GODADDY)
+driver = cls('customer_id', 'api_key', 'api_secret')
+
+check = driver.ex_check_availability("wazzlewobbleflooble.com")
+if check.available is True:
+    print("Domain is available for %s %s" % (check.price, check.currency))
+else:
+    print("Domain is taken")

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/godaddy/purchasing_domain.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/godaddy/purchasing_domain.py 
b/docs/examples/dns/godaddy/purchasing_domain.py
new file mode 100644
index 0000000..d2ce231
--- /dev/null
+++ b/docs/examples/dns/godaddy/purchasing_domain.py
@@ -0,0 +1,16 @@
+from libcloud.dns.types import Provider
+from libcloud.dns.providers import get_driver
+
+cls = get_driver(Provider.GODADDY)
+driver = cls('customer_id', 'api_key', 'api_secret')
+
+# Get the JSON schema for the domain
+schema = driver.ex_get_purchase_schema('com')
+
+# Use this schema to prepare a purchase request document
+
+# Load a JSON document that has the completed purchase request
+file = open('purchase_request.json', 'r')
+document = file.read()
+order = driver.ex_purchase_domain(document)
+print("Made request : order ID : %s" % order.order_id)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/docs/examples/dns/godaddy/updating_records.py
----------------------------------------------------------------------
diff --git a/docs/examples/dns/godaddy/updating_records.py 
b/docs/examples/dns/godaddy/updating_records.py
new file mode 100644
index 0000000..902f56c
--- /dev/null
+++ b/docs/examples/dns/godaddy/updating_records.py
@@ -0,0 +1,15 @@
+from libcloud.dns.types import Provider, RecordType
+from libcloud.dns.providers import get_driver
+
+cls = get_driver(Provider.GODADDY)
+driver = cls('customer_id', 'api_key', 'api_secret')
+
+record = driver.get_record(
+    'waffle-machines.com',
+    'www:A')
+record = driver.update_record(
+    record=record,
+    name='www',
+    type=RecordType.A,
+    data='50.63.202.22'
+)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/ab5f76da/libcloud/test/dns/test_godaddy.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_godaddy.py 
b/libcloud/test/dns/test_godaddy.py
index 76360b1..027d108 100644
--- a/libcloud/test/dns/test_godaddy.py
+++ b/libcloud/test/dns/test_godaddy.py
@@ -15,7 +15,7 @@
 
 import sys
 import unittest
-
+from pprint import pprint
 from libcloud.utils.py3 import httplib
 from libcloud.dns.drivers.godaddy import GoDaddyDNSDriver
 from libcloud.test import MockHttp

Reply via email to