vcoworkflows-ruby2 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH << '../../lib'
2
+
3
+ require 'coveralls'
4
+ Coveralls.wear!
@@ -0,0 +1,57 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+
4
+ # rubocop:disable Metrics/BlockLength
5
+ describe VcoWorkflows::Config, 'Config' do
6
+ before(:each) do
7
+ @url = 'https://vcoserver.example.com:8281/vco/api'
8
+ @username = 'johndoe'
9
+ @password = 's3cr3t'
10
+
11
+ @config_file = '/tmp/vcoconfig.json'
12
+ @config_data = {
13
+ url: @url,
14
+ username: @username,
15
+ password: @password
16
+ }.to_json
17
+
18
+ allow(File).to receive(:read).and_call_original
19
+ allow(File).to receive(:read).with(@config_file).and_return(@config_data)
20
+ end
21
+
22
+ it 'should configure the URL from parameters' do
23
+ config = VcoWorkflows::Config.new(url: @url, username: @username, password: @password)
24
+
25
+ expect(config.url).to eql(@url)
26
+ end
27
+
28
+ it 'should configure the username from parameters' do
29
+ config = VcoWorkflows::Config.new(url: @url, username: @username, password: @password)
30
+
31
+ expect(config.username).to eql(@username)
32
+ end
33
+
34
+ it 'should configure the password from parameters' do
35
+ config = VcoWorkflows::Config.new(url: @url, username: @username, password: @password)
36
+
37
+ expect(config.password).to eql(@password)
38
+ end
39
+
40
+ it 'should configure the URL from a configuration file' do
41
+ config = VcoWorkflows::Config.new(config_file: @config_file)
42
+
43
+ expect(config.url).to eql(@url)
44
+ end
45
+
46
+ it 'should configure the username from a configuration file' do
47
+ config = VcoWorkflows::Config.new(config_file: @config_file)
48
+
49
+ expect(config.username).to eql(@username)
50
+ end
51
+
52
+ it 'should configure the password from a configuration file' do
53
+ config = VcoWorkflows::Config.new(config_file: @config_file)
54
+
55
+ expect(config.password).to eql(@password)
56
+ end
57
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+
4
+ # rubocop:disable Metrics/BlockLength
5
+ describe VcoWorkflows::VcoSession, 'VcoSession' do
6
+ before(:each) do
7
+ @uri = 'https://vcoserver.example.com:8281'
8
+ @username = 'johndoe'
9
+ @password = 's3cr3t'
10
+
11
+ @config = VcoWorkflows::Config.new(url: @uri, username: @username, password: @password)
12
+ end
13
+
14
+ it 'should set the URL from parameters' do
15
+ vs = VcoWorkflows::VcoSession.new(uri: @uri, user: @username, password: @password)
16
+ api_url = '/vco/api'
17
+
18
+ expect(vs.rest_resource.url).to eql(@uri << api_url)
19
+ end
20
+
21
+ it 'should set the username from parameters' do
22
+ vs = VcoWorkflows::VcoSession.new(uri: @uri, user: @username, password: @password)
23
+
24
+ expect(vs.rest_resource.user).to eql(@username)
25
+ end
26
+
27
+ it 'should set the password from parameters' do
28
+ vs = VcoWorkflows::VcoSession.new(uri: @uri, user: @username, password: @password)
29
+
30
+ expect(vs.rest_resource.password).to eql(@password)
31
+ end
32
+
33
+ it 'should set the URL from configuration' do
34
+ vs = VcoWorkflows::VcoSession.new(config: @config)
35
+ api_url = '/vco/api'
36
+
37
+ expect(vs.rest_resource.url).to eql(@uri << api_url)
38
+ end
39
+
40
+ it 'should set the username from configuration' do
41
+ vs = VcoWorkflows::VcoSession.new(config: @config)
42
+
43
+ expect(vs.rest_resource.user).to eql(@username)
44
+ end
45
+
46
+ it 'should set the password from configuration' do
47
+ vs = VcoWorkflows::VcoSession.new(config: @config)
48
+
49
+ expect(vs.rest_resource.password).to eql(@password)
50
+ end
51
+ end
52
+
53
+ # rubocop:enable LineLength
@@ -0,0 +1,197 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+
4
+ # rubocop:disable LineLength
5
+ # rubocop:disable Metrics/BlockLength
6
+
7
+ describe VcoWorkflows::Workflow, 'Workflow' do
8
+ before(:each) do
9
+ # Set up some basic starting data
10
+ @workflow_name = 'Request Component'
11
+ @workflow_id = '6e04a460-4a45-4e16-9603-db2922c24462'
12
+ @execution_id = 'ff8080814a1cb55c014a6481a9927a78'
13
+ @workflow_json = '{"output-parameters":[{"name":"result","type":"string","description":"Catalog item request state"},{"name":"requestNumber","type":"number"},{"name":"requestCompletionDetails","type":"string"}],"relations":{"link":[{"rel":"up","href":"https://vco.example.com:8281/vco/api/inventory/System/Workflows/dlinsley%2540vmware.com/vCAC/"},{"rel":"executions","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/"},{"rel":"presentation","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/"},{"rel":"tasks","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/tasks/"},{"rel":"icon","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/icon/"},{"rel":"schema","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/schema/"},{"rel":"permissions","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/permissions/"},{"rel":"interactions","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/interactions/"}]},"id":"6e04a460-4a45-4e16-9603-db2922c24462","name":"Request Component","version":"0.0.33","description":"","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/","customized-icon":false,"input-parameters":[{"name":"coreCount","type":"string"},{"name":"ramMB","type":"string"},{"name":"onBehalfOf","type":"string"},{"name":"machineCount","type":"string"},{"name":"businessUnit","type":"string"},{"name":"reservation","type":"string"},{"name":"location","type":"string"},{"name":"environment","type":"string"},{"name":"image","type":"string","description":"vCenter template name"},{"name":"runlist","type":"Array/string","description":"Chef Runlist for first run. Leave empty for no Chef"},{"name":"nodename","type":"string","description":"Chef Nodename"},{"name":"component","type":"string"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"}]}'
14
+ @presentation_json = '{"output-parameters":[{"name":"machineCount","type":"string"},{"name":"location","type":"string"},{"name":"image","type":"string","description":"vCenter template name"},{"name":"coreCount","type":"string"},{"name":"ramMB","type":"string"},{"name":"onBehalfOf","type":"string"},{"name":"businessUnit","type":"string"},{"name":"environment","type":"string"},{"name":"component","type":"string"},{"name":"reservation","type":"string"},{"name":"runlist","type":"Array/string","description":"Chef Runlist for first run. Leave empty for no Chef"},{"name":"nodename","type":"string","description":"Chef Nodename"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"}],"input-parameters":[{"name":"businessUnit","type":"string","description":"businessUnit"},{"name":"environment","type":"string","description":"environment"},{"name":"component","type":"string","description":"component"},{"name":"onBehalfOf","type":"string","description":"On Behalf of User: (user@domain format)"},{"name":"machineCount","type":"string","description":"machineCount"},{"name":"image","type":"string","description":"image"},{"name":"coreCount","type":"string","description":"coreCount"},{"name":"ramMB","type":"string","description":"ramSizeMB"},{"name":"runlist","type":"Array/string","description":"runlist"},{"name":"reservation","type":"string","description":"reservation"},{"name":"location","type":"string","description":"location"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"},{"name":"nodename","type":"string","description":"Chef Nodename"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/","name":"Request Component","id":"6e04a460-4a45-4e16-9603-db2922c24462","steps":[{"step":{"messages":[],"hidden":false,"elements":[{"fields":[{"display-name":"businessUnit","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"businessUnit","description":"businessUnit","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"an"}},{"string":{"value":"aw"}},{"string":{"value":"soi"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"environment","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"environment","description":"environment","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"component","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"component","description":"component","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"On Behalf of User: (user@domain format)","constraints":[],"@type":"field","fields":[],"id":"onBehalfOf","description":"On Behalf of User: (user@domain format)","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"machineCount","constraints":[],"@type":"field","fields":[],"id":"machineCount","description":"machineCount","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"1"}},{"string":{"value":"2"}},{"string":{"value":"3"}},{"string":{"value":"4"}},{"string":{"value":"5"}},{"string":{"value":"6"}},{"string":{"value":"7"}},{"string":{"value":"8"}},{"string":{"value":"9"}},{"string":{"value":"10"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"image","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"image","description":"image","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"vcaccentos65v8-agent"}},{"string":{"value":"win2012std"}},{"string":{"value":"vcac2012std"}},{"string":{"value":"centos-6.6-x86_64-20141203-1"}},{"string":{"value":"v8-centos65-agent"}},{"string":{"value":"vcac2008r2std"}},{"string":{"value":"oracle-6.5-x86_64-20141203-1"}},{"string":{"value":"centos65v8"}},{"string":{"value":"w2012r2std_coreservices"}},{"string":{"value":"2008r2std"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"coreCount","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"coreCount","description":"coreCount","hidden":false,"messages":[],"decorators":[{"@type":"refresh-on-change"},{"array":{"elements":[{"string":{"value":"1"}},{"string":{"value":"2"}},{"string":{"value":"4"}},{"string":{"value":"8"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"ramSizeMB","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"ramMB","description":"ramSizeMB","hidden":false,"messages":[],"decorators":[{"array":{"elements":[null]},"@type":"drop-down"}],"type":"string"},{"display-name":"runlist","constraints":[],"@type":"field","fields":[],"id":"runlist","description":"runlist","hidden":false,"messages":[],"decorators":[],"type":"Array/string"},{"display-name":"reservation","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"reservation","description":"reservation","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"location","constraints":[],"@type":"field","fields":[],"id":"location","description":"location","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"JSON object of vCenter Attributes to apply to VM(s)","constraints":[],"@type":"field","fields":[],"id":"attributesJS","description":"JSON object of vCenter Attributes to apply to VM(s)","hidden":false,"messages":[],"decorators":[{"@type":"multiline"}],"type":"string"},{"display-name":"Chef Nodename","constraints":[],"@type":"field","fields":[],"id":"nodename","description":"Chef Nodename","hidden":false,"messages":[],"decorators":[],"type":"string"}],"messages":[],"hidden":false,"@type":"group"}]}}],"relations":{"link":[{"rel":"up","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/"},{"rel":"instances","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/instances/"},{"rel":"add","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/instances/"}]}}'
15
+ @param_string_json = '{"type":"string","name":"stringparam","scope":"local","value":{"string":{"value":"squirrel!"}}}'
16
+ @param_array_json = '{"type":"Array/string","name":"arrayparam","scope":"local","value":{"array":{"elements":[{"string":{"value":"a"}},{"string":{"value":"b"}},{"string":{"value":"c"}}]}}}'
17
+
18
+ @target_parameters = {
19
+ 'coreCount' => 2,
20
+ 'ramMB' => 2048,
21
+ 'businessUnit' => 'aw',
22
+ 'reservation' => 'nonprodlinux',
23
+ 'environment' => 'dev1',
24
+ 'image' => 'centos-6.6-x86_64-20141203-1',
25
+ 'component' => 'api',
26
+ 'onBehalfOf' => 'svcacct@example.com',
27
+ 'location' => 'us_east',
28
+ 'runlist' => %w(role[loc_uswest] role[base] role[api]),
29
+ 'machineCount' => 1
30
+ }
31
+
32
+ # Mock the WorkflowService
33
+ @service = double('service')
34
+ allow(@service).to receive(:get_workflow_for_id).and_return(@workflow_json)
35
+ allow(@service).to receive(:get_workflow_for_name).and_return(@workflow_json)
36
+ allow(@service).to receive(:get_presentation).and_return(@presentation_json)
37
+
38
+ # Config object, file, data for constructor testing
39
+ @config_file = '/tmp/vcoconfig.json'
40
+ @config_data = {
41
+ url: @url,
42
+ username: @username,
43
+ password: @password
44
+ }.to_json
45
+ @config = VcoWorkflows::Config.new(url: 'https://vcoserver.example.com:8281/vco/api',
46
+ username: 'johndoe',
47
+ password: 's3cre3t')
48
+ allow(VcoWorkflows::VcoSession).to receive(:new).and_return(true)
49
+ allow(VcoWorkflows::WorkflowService).to receive(:new).and_return(@service)
50
+ allow(File).to receive(:read).and_call_original
51
+ allow(File).to receive(:read).with(@config_file).and_return(@config_data)
52
+ end
53
+
54
+ it 'should not explode when created with service' do
55
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
56
+
57
+ expect(wf).to_not eq(nil)
58
+ end
59
+
60
+ it 'should not explode when created with config' do
61
+ wf = VcoWorkflows::Workflow.new(@workflow_name, config: @config)
62
+
63
+ expect(wf).to_not eq(nil)
64
+ end
65
+
66
+ it 'should not explode when created with config_file' do
67
+ wf = VcoWorkflows::Workflow.new(@workflow_name)
68
+
69
+ expect(wf).to_not eq(nil)
70
+ end
71
+
72
+ it 'should parse a single string parameter' do
73
+ param_data = []
74
+ param_data << JSON.parse(@param_string_json)
75
+ wfparams = VcoWorkflows::Workflow.parse_parameters(param_data)
76
+
77
+ expect(wfparams).to_not eq(nil)
78
+ expect(wfparams.size).to eq(1)
79
+ expect(wfparams.key?('stringparam')).to eq(true)
80
+ expect(wfparams['stringparam'].type).to eql('string')
81
+ expect(wfparams['stringparam'].subtype).to eq(nil)
82
+ expect(wfparams['stringparam'].value).to eql('squirrel!')
83
+ end
84
+
85
+ it 'should parse a single Array parameter' do
86
+ param_data = []
87
+ param_data << JSON.parse(@param_array_json)
88
+ wfparams = VcoWorkflows::Workflow.parse_parameters(param_data)
89
+
90
+ expect(wfparams).to_not eq(nil)
91
+ expect(wfparams.size).to eq(1)
92
+ expect(wfparams.key?('arrayparam')).to eq(true)
93
+ expect(wfparams['arrayparam'].type).to eql('Array')
94
+ expect(wfparams['arrayparam'].subtype).to eql('string')
95
+ expect(wfparams['arrayparam'].value).to eql(%w[a b c])
96
+ end
97
+
98
+ it 'should parse an array of mixed parameters' do
99
+ param_data = []
100
+ param_data << JSON.parse(@param_string_json)
101
+ param_data << JSON.parse(@param_array_json)
102
+ wfparams = VcoWorkflows::Workflow.parse_parameters(param_data)
103
+
104
+ expect(wfparams).to_not eq(nil)
105
+ expect(wfparams.size).to eq(2)
106
+ expect(wfparams.key?('stringparam')).to eq(true)
107
+ expect(wfparams['stringparam'].type).to eql('string')
108
+ expect(wfparams['stringparam'].subtype).to eq(nil)
109
+ expect(wfparams['stringparam'].value).to eql('squirrel!')
110
+ expect(wfparams.key?('arrayparam')).to eq(true)
111
+ expect(wfparams['arrayparam'].type).to eql('Array')
112
+ expect(wfparams['arrayparam'].subtype).to eql('string')
113
+ expect(wfparams['arrayparam'].value).to eql(%w[a b c])
114
+ end
115
+
116
+ it 'should have input and output parameters' do
117
+ input_param_count = 13
118
+ output_param_count = 3
119
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
120
+
121
+ expect(wf.input_parameters.size).to eq(input_param_count)
122
+ expect(wf.output_parameters.size).to eq(output_param_count)
123
+ end
124
+
125
+ it 'should have required parameters' do
126
+ required_param_count = 7
127
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
128
+
129
+ expect(wf.required_parameters.size).to eq(required_param_count)
130
+ end
131
+
132
+ it 'should set a parameter value' do
133
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
134
+
135
+ # Set the value and check the returned parameter
136
+ expect(wf.parameter('coreCount', 4).value).to eq(4)
137
+
138
+ # Check the parameter value
139
+ expect(wf.parameter('coreCount').value).to eq(4)
140
+
141
+ # Check the parameter by reaching through input_parameters
142
+ expect(wf.input_parameters['coreCount'].value).to eq(4)
143
+ end
144
+
145
+ it 'should set all parameters by hash' do
146
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
147
+ wf.parameters = @target_parameters
148
+
149
+ @target_parameters.each_key do |param_name|
150
+ expect(wf.parameter(param_name).value).to eql(@target_parameters[param_name])
151
+ end
152
+ end
153
+
154
+ it 'should set a parameter by object' do
155
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
156
+ wfparam = VcoWorkflows::WorkflowParameter.new('coreCount', 'string', value: 2)
157
+ wf.parameter = wfparam
158
+
159
+ expect(wf.parameter('coreCount')).to_not eq(nil)
160
+ expect(wf.parameter('coreCount').type).to eql('string')
161
+ expect(wf.parameter('coreCount').value).to eq(2)
162
+ end
163
+
164
+ it 'should execute' do
165
+ allow(@service).to receive(:execute_workflow) { @execution_id }
166
+
167
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
168
+ wf.parameters = @target_parameters
169
+
170
+ expect(wf.execute).to eql(@execution_id)
171
+ end
172
+
173
+ it 'should provide a WorkflowToken' do
174
+ token_json = '{"relations":{"link":[{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/","rel":"up"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/","rel":"remove"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/logs/","rel":"logs"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/state/","rel":"state"}]},"id":"ff8080814a1cb55c014a6481a9927a78","state":"completed","name":"Request Component","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/","start-date":1419025426833,"end-date":1419026124320,"started-by":"someuser@EXAMPLE.COM","input-parameters":[{"value":{"string":{"value":"2"}},"type":"string","name":"coreCount","scope":"local"},{"value":{"string":{"value":"2048"}},"type":"string","name":"ramMB","scope":"local"},{"value":{"string":{"value":"svcacct@example.com"}},"type":"string","name":"onBehalfOf","scope":"local"},{"value":{"string":{"value":"1"}},"type":"string","name":"machineCount","scope":"local"},{"value":{"string":{"value":"aw"}},"type":"string","name":"businessUnit","scope":"local"},{"value":{"string":{"value":"nonprodlinux"}},"type":"string","name":"reservation","scope":"local"},{"value":{"string":{"value":"us_east"}},"type":"string","name":"location","scope":"local"},{"value":{"string":{"value":"dev1"}},"type":"string","name":"environment","scope":"local"},{"value":{"string":{"value":"centos-6.6-x86_64-20141203-1"}},"type":"string","name":"image","scope":"local"},{"value":{"array":{"elements":[{"string":{"value":"role[loc_uswest]"}},{"string":{"value":"role[base]"}},{"string":{"value":"role[api]"}}]}},"type":"Array/string","name":"runlist","scope":"local"},{"value":{"string":{"value":""}},"type":"string","name":"nodename","scope":"local"},{"value":{"string":{"value":"api"}},"type":"string","name":"component","scope":"local"},{"value":{"string":{"value":""}},"type":"string","name":"attributesJS","scope":"local"}],"output-parameters":[{"value":{"string":{"value":"SUCCESSFUL"}},"type":"string","name":"result","scope":"local"},{"value":{"number":{"value":326.0}},"type":"number","name":"requestNumber","scope":"local"},{"value":{"string":{"value":"Request succeeded. Created vm00378."}},"type":"string","name":"requestCompletionDetails","scope":"local"}]}'
175
+ allow(@service).to receive(:get_execution) { token_json }
176
+
177
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
178
+ wftoken = wf.token(@execution_id)
179
+
180
+ expect(wftoken).to_not eq(nil)
181
+ expect(wftoken.workflow_id).to eq(wf.id)
182
+ expect(wftoken.id).to eq(@execution_id)
183
+ expect(wftoken.alive?).to eq(false)
184
+ expect(wftoken.state).to eql('completed')
185
+ end
186
+
187
+ it 'should provide a WorkflowExectionLog' do
188
+ log_json = '{"logs":[{"entry":{"severity":"info","time-stamp":1419026124333,"user":"gruiz-ade","short-description":"Workflow \'Request Component\' has completed","long-description":"Workflow \'Request Component\' has completed"}},{"entry":{"severity":"info","time-stamp":1419026123927,"user":"gruiz-ade","short-description":"Workflow \'Request Component\' has resumed","long-description":"Workflow \'Request Component\' has resumed"}},{"entry":{"severity":"info","time-stamp":1419025439183,"user":"gruiz-ade","short-description":"Workflow is paused","long-description":"Workflow \'Request Component\' has paused while waiting on signal"}},{"entry":{"severity":"info","time-stamp":1419025426870,"user":"gruiz-ade","short-description":"Workflow \'Request Component\' has started","long-description":"Workflow \'Request Component\' has started"}}]}'
189
+ allow(@service).to receive(:get_log) { log_json }
190
+
191
+ wf = VcoWorkflows::Workflow.new(@workflow_name, service: @service)
192
+ wflog = wf.log(@execution_id)
193
+
194
+ expect(wflog).to_not eq(nil)
195
+ end
196
+ end
197
+ # rubocop:enable LineLength
@@ -0,0 +1,22 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+
4
+ # rubocop:disable LineLength
5
+
6
+ describe VcoWorkflows::WorkflowExecutionLog, 'WorkflowExecutionLog' do
7
+ before(:each) do
8
+ # Set up some basic starting data
9
+ @workflow_name = 'Request Component'
10
+ @workflow_id = '6e04a460-4a45-4e16-9603-db2922c24462'
11
+
12
+ # The JSON we'd get back from vCenter Orchestrator
13
+ @log_json = '{"logs":[{"entry":{"severity":"info","time-stamp":1419026124333,"user":"gruiz-ade","short-description":"Workflow \'Request Component\' has completed","long-description":"Workflow \'Request Component\' has completed"}},{"entry":{"severity":"info","time-stamp":1419026123927,"user":"gruiz-ade","short-description":"Workflow \'Request Component\' has resumed","long-description":"Workflow \'Request Component\' has resumed"}},{"entry":{"severity":"info","time-stamp":1419025439183,"user":"gruiz-ade","short-description":"Workflow is paused","long-description":"Workflow \'Request Component\' has paused while waiting on signal"}},{"entry":{"severity":"info","time-stamp":1419025426870,"user":"gruiz-ade","short-description":"Workflow \'Request Component\' has started","long-description":"Workflow \'Request Component\' has started"}}]}'
14
+ end
15
+
16
+ it 'should initialize and parse the log JSON' do
17
+ wflog = VcoWorkflows::WorkflowExecutionLog.new(@log_json)
18
+ expect(wflog).to_not eq(nil)
19
+ expect(wflog.messages.size).to eq(4)
20
+ end
21
+ end
22
+ # rubocop:enable LineLength
@@ -0,0 +1,68 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+
4
+ # rubocop:disable LineLength
5
+ # rubocop:disable Metrics/BlockLength
6
+
7
+ describe VcoWorkflows::WorkflowParameter, 'WorkflowParameter' do
8
+ before(:each) do
9
+ @paramname = 'testparam'
10
+ @paramtype = 'string'
11
+ @paramvalue = 'squirrel!'
12
+ @paramarray = %w[a b c]
13
+ @string_json = '{"type":"string","name":"testparam","scope":"local","value":{"string":{"value":"squirrel!"}}}'
14
+ @array_json = '{"type":"Array","name":"testparam","scope":"local","value":{"array":{"elements":[{"string":{"value":"a"}},{"string":{"value":"b"}},{"string":{"value":"c"}}]}}}'
15
+ end
16
+
17
+ it 'should not be set' do
18
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, @paramtype)
19
+
20
+ expect(wfp.set?).to eq(false)
21
+ end
22
+
23
+ it 'should be set when created with value' do
24
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, @paramtype, value: @paramvalue)
25
+
26
+ expect(wfp.set?).to eq(true)
27
+ end
28
+
29
+ it 'should not be required' do
30
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, @paramtype)
31
+
32
+ expect(wfp.required?).to eq(false)
33
+ end
34
+
35
+ it 'should be required' do
36
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, @paramtype, required: true)
37
+
38
+ expect(wfp.required?).to eq(true)
39
+ end
40
+
41
+ it 'should be an array of strings' do
42
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, 'Array/string')
43
+
44
+ expect(wfp.type).to eql('Array')
45
+ expect(wfp.subtype).to eql('string')
46
+ end
47
+
48
+ it "should be an array of strings #{@paramarray}" do
49
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramnam, 'Array/string')
50
+ wfp.set(@paramarray)
51
+
52
+ expect(wfp.value).to eq(@paramarray)
53
+ end
54
+
55
+ it 'should generate a JSON document for single value' do
56
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, @paramtype, value: @paramvalue)
57
+
58
+ expect(wfp.to_json).to eql(@string_json)
59
+ end
60
+
61
+ it 'should generate a JSON document for Array value' do
62
+ wfp = VcoWorkflows::WorkflowParameter.new(@paramname, 'Array/string', value: @paramarray)
63
+
64
+ expect(wfp.to_json).to eql(@array_json)
65
+ end
66
+ end
67
+
68
+ # rubocop:enable LineLength
@@ -0,0 +1,34 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+
4
+ # rubocop:disable LineLength
5
+
6
+ describe VcoWorkflows::WorkflowPresentation, 'WorkflowPresentation' do
7
+ before(:each) do
8
+ # Set up some basic starting data
9
+ @workflow_name = 'Request Component'
10
+ @workflow_id = '6e04a460-4a45-4e16-9603-db2922c24462'
11
+
12
+ # The JSON we'd get back from vCenter Orchestrator
13
+ @presentation_json = '{"output-parameters":[{"name":"machineCount","type":"string"},{"name":"location","type":"string"},{"name":"image","type":"string","description":"vCenter template name"},{"name":"coreCount","type":"string"},{"name":"ramMB","type":"string"},{"name":"onBehalfOf","type":"string"},{"name":"businessUnit","type":"string"},{"name":"environment","type":"string"},{"name":"component","type":"string"},{"name":"reservation","type":"string"},{"name":"runlist","type":"Array/string","description":"Chef Runlist for first run. Leave empty for no Chef"},{"name":"nodename","type":"string","description":"Chef Nodename"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"}],"input-parameters":[{"name":"businessUnit","type":"string","description":"businessUnit"},{"name":"environment","type":"string","description":"environment"},{"name":"component","type":"string","description":"component"},{"name":"onBehalfOf","type":"string","description":"On Behalf of User: (user@domain format)"},{"name":"machineCount","type":"string","description":"machineCount"},{"name":"image","type":"string","description":"image"},{"name":"coreCount","type":"string","description":"coreCount"},{"name":"ramMB","type":"string","description":"ramSizeMB"},{"name":"runlist","type":"Array/string","description":"runlist"},{"name":"reservation","type":"string","description":"reservation"},{"name":"location","type":"string","description":"location"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"},{"name":"nodename","type":"string","description":"Chef Nodename"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/","name":"Request Component","id":"6e04a460-4a45-4e16-9603-db2922c24462","steps":[{"step":{"messages":[],"hidden":false,"elements":[{"fields":[{"display-name":"businessUnit","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"businessUnit","description":"businessUnit","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"an"}},{"string":{"value":"aw"}},{"string":{"value":"soi"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"environment","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"environment","description":"environment","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"component","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"component","description":"component","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"On Behalf of User: (user@domain format)","constraints":[],"@type":"field","fields":[],"id":"onBehalfOf","description":"On Behalf of User: (user@domain format)","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"machineCount","constraints":[],"@type":"field","fields":[],"id":"machineCount","description":"machineCount","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"1"}},{"string":{"value":"2"}},{"string":{"value":"3"}},{"string":{"value":"4"}},{"string":{"value":"5"}},{"string":{"value":"6"}},{"string":{"value":"7"}},{"string":{"value":"8"}},{"string":{"value":"9"}},{"string":{"value":"10"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"image","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"image","description":"image","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"vcaccentos65v8-agent"}},{"string":{"value":"win2012std"}},{"string":{"value":"vcac2012std"}},{"string":{"value":"centos-6.6-x86_64-20141203-1"}},{"string":{"value":"v8-centos65-agent"}},{"string":{"value":"vcac2008r2std"}},{"string":{"value":"oracle-6.5-x86_64-20141203-1"}},{"string":{"value":"centos65v8"}},{"string":{"value":"w2012r2std_coreservices"}},{"string":{"value":"2008r2std"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"coreCount","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"coreCount","description":"coreCount","hidden":false,"messages":[],"decorators":[{"@type":"refresh-on-change"},{"array":{"elements":[{"string":{"value":"1"}},{"string":{"value":"2"}},{"string":{"value":"4"}},{"string":{"value":"8"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"ramSizeMB","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"ramMB","description":"ramSizeMB","hidden":false,"messages":[],"decorators":[{"array":{"elements":[null]},"@type":"drop-down"}],"type":"string"},{"display-name":"runlist","constraints":[],"@type":"field","fields":[],"id":"runlist","description":"runlist","hidden":false,"messages":[],"decorators":[],"type":"Array/string"},{"display-name":"reservation","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"reservation","description":"reservation","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"location","constraints":[],"@type":"field","fields":[],"id":"location","description":"location","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"JSON object of vCenter Attributes to apply to VM(s)","constraints":[],"@type":"field","fields":[],"id":"attributesJS","description":"JSON object of vCenter Attributes to apply to VM(s)","hidden":false,"messages":[],"decorators":[{"@type":"multiline"}],"type":"string"},{"display-name":"Chef Nodename","constraints":[],"@type":"field","fields":[],"id":"nodename","description":"Chef Nodename","hidden":false,"messages":[],"decorators":[],"type":"string"}],"messages":[],"hidden":false,"@type":"group"}]}}],"relations":{"link":[{"rel":"up","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/"},{"rel":"instances","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/instances/"},{"rel":"add","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/instances/"}]}}'
14
+
15
+ # Mock the WorkflowService
16
+ @service = double('service')
17
+ allow(@service).to receive(:get_presentation) { @presentation_json }
18
+ end
19
+
20
+ it 'should create the object without error' do
21
+ pres = VcoWorkflows::WorkflowPresentation.new(@service, @workflow_id)
22
+
23
+ expect(pres).to_not eq(nil)
24
+ expect(pres.presentation_data).to_not eq(nil)
25
+ end
26
+
27
+ it 'should have required parameters' do
28
+ pres = VcoWorkflows::WorkflowPresentation.new(@service, @workflow_id)
29
+
30
+ expect(pres.required).to_not eq([])
31
+ expect(pres.required.size).to eq(7)
32
+ end
33
+ end
34
+ # rubocop:enable LineLength
@@ -0,0 +1,114 @@
1
+ require_relative '../spec_helper.rb'
2
+ require 'vcoworkflows'
3
+ require 'erb'
4
+
5
+ include ERB::Util
6
+
7
+ # rubocop:disable LineLength
8
+ # rubocop:disable Metrics/BlockLength
9
+
10
+ describe VcoWorkflows::WorkflowService, 'WorkflowService' do
11
+ before(:each) do
12
+ # Set up some basic starting data
13
+ @workflow_name = 'Request Component'
14
+ @workflow_id = '6e04a460-4a45-4e16-9603-db2922c24462'
15
+ @execution_id = 'ff8080814a1cb55c014a6481a9927a78'
16
+ @workflow_json = '{"output-parameters":[{"name":"result","type":"string","description":"Catalog item request state"},{"name":"requestNumber","type":"number"},{"name":"requestCompletionDetails","type":"string"}],"relations":{"link":[{"rel":"up","href":"https://vco.example.com:8281/vco/api/inventory/System/Workflows/dlinsley%2540vmware.com/vCAC/"},{"rel":"executions","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/"},{"rel":"presentation","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/"},{"rel":"tasks","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/tasks/"},{"rel":"icon","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/icon/"},{"rel":"schema","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/schema/"},{"rel":"permissions","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/permissions/"},{"rel":"interactions","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/interactions/"}]},"id":"6e04a460-4a45-4e16-9603-db2922c24462","name":"Request Component","version":"0.0.33","description":"","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/","customized-icon":false,"input-parameters":[{"name":"coreCount","type":"string"},{"name":"ramMB","type":"string"},{"name":"onBehalfOf","type":"string"},{"name":"machineCount","type":"string"},{"name":"businessUnit","type":"string"},{"name":"reservation","type":"string"},{"name":"location","type":"string"},{"name":"environment","type":"string"},{"name":"image","type":"string","description":"vCenter template name"},{"name":"runlist","type":"Array/string","description":"Chef Runlist for first run. Leave empty for no Chef"},{"name":"nodename","type":"string","description":"Chef Nodename"},{"name":"component","type":"string"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"}]}'
17
+ @token_json = '{"relations":{"link":[{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/","rel":"up"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/","rel":"remove"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/logs/","rel":"logs"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/state/","rel":"state"}]},"id":"ff8080814a1cb55c014a6481a9927a78","state":"completed","name":"Request Component","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/","start-date":1419025426833,"end-date":1419026124320,"started-by":"someuser@EXAMPLE.COM","input-parameters":[{"value":{"string":{"value":"2"}},"type":"string","name":"coreCount","scope":"local"},{"value":{"string":{"value":"2048"}},"type":"string","name":"ramMB","scope":"local"},{"value":{"string":{"value":"svcacct@example.com"}},"type":"string","name":"onBehalfOf","scope":"local"},{"value":{"string":{"value":"1"}},"type":"string","name":"machineCount","scope":"local"},{"value":{"string":{"value":"aw"}},"type":"string","name":"businessUnit","scope":"local"},{"value":{"string":{"value":"nonprodlinux"}},"type":"string","name":"reservation","scope":"local"},{"value":{"string":{"value":"us_east"}},"type":"string","name":"location","scope":"local"},{"value":{"string":{"value":"dev1"}},"type":"string","name":"environment","scope":"local"},{"value":{"string":{"value":"centos-6.6-x86_64-20141203-1"}},"type":"string","name":"image","scope":"local"},{"value":{"array":{"elements":[{"string":{"value":"role[loc_uswest]"}},{"string":{"value":"role[base]"}},{"string":{"value":"role[api]"}}]}},"type":"Array/string","name":"runlist","scope":"local"},{"value":{"string":{"value":""}},"type":"string","name":"nodename","scope":"local"},{"value":{"string":{"value":"api"}},"type":"string","name":"component","scope":"local"},{"value":{"string":{"value":""}},"type":"string","name":"attributesJS","scope":"local"}],"output-parameters":[{"value":{"string":{"value":"SUCCESSFUL"}},"type":"string","name":"result","scope":"local"},{"value":{"number":{"value":326.0}},"type":"number","name":"requestNumber","scope":"local"},{"value":{"string":{"value":"Request succeeded. Created vm00378."}},"type":"string","name":"requestCompletionDetails","scope":"local"}]}'
18
+ @presentation_json = '{"output-parameters":[{"name":"machineCount","type":"string"},{"name":"location","type":"string"},{"name":"image","type":"string","description":"vCenter template name"},{"name":"coreCount","type":"string"},{"name":"ramMB","type":"string"},{"name":"onBehalfOf","type":"string"},{"name":"businessUnit","type":"string"},{"name":"environment","type":"string"},{"name":"component","type":"string"},{"name":"reservation","type":"string"},{"name":"runlist","type":"Array/string","description":"Chef Runlist for first run. Leave empty for no Chef"},{"name":"nodename","type":"string","description":"Chef Nodename"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"}],"input-parameters":[{"name":"businessUnit","type":"string","description":"businessUnit"},{"name":"environment","type":"string","description":"environment"},{"name":"component","type":"string","description":"component"},{"name":"onBehalfOf","type":"string","description":"On Behalf of User: (user@domain format)"},{"name":"machineCount","type":"string","description":"machineCount"},{"name":"image","type":"string","description":"image"},{"name":"coreCount","type":"string","description":"coreCount"},{"name":"ramMB","type":"string","description":"ramSizeMB"},{"name":"runlist","type":"Array/string","description":"runlist"},{"name":"reservation","type":"string","description":"reservation"},{"name":"location","type":"string","description":"location"},{"name":"attributesJS","type":"string","description":"JSON object of vCenter Attributes to apply to VM(s)"},{"name":"nodename","type":"string","description":"Chef Nodename"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/","name":"Request Component","id":"6e04a460-4a45-4e16-9603-db2922c24462","steps":[{"step":{"messages":[],"hidden":false,"elements":[{"fields":[{"display-name":"businessUnit","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"businessUnit","description":"businessUnit","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"an"}},{"string":{"value":"aw"}},{"string":{"value":"soi"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"environment","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"environment","description":"environment","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"component","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"component","description":"component","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"On Behalf of User: (user@domain format)","constraints":[],"@type":"field","fields":[],"id":"onBehalfOf","description":"On Behalf of User: (user@domain format)","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"machineCount","constraints":[],"@type":"field","fields":[],"id":"machineCount","description":"machineCount","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"1"}},{"string":{"value":"2"}},{"string":{"value":"3"}},{"string":{"value":"4"}},{"string":{"value":"5"}},{"string":{"value":"6"}},{"string":{"value":"7"}},{"string":{"value":"8"}},{"string":{"value":"9"}},{"string":{"value":"10"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"image","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"image","description":"image","hidden":false,"messages":[],"decorators":[{"array":{"elements":[{"string":{"value":"vcaccentos65v8-agent"}},{"string":{"value":"win2012std"}},{"string":{"value":"vcac2012std"}},{"string":{"value":"centos-6.6-x86_64-20141203-1"}},{"string":{"value":"v8-centos65-agent"}},{"string":{"value":"vcac2008r2std"}},{"string":{"value":"oracle-6.5-x86_64-20141203-1"}},{"string":{"value":"centos65v8"}},{"string":{"value":"w2012r2std_coreservices"}},{"string":{"value":"2008r2std"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"coreCount","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"coreCount","description":"coreCount","hidden":false,"messages":[],"decorators":[{"@type":"refresh-on-change"},{"array":{"elements":[{"string":{"value":"1"}},{"string":{"value":"2"}},{"string":{"value":"4"}},{"string":{"value":"8"}}]},"@type":"drop-down"}],"type":"string"},{"display-name":"ramSizeMB","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"ramMB","description":"ramSizeMB","hidden":false,"messages":[],"decorators":[{"array":{"elements":[null]},"@type":"drop-down"}],"type":"string"},{"display-name":"runlist","constraints":[],"@type":"field","fields":[],"id":"runlist","description":"runlist","hidden":false,"messages":[],"decorators":[],"type":"Array/string"},{"display-name":"reservation","constraints":[{"@type":"mandatory"}],"@type":"field","fields":[],"id":"reservation","description":"reservation","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"location","constraints":[],"@type":"field","fields":[],"id":"location","description":"location","hidden":false,"messages":[],"decorators":[],"type":"string"},{"display-name":"JSON object of vCenter Attributes to apply to VM(s)","constraints":[],"@type":"field","fields":[],"id":"attributesJS","description":"JSON object of vCenter Attributes to apply to VM(s)","hidden":false,"messages":[],"decorators":[{"@type":"multiline"}],"type":"string"},{"display-name":"Chef Nodename","constraints":[],"@type":"field","fields":[],"id":"nodename","description":"Chef Nodename","hidden":false,"messages":[],"decorators":[],"type":"string"}],"messages":[],"hidden":false,"@type":"group"}]}}],"relations":{"link":[{"rel":"up","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/"},{"rel":"instances","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/instances/"},{"rel":"add","href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/presentation/instances/"}]}}'
19
+ @log_json = '{"logs":[{"entry":{"severity":"info","time-stamp":1419026124333,"user":"someuser","short-description":"Workflow \'Request Component\' has completed","long-description":"Workflow \'Request Component\' has completed"}},{"entry":{"severity":"info","time-stamp":1419026123927,"user":"someuser","short-description":"Workflow \'Request Component\' has resumed","long-description":"Workflow \'Request Component\' has resumed"}},{"entry":{"severity":"info","time-stamp":1419025439183,"user":"someuser","short-description":"Workflow is paused","long-description":"Workflow \'Request Component\' has paused while waiting on signal"}},{"entry":{"severity":"info","time-stamp":1419025426870,"user":"someuser","short-description":"Workflow \'Request Component\' has started","long-description":"Workflow \'Request Component\' has started"}}]}'
20
+ @input_param_count = 13
21
+ @output_param_count = 3
22
+ @required_param_count = 7
23
+ @url = 'https://vco.example.com:8281/vco/api'
24
+ @username = 'jdoe'
25
+ @password = 's3cr3t'
26
+
27
+ # Mock VcoSession
28
+ @session = double('session')
29
+ end
30
+
31
+ it 'should initialize correctly' do
32
+ service = VcoWorkflows::WorkflowService.new(@session)
33
+ expect(service).to_not eq(nil)
34
+ expect(service.class).to eq(VcoWorkflows::WorkflowService)
35
+ end
36
+
37
+ it 'should get workflow by id' do
38
+ response = double('response')
39
+ allow(response).to receive(:body) { @workflow_json }
40
+ allow(@session).to receive(:get) { response }
41
+ expect(@session).to receive(:get).with("/workflows/#{@workflow_id}")
42
+ service = VcoWorkflows::WorkflowService.new(@session)
43
+ res = service.get_workflow_for_id(@workflow_id)
44
+ expect(res).to_not eq(nil)
45
+ expect(res.class).to eq(String)
46
+ expect(res).to eql(@workflow_json)
47
+ end
48
+
49
+ it 'should get workflow by name' do
50
+ query_json = '{"link":[{"attributes":[{"value":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/","name":"itemHref"},{"value":"6e04a460-4a45-4e16-9603-db2922c24462","name":"id"},{"value":"vCAC","name":"categoryName"},{"value":"true","name":"canExecute"},{"value":"https://vco.example.com:8281/vco/api/catalog/System/WorkflowCategory/ff80808148eb04940149d404c1506b3b/","name":"categoryHref"},{"value":"","name":"description"},{"value":"Request Component","name":"name"},{"value":"false","name":"customIcon"},{"value":"Workflow","name":"type"},{"value":"true","name":"canEdit"},{"value":"0.0.33","name":"version"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/","rel":"down"}],"total":1}'
51
+ response = double('response')
52
+ allow(response).to receive(:body) { query_json }
53
+ allow(@session).to receive(:get) { response }
54
+ expect(@session).to receive(:get).with("/workflows?conditions=name=#{url_encode(@workflow_name)}")
55
+ service = VcoWorkflows::WorkflowService.new(@session)
56
+ allow(service).to receive(:get_workflow_for_id) { @workflow_json }
57
+ expect(service).to receive(:get_workflow_for_id).with(@workflow_id)
58
+ wf_json = service.get_workflow_for_name(@workflow_name)
59
+ expect(wf_json).to_not eq(nil)
60
+ expect(wf_json.class).to eq(String)
61
+ expect(wf_json).to eql(@workflow_json)
62
+ end
63
+
64
+ it 'should provide a list of executions' do
65
+ executions_json = '{"relations":{"total":100,"link":[{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/","rel":"up"},{"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/","rel":"add"},{"attributes":[{"value":"ff8080814a1cb55c014a354875ad15be","name":"id"},{"value":"2014-12-10T17:39:08.843Z","name":"startDate"},{"value":"2014-12-10T17:39:13.827Z","name":"endDate"},{"value":"svcacct@example.","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Compute Inputs","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a354875ad15be/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a354c6088163a","name":"id"},{"value":"2014-12-10T17:43:25.577Z","name":"startDate"},{"value":"2014-12-10T18:17:00.107Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a354c6088163a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a354eaa6d1666","name":"id"},{"value":"2014-12-10T17:45:55.567Z","name":"startDate"},{"value":"2014-12-10T17:48:24.880Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a354eaa6d1666/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a355989dc1701","name":"id"},{"value":"2014-12-10T17:57:48.123Z","name":"startDate"},{"value":"2014-12-10T18:03:28.990Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a355989dc1701/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35655e0d177f","name":"id"},{"value":"2014-12-10T18:10:43.340Z","name":"startDate"},{"value":"2014-12-10T18:15:56.477Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35655e0d177f/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35c384ec184e","name":"id"},{"value":"2014-12-10T19:53:33.677Z","name":"startDate"},{"value":"2014-12-10T20:27:10.093Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35c384ec184e/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35cee07e18c9","name":"id"},{"value":"2014-12-10T20:05:58.013Z","name":"startDate"},{"value":"2014-12-10T20:39:30.107Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35cee07e18c9/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35e4e2ae199c","name":"id"},{"value":"2014-12-10T20:30:00.367Z","name":"startDate"},{"value":"2014-12-10T20:36:28.633Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35e4e2ae199c/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35e9689f1a2b","name":"id"},{"value":"2014-12-10T20:34:56.797Z","name":"startDate"},{"value":"2014-12-10T20:41:03.760Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35e9689f1a2b/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35edc0a91adb","name":"id"},{"value":"2014-12-10T20:39:41.480Z","name":"startDate"},{"value":"2014-12-10T20:45:21.347Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35edc0a91adb/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35ef096a1b40","name":"id"},{"value":"2014-12-10T20:41:05.640Z","name":"startDate"},{"value":"2014-12-10T20:47:21.173Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35ef096a1b40/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35f81b151c8c","name":"id"},{"value":"2014-12-10T20:50:59.987Z","name":"startDate"},{"value":"2014-12-10T20:56:30.040Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35f81b151c8c/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a35fc933d1d0a","name":"id"},{"value":"2014-12-10T20:55:52.893Z","name":"startDate"},{"value":"2014-12-10T21:02:27.343Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a35fc933d1d0a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a3600e5911d77","name":"id"},{"value":"2014-12-10T21:00:36.113Z","name":"startDate"},{"value":"2014-12-10T21:07:02.500Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a3600e5911d77/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a361e2bed1ed1","name":"id"},{"value":"2014-12-10T21:32:34.670Z","name":"startDate"},{"value":"2014-12-10T21:37:36.703Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a361e2bed1ed1/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a362989f51f54","name":"id"},{"value":"2014-12-10T21:44:59.637Z","name":"startDate"},{"value":"2014-12-10T21:50:28.687Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a362989f51f54/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a364a070f1ff7","name":"id"},{"value":"2014-12-10T22:20:28.817Z","name":"startDate"},{"value":"2014-12-10T22:25:48.610Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a364a070f1ff7/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a36a5bd2d2214","name":"id"},{"value":"2014-12-11T00:00:39.213Z","name":"startDate"},{"value":"2014-12-11T00:06:30.540Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a36a5bd2d2214/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a3a627f4b2496","name":"id"},{"value":"2014-12-11T17:25:41.323Z","name":"startDate"},{"value":"2014-12-11T17:31:41.463Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a3a627f4b2496/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a3a6783ea2529","name":"id"},{"value":"2014-12-11T17:31:10.187Z","name":"startDate"},{"value":"2014-12-11T17:36:52.760Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a3a6783ea2529/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a3a6b767c2572","name":"id"},{"value":"2014-12-11T17:35:28.893Z","name":"startDate"},{"value":"2014-12-11T17:45:59.917Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a3a6b767c2572/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4eadde7d3499","name":"id"},{"value":"2014-12-15T16:00:25.213Z","name":"startDate"},{"value":"2014-12-15T16:06:56.183Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4eadde7d3499/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4eb73a1235b0","name":"id"},{"value":"2014-12-15T16:10:38.483Z","name":"startDate"},{"value":"2014-12-15T16:16:13.250Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4eb73a1235b0/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4f0c01ab3704","name":"id"},{"value":"2014-12-15T17:43:14.603Z","name":"startDate"},{"value":"2014-12-15T17:49:51.737Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4f0c01ab3704/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4f183b0a37c2","name":"id"},{"value":"2014-12-15T17:56:35.723Z","name":"startDate"},{"value":"2014-12-15T18:03:46.747Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4f183b0a37c2/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4f1aaf4137eb","name":"id"},{"value":"2014-12-15T17:59:16.547Z","name":"startDate"},{"value":"2014-12-15T18:06:22.360Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4f1aaf4137eb/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4f21cdf6396f","name":"id"},{"value":"2014-12-15T18:07:03.157Z","name":"startDate"},{"value":"2014-12-15T18:13:42.400Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4f21cdf6396f/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4f2e587d3a4c","name":"id"},{"value":"2014-12-15T18:20:45.053Z","name":"startDate"},{"value":"2014-12-15T18:26:34.740Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4f2e587d3a4c/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4f4d9ebc3af4","name":"id"},{"value":"2014-12-15T18:54:54.653Z","name":"startDate"},{"value":"2014-12-15T19:00:13.737Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4f4d9ebc3af4/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4fab3b6a3bbb","name":"id"},{"value":"2014-12-15T20:37:09.610Z","name":"startDate"},{"value":"2014-12-15T20:37:51.910Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4fab3b6a3bbb/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4fb467393bc6","name":"id"},{"value":"2014-12-15T20:47:10.650Z","name":"startDate"},{"value":"2014-12-15T20:47:41.030Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Wait for catalog item request","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4fb467393bc6/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a4ffee4fd3cd6","name":"id"},{"value":"2014-12-15T22:08:32.507Z","name":"startDate"},{"value":"2014-12-15T22:42:20.250Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"value":"Get Details","name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a4ffee4fd3cd6/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5001a1853cff","name":"id"},{"value":"2014-12-15T22:11:31.847Z","name":"startDate"},{"value":"2014-12-15T22:11:54.823Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5001a1853cff/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5004a4693d68","name":"id"},{"value":"2014-12-15T22:14:49.193Z","name":"startDate"},{"value":"2014-12-15T22:15:16.123Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5004a4693d68/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5005c15f3d71","name":"id"},{"value":"2014-12-15T22:16:02.143Z","name":"startDate"},{"value":"2014-12-15T22:16:35.040Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5005c15f3d71/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a500710713d7a","name":"id"},{"value":"2014-12-15T22:17:27.920Z","name":"startDate"},{"value":"2014-12-15T22:20:13.257Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a500710713d7a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a500980a03dc8","name":"id"},{"value":"2014-12-15T22:20:07.710Z","name":"startDate"},{"value":"2014-12-15T22:20:44.457Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a500980a03dc8/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a500bf6bf3dd6","name":"id"},{"value":"2014-12-15T22:22:49.023Z","name":"startDate"},{"value":"2014-12-15T22:23:20.083Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a500bf6bf3dd6/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a500ebdcf3de3","name":"id"},{"value":"2014-12-15T22:25:51.057Z","name":"startDate"},{"value":"2014-12-15T22:28:31.970Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a500ebdcf3de3/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5011dec23e33","name":"id"},{"value":"2014-12-15T22:29:16.097Z","name":"startDate"},{"value":"2014-12-15T22:29:39.100Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5011dec23e33/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a501877a33e46","name":"id"},{"value":"2014-12-15T22:36:28.450Z","name":"startDate"},{"value":"2014-12-15T22:38:44.137Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a501877a33e46/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5019ec473e81","name":"id"},{"value":"2014-12-15T22:38:03.847Z","name":"startDate"},{"value":"2014-12-15T22:40:28.393Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5019ec473e81/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a502611c33ee2","name":"id"},{"value":"2014-12-15T22:51:19.877Z","name":"startDate"},{"value":"2014-12-15T22:57:54.097Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a502611c33ee2/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5026643b3eeb","name":"id"},{"value":"2014-12-15T22:51:40.987Z","name":"startDate"},{"value":"2014-12-15T22:52:25.070Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5026643b3eeb/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a502c380b4171","name":"id"},{"value":"2014-12-15T22:58:02.890Z","name":"startDate"},{"value":"2014-12-15T23:07:15.767Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a502c380b4171/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5036ad9244da","name":"id"},{"value":"2014-12-15T23:09:28.337Z","name":"startDate"},{"value":"2014-12-15T23:16:16.843Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5036ad9244da/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a504a66ca4620","name":"id"},{"value":"2014-12-15T23:31:00.937Z","name":"startDate"},{"value":"2014-12-15T23:36:27.130Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a504a66ca4620/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54697aa44bbd","name":"id"},{"value":"2014-12-16T18:43:26.500Z","name":"startDate"},{"value":"2014-12-16T18:51:00.870Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54697aa44bbd/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54750ad34c89","name":"id"},{"value":"2014-12-16T18:56:04.307Z","name":"startDate"},{"value":"2014-12-16T19:02:41.587Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54750ad34c89/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a548abf564d51","name":"id"},{"value":"2014-12-16T19:19:46.773Z","name":"startDate"},{"value":"2014-12-16T19:25:26.757Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a548abf564d51/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5493748d4db9","name":"id"},{"value":"2014-12-16T19:29:17.453Z","name":"startDate"},{"value":"2014-12-16T19:35:48.240Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5493748d4db9/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a549afed94edf","name":"id"},{"value":"2014-12-16T19:37:31.610Z","name":"startDate"},{"value":"2014-12-16T19:43:36.443Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a549afed94edf/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54bad99d4fa0","name":"id"},{"value":"2014-12-16T20:12:19.230Z","name":"startDate"},{"value":"2014-12-16T20:17:48.910Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54bad99d4fa0/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54d130ec523f","name":"id"},{"value":"2014-12-16T20:36:43.370Z","name":"startDate"},{"value":"2014-12-16T20:43:36.920Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54d130ec523f/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54de927c5557","name":"id"},{"value":"2014-12-16T20:51:20.317Z","name":"startDate"},{"value":"2014-12-16T21:01:14.217Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54de927c5557/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54ee69d55ab1","name":"id"},{"value":"2014-12-16T21:08:38.487Z","name":"startDate"},{"value":"2014-12-16T21:19:55.677Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54ee69d55ab1/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54f633fb60ce","name":"id"},{"value":"2014-12-16T21:17:08.987Z","name":"startDate"},{"value":"2014-12-16T21:28:49.913Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54f633fb60ce/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a54f7067661f9","name":"id"},{"value":"2014-12-16T21:18:02.870Z","name":"startDate"},{"value":"2014-12-16T21:30:23.283Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a54f7067661f9/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a552ac01779c9","name":"id"},{"value":"2014-12-16T22:14:32.727Z","name":"startDate"},{"value":"2014-12-16T22:25:12.700Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a552ac01779c9/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a555261557ba2","name":"id"},{"value":"2014-12-16T22:57:49.910Z","name":"startDate"},{"value":"2014-12-16T23:09:42.100Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a555261557ba2/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5568870e00ea","name":"id"},{"value":"2014-12-16T23:22:01.357Z","name":"startDate"},{"value":"2014-12-16T23:29:52.857Z","name":"endDate"},{"value":"svcacct@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5568870e00ea/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a565db80904b6","name":"id"},{"value":"2014-12-17T03:49:50.217Z","name":"startDate"},{"value":"2014-12-17T04:00:43.247Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a565db80904b6/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a595e2cef090d","name":"id"},{"value":"2014-12-17T17:49:11.790Z","name":"startDate"},{"value":"2014-12-17T18:00:48.813Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a595e2cef090d/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a596bb8420b53","name":"id"},{"value":"2014-12-17T18:03:59.427Z","name":"startDate"},{"value":"2014-12-17T18:14:53.647Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a596bb8420b53/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a598611af0d4c","name":"id"},{"value":"2014-12-17T18:32:46.257Z","name":"startDate"},{"value":"2014-12-17T18:43:47.177Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a598611af0d4c/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a079a6c132d","name":"id"},{"value":"2014-12-17T20:54:15.403Z","name":"startDate"},{"value":"2014-12-17T20:57:37.420Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a079a6c132d/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a36fafc13fd","name":"id"},{"value":"2014-12-17T21:46:00.317Z","name":"startDate"},{"value":"2014-12-17T21:57:45.140Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a36fafc13fd/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a3713541403","name":"id"},{"value":"2014-12-17T21:46:06.547Z","name":"startDate"},{"value":"2014-12-17T21:58:16.453Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a3713541403/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a3803ee1437","name":"id"},{"value":"2014-12-17T21:47:08.143Z","name":"startDate"},{"value":"2014-12-17T21:53:01.083Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a3803ee1437/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a381a5b144c","name":"id"},{"value":"2014-12-17T21:47:13.883Z","name":"startDate"},{"value":"2014-12-17T21:58:47.757Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a381a5b144c/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a3a882214e6","name":"id"},{"value":"2014-12-17T21:49:53.057Z","name":"startDate"},{"value":"2014-12-17T21:56:10.847Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a3a882214e6/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a3ac3621520","name":"id"},{"value":"2014-12-17T21:50:08.227Z","name":"startDate"},{"value":"2014-12-17T22:01:01.883Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a3ac3621520/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a48bbc11d1e","name":"id"},{"value":"2014-12-17T22:05:23.777Z","name":"startDate"},{"value":"2014-12-17T22:11:52.040Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a48bbc11d1e/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5a48e1d91d24","name":"id"},{"value":"2014-12-17T22:05:33.530Z","name":"startDate"},{"value":"2014-12-17T22:17:29.443Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5a48e1d91d24/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5abd11212073","name":"id"},{"value":"2014-12-18T00:12:27.810Z","name":"startDate"},{"value":"2014-12-18T00:24:49.590Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5abd11212073/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5abd9958207a","name":"id"},{"value":"2014-12-18T00:13:02.680Z","name":"startDate"},{"value":"2014-12-18T00:25:21.307Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5abd9958207a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5abe42b420a0","name":"id"},{"value":"2014-12-18T00:13:46.037Z","name":"startDate"},{"value":"2014-12-18T00:25:52.400Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5abe42b420a0/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5abed7ea20cc","name":"id"},{"value":"2014-12-18T00:14:24.233Z","name":"startDate"},{"value":"2014-12-18T00:25:52.143Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5abed7ea20cc/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5abf213d20ed","name":"id"},{"value":"2014-12-18T00:14:43.007Z","name":"startDate"},{"value":"2014-12-18T00:28:27.727Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5abf213d20ed/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5b3b39aa300a","name":"id"},{"value":"2014-12-18T02:30:15.723Z","name":"startDate"},{"value":"2014-12-18T02:42:37.863Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5b3b39aa300a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5b3b58943010","name":"id"},{"value":"2014-12-18T02:30:23.637Z","name":"startDate"},{"value":"2014-12-18T02:42:05.883Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5b3b58943010/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5b3b75693017","name":"id"},{"value":"2014-12-18T02:30:31.017Z","name":"startDate"},{"value":"2014-12-18T02:43:33.527Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5b3b75693017/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5b3b8f6b301d","name":"id"},{"value":"2014-12-18T02:30:37.677Z","name":"startDate"},{"value":"2014-12-18T02:43:33.837Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5b3b8f6b301d/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5b3baa0e3024","name":"id"},{"value":"2014-12-18T02:30:44.493Z","name":"startDate"},{"value":"2014-12-18T02:44:48.687Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5b3baa0e3024/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5f279a764460","name":"id"},{"value":"2014-12-18T20:47:18.647Z","name":"startDate"},{"value":"2014-12-18T20:53:15.683Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5f279a764460/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5f2cdb844510","name":"id"},{"value":"2014-12-18T20:53:02.980Z","name":"startDate"},{"value":"2014-12-18T21:01:06.437Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5f2cdb844510/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5fc13c3f4b0a","name":"id"},{"value":"2014-12-18T23:35:07.070Z","name":"startDate"},{"value":"2014-12-18T23:47:45.160Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5fc13c3f4b0a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5fc1812b4b11","name":"id"},{"value":"2014-12-18T23:35:24.717Z","name":"startDate"},{"value":"2014-12-18T23:46:45.230Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5fc1812b4b11/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5fc199af4b17","name":"id"},{"value":"2014-12-18T23:35:30.990Z","name":"startDate"},{"value":"2014-12-18T23:48:16.600Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5fc199af4b17/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5fc1b3254b1e","name":"id"},{"value":"2014-12-18T23:35:37.510Z","name":"startDate"},{"value":"2014-12-18T23:47:45.570Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5fc1b3254b1e/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a5fc1e4834b25","name":"id"},{"value":"2014-12-18T23:35:50.147Z","name":"startDate"},{"value":"2014-12-18T23:49:50.090Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a5fc1e4834b25/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a612ba0485b40","name":"id"},{"value":"2014-12-19T06:10:56.713Z","name":"startDate"},{"value":"2014-12-19T06:12:10.410Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"failed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a612ba0485b40/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a630649ba639a","name":"id"},{"value":"2014-12-19T14:49:24.153Z","name":"startDate"},{"value":"2014-12-19T14:55:37.583Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a630649ba639a/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a63a5691d6bf2","name":"id"},{"value":"2014-12-19T17:43:12.413Z","name":"startDate"},{"value":"2014-12-19T17:49:17.013Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a63a5691d6bf2/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a63a5b5bf6bf9","name":"id"},{"value":"2014-12-19T17:43:32.030Z","name":"startDate"},{"value":"2014-12-19T17:52:00.343Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a63a5b5bf6bf9/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a6445b85b7714","name":"id"},{"value":"2014-12-19T20:38:18.457Z","name":"startDate"},{"value":"2014-12-19T20:43:57.713Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6445b85b7714/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a644f925577cf","name":"id"},{"value":"2014-12-19T20:49:04.087Z","name":"startDate"},{"value":"2014-12-19T20:55:20.557Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a644f925577cf/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a6459f87278c0","name":"id"},{"value":"2014-12-19T21:00:25.587Z","name":"startDate"},{"value":"2014-12-19T21:06:19.517Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6459f87278c0/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a64708829797f","name":"id"},{"value":"2014-12-19T21:25:04.170Z","name":"startDate"},{"value":"2014-12-19T21:31:03.810Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a64708829797f/","rel":"down"},{"attributes":[{"value":"ff8080814a1cb55c014a6481a9927a78","name":"id"},{"value":"2014-12-19T21:43:46.833Z","name":"startDate"},{"value":"2014-12-19T21:55:24.320Z","name":"endDate"},{"value":"someuser@example.com","name":"startedBy"},{"value":"completed","name":"state"},{"value":"Request Component","name":"name"},{"name":"currentItemDisplayName"}],"href":"https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/","rel":"down"}]}}'
66
+ response = double('response')
67
+ allow(response).to receive(:body) { executions_json }
68
+ allow(@session).to receive(:get) { response }
69
+ expect(@session).to receive(:get).with("/workflows/#{@workflow_id}/executions/")
70
+ service = VcoWorkflows::WorkflowService.new(@session)
71
+ executions = service.get_execution_list(@workflow_id)
72
+ expect(executions.class).to eq(Hash)
73
+ expect(executions.size).to eq(100)
74
+ end
75
+
76
+ it 'should get an execution' do
77
+ response = double('response')
78
+ allow(response).to receive(:body) { @token_json }
79
+ allow(@session).to receive(:get) { response }
80
+ expect(@session).to receive(:get).with("/workflows/#{@workflow_id}/executions/#{@execution_id}")
81
+ service = VcoWorkflows::WorkflowService.new(@session)
82
+ execution = service.get_execution(@workflow_id, @execution_id)
83
+ expect(execution.class).to eq(String)
84
+ expect(execution).to eql(@token_json)
85
+ end
86
+
87
+ it 'should get a log' do
88
+ response = double('response')
89
+ allow(response).to receive(:body) { @log_json }
90
+ allow(@session).to receive(:get) { response }
91
+ expect(@session).to receive(:get).with("/workflows/#{@workflow_id}/executions/#{@execution_id}/logs/")
92
+ service = VcoWorkflows::WorkflowService.new(@session)
93
+ log = service.get_log(@workflow_id, @execution_id)
94
+ expect(log).to_not eq(nil)
95
+ expect(log.class).to eq(String)
96
+ end
97
+
98
+ it 'should execute a workflow' do
99
+ res_headers = {
100
+ location: 'https://vco.example.com:8281/vco/api/workflows/6e04a460-4a45-4e16-9603-db2922c24462/executions/ff8080814a1cb55c014a6481a9927a78/'
101
+ }
102
+ parameter_json = '{"parameters":[{"type":"string","name":"coreCount","scope":"local","value":{"string":{"value":"2"}}},{"type":"string","name":"ramMB","scope":"local","value":{"string":{"value":"2048"}}},{"type":"string","name":"onBehalfOf","scope":"local","value":{"string":{"value":"svc.soi_vmware@dev.activenetwork.com"}}},{"type":"string","name":"machineCount","scope":"local","value":{"string":{"value":"1"}}},{"type":"string","name":"businessUnit","scope":"local","value":{"string":{"value":"aw"}}},{"type":"string","name":"reservation","scope":"local","value":{"string":{"value":"nonprodlinux"}}},{"type":"string","name":"location","scope":"local","value":{"string":{"value":"us_east"}}},{"type":"string","name":"environment","scope":"local","value":{"string":{"value":"dev1"}}},{"type":"string","name":"image","scope":"local","value":{"string":{"value":"centos-6.6-x86_64-20141203-1"}}},{"type":"Array","name":"runlist","scope":"local","value":{"array":{"elements":[{"string":{"value":"role[loc_uswest]"}},{"string":{"value":"role[base]"}},{"string":{"value":"role[aw-api]"}}]}}},{"type":"string","name":"component","scope":"local","value":{"string":{"value":"api"}}}]}'
103
+ response = double('response')
104
+ allow(response).to receive(:headers) { res_headers }
105
+ allow(@session).to receive(:post) { response }
106
+ expect(@session).to receive(:post).with("/workflows/#{@workflow_id}/executions/", parameter_json)
107
+ service = VcoWorkflows::WorkflowService.new(@session)
108
+ exec_id = service.execute_workflow(@workflow_id, parameter_json)
109
+ expect(exec_id).to_not eq(nil)
110
+ expect(exec_id.class).to eq(String)
111
+ expect(exec_id).to eql(@execution_id)
112
+ end
113
+ end
114
+ # rubocop:enable LineLength