<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-cite-prefix">On 03/03/2015 16:28, Aline Manera
      wrote:<br>
    </div>
    <blockquote cite="mid:54F60B4E.5020404@linux.vnet.ibm.com"
      type="cite">
      <br>
      Christy, just to make everyone aware about what we discussed
      offline.
      <br>
      <br>
      Instead of using a new parameter, we could append the operation
      name to the target uri.
      <br>
      For example:
      <br>
      <br>
      /vms/&lt;name&gt;/clone
      <br>
      <br>
      So GET /vms?target_uri=^/vms/.*/clone will return all the VMs
      being cloned.
      <br>
    </blockquote>
    <br>
    Sorry, it should be:<br>
    <br>
    GET <b>/tasks?</b>target_uri=^/vms/.*/clone<br>
    <br>
    <blockquote cite="mid:54F60B4E.5020404@linux.vnet.ibm.com"
      type="cite">
      <br>
      On 27/02/2015 12:41, Christy Perez wrote:
      <br>
      <blockquote type="cite">Currently, you can only filter tasks by
        their state (running) or
        <br>
        their URL. If you want to see cloning tasks, you query all
        running
        <br>
        vm-related tasks.
        <br>
        <br>
        It also adds descriptions for non-vm-related tasks.
        <br>
        <br>
        Signed-off-by: Christy Perez <a class="moz-txt-link-rfc2396E" href="mailto:christy@linux.vnet.ibm.com">&lt;christy@linux.vnet.ibm.com&gt;</a>
        <br>
        ---
        <br>
          docs/API.md                        | 14 ++++++++++++++
        <br>
          src/kimchi/asynctask.py            |  6 ++++--
        <br>
          src/kimchi/model/debugreports.py   |  4 ++--
        <br>
          src/kimchi/model/host.py           |  4 ++--
        <br>
          src/kimchi/model/storagepools.py   |  2 +-
        <br>
          src/kimchi/model/storagevolumes.py |  7 ++++---
        <br>
          src/kimchi/model/tasks.py          |  1 -
        <br>
          src/kimchi/model/vms.py            |  5 ++---
        <br>
          src/kimchi/model/vmsnapshots.py    |  3 ++-
        <br>
          src/kimchi/utils.py                |  4 ++--
        <br>
          10 files changed, 33 insertions(+), 17 deletions(-)
        <br>
        <br>
        diff --git a/docs/API.md b/docs/API.md
        <br>
        index 3f7925f..bc68f06 100644
        <br>
        --- a/docs/API.md
        <br>
        +++ b/docs/API.md
        <br>
        @@ -651,6 +651,20 @@ server.
        <br>
                  * failed: The task failed
        <br>
              * message: Human-readable details about the Task status
        <br>
              * target_uri: Resource URI related to the Task
        <br>
        +    * description: A more-detailed identifier for a task.
        <br>
        +            * VM task descriptions:
        <br>
        +                * clone
        <br>
        +                * create
        <br>
        +            * Storage descriptions:
        <br>
        +                * create
        <br>
        +                * clone
        <br>
        +            * Pool descriptions:
        <br>
        +                * create
        <br>
        +                * scan
        <br>
        +            * Debugreport descriptions:
        <br>
        +                * create
        <br>
        +            * Host SW Update descriptions:
        <br>
        +                * update
        <br>
          * **POST**: *See Task Actions*
        <br>
        <br>
          **Actions (POST):**
        <br>
        diff --git a/src/kimchi/asynctask.py b/src/kimchi/asynctask.py
        <br>
        index b5673b2..4944d7c 100644
        <br>
        --- a/src/kimchi/asynctask.py
        <br>
        +++ b/src/kimchi/asynctask.py
        <br>
        @@ -26,12 +26,14 @@
        <br>
        <br>
        <br>
          class AsyncTask(object):
        <br>
        -    def __init__(self, id, target_uri, fn, objstore,
        opaque=None):
        <br>
        +    def __init__(self, id, target_uri, descr, fn, objstore,
        <br>
        +                 opaque=None):
        <br>
                  if objstore is None:
        <br>
                      raise OperationFailed("KCHASYNC0001E")
        <br>
        <br>
                  self.id = str(id)
        <br>
                  self.target_uri = target_uri
        <br>
        +        self.description = descr
        <br>
                  self.fn = fn
        <br>
                  self.objstore = objstore
        <br>
                  self.status = 'running'
        <br>
        @@ -56,7 +58,7 @@ def _status_cb(self, message, success=None):
        <br>
        <br>
              def _save_helper(self):
        <br>
                  obj = {}
        <br>
        -        for attr in ('id', 'target_uri', 'message', 'status'):
        <br>
        +        for attr in ('id', 'target_uri', 'message', 'status',
        'description'):
        <br>
                      obj[attr] = getattr(self, attr)
        <br>
                  try:
        <br>
                      with self.objstore as session:
        <br>
        diff --git a/src/kimchi/model/debugreports.py
        b/src/kimchi/model/debugreports.py
        <br>
        index 5f74da8..c657181 100644
        <br>
        --- a/src/kimchi/model/debugreports.py
        <br>
        +++ b/src/kimchi/model/debugreports.py
        <br>
        @@ -62,8 +62,8 @@ def _gen_debugreport_file(self, name):
        <br>
                  gen_cmd = self.get_system_report_tool()
        <br>
        <br>
                  if gen_cmd is not None:
        <br>
        -            return add_task('/debugreports/%s' % name, gen_cmd,
        self.objstore,
        <br>
        -                            name)
        <br>
        +            return add_task('/debugreports/%s' % name,
        'create', gen_cmd,
        <br>
        +                            self.objstore, name)
        <br>
        <br>
                  raise OperationFailed("KCHDR0002E")
        <br>
        <br>
        diff --git a/src/kimchi/model/host.py b/src/kimchi/model/host.py
        <br>
        index 4419bb3..26211d6 100644
        <br>
        --- a/src/kimchi/model/host.py
        <br>
        +++ b/src/kimchi/model/host.py
        <br>
        @@ -115,8 +115,8 @@ def swupdate(self, *name):
        <br>
                      raise OperationFailed('KCHPKGUPD0001E')
        <br>
        <br>
                  kimchi_log.debug('Host is going to be updated.')
        <br>
        -        taskid = add_task('/host/swupdate', swupdate.doUpdate,
        self.objstore,
        <br>
        -                          None)
        <br>
        +        taskid = add_task('/host/swupdate', 'update',
        swupdate.doUpdate,
        <br>
        +                          self.objstore, None)
        <br>
                  return self.task.lookup(taskid)
        <br>
        <br>
              def shutdown(self, args=None):
        <br>
        diff --git a/src/kimchi/model/storagepools.py
        b/src/kimchi/model/storagepools.py
        <br>
        index b85f3b4..e7a005b 100644
        <br>
        --- a/src/kimchi/model/storagepools.py
        <br>
        +++ b/src/kimchi/model/storagepools.py
        <br>
        @@ -167,7 +167,7 @@ def _do_deep_scan(self, params):
        <br>
        <br>
                  params['path'] =
        self.scanner.scan_dir_prepare(params['name'])
        <br>
                  scan_params['pool_path'] = params['path']
        <br>
        -        task_id = add_task('/storagepools/%s' % ISO_POOL_NAME,
        <br>
        +        task_id = add_task('/storagepools/%s' % ISO_POOL_NAME,
        'scan',
        <br>
                                     self.scanner.start_scan,
        self.objstore, scan_params)
        <br>
                  # Record scanning-task/storagepool mapping for future
        querying
        <br>
                  try:
        <br>
        diff --git a/src/kimchi/model/storagevolumes.py
        b/src/kimchi/model/storagevolumes.py
        <br>
        index 0480496..e44f7db 100644
        <br>
        --- a/src/kimchi/model/storagevolumes.py
        <br>
        +++ b/src/kimchi/model/storagevolumes.py
        <br>
        @@ -117,7 +117,8 @@ def create(self, pool_name, params):
        <br>
        <br>
                  params['pool'] = pool_name
        <br>
                  targeturi = '/storagepools/%s/storagevolumes/%s' %
        (pool_name, name)
        <br>
        -        taskid = add_task(targeturi, create_func,
        self.objstore, params)
        <br>
        +        taskid = add_task(targeturi, 'create', create_func,
        self.objstore,
        <br>
        +                          params)
        <br>
                  return self.task.lookup(taskid)
        <br>
        <br>
              def _create_volume_with_file(self, cb, params):
        <br>
        @@ -414,8 +415,8 @@ def clone(self, pool, name, new_pool=None,
        new_name=None):
        <br>
                            'new_pool': new_pool,
        <br>
                            'new_name': new_name}
        <br>
                  taskid =
        add_task(u'/storagepools/%s/storagevolumes/%s' %
        <br>
        -                          (pool, new_name), self._clone_task,
        self.objstore,
        <br>
        -                          params)
        <br>
        +                          (pool, new_name), 'clone',
        self._clone_task,
        <br>
        +                          self.objstore, params)
        <br>
                  return self.task.lookup(taskid)
        <br>
        <br>
              def _clone_task(self, cb, params):
        <br>
        diff --git a/src/kimchi/model/tasks.py
        b/src/kimchi/model/tasks.py
        <br>
        index 61bc2f3..5520cfd 100644
        <br>
        --- a/src/kimchi/model/tasks.py
        <br>
        +++ b/src/kimchi/model/tasks.py
        <br>
        @@ -17,7 +17,6 @@
        <br>
          # License along with this library; if not, write to the Free
        Software
        <br>
          # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
        MA  02110-1301 USA
        <br>
        <br>
        -
        <br>
          import time
        <br>
        <br>
          from kimchi.exception import TimeoutExpired
        <br>
        diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
        <br>
        index 379c850..078e63e 100644
        <br>
        --- a/src/kimchi/model/vms.py
        <br>
        +++ b/src/kimchi/model/vms.py
        <br>
        @@ -330,9 +330,8 @@ def clone(self, name):
        <br>
                  new_name = get_next_clone_name(current_vm_names, name)
        <br>
        <br>
                  # create a task with the actual clone function
        <br>
        -        taskid = add_task(u'/vms/%s' % new_name,
        self._clone_task,
        <br>
        -                          self.objstore,
        <br>
        -                          {'name': name, 'new_name': new_name})
        <br>
        +        taskid = add_task(u'/vms/%s' % new_name, 'clone',
        self._clone_task,
        <br>
        +                          self.objstore, {'name': name,
        'new_name': new_name})
        <br>
        <br>
                  return self.task.lookup(taskid)
        <br>
        <br>
        diff --git a/src/kimchi/model/vmsnapshots.py
        b/src/kimchi/model/vmsnapshots.py
        <br>
        index 3a92cdc..c899d2e 100644
        <br>
        --- a/src/kimchi/model/vmsnapshots.py
        <br>
        +++ b/src/kimchi/model/vmsnapshots.py
        <br>
        @@ -73,7 +73,8 @@ def create(self, vm_name, params={}):
        <br>
        <br>
                  task_params = {'vm_name': vm_name, 'name': name}
        <br>
                  taskid = add_task(u'/vms/%s/snapshots/%s' % (vm_name,
        name),
        <br>
        -                          self._create_task, self.objstore,
        task_params)
        <br>
        +                          'create', self._create_task,
        self.objstore,
        <br>
        +                          task_params)
        <br>
                  return self.task.lookup(taskid)
        <br>
        <br>
              def _create_task(self, cb, params):
        <br>
        diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
        <br>
        index fc5245f..32ec6b1 100644
        <br>
        --- a/src/kimchi/utils.py
        <br>
        +++ b/src/kimchi/utils.py
        <br>
        @@ -66,9 +66,9 @@ def get_next_task_id():
        <br>
              return task_id
        <br>
        <br>
        <br>
        -def add_task(target_uri, fn, objstore, opaque=None):
        <br>
        +def add_task(target_uri, description, fn, objstore,
        opaque=None):
        <br>
              id = get_next_task_id()
        <br>
        -    AsyncTask(id, target_uri, fn, objstore, opaque)
        <br>
        +    AsyncTask(id, target_uri, description, fn, objstore,
        opaque)
        <br>
              return id
        <br>
        <br>
        <br>
      </blockquote>
      <br>
      _______________________________________________
      <br>
      Kimchi-devel mailing list
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Kimchi-devel@ovirt.org">Kimchi-devel@ovirt.org</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://lists.ovirt.org/mailman/listinfo/kimchi-devel">http://lists.ovirt.org/mailman/listinfo/kimchi-devel</a>
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>