Sha256: de8aea66029404117bccbe7925deb462f6dfdaee6be0c5174d43206055c65cde

Contents?: true

Size: 1.55 KB

Versions: 4

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

4 entries across 4 versions & 1 rubygems

Version Path
runcible-1.9.2 lib/runcible/resources/task.rb
runcible-1.9.1 lib/runcible/resources/task.rb
runcible-1.9.0 lib/runcible/resources/task.rb
runcible-1.8.0 lib/runcible/resources/task.rb