DimensionData: Adding in new methods/tests for backups
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/fe86be74 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/fe86be74 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/fe86be74 Branch: refs/heads/trunk Commit: fe86be74e06a0da6af9400173270e48554567cc4 Parents: 513bc17 Author: Jeffrey Dunham <jeffrey.a.dun...@gmail.com> Authored: Mon Feb 8 13:48:12 2016 -0500 Committer: anthony-shaw <anthony.p.s...@gmail.com> Committed: Wed Feb 10 12:08:06 2016 +1100 ---------------------------------------------------------------------- libcloud/backup/drivers/dimensiondata.py | 138 +++++++++++++++++++ ...ead52_692f_4314_8725_c8a4f4d13a87_backup.xml | 18 --- ...2f_4314_8725_c8a4f4d13a87_backup_DISABLE.xml | 7 + ...92f_4314_8725_c8a4f4d13a87_backup_ENABLE.xml | 18 +++ ..._692f_4314_8725_c8a4f4d13a87_backup_INFO.xml | 11 ++ ...5_c8a4f4d13a87_backup_client_SUCCESS_PUT.xml | 13 ++ libcloud/test/backup/test_dimensiondata.py | 42 +++++- 7 files changed, 226 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/backup/drivers/dimensiondata.py ---------------------------------------------------------------------- diff --git a/libcloud/backup/drivers/dimensiondata.py b/libcloud/backup/drivers/dimensiondata.py index 15e8251..e35fd76 100644 --- a/libcloud/backup/drivers/dimensiondata.py +++ b/libcloud/backup/drivers/dimensiondata.py @@ -38,6 +38,41 @@ class DimensionDataBackupClientType(object): self.description = description +class DimensionDataBackupDetails(object): + def __init__(self, asset_id, service_plan, state, clients=[]): + self.asset_id = asset_id + self.service_plan = service_plan + self.state = state + self.clients = clients + + +class DimensionDataBackupClient(object): + def __init__(self, type, is_file_system, status, description, + schedule_pol, storage_pol, trigger=None, email=None, + last_backup_time=None, next_backup=None, download_url=None, + total_backup_size=None, running_job=None): + self.type = type + self.is_file_system = is_file_system + self.status = status + self.description = description + self.schedule_policy = schedule_pol + self.storage_policy = storage_pol + self.trigger = trigger + self.email = email + self.last_backup_time = last_backup_time + self.next_backup = next_backup + self.total_backup_size = total_backup_size + self.download_url = download_url + self.running_job = running_job + + +class DimensionDataBackupRunningJob(object): + def __init__(self, id, status, percentage=0): + self.id = id + self.percentage = percentage + self.status = status + + class DimensionDataBackupStoragePolicy(object): def __init__(self, name, retention_period, secondary_location): self.name = name @@ -232,6 +267,8 @@ class DimensionDataBackupDriver(BackupDriver): :param target: Backup target to delete :type target: Instance of :class:`BackupTarget` + + :rtype: ``bool`` """ response = self.connection.request_with_orgId_api_1( 'server/%s/backup?disable' % (target.address), @@ -384,6 +421,73 @@ class DimensionDataBackupDriver(BackupDriver): raise NotImplementedError( 'cancel_target_job not implemented for this driver') + def ex_add_client_to_target(self, target, client, storage_policy, + schedule_policy, trigger, email): + """ + Add a client to a target + + :param target: Backup target with the backup data + :type target: Instance of :class:`BackupTarget` or ``str`` + + :param client: Client to add to the target + :type client: ``str`` + + :param storage_policy: The storage policy for the client + :type storage_policy: ``str`` + + :param schedule_policy: The storage policy for the client + :type schedule_policy: ``str`` + + :param trigger: The notify trigger for the client + :type trigger: ``str`` + + :param email: The notify email for the client + :type email: ``str`` + + :rtype: ``bool`` + """ + + if isinstance(target, BackupTarget): + server_id = target.address + else: + server_id = target + + backup_elm = ET.Element('NewBackupClient', + {'xmlns': BACKUP_NS}) + ET.SubElement(backup_elm, "type").text = client + ET.SubElement(backup_elm, "storagePolicyName").text = storage_policy + ET.SubElement(backup_elm, "schedulePolicyName").text = schedule_policy + alerting_elm = ET.SubElement(backup_elm, "alerting") + ET.SubElement(alerting_elm, "trigger").text = trigger + ET.SubElement(alerting_elm, "emailAddress").text = email + + response = self.connection.request_with_orgId_api_1( + 'server/%s/backup/client' % (server_id), + method='POST', + data=ET.tostring(backup_elm)).object + + response_code = findtext(response, 'result', GENERAL_NS) + return response_code in ['IN_PROGRESS', 'SUCCESS'] + + def ex_get_backup_details_for_target(self, target): + """ + Returns a list of available backup client types + + :param target: The backup target to list available types for + :type target: :class:`BackupTarget` or ``str`` + + :rtype: ``list`` of :class:`DimensionDataBackupDetails` + """ + + if isinstance(target, BackupTarget): + server_id = target.address + else: + server_id = target + response = self.connection.request_with_orgId_api_1( + 'server/%s/backup' % (server_id), + method='GET').object + return self._to_backup_details(response) + def ex_list_available_client_types(self, target): """ Returns a list of available backup client types @@ -461,6 +565,40 @@ class DimensionDataBackupDriver(BackupDriver): is_file_system=bool(element.get('isFileSystem') == 'true') ) + def _to_backup_details(self, object): + return DimensionDataBackupDetails( + asset_id=object.get('asset_id'), + service_plan=object.get('servicePlan'), + state=object.get('state'), + clients=self._to_clients(object) + ) + + def _to_clients(self, object): + elements = object.findall(fixxpath('backupClient', BACKUP_NS)) + + return [self._to_client(el) for el in elements] + + def _to_client(self, element): + job = element.find(fixxpath('runningJob', BACKUP_NS)) + running_job = None + if job is not None: + running_job = DimensionDataBackupRunningJob( + id=job.get('id'), + status=job.get('status'), + percentage=int(job.get('percentageComplete')) + ) + + return DimensionDataBackupClient( + type=element.get('type'), + is_file_system=bool(element.get('isFileSystem') == 'true'), + status=element.get('status'), + description=findtext(element, 'description', BACKUP_NS), + schedule_pol=findtext(element, 'schedulePolicyName', BACKUP_NS), + storage_pol=findtext(element, 'storagePolicyName', BACKUP_NS), + download_url=findtext(element, 'downloadUrl', BACKUP_NS), + running_job=running_job + ) + def _to_targets(self, object): node_elements = object.findall(fixxpath('server', TYPES_URN)) http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup.xml b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup.xml deleted file mode 100644 index 6012447..0000000 --- a/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<ns6:Status xmlns:ns16="http://oec.api.opsource.net/schemas/storage" - xmlns="http://oec.api.opsource.net/schemas/server" - xmlns:ns14="http://oec.api.opsource.net/schemas/support" - xmlns:ns15="http://oec.api.opsource.net/schemas/multigeo" - xmlns:ns9="http://oec.api.opsource.net/schemas/admin" - xmlns:ns5="http://oec.api.opsource.net/schemas/vip" - xmlns:ns12="http://oec.api.opsource.net/schemas/whitelabel" - xmlns:ns13="http://oec.api.opsource.net/schemas/reset" - xmlns:ns6="http://oec.api.opsource.net/schemas/general" xmlns:ns7="http://oec.api.opsource.net/schemas/datacenter" xmlns:ns10="http://oec.api.opsource.net/schemas/serverbootstrap" xmlns:ns8="http://oec.api.opsource.net/schemas/manualimport" xmlns:ns11="http://oec.api.opsource.net/schemas/backup" xmlns:ns2="http://oec.api.opsource.net/schemas/directory" xmlns:ns4="http://oec.api.opsource.net/schemas/network" xmlns:ns3="http://oec.api.opsource.net/schemas/organization"> - <ns6:operation>Enable Backup for Server</ns6:operation> - <ns6:result>SUCCESS</ns6:result> - <ns6:resultDetail>Backup enabled for Server - see additional Information for Asset ID</ns6:resultDetail> - <ns6:resultCode>REASON_0</ns6:resultCode> - <ns6:additionalInformation name="assetId"> - <ns6:value>ee7c4b64-f7af-4a4f-8384-be362273530f</ns6:value> - </ns6:additionalInformation> -</ns6:Status> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_DISABLE.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_DISABLE.xml b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_DISABLE.xml new file mode 100644 index 0000000..bfc949d --- /dev/null +++ b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_DISABLE.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<ns13:Status xmlns:ns16="http://oec.api.opsource.net/schemas/serverbootstrap" xmlns="http://oec.api.opsource.net/schemas/server" xmlns:ns14="http://oec.api.opsource.net/schemas/datacenter" xmlns:ns15="http://oec.api.opsource.net/schemas/reset" xmlns:ns9="http://oec.api.opsource.net/schemas/storage" xmlns:ns5="http://oec.api.opsource.net/schemas/backup" xmlns:ns12="http://oec.api.opsource.net/schemas/whitelabel" xmlns:ns13="http://oec.api.opsource.net/schemas/general" xmlns:ns6="http://oec.api.opsource.net/schemas/support" xmlns:ns7="http://oec.api.opsource.net/schemas/organization" xmlns:ns10="http://oec.api.opsource.net/schemas/manualimport" xmlns:ns8="http://oec.api.opsource.net/schemas/multigeo" xmlns:ns11="http://oec.api.opsource.net/schemas/vip" xmlns:ns2="http://oec.api.opsource.net/schemas/network" xmlns:ns4="http://oec.api.opsource.net/schemas/directory" xmlns:ns3="http://oec.api.opsource.net/schemas/admin"> + <ns13:operation>Disable Backup for Server</ns13:operation> + <ns13:result>SUCCESS</ns13:result> + <ns13:resultDetail>Backup disabled for Server</ns13:resultDetail> + <ns13:resultCode>REASON_0</ns13:resultCode> +</ns13:Status> http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_ENABLE.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_ENABLE.xml b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_ENABLE.xml new file mode 100644 index 0000000..6012447 --- /dev/null +++ b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_ENABLE.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<ns6:Status xmlns:ns16="http://oec.api.opsource.net/schemas/storage" + xmlns="http://oec.api.opsource.net/schemas/server" + xmlns:ns14="http://oec.api.opsource.net/schemas/support" + xmlns:ns15="http://oec.api.opsource.net/schemas/multigeo" + xmlns:ns9="http://oec.api.opsource.net/schemas/admin" + xmlns:ns5="http://oec.api.opsource.net/schemas/vip" + xmlns:ns12="http://oec.api.opsource.net/schemas/whitelabel" + xmlns:ns13="http://oec.api.opsource.net/schemas/reset" + xmlns:ns6="http://oec.api.opsource.net/schemas/general" xmlns:ns7="http://oec.api.opsource.net/schemas/datacenter" xmlns:ns10="http://oec.api.opsource.net/schemas/serverbootstrap" xmlns:ns8="http://oec.api.opsource.net/schemas/manualimport" xmlns:ns11="http://oec.api.opsource.net/schemas/backup" xmlns:ns2="http://oec.api.opsource.net/schemas/directory" xmlns:ns4="http://oec.api.opsource.net/schemas/network" xmlns:ns3="http://oec.api.opsource.net/schemas/organization"> + <ns6:operation>Enable Backup for Server</ns6:operation> + <ns6:result>SUCCESS</ns6:result> + <ns6:resultDetail>Backup enabled for Server - see additional Information for Asset ID</ns6:resultDetail> + <ns6:resultCode>REASON_0</ns6:resultCode> + <ns6:additionalInformation name="assetId"> + <ns6:value>ee7c4b64-f7af-4a4f-8384-be362273530f</ns6:value> + </ns6:additionalInformation> +</ns6:Status> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_INFO.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_INFO.xml b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_INFO.xml new file mode 100644 index 0000000..8b5cf55 --- /dev/null +++ b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_INFO.xml @@ -0,0 +1,11 @@ +<ns5:BackupDetails assetId="fbf90c74-a6de-459e-942c-b75b5176ed72" servicePlan="Enterprise" state="NORMAL" xmlns:ns16="http://oec.api.opsource.net/schemas/serverbootstrap" xmlns="http://oec.api.opsource.net/schemas/server" xmlns:ns14="http://oec.api.opsource.net/schemas/datacenter" xmlns:ns15="http://oec.api.opsource.net/schemas/reset" xmlns:ns9="http://oec.api.opsource.net/schemas/storage" xmlns:ns5="http://oec.api.opsource.net/schemas/backup" xmlns:ns12="http://oec.api.opsource.net/schemas/whitelabel" xmlns:ns13="http://oec.api.opsource.net/schemas/general" xmlns:ns6="http://oec.api.opsource.net/schemas/support" xmlns:ns7="http://oec.api.opsource.net/schemas/organization" xmlns:ns10="http://oec.api.opsource.net/schemas/manualimport" xmlns:ns8="http://oec.api.opsource.net/schemas/multigeo" xmlns:ns11="http://oec.api.opsource.net/schemas/vip" xmlns:ns2="http://oec.api.opsource.net/schemas/network" xmlns:ns4="http://oec.api.opsource.net/schemas/directory" xmlns:ns3="http://oec.api.ops ource.net/schemas/admin"> + <ns5:backupClient id="5fe7502e-f8d7-4547-93b5-f54ac6e58281" type="FA.Linux" isFileSystem="true" status="Offline"> + <ns5:description>Linux File Agent</ns5:description> + <ns5:schedulePolicyName>12AM - 6AM</ns5:schedulePolicyName> + <ns5:storagePolicyName>30 Day Storage Policy + Secondary Copy</ns5:storagePolicyName> + <ns5:times nextBackup="2016-02-09T00:00:00" lastOnline="2016-02-08T06:10:25"/> + <ns5:totalBackupSizeGb>0</ns5:totalBackupSizeGb> + <ns5:downloadUrl>https://backups-na.cloud-vpn.net/PCS/BackupClientInstallerDownload/27645708a713cf406b47ccf73895cc8d27d4172c</ns5:downloadUrl> + <ns5:runningJob id="106130" name="Backup" percentageComplete="5" status="Waiting"/> + </ns5:backupClient> +</ns5:BackupDetails> http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_SUCCESS_PUT.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_SUCCESS_PUT.xml b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_SUCCESS_PUT.xml new file mode 100644 index 0000000..87b4130 --- /dev/null +++ b/libcloud/test/backup/fixtures/dimensiondata/oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_SUCCESS_PUT.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<ns13:Status xmlns:ns16="http://oec.api.opsource.net/schemas/serverbootstrap" xmlns="http://oec.api.opsource.net/schemas/server" xmlns:ns14="http://oec.api.opsource.net/schemas/datacenter" xmlns:ns15="http://oec.api.opsource.net/schemas/reset" xmlns:ns9="http://oec.api.opsource.net/schemas/storage" xmlns:ns5="http://oec.api.opsource.net/schemas/backup" xmlns:ns12="http://oec.api.opsource.net/schemas/whitelabel" xmlns:ns13="http://oec.api.opsource.net/schemas/general" xmlns:ns6="http://oec.api.opsource.net/schemas/support" xmlns:ns7="http://oec.api.opsource.net/schemas/organization" xmlns:ns10="http://oec.api.opsource.net/schemas/manualimport" xmlns:ns8="http://oec.api.opsource.net/schemas/multigeo" xmlns:ns11="http://oec.api.opsource.net/schemas/vip" xmlns:ns2="http://oec.api.opsource.net/schemas/network" xmlns:ns4="http://oec.api.opsource.net/schemas/directory" xmlns:ns3="http://oec.api.opsource.net/schemas/admin"> + <ns13:operation>Add Backup Client</ns13:operation> + <ns13:result>SUCCESS</ns13:result> + <ns13:resultDetail>Backup Client added</ns13:resultDetail> + <ns13:resultCode>REASON_0</ns13:resultCode> + <ns13:additionalInformation name="backupClient.id"> + <ns13:value>a26cead0-6bab-4446-9a16-c227e6ab201f</ns13:value> + </ns13:additionalInformation> + <ns13:additionalInformation name="backupClient.downloadUrl"> + <ns13:value>https://backups-na.cloud-vpn.net/PCS/BackupClientInstallerDownload/4b3f35815b848ce7270186b52e5817fa5de0fe42</ns13:value> + </ns13:additionalInformation> +</ns13:Status> http://git-wip-us.apache.org/repos/asf/libcloud/blob/fe86be74/libcloud/test/backup/test_dimensiondata.py ---------------------------------------------------------------------- diff --git a/libcloud/test/backup/test_dimensiondata.py b/libcloud/test/backup/test_dimensiondata.py index 11d2b73..ef03179 100644 --- a/libcloud/test/backup/test_dimensiondata.py +++ b/libcloud/test/backup/test_dimensiondata.py @@ -79,6 +79,21 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin): target = self.driver.list_targets()[0] self.assertTrue(self.driver.delete_target(target)) + def test_ex_add_client_to_target(self): + target = self.driver.list_targets()[0] + self.assertTrue( + self.driver.ex_add_client_to_target(target, 'FA.Linux', '14 Day Storage Policy', + '12AM - 6AM', 'ON_FAILURE', 'nob...@example.com') + ) + + def test_ex_get_backup_details_for_target(self): + target = self.driver.list_targets()[0] + response = self.driver.ex_get_backup_details_for_target(target) + self.assertEqual(response.service_plan, 'Enterprise') + client = response.clients[0] + self.assertEqual(client.type, 'FA.Linux') + self.assertEqual(client.running_job.percentage, 5) + def test_ex_list_available_client_types(self): target = self.driver.list_targets()[0] answer = self.driver.ex_list_available_client_types(target) @@ -150,11 +165,32 @@ class DimensionDataMockHttp(MockHttp): 'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_schedulePolicy.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( + self, method, url, body, headers): + if method == 'POST': + body = self.fixtures.load( + 'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_client_SUCCESS_PUT.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + else: + raise ValueError("Unknown Method {0}".format(method)) + def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup( self, method, url, body, headers): - body = self.fixtures.load( - 'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup.xml') - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + if method == 'POST': + 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]) + elif method == 'GET': + if url.endswith('disable'): + body = self.fixtures.load( + 'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_DISABLE.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + body = self.fixtures.load( + 'oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_INFO.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + else: + raise ValueError("Unknown Method {0}".format(method)) def _oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_e75ead52_692f_4314_8725_c8a4f4d13a87_backup_EXISTS( self, method, url, body, headers):