Sha256: d48f81542e39802bb718524eb45f76f375478b306f7fcbc237d0154f7250e910

Contents?: true

Size: 1.55 KB

Versions: 7

Compression:

Stored size: 1.55 KB

Contents

module Runcible
  module Resources
    # @see https://pulp-dev-guide.readthedocs.org/en/latest/rest-api/dispatch/index.html
    class Task < Runcible::Base
      # Generates the API path for Tasks
      #
      # @param  [String]  id  the id of the task
      # @return [String]      the task path, may contain the id if passed
      def self.path(id = nil)
        (id.nil?) ? 'tasks/' : "tasks/#{id}/"
      end

      # Polls for the status of a task
      #
      # @param  [String]              id  the id of the task
      # @return [RestClient::Response]
      def poll(id)
        call(:get, path(id))
      end

      # Cancels a task
      #
      # @param  [String]              id  the id of the task
      # @return [RestClient::Response]
      def cancel(id)
        #cancelling a task may require cancelling some higher level
        #  task, so query the tasks _href field to make sure
        call(:delete, poll(id)['_href'])
      end

      # List all tasks based on a set of tags
      #
      # @param  [Array]                 tags array of tags to scope the list on
      # @return [RestClient::Response]
      def list(tags = [])
        call(:get, path, :params => {:tag => tags})
      end

      # Polls all tasks based on array of IDs
      # temporary solution until https://bugzilla.redhat.com/show_bug.cgi?id=860089
      #
      # @param  [Array] ids array of ids to poll the status of
      # @return [Array]     array of RestClient::Response task poll objects
      def poll_all(ids)
        return ids.map { |id| poll(id) }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
runcible-1.7.2 lib/runcible/resources/task.rb
runcible-1.7.1 lib/runcible/resources/task.rb
runcible-1.7.0 lib/runcible/resources/task.rb
runcible-1.6.0 lib/runcible/resources/task.rb
runcible-1.5.1 lib/runcible/resources/task.rb
runcible-1.5.0 lib/runcible/resources/task.rb
runcible-1.4.0 lib/runcible/resources/task.rb