Revision 467ea135
Added by Dominic Cleal almost 11 years ago
- ID 467ea135da2b2309d306fd7e97d5c52a9ab00dbe
- Child d30ac557
lib/orchestration/queue.rb | ||
---|---|---|
require 'task'
|
||
require 'orchestration/task'
|
||
module Orchestration
|
||
# Represents tasks queue for orchestration
|
||
class Queue
|
lib/orchestration/task.rb | ||
---|---|---|
module Orchestration
|
||
class Task
|
||
attr_reader :name, :status, :priority, :action, :timestamp
|
||
|
||
def initialize opts
|
||
@name = opts[:name]
|
||
@status = opts[:status]
|
||
@priority = opts[:priority] || 0
|
||
@action = opts[:action]
|
||
update_ts
|
||
end
|
||
|
||
def status=s
|
||
if Orchestration::Queue::STATUS.include?(s)
|
||
update_ts
|
||
@status = s
|
||
else
|
||
raise "invalid STATE #{s}"
|
||
end
|
||
end
|
||
|
||
def to_s
|
||
"#{name}\t #{priority}\t #{status}\t #{action}"
|
||
end
|
||
|
||
def as_json options = {}
|
||
super :only => [:name, :timestamp, :status]
|
||
end
|
||
|
||
private
|
||
def update_ts
|
||
@timestamp = Time.now
|
||
end
|
||
|
||
# sort based on priority
|
||
def <=> other
|
||
self.priority <=> other.priority
|
||
end
|
||
|
||
end
|
||
end
|
lib/task.rb | ||
---|---|---|
class Task
|
||
attr_reader :name, :status, :priority, :action, :timestamp
|
||
|
||
def initialize opts
|
||
@name = opts[:name]
|
||
@status = opts[:status]
|
||
@priority = opts[:priority] || 0
|
||
@action = opts[:action]
|
||
update_ts
|
||
end
|
||
|
||
def status=s
|
||
if Orchestration::Queue::STATUS.include?(s)
|
||
update_ts
|
||
@status = s
|
||
else
|
||
raise "invalid STATE #{s}"
|
||
end
|
||
end
|
||
|
||
def to_s
|
||
"#{name}\t #{priority}\t #{status}\t #{action}"
|
||
end
|
||
|
||
def as_json options = {}
|
||
super :only => [:name, :timestamp, :status]
|
||
end
|
||
|
||
private
|
||
def update_ts
|
||
@timestamp = Time.now
|
||
end
|
||
|
||
# sort based on priority
|
||
def <=> other
|
||
self.priority <=> other.priority
|
||
end
|
||
|
||
end
|
Also available in: Unified diff
fixes #2612 - move Task into Orchestration namespace due to RbVmomi conflict