You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2016/03/15 22:12:57 UTC

[1/4] libcloud git commit: Making create_target in line with all the other dictionaries with camelcase

Repository: libcloud
Updated Branches:
  refs/heads/trunk 18d4c42e9 -> af7376cd3


Making create_target in line with all the other dictionaries with camelcase


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

Branch: refs/heads/trunk
Commit: 9b2aef87b12bf5dd6f5125289f31b49f25c9b348
Parents: b6f38b9
Author: Jeffrey Dunham <je...@gmail.com>
Authored: Tue Mar 8 23:07:38 2016 -0500
Committer: anthony-shaw <an...@gmail.com>
Committed: Wed Mar 16 08:12:26 2016 +1100

----------------------------------------------------------------------
 libcloud/backup/drivers/dimensiondata.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/9b2aef87/libcloud/backup/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/backup/drivers/dimensiondata.py b/libcloud/backup/drivers/dimensiondata.py
index 7905b33..6645169 100644
--- a/libcloud/backup/drivers/dimensiondata.py
+++ b/libcloud/backup/drivers/dimensiondata.py
@@ -113,7 +113,7 @@ class DimensionDataBackupDriver(BackupDriver):
 
         :rtype: Instance of :class:`BackupTarget`
         """
-        service_plan = extra.get('service_plan', 'Advanced')
+        service_plan = extra.get('servicePlan', 'Advanced')
         create_node = ET.Element('NewBackup',
                                  {'xmlns': BACKUP_NS})
         create_node.set('servicePlan', service_plan)


[2/4] libcloud git commit: Adding a new method ex_get_target_by_id with tests

Posted by an...@apache.org.
Adding a new method ex_get_target_by_id with tests


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

Branch: refs/heads/trunk
Commit: b6f38b9d5f17a9a5ad148acbbbbcf37aaf5b0ff2
Parents: fd7effb
Author: Jeffrey Dunham <je...@gmail.com>
Authored: Tue Mar 8 21:16:39 2016 -0500
Committer: anthony-shaw <an...@gmail.com>
Committed: Wed Mar 16 08:12:26 2016 +1100

----------------------------------------------------------------------
 libcloud/backup/drivers/dimensiondata.py        | 26 +++++++++++++------
 libcloud/common/dimensiondata.py                |  3 ++-
 ...ver_e75ead52_692f_4314_8725_c8a4f4d13a87.xml | 27 ++++++++++++++++++++
 libcloud/test/backup/test_dimensiondata.py      | 11 ++++++++
 4 files changed, 58 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/b6f38b9d/libcloud/backup/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/backup/drivers/dimensiondata.py b/libcloud/backup/drivers/dimensiondata.py
index d47f889..7905b33 100644
--- a/libcloud/backup/drivers/dimensiondata.py
+++ b/libcloud/backup/drivers/dimensiondata.py
@@ -209,14 +209,11 @@ class DimensionDataBackupDriver(BackupDriver):
             'server/%s/backup/modify' % (server_id),
             method='POST',
             data=ET.tostring(request)).object
-        return BackupTarget(
-            id=server_id,
-            name=name,
-            address=address,
-            type=type,
-            extra=extra,
-            driver=self
-        )
+        if isinstance(target, BackupTarget):
+            target.extra = extra
+        else:
+            target = self.ex_get_target_by_id(server_id)
+        return target
 
     def delete_target(self, target):
         """
@@ -379,6 +376,19 @@ class DimensionDataBackupDriver(BackupDriver):
         raise NotImplementedError(
             'cancel_target_job not implemented for this driver')
 
+    def ex_get_target_by_id(self, id):
+        """
+        Get a target by server id
+
+        :param id: The id of the target you want to get
+        :type  id: ``str``
+
+        :rtype: :class:`BackupTarget`
+        """
+        node = self.connection.request_with_orgId_api_2(
+            'server/server/%s' % id).object
+        return self._to_target(node)
+
     def ex_add_client_to_target(self, target, client_type, storage_policy,
                                 schedule_policy, trigger, email):
         """

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b6f38b9d/libcloud/common/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/common/dimensiondata.py b/libcloud/common/dimensiondata.py
index 9178599..ee7d831 100644
--- a/libcloud/common/dimensiondata.py
+++ b/libcloud/common/dimensiondata.py
@@ -1089,7 +1089,8 @@ class DimensionDataBackupDetails(object):
         :param service_plan: The service plan for backups. i.e (Essentials)
         :type  service_plan: ``str``
 
-        :param status: The overall status this backup target. i.e. (unregistered)
+        :param status: The overall status this backup target.
+                       i.e. (unregistered)
         :type  status: ``str``
 
         :param clients: Backup clients attached to this target

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b6f38b9d/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml b/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
new file mode 100644
index 0000000..c64c530
--- /dev/null
+++ b/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<server xmlns="urn:didata.com:api:cloud:types" id="e75ead52-692f-4314-8725-c8a4f4d13a87" datacenterId="NA9">
+        <name>Production Web Server</name>
+        <description>Server to host our main web application.</description>
+        <operatingSystem id="WIN2008S32" displayName="WIN2008S/32" family="WINDOWS" />
+        <cpu count="2" speed="STANDARD" coresPerSocket="1" />
+        <memoryGb>4</memoryGb>
+        <disk id="c2e1f199-116e-4dbc-9960-68720b832b0a" scsiId="0" sizeGb="50" speed="STANDARD" state="NORMAL" />
+        <networkInfo networkDomainId="553f26b6-2a73-42c3-a78b-6116f11291d0">
+            <primaryNic id="5e869800-df7b-4626-bcbf-8643b8be11fd" privateIpv4="10.0.4.8" ipv6="2607:f480:1111:1282:2960:fb72:7154:6160" vlanId="bc529e20-dc6f-42ba-be20-0ffe44d1993f" vlanName="Production VLAN" state="NORMAL" />
+        </networkInfo>
+        <backup assetId="5579f3a7-4c32-4cf5-8a7e-b45c36a35c10" servicePlan="Advanced" state="NORMAL" />
+        <monitoring monitoringId="11049" servicePlan="ESSENTIALS" state="NORMAL" />
+        <softwareLabel>MSSQL2008R2S</softwareLabel>
+        <sourceImageId>3ebf3c0f-90fe-4a8b-8585-6e65b316592c</sourceImageId>
+        <createTime>2015-12-02T10:31:33.000Z</createTime>
+        <deployed>true</deployed>
+        <started>true</started>
+        <state>PENDING_CHANGE</state>
+        <progress>
+            <action>DEPLOY_SERVER</action>
+            <requestTime>2015-12-02T11:07:40.000Z</requestTime>
+            <userName>devuser1</userName>
+        </progress>
+        <vmwareTools versionStatus="CURRENT" runningStatus="RUNNING" apiVersion="9354" />
+        <virtualHardware version="vmx-08" upToDate="false" />
+    </server>

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b6f38b9d/libcloud/test/backup/test_dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/test/backup/test_dimensiondata.py b/libcloud/test/backup/test_dimensiondata.py
index d7a587b..5411cb4 100644
--- a/libcloud/test/backup/test_dimensiondata.py
+++ b/libcloud/test/backup/test_dimensiondata.py
@@ -75,6 +75,12 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin):
         new_target = self.driver.update_target(target, extra=extra)
         self.assertEqual(new_target.extra['servicePlan'], 'Enterprise')
 
+    def test_update_target_STR(self):
+        target = 'e75ead52-692f-4314-8725-c8a4f4d13a87'
+        extra = {'servicePlan': 'Advanced'}
+        new_target = self.driver.update_target(target, extra=extra)
+        self.assertEqual(new_target.extra['servicePlan'], 'Advanced')
+
     def test_delete_target(self):
         target = self.driver.list_targets()[0]
         self.assertTrue(self.driver.delete_target(target))
@@ -256,6 +262,11 @@ class DimensionDataMockHttp(MockHttp):
         body = self.fixtures.load('oec_0_9_myaccount.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
+    def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87(self, method, url, body, headers):
+        body = self.fixtures.load(
+            'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
     def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server(self, method, url, body, headers):
         body = self.fixtures.load(
             'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server.xml')


[4/4] libcloud git commit: Adding in tests to test default values, fixing a bug found where defaults didn't work properly Closes #722

Posted by an...@apache.org.
Adding in tests to test default values, fixing a bug found where defaults didn't work properly
Closes #722


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

Branch: refs/heads/trunk
Commit: af7376cd3f757db8aad293b9641049d676082ed0
Parents: 9b2aef8
Author: Jeffrey Dunham <je...@gmail.com>
Authored: Mon Mar 14 18:29:24 2016 -0400
Committer: anthony-shaw <an...@gmail.com>
Committed: Wed Mar 16 08:12:32 2016 +1100

----------------------------------------------------------------------
 libcloud/backup/drivers/dimensiondata.py        | 16 +++--
 ...ver_e75ead52_692f_4314_8725_c8a4f4d13a87.xml |  2 +-
 ...ad52_692f_4314_8725_c8a4f4d13a87_DEFAULT.xml | 27 ++++++++
 libcloud/test/backup/test_dimensiondata.py      | 66 ++++++++++++++++++--
 4 files changed, 100 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/af7376cd/libcloud/backup/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/backup/drivers/dimensiondata.py b/libcloud/backup/drivers/dimensiondata.py
index 6645169..cea656a 100644
--- a/libcloud/backup/drivers/dimensiondata.py
+++ b/libcloud/backup/drivers/dimensiondata.py
@@ -35,6 +35,8 @@ from libcloud.common.dimensiondata import GENERAL_NS, BACKUP_NS
 from libcloud.utils.py3 import basestring
 from libcloud.utils.xml import fixxpath, findtext, findall
 
+DEFAULT_BACKUP_PLAN = 'Advanced'
+
 
 class DimensionDataBackupDriver(BackupDriver):
     """
@@ -113,7 +115,11 @@ class DimensionDataBackupDriver(BackupDriver):
 
         :rtype: Instance of :class:`BackupTarget`
         """
-        service_plan = extra.get('servicePlan', 'Advanced')
+        if extra is not None:
+            service_plan = extra.get('servicePlan', DEFAULT_BACKUP_PLAN)
+        else:
+            service_plan = DEFAULT_BACKUP_PLAN
+
         create_node = ET.Element('NewBackup',
                                  {'xmlns': BACKUP_NS})
         create_node.set('servicePlan', service_plan)
@@ -180,8 +186,7 @@ class DimensionDataBackupDriver(BackupDriver):
         return NotImplementedError(
             'create_target_from_container not supported for this driver')
 
-    def update_target(self, target, name=None, address=None, extra=None,
-                      type=BackupTargetType.VIRTUAL):
+    def update_target(self, target, name=None, address=None, extra=None):
         """
         Update the properties of a backup target, only changing the serviceplan
         is supported.
@@ -200,7 +205,10 @@ class DimensionDataBackupDriver(BackupDriver):
 
         :rtype: Instance of :class:`BackupTarget`
         """
-        service_plan = extra.get('servicePlan', 'Advanced')
+        if extra is not None:
+            service_plan = extra.get('servicePlan', DEFAULT_BACKUP_PLAN)
+        else:
+            service_plan = DEFAULT_BACKUP_PLAN
         request = ET.Element('ModifyBackup',
                              {'xmlns': BACKUP_NS})
         request.set('servicePlan', service_plan)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af7376cd/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml b/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
index c64c530..07b1319 100644
--- a/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
+++ b/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml
@@ -9,7 +9,7 @@
         <networkInfo networkDomainId="553f26b6-2a73-42c3-a78b-6116f11291d0">
             <primaryNic id="5e869800-df7b-4626-bcbf-8643b8be11fd" privateIpv4="10.0.4.8" ipv6="2607:f480:1111:1282:2960:fb72:7154:6160" vlanId="bc529e20-dc6f-42ba-be20-0ffe44d1993f" vlanName="Production VLAN" state="NORMAL" />
         </networkInfo>
-        <backup assetId="5579f3a7-4c32-4cf5-8a7e-b45c36a35c10" servicePlan="Advanced" state="NORMAL" />
+        <backup assetId="5579f3a7-4c32-4cf5-8a7e-b45c36a35c10" servicePlan="Essentials" state="NORMAL" />
         <monitoring monitoringId="11049" servicePlan="ESSENTIALS" state="NORMAL" />
         <softwareLabel>MSSQL2008R2S</softwareLabel>
         <sourceImageId>3ebf3c0f-90fe-4a8b-8585-6e65b316592c</sourceImageId>

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af7376cd/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87_DEFAULT.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87_DEFAULT.xml b/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87_DEFAULT.xml
new file mode 100644
index 0000000..c64c530
--- /dev/null
+++ b/libcloud/test/backup/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87_DEFAULT.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<server xmlns="urn:didata.com:api:cloud:types" id="e75ead52-692f-4314-8725-c8a4f4d13a87" datacenterId="NA9">
+        <name>Production Web Server</name>
+        <description>Server to host our main web application.</description>
+        <operatingSystem id="WIN2008S32" displayName="WIN2008S/32" family="WINDOWS" />
+        <cpu count="2" speed="STANDARD" coresPerSocket="1" />
+        <memoryGb>4</memoryGb>
+        <disk id="c2e1f199-116e-4dbc-9960-68720b832b0a" scsiId="0" sizeGb="50" speed="STANDARD" state="NORMAL" />
+        <networkInfo networkDomainId="553f26b6-2a73-42c3-a78b-6116f11291d0">
+            <primaryNic id="5e869800-df7b-4626-bcbf-8643b8be11fd" privateIpv4="10.0.4.8" ipv6="2607:f480:1111:1282:2960:fb72:7154:6160" vlanId="bc529e20-dc6f-42ba-be20-0ffe44d1993f" vlanName="Production VLAN" state="NORMAL" />
+        </networkInfo>
+        <backup assetId="5579f3a7-4c32-4cf5-8a7e-b45c36a35c10" servicePlan="Advanced" state="NORMAL" />
+        <monitoring monitoringId="11049" servicePlan="ESSENTIALS" state="NORMAL" />
+        <softwareLabel>MSSQL2008R2S</softwareLabel>
+        <sourceImageId>3ebf3c0f-90fe-4a8b-8585-6e65b316592c</sourceImageId>
+        <createTime>2015-12-02T10:31:33.000Z</createTime>
+        <deployed>true</deployed>
+        <started>true</started>
+        <state>PENDING_CHANGE</state>
+        <progress>
+            <action>DEPLOY_SERVER</action>
+            <requestTime>2015-12-02T11:07:40.000Z</requestTime>
+            <userName>devuser1</userName>
+        </progress>
+        <vmwareTools versionStatus="CURRENT" runningStatus="RUNNING" apiVersion="9354" />
+        <virtualHardware version="vmx-08" upToDate="false" />
+    </server>

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af7376cd/libcloud/test/backup/test_dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/test/backup/test_dimensiondata.py b/libcloud/test/backup/test_dimensiondata.py
index 5411cb4..62fa4e9 100644
--- a/libcloud/test/backup/test_dimensiondata.py
+++ b/libcloud/test/backup/test_dimensiondata.py
@@ -13,12 +13,18 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+try:
+    from lxml import etree as ET
+except ImportError:
+    from xml.etree import ElementTree as ET
+
 import sys
 from libcloud.utils.py3 import httplib
 
 from libcloud.common.dimensiondata import DimensionDataAPIException
 from libcloud.common.types import InvalidCredsError
 from libcloud.backup.drivers.dimensiondata import DimensionDataBackupDriver as DimensionData
+from libcloud.backup.drivers.dimensiondata import DEFAULT_BACKUP_PLAN
 
 from libcloud.test import MockHttp, unittest
 from libcloud.test.backup import TestCaseMixin
@@ -59,6 +65,14 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin):
         self.assertEqual(target.address, 'e75ead52-692f-4314-8725-c8a4f4d13a87')
         self.assertEqual(target.extra['servicePlan'], 'Enterprise')
 
+    def test_create_target_DEFAULT(self):
+        DimensionDataMockHttp.type = 'DEFAULT'
+        target = self.driver.create_target(
+            'name',
+            'e75ead52-692f-4314-8725-c8a4f4d13a87')
+        self.assertEqual(target.id, 'ee7c4b64-f7af-4a4f-8384-be362273530f')
+        self.assertEqual(target.address, 'e75ead52-692f-4314-8725-c8a4f4d13a87')
+
     def test_create_target_EXISTS(self):
         DimensionDataMockHttp.type = 'EXISTS'
         with self.assertRaises(DimensionDataAPIException) as context:
@@ -71,15 +85,20 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin):
 
     def test_update_target(self):
         target = self.driver.list_targets()[0]
-        extra = {'servicePlan': 'Enterprise'}
+        extra = {'servicePlan': 'Essentials'}
         new_target = self.driver.update_target(target, extra=extra)
-        self.assertEqual(new_target.extra['servicePlan'], 'Enterprise')
+        self.assertEqual(new_target.extra['servicePlan'], 'Essentials')
+
+    def test_update_target_DEFAULT(self):
+        DimensionDataMockHttp.type = 'DEFAULT'
+        target = 'e75ead52-692f-4314-8725-c8a4f4d13a87'
+        self.driver.update_target(target)
 
     def test_update_target_STR(self):
         target = 'e75ead52-692f-4314-8725-c8a4f4d13a87'
-        extra = {'servicePlan': 'Advanced'}
+        extra = {'servicePlan': 'Essentials'}
         new_target = self.driver.update_target(target, extra=extra)
-        self.assertEqual(new_target.extra['servicePlan'], 'Advanced')
+        self.assertEqual(new_target.extra['servicePlan'], 'Essentials')
 
     def test_delete_target(self):
         target = self.driver.list_targets()[0]
@@ -242,6 +261,10 @@ class DimensionDataMockHttp(MockHttp):
         body = self.fixtures.load('oec_0_9_myaccount.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
+    def _oec_0_9_myaccount_DEFAULT(self, method, url, body, headers):
+        body = self.fixtures.load('oec_0_9_myaccount.xml')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
     def _oec_0_9_myaccount_INPROGRESS(self, method, url, body, headers):
         body = self.fixtures.load('oec_0_9_myaccount.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
@@ -267,6 +290,11 @@ class DimensionDataMockHttp(MockHttp):
             'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
+    def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87_DEFAULT(self, method, url, body, headers):
+        body = self.fixtures.load(
+            'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server_e75ead52_692f_4314_8725_c8a4f4d13a87_DEFAULT.xml')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
     def _caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server(self, method, url, body, headers):
         body = self.fixtures.load(
             'caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_server.xml')
@@ -325,6 +353,18 @@ class DimensionDataMockHttp(MockHttp):
             'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_INFO_NOJOB.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
+    def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_DEFAULT(
+            self, method, url, body, headers):
+        if method != 'POST':
+            raise InvalidRequestError('Only POST is accepted for this test')
+        request = ET.fromstring(body)
+        service_plan = request.get('servicePlan')
+        if service_plan != DEFAULT_BACKUP_PLAN:
+            raise InvalidRequestError('The default plan %s should have been passed in.  Not %s' % (DEFAULT_BACKUP_PLAN, service_plan))
+        body = self.fixtures.load(
+            'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_ENABLE.xml')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
     def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup(
             self, method, url, body, headers):
         if method == 'POST':
@@ -354,8 +394,22 @@ class DimensionDataMockHttp(MockHttp):
 
     def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_modify(
             self, method, url, body, headers):
-        body = self.fixtures.load(
-            'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_modify.xml')
+        request = ET.fromstring(body)
+        service_plan = request.get('servicePlan')
+        if service_plan != 'Essentials':
+            raise InvalidRequestError("Expected Essentials backup plan in request")
+        body = self.fixtures.load('oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_modify.xml')
+
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+    def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_modify_DEFAULT(
+            self, method, url, body, headers):
+        request = ET.fromstring(body)
+        service_plan = request.get('servicePlan')
+        if service_plan != DEFAULT_BACKUP_PLAN:
+            raise InvalidRequestError("Expected % backup plan in test" % DEFAULT_BACKUP_PLAN)
+        body = self.fixtures.load('oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_modify.xml')
+
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
     def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_30b1ff76_c76d_4d7c_b39d_3b72be0384c8(


[3/4] libcloud git commit: Quick fixes to backups

Posted by an...@apache.org.
Quick fixes to backups


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

Branch: refs/heads/trunk
Commit: fd7effb18c24cb6308611f9755f537cb9e46c70c
Parents: 18d4c42
Author: Jeffrey Dunham <je...@gmail.com>
Authored: Sat Mar 5 19:44:48 2016 -0500
Committer: anthony-shaw <an...@gmail.com>
Committed: Wed Mar 16 08:12:26 2016 +1100

----------------------------------------------------------------------
 libcloud/backup/drivers/dimensiondata.py | 15 +++++++++++----
 libcloud/common/dimensiondata.py         |  8 ++++----
 2 files changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/fd7effb1/libcloud/backup/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/backup/drivers/dimensiondata.py b/libcloud/backup/drivers/dimensiondata.py
index 4c0319a..d47f889 100644
--- a/libcloud/backup/drivers/dimensiondata.py
+++ b/libcloud/backup/drivers/dimensiondata.py
@@ -180,7 +180,8 @@ class DimensionDataBackupDriver(BackupDriver):
         return NotImplementedError(
             'create_target_from_container not supported for this driver')
 
-    def update_target(self, target, name=None, address=None, extra=None):
+    def update_target(self, target, name=None, address=None, extra=None,
+                      type=BackupTargetType.VIRTUAL):
         """
         Update the properties of a backup target, only changing the serviceplan
         is supported.
@@ -208,8 +209,14 @@ class DimensionDataBackupDriver(BackupDriver):
             'server/%s/backup/modify' % (server_id),
             method='POST',
             data=ET.tostring(request)).object
-        target.extra = extra
-        return target
+        return BackupTarget(
+            id=server_id,
+            name=name,
+            address=address,
+            type=type,
+            extra=extra,
+            driver=self
+        )
 
     def delete_target(self, target):
         """
@@ -558,7 +565,7 @@ class DimensionDataBackupDriver(BackupDriver):
         return DimensionDataBackupDetails(
             asset_id=object.get('asset_id'),
             service_plan=object.get('servicePlan'),
-            state=object.get('state'),
+            status=object.get('state'),
             clients=self._to_clients(object)
         )
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/fd7effb1/libcloud/common/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/common/dimensiondata.py b/libcloud/common/dimensiondata.py
index 635ee5e..9178599 100644
--- a/libcloud/common/dimensiondata.py
+++ b/libcloud/common/dimensiondata.py
@@ -1079,7 +1079,7 @@ class DimensionDataBackupDetails(object):
     a targets backups configuration
     """
 
-    def __init__(self, asset_id, service_plan, state, clients=None):
+    def __init__(self, asset_id, service_plan, status, clients=None):
         """
         Initialize an instance of :class:`DimensionDataBackupDetails`
 
@@ -1089,15 +1089,15 @@ class DimensionDataBackupDetails(object):
         :param service_plan: The service plan for backups. i.e (Essentials)
         :type  service_plan: ``str``
 
-        :param state: The overall state this backup target. i.e. (unregistered)
-        :type  state: ``str``
+        :param status: The overall status this backup target. i.e. (unregistered)
+        :type  status: ``str``
 
         :param clients: Backup clients attached to this target
         :type  clients: ``list`` of :class:`DimensionDataBackupClient`
         """
         self.asset_id = asset_id
         self.service_plan = service_plan
-        self.state = state
+        self.status = status
         self.clients = clients
 
     def __repr__(self):