Added get_target_job for tracking the progress of an individual job. Added some 
example code (for a fictional driver)


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

Branch: refs/heads/trunk
Commit: c086d347c9d44df684f3b4b020188bc86a251e73
Parents: b3398da
Author: Anthony Shaw <anthony.p.s...@gmail.com>
Authored: Mon Nov 9 14:57:15 2015 +1100
Committer: Anthony Shaw <anthony.p.s...@gmail.com>
Committed: Mon Nov 9 14:57:15 2015 +1100

----------------------------------------------------------------------
 docs/backup/examples.rst                        | 11 ++++++
 docs/backup/index.rst                           |  2 +-
 docs/examples/backup/create_backup_from_node.py | 37 ++++++++++++++++++++
 libcloud/backup/base.py                         | 16 +++++++++
 4 files changed, 65 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/c086d347/docs/backup/examples.rst
----------------------------------------------------------------------
diff --git a/docs/backup/examples.rst b/docs/backup/examples.rst
index 78f27e4..2e71462 100644
--- a/docs/backup/examples.rst
+++ b/docs/backup/examples.rst
@@ -3,3 +3,14 @@
 Backup Examples
 ============
 
+Getting a node from a compute driver and enabling backup
+---------------------------------------------------------
+
+This example shows how to get a node using a remote Azure datacenter, enable 
backup
+and backup the node.
+
+.. note::
+    This example works with Libcloud version 0.20.0 and above.
+
+.. literalinclude:: /examples/backup/create_backup_from_node.py
+   :language: python

http://git-wip-us.apache.org/repos/asf/libcloud/blob/c086d347/docs/backup/index.rst
----------------------------------------------------------------------
diff --git a/docs/backup/index.rst b/docs/backup/index.rst
index 2479746..7d1b9f7 100644
--- a/docs/backup/index.rst
+++ b/docs/backup/index.rst
@@ -1,4 +1,4 @@
-DNS
+Backup
 ===
 
 .. note::

http://git-wip-us.apache.org/repos/asf/libcloud/blob/c086d347/docs/examples/backup/create_backup_from_node.py
----------------------------------------------------------------------
diff --git a/docs/examples/backup/create_backup_from_node.py 
b/docs/examples/backup/create_backup_from_node.py
new file mode 100644
index 0000000..ec7c2d6
--- /dev/null
+++ b/docs/examples/backup/create_backup_from_node.py
@@ -0,0 +1,37 @@
+import time
+from pprint import pprint
+
+from libcloud.backup.types import Provider, BackupTargetJobStatusType
+from libcloud.backup.providers import get_driver as get_backup_driver
+
+from libcloud.compute.providers import get_driver as get_compute_driver
+
+backup_driver = get_backup_driver(Provider.AZURE)('username', 'api key')
+compute_driver = get_compute_driver(Provider.AZURE)('username', 'api key')
+
+nodes = compute_driver.list_nodes()
+
+# Backup the first node in the pool
+selected_node = nodes[0]
+
+print('Enabling backup for node')
+new_target = backup_driver.create_target_from_node(selected_node)
+
+print('Starting backup of node')
+job = backup_driver.create_target_job(new_target)
+
+print('Waiting for job to complete')
+while True:
+    if job.status != BackupTargetJobStatusType.RUNNING:
+        break
+    else:
+        job = backup_driver.get_target_job(job.id)
+
+    print('Job is now at %s percent complete' % job.progress)
+    time.sleep(20)
+
+print('Job is completed with status- %s' % job.status)
+
+print('Getting a list of recovery points')
+recovery_points = backup_driver.list_recovery_points(new_target)
+pprint(recovery_points)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/c086d347/libcloud/backup/base.py
----------------------------------------------------------------------
diff --git a/libcloud/backup/base.py b/libcloud/backup/base.py
index 6bca933..26ea2d8 100644
--- a/libcloud/backup/base.py
+++ b/libcloud/backup/base.py
@@ -400,6 +400,22 @@ class BackupDriver(BaseDriver):
         raise NotImplementedError(
             'delete_target not implemented for this driver')
 
+    def get_target_job(self, target, id):
+        """
+        Get a specific backup job by ID
+
+        :param target: Backup target with the backup data
+        :type  target: Instance of :class:`BackupTarget`
+
+        :param id: Backup target with the backup data
+        :type  id: Instance of :class:`BackupTarget`
+
+        :rtype: :class:`BackupTargetJob`
+        """
+        jobs = self.list_target_jobs(target)
+        return list(filter(lambda x: x.id == id, jobs))[0]
+
+
     def list_target_jobs(self, target):
         """
         List the backup jobs on a target

Reply via email to