code: def create_task_from_cu(cu, prof=None):
      
  
      try:
  
          logger.debug('Create Task from CU %s' % cu.name)
  
          if prof:
              prof.prof('task from cu - create',
                        uid=cu.name.split(',')[0].strip())
  
          task = Task()
          task.uid = cu.name.split(',')[0].strip()
          task.name = cu.name.split(',')[1].strip()
          task.parent_stage['uid'] = cu.name.split(',')[2].strip()
          task.parent_stage['name'] = cu.name.split(',')[3].strip()
          task.parent_pipeline['uid'] = cu.name.split(',')[4].strip()
          task.parent_pipeline['name'] = cu.name.split(',')[5].strip()
          task.rts_uid = cu.uid
  
          if cu.state == rp.DONE:
              task.exit_code = 0
          else:
              task.exit_code = 1
  
          task.path = ru.Url(cu.sandbox).path
  
          if prof:
              prof.prof('task from cu - done', uid=cu.name.split(',')[0].strip())
  
          logger.debug('Task %s created from CU %s' % (task.uid, cu.name))
  
          return task
  
      except Exception, ex:
          logger.exception('Task creation from CU failed, error: %s' % ex)
          raise
docs: Purpose: Create a Task based on the Compute Unit.
  
      Details: Currently, only the uid, parent_stage and parent_pipeline are retrieved. The exact initial Task (that was
      converted to a CUD) cannot be recovered as the RP API does not provide the same attributes for a CU as for a CUD.
      Also, this is not required for the most part.
  
      TODO: Add exit code, stdout, stderr and path attributes to a Task. These can be extracted from a CU
  
      :arguments:
          :cu: RP Compute Unit
  
      :return: Task