Class: GoodData::Execution

Inherits:
Rest::Resource show all
Defined in:
lib/gooddata/models/execution.rb

Instance Attribute Summary collapse

Attributes inherited from Rest::Object

#client, #project

Instance Method Summary collapse

Methods included from Mixin::ObjId

#obj_id

Methods inherited from Rest::Object

client, default_client, #saved?

Methods included from Mixin::DataPropertyReader

#data_property_reader

Methods included from Mixin::DataPropertyWriter

#data_property_writer

Methods included from Mixin::MetaPropertyReader

#metadata_property_reader

Methods included from Mixin::MetaPropertyWriter

#metadata_property_writer

Methods included from Mixin::MetaGetter

#meta

Methods included from Mixin::RootKeyGetter

#root_key

Methods included from Mixin::ContentGetter

#content

Constructor Details

#initialize(json) ⇒ Execution

Initializes object instance from raw wire JSON

Parameters:

  • json

    Json used for initialization



19
20
21
22
# File 'lib/gooddata/models/execution.rb', line 19

def initialize(json)
  super
  @json = json
end

Instance Attribute Details

#dirtyObject (readonly)

Returns the value of attribute dirty.



12
13
14
# File 'lib/gooddata/models/execution.rb', line 12

def dirty
  @dirty
end

#jsonObject (readonly) Also known as: data

Returns the value of attribute json.



12
13
14
# File 'lib/gooddata/models/execution.rb', line 12

def json
  @json
end

Instance Method Details

#==(other) ⇒ Object

Compares two executions - based on their URI



111
112
113
# File 'lib/gooddata/models/execution.rb', line 111

def ==(other)
  other.respond_to?(:uri) && other.uri == uri && other.respond_to?(:to_hash) && other.to_hash == to_hash
end

#createdObject

Timestamp when execution was created



25
26
27
# File 'lib/gooddata/models/execution.rb', line 25

def created
  Time.parse(json['execution']['createdTime'])
end

#durationObject



102
103
104
105
106
107
108
# File 'lib/gooddata/models/execution.rb', line 102

def duration
  if running?
    Time.now - started
  else
    finished && finished - started
  end
end

#error?Boolean

Has execution failed?

Returns:

  • (Boolean)


35
36
37
# File 'lib/gooddata/models/execution.rb', line 35

def error?
  status == :error
end

#finishedObject

Timestamp when execution was finished



40
41
42
# File 'lib/gooddata/models/execution.rb', line 40

def finished
  json['execution']['endTime'] && Time.parse(json['execution']['endTime'])
end

#logObject

Log for execution



45
46
47
# File 'lib/gooddata/models/execution.rb', line 45

def log
  @client.get(json['execution']['log'])
end

#ok?Boolean

Is execution ok?

Returns:

  • (Boolean)


50
51
52
# File 'lib/gooddata/models/execution.rb', line 50

def ok?
  status == :ok
end

#running?Boolean

Is execution running?

Returns:

  • (Boolean)


63
64
65
# File 'lib/gooddata/models/execution.rb', line 63

def running?
  status == :running
end

#scheduleString

Returns schedule

Returns:



70
71
72
# File 'lib/gooddata/models/execution.rb', line 70

def schedule
  schedule_uri && project.schedules(schedule_uri)
end

#schedule_uriString

Returns schedule URL

Returns:



57
58
59
60
# File 'lib/gooddata/models/execution.rb', line 57

def schedule_uri
  uri = @json['execution']['links']['self'] if @json && @json['execution'] && @json['execution']['links']
  uri.split('/')[0..-3].join('/')
end

#startedObject

Timestamp when execution was started



75
76
77
# File 'lib/gooddata/models/execution.rb', line 75

def started
  Time.parse(json['execution']['startTime'])
end

#statusObject

Status of execution



80
81
82
# File 'lib/gooddata/models/execution.rb', line 80

def status
  json['execution']['status'].downcase.to_sym
end

#uriString

Returns URL

Returns:



87
88
89
# File 'lib/gooddata/models/execution.rb', line 87

def uri
  @json['execution']['links']['self'] if @json && @json['execution'] && @json['execution']['links']
end

#wait_for_result(options = {}) ⇒ GoodData::Execution

Wait for execution result, status different than RUNNING or SCHEDULED

Returns:



94
95
96
97
98
99
100
# File 'lib/gooddata/models/execution.rb', line 94

def wait_for_result(options = {})
  res = client.poll_on_response(uri, options) do |body|
    body['execution'] && (body['execution']['status'] == 'RUNNING' || body['execution']['status'] == 'SCHEDULED')
  end
  @json = res
  self
end