dpl 2.0.3.beta.4 → 2.0.3.beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -3
  3. data/Gemfile.lock +444 -211
  4. data/Rakefile +36 -34
  5. data/bin/dpl +3 -1
  6. data/dpl.gemspec +25 -0
  7. data/lib/dpl/cli.rb +19 -14
  8. data/lib/dpl/ctx/bash.rb +18 -12
  9. data/lib/dpl/ctx/test.rb +21 -15
  10. data/lib/dpl/ctx.rb +2 -0
  11. data/lib/dpl/helper/assets.rb +4 -2
  12. data/lib/dpl/helper/cmd.rb +20 -18
  13. data/lib/dpl/helper/config_file.rb +5 -3
  14. data/lib/dpl/helper/cookbook_site_streaming_uploader.rb +249 -0
  15. data/lib/dpl/helper/env.rb +26 -22
  16. data/lib/dpl/helper/github.rb +2 -0
  17. data/lib/dpl/helper/interpolate.rb +8 -4
  18. data/lib/dpl/helper/memoize.rb +4 -1
  19. data/lib/dpl/helper/squiggle.rb +3 -1
  20. data/lib/dpl/helper/transliterate.rb +3 -1
  21. data/lib/dpl/helper/wrap.rb +3 -1
  22. data/lib/dpl/helper/zip.rb +3 -1
  23. data/lib/dpl/provider/dsl.rb +18 -4
  24. data/lib/dpl/provider/examples.rb +6 -2
  25. data/lib/dpl/provider/status.rb +26 -24
  26. data/lib/dpl/providers/anynines.rb +22 -20
  27. data/lib/dpl/providers/azure_web_apps.rb +21 -19
  28. data/lib/dpl/providers/bintray.rb +44 -37
  29. data/lib/dpl/providers/bluemixcloudfoundry.rb +38 -36
  30. data/lib/dpl/providers/boxfuse.rb +12 -10
  31. data/lib/dpl/providers/cargo.rb +7 -5
  32. data/lib/dpl/providers/chef_supermarket.rb +82 -80
  33. data/lib/dpl/providers/cloud66.rb +17 -15
  34. data/lib/dpl/providers/cloudfiles.rb +8 -6
  35. data/lib/dpl/providers/cloudformation.rb +191 -187
  36. data/lib/dpl/providers/cloudfoundry.rb +32 -30
  37. data/lib/dpl/providers/codedeploy.rb +35 -33
  38. data/lib/dpl/providers/convox.rb +32 -25
  39. data/lib/dpl/providers/datica.rb +30 -28
  40. data/lib/dpl/providers/ecr.rb +66 -64
  41. data/lib/dpl/providers/elasticbeanstalk.rb +14 -12
  42. data/lib/dpl/providers/engineyard.rb +60 -58
  43. data/lib/dpl/providers/firebase.rb +6 -4
  44. data/lib/dpl/providers/flynn.rb +8 -6
  45. data/lib/dpl/providers/gae.rb +28 -25
  46. data/lib/dpl/providers/gcs.rb +59 -57
  47. data/lib/dpl/providers/git_push.rb +199 -195
  48. data/lib/dpl/providers/gleis.rb +19 -17
  49. data/lib/dpl/providers/hackage.rb +15 -13
  50. data/lib/dpl/providers/hephy.rb +18 -16
  51. data/lib/dpl/providers/heroku/api.rb +72 -70
  52. data/lib/dpl/providers/heroku/git.rb +15 -13
  53. data/lib/dpl/providers/heroku.rb +40 -38
  54. data/lib/dpl/providers/lambda.rb +134 -134
  55. data/lib/dpl/providers/launchpad.rb +45 -43
  56. data/lib/dpl/providers/netlify.rb +7 -5
  57. data/lib/dpl/providers/npm.rb +61 -58
  58. data/lib/dpl/providers/nuget.rb +8 -6
  59. data/lib/dpl/providers/openshift.rb +8 -6
  60. data/lib/dpl/providers/opsworks.rb +23 -21
  61. data/lib/dpl/providers/pages/api.rb +14 -14
  62. data/lib/dpl/providers/pages/git.rb +53 -47
  63. data/lib/dpl/providers/pages.rb +3 -1
  64. data/lib/dpl/providers/puppetforge.rb +6 -4
  65. data/lib/dpl/providers/pypi.rb +55 -54
  66. data/lib/dpl/providers/releases.rb +30 -23
  67. data/lib/dpl/providers/rubygems.rb +35 -31
  68. data/lib/dpl/providers/s3.rb +148 -142
  69. data/lib/dpl/providers/scalingo.rb +18 -16
  70. data/lib/dpl/providers/script.rb +4 -2
  71. data/lib/dpl/providers/snap.rb +12 -9
  72. data/lib/dpl/providers/surge.rb +7 -5
  73. data/lib/dpl/providers/testfairy.rb +47 -43
  74. data/lib/dpl/providers/transifex.rb +20 -18
  75. data/lib/dpl/providers.rb +3 -1
  76. data/lib/dpl/string_ext.rb +3 -1
  77. data/lib/dpl/support/aws_sdk_patch.rb +4 -1
  78. data/lib/dpl/support/gems.rb +7 -3
  79. data/lib/dpl/support/gstore_patch.rb +3 -1
  80. data/lib/dpl/support/version.rb +13 -12
  81. data/lib/dpl/version.rb +3 -1
  82. data/lib/dpl.rb +2 -0
  83. data/status.json +237 -0
  84. metadata +32 -15
  85. /data/lib/dpl/providers/{packagecloud.rb → packagecloud.rb_} +0 -0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Cloudformation < Provider
@@ -6,9 +8,9 @@ module Dpl
6
8
 
7
9
  full_name 'AWS CloudFormation'
8
10
 
9
- description sq(<<-str)
11
+ description sq(<<-STR)
10
12
  tbd
11
- str
13
+ STR
12
14
 
13
15
  gem 'aws-sdk-cloudformation', '~> 1.0'
14
16
 
@@ -24,25 +26,25 @@ module Dpl
24
26
  opt '--promote', 'Deploy changes', default: true, note: 'otherwise a change set is created'
25
27
  opt '--role_arn ARN', 'AWS Role ARN'
26
28
  opt '--sts_assume_role ARN', 'AWS Role ARN for cross account deployments (assumed by travis using given AWS credentials).'
27
- opt '--capabilities STR', 'CloudFormation allowed capabilities', type: :array, enum: %w(CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND), sep: ',', see: 'https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html'
29
+ opt '--capabilities STR', 'CloudFormation allowed capabilities', type: :array, enum: %w[CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND], sep: ',', see: 'https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html'
28
30
  opt '--wait', 'Wait for CloutFormation to finish the stack creation and update', default: true
29
31
  opt '--wait_timeout SEC', 'How many seconds to wait for stack creation and update.', type: :integer, default: 3600
30
32
  opt '--create_timeout SEC', 'How many seconds to wait before the stack status becomes CREATE_FAILED', type: :integer, default: 3600, note: 'valid only when creating a stack'
31
33
  opt '--parameters STR', 'key=value pairs or ENV var names', type: :array, eg: 'one=1 or ENV_VAR_TWO'
32
34
  opt '--output_file PATH', 'Path to output file to store CloudFormation outputs to'
33
35
 
34
- msgs login: 'Using Access Key: %{access_key_id}',
35
- create_stack: 'Creating stack ...',
36
- promote_stack: 'Promoting stack ...',
36
+ msgs login: 'Using Access Key: %{access_key_id}',
37
+ create_stack: 'Creating stack ...',
38
+ promote_stack: 'Promoting stack ...',
37
39
  create_change_set: 'Creating change set ...',
38
- stack_up_to_date: 'Stack already up to date.',
40
+ stack_up_to_date: 'Stack already up to date.',
39
41
  delete_change_set: 'No changes in stack. Removing changeset.',
40
- done: 'Done.',
41
- missing_template: 'File does not exist: %{template}',
42
- invalid_creds: 'Invalid credentials'
42
+ done: 'Done.',
43
+ missing_template: 'File does not exist: %{template}',
44
+ invalid_creds: 'Invalid credentials'
43
45
 
44
- strs change_set_name: 'travis-ci-build-%{build_number}-%{now}',
45
- change_set_desc: 'Changeset created by Travis CI job for build #%{build_number} (%{git_sha})'
46
+ strs change_set_name: 'travis-ci-build-%{build_number}-%{now}',
47
+ change_set_desc: 'Changeset created by Travis CI job for build #%{build_number} (%{git_sha})'
46
48
 
47
49
  def login
48
50
  info :login
@@ -57,221 +59,223 @@ module Dpl
57
59
 
58
60
  private
59
61
 
60
- def update
61
- promote? ? promote : create_change_set(:update)
62
- rescue Aws::CloudFormation::Errors::ValidationError => e
63
- raise e unless e.message.start_with?('No updates are to be performed')
64
- info :stack_up_to_date
65
- end
62
+ def update
63
+ promote? ? promote : create_change_set(:update)
64
+ rescue Aws::CloudFormation::Errors::ValidationError => e
65
+ raise e unless e.message.start_with?('No updates are to be performed')
66
66
 
67
- def promote
68
- info :promote_stack
69
- client.update_stack(common_params)
70
- stream_events(stack_name, :stack_update_complete) if wait?
71
- info :done
72
- end
67
+ info :stack_up_to_date
68
+ end
73
69
 
74
- def create
75
- promote? ? create_stack : create_change_set(:create)
76
- end
70
+ def promote
71
+ info :promote_stack
72
+ client.update_stack(common_params)
73
+ stream_events(stack_name, :stack_update_complete) if wait?
74
+ info :done
75
+ end
77
76
 
78
- def create_stack
79
- info :create_stack
80
- params = { timeout_in_minutes: create_timeout, on_failure: 'ROLLBACK' }
81
- client.create_stack(common_params.merge(params))
82
- stream_events(stack_name, :stack_create_complete) if wait?
83
- info :done
84
- end
77
+ def create
78
+ promote? ? create_stack : create_change_set(:create)
79
+ end
85
80
 
86
- def create_change_set(type)
87
- info :create_change_set
88
- set = client.create_change_set(common_params.merge(change_set_params(type)))
89
- wait_for(:change_set_create_complete, change_set_name: set.id) if wait? && !test?
90
- info :done
91
- rescue Aws::Waiters::Errors::FailureStateError => e
92
- raise e unless change_set_contains_changes?(set)
93
- info :delete_change_set
94
- client.delete_change_set(change_set_name: set.id)
95
- end
81
+ def create_stack
82
+ info :create_stack
83
+ params = { timeout_in_minutes: create_timeout, on_failure: 'ROLLBACK' }
84
+ client.create_stack(common_params.merge(params))
85
+ stream_events(stack_name, :stack_create_complete) if wait?
86
+ info :done
87
+ end
96
88
 
97
- def change_set_params(type)
98
- {
99
- change_set_type: type.to_s.upcase,
100
- change_set_name: interpolate(str(:change_set_name)),
101
- description: interpolate(str(:change_set_desc))
102
- }
103
- end
89
+ def create_change_set(type)
90
+ info :create_change_set
91
+ set = client.create_change_set(common_params.merge(change_set_params(type)))
92
+ wait_for(:change_set_create_complete, change_set_name: set.id) if wait? && !test?
93
+ info :done
94
+ rescue Aws::Waiters::Errors::FailureStateError => e
95
+ raise e unless change_set_contains_changes?(set)
104
96
 
105
- def change_set_contains_changes?(change_set)
106
- data = client.describe_change_set(change_set_name: change_set.id)
107
- data.status_reason.start_with?(%(The submitted information didn't contain changes))
108
- end
97
+ info :delete_change_set
98
+ client.delete_change_set(change_set_name: set.id)
99
+ end
109
100
 
110
- def stack_exists?
111
- stack = last_stack
112
- stack && stack.stack_status != 'REVIEW_IN_PROGRESS'
113
- rescue Aws::CloudFormation::Errors::ValidationError => e
114
- raise e unless e.message.include?('does not exist')
115
- false
116
- end
101
+ def change_set_params(type)
102
+ {
103
+ change_set_type: type.to_s.upcase,
104
+ change_set_name: interpolate(str(:change_set_name)),
105
+ description: interpolate(str(:change_set_desc))
106
+ }
107
+ end
117
108
 
118
- def stream_events(stack_name, condition)
119
- stream = EventStream.new(client, stack_name, method(:info))
120
- wait_for(condition, stack_name: stack_name) unless test? # hmm.
121
- ensure
122
- stream.stop unless stream.nil?
123
- end
109
+ def change_set_contains_changes?(change_set)
110
+ data = client.describe_change_set(change_set_name: change_set.id)
111
+ data.status_reason.start_with?(%(The submitted information didn't contain changes))
112
+ end
124
113
 
125
- def wait_for(cond, params)
126
- started_at = Time.now
127
- timeout = lambda { |*| throw :failure if Time.now - started_at > wait_timeout }
128
- # params = params.merge(max_attempts: nil, delay: 5, before_wait: timeout)
129
- client.wait_until(cond, params) { |w| w.before_wait(&timeout) }
130
- end
114
+ def stack_exists?
115
+ stack = last_stack
116
+ stack && stack.stack_status != 'REVIEW_IN_PROGRESS'
117
+ rescue Aws::CloudFormation::Errors::ValidationError => e
118
+ raise e unless e.message.include?('does not exist')
131
119
 
132
- def store_events
133
- logs = last_stack.outputs || {}
134
- logs = logs.map { |log| "#{log[:output_key]}=#{log[:output_value]}" }
135
- File.write(output_file, logs.join("\n"))
136
- end
120
+ false
121
+ end
137
122
 
138
- def last_stack
139
- client.describe_stacks(stack_name: stack_name)[:stacks].first
140
- end
123
+ def stream_events(stack_name, condition)
124
+ stream = EventStream.new(client, stack_name, method(:info))
125
+ wait_for(condition, stack_name:) unless test? # hmm.
126
+ ensure
127
+ stream&.stop
128
+ end
141
129
 
142
- def common_params
143
- params = {
144
- stack_name: stack_name,
145
- role_arn: role_arn,
146
- capabilities: capabilities,
147
- parameters: parameters
148
- }
149
- params.merge!(template_param)
150
- @common_params ||= compact(params)
151
- end
130
+ def wait_for(cond, params)
131
+ started_at = Time.now
132
+ timeout = ->(*) { throw :failure if Time.now - started_at > wait_timeout }
133
+ # params = params.merge(max_attempts: nil, delay: 5, before_wait: timeout)
134
+ client.wait_until(cond, params) { |w| w.before_wait(&timeout) }
135
+ end
152
136
 
153
- def parameters
154
- @parameters ||= Array(super).map do |str|
155
- key, value = str.split('=', 2)
156
- { parameter_key: key, parameter_value: value || ENV[key] }
157
- end
158
- end
137
+ def store_events
138
+ logs = last_stack.outputs || {}
139
+ logs = logs.map { |log| "#{log[:output_key]}=#{log[:output_value]}" }
140
+ File.write(output_file, logs.join("\n"))
141
+ end
159
142
 
160
- def create_timeout
161
- super / 60
162
- end
143
+ def last_stack
144
+ client.describe_stacks(stack_name:)[:stacks].first
145
+ end
163
146
 
164
- def stack_name
165
- @stack_name ||= "#{stack_name_prefix}#{super}"
166
- end
147
+ def common_params
148
+ params = {
149
+ stack_name:,
150
+ role_arn:,
151
+ capabilities:,
152
+ parameters:
153
+ }
154
+ params.merge!(template_param)
155
+ @common_params ||= compact(params)
156
+ end
167
157
 
168
- def template_param
169
- str = template
170
- return { template_url: str } if url?(str)
171
- return { template_body: read(str) } if file?(str)
172
- error(:missing_template)
158
+ def parameters
159
+ @parameters ||= Array(super).map do |str|
160
+ key, value = str.split('=', 2)
161
+ { parameter_key: key, parameter_value: value || ENV[key] }
173
162
  end
163
+ end
174
164
 
175
- def client
176
- @client ||= Aws::CloudFormation::Client.new(client_options)
177
- end
165
+ def create_timeout
166
+ super / 60
167
+ end
178
168
 
179
- def client_options
180
- params = { region: region, credentials: credentials }
181
- params = params.merge(credentials: assume_role(params)) if sts_assume_role?
182
- params
183
- end
169
+ def stack_name
170
+ @stack_name ||= "#{stack_name_prefix}#{super}"
171
+ end
184
172
 
185
- def credentials
186
- Aws::Credentials.new(access_key_id, secret_access_key)
187
- end
173
+ def template_param
174
+ str = template
175
+ return { template_url: str } if url?(str)
176
+ return { template_body: read(str) } if file?(str)
188
177
 
189
- def assume_role(params)
190
- assumed_role = Aws::STS::Client.new(params).assume_role(
191
- role_arn: sts_assume_role,
192
- role_session_name: "travis-build-#{build_number}"
193
- )
194
- Aws::Credentials.new(
195
- assumed_role.credentials.access_key_id,
196
- assumed_role.credentials.secret_access_key,
197
- assumed_role.credentials.session_token
198
- )
199
- end
178
+ error(:missing_template)
179
+ end
200
180
 
201
- def now
202
- Time.now.strftime('%Y%m%d%H%M%S')
203
- end
181
+ def client
182
+ @client ||= Aws::CloudFormation::Client.new(client_options)
183
+ end
204
184
 
205
- def url?(str)
206
- str =~ %r(^https?://)
207
- end
185
+ def client_options
186
+ params = { region:, credentials: }
187
+ params = params.merge(credentials: assume_role(params)) if sts_assume_role?
188
+ params
189
+ end
208
190
 
209
- class EventStream < Struct.new(:client, :stack_name, :handler)
210
- attr_reader :thread
191
+ def credentials
192
+ Aws::Credentials.new(access_key_id, secret_access_key)
193
+ end
211
194
 
212
- def initialize(*)
213
- super
214
- @event = describe_stack_events.stack_events.first
215
- @thread = Thread.new(&method(:process))
216
- end
195
+ def assume_role(params)
196
+ assumed_role = Aws::STS::Client.new(params).assume_role(
197
+ role_arn: sts_assume_role,
198
+ role_session_name: "travis-build-#{build_number}"
199
+ )
200
+ Aws::Credentials.new(
201
+ assumed_role.credentials.access_key_id,
202
+ assumed_role.credentials.secret_access_key,
203
+ assumed_role.credentials.session_token
204
+ )
205
+ end
217
206
 
218
- def stop
219
- mutex.synchronize { @stop = true }
220
- thread.join
221
- end
207
+ def now
208
+ Time.now.strftime('%Y%m%d%H%M%S')
209
+ end
222
210
 
223
- private
211
+ def url?(str)
212
+ str =~ %r{^https?://}
213
+ end
224
214
 
225
- def process
226
- until mutex.synchronize { @stop }
227
- @event, events = events_since(@event)
228
- events.each { |e| handler.call(format_event(e)) }
229
- sleep 5 unless ENV['ENV'] == 'test'
230
- end
231
- end
215
+ class EventStream < Struct.new(:client, :stack_name, :handler)
216
+ attr_reader :thread
232
217
 
233
- # source: https://github.com/rvedotrc/cfn-events/blob/master/lib/cfn-events/runner.rb
234
- def events_since(event)
235
- described_stack = describe_stack_events
236
- stack_events = described_stack.stack_events
237
- return [event, []] if stack_events.first.event_id == event.event_id
218
+ def initialize(*)
219
+ super
220
+ @event = describe_stack_events.stack_events.first
221
+ @thread = Thread.new(&method(:process))
222
+ end
238
223
 
239
- events = []
240
- described_stack.each_page do |page|
224
+ def stop
225
+ mutex.synchronize { @stop = true }
226
+ thread.join
227
+ end
241
228
 
229
+ private
242
230
 
243
- if (oldest_new = page.stack_events.index { |e| e.event_id == event.event_id })
244
- events.concat(page.stack_events[0..oldest_new - 1])
245
- return [events.first, events.reverse]
246
- end
247
- events.concat(page.stack_events)
248
- end
231
+ def process
232
+ until mutex.synchronize { @stop }
233
+ @event, events = events_since(@event)
234
+ events.each { |e| handler.call(format_event(e)) }
235
+ sleep 5 unless ENV['ENV'] == 'test'
236
+ end
237
+ end
249
238
 
250
- warn %(Last-seen stack event is no longer returned by AWS. Please raise this as a provider's bug.)
251
- [events.first, events.reverse]
239
+ # source: https://github.com/rvedotrc/cfn-events/blob/master/lib/cfn-events/runner.rb
240
+ def events_since(event)
241
+ described_stack = describe_stack_events
242
+ stack_events = described_stack.stack_events
243
+ return [event, []] if stack_events.first.event_id == event.event_id
244
+
245
+ events = []
246
+ described_stack.each_page do |page|
247
+ if (oldest_new = page.stack_events.index { |e| e.event_id == event.event_id })
248
+ events.concat(page.stack_events[0..oldest_new - 1])
249
+ return [events.first, events.reverse]
252
250
  end
251
+ events.concat(page.stack_events)
252
+ end
253
253
 
254
- def describe_stack_events
255
- client.describe_stack_events(stack_name: stack_name)
256
- end
254
+ warn %(Last-seen stack event is no longer returned by AWS. Please raise this as a provider's bug.)
255
+ [events.first, events.reverse]
256
+ end
257
257
 
258
- def mutex
259
- @mutex ||= Mutex.new
260
- end
258
+ def describe_stack_events
259
+ client.describe_stack_events(stack_name:)
260
+ end
261
261
 
262
- EVENT_KEYS = %i(timestamp resource_type resource_status logical_resource_id
263
- physical_resource_id resource_status_reason)
262
+ def mutex
263
+ @mutex ||= Mutex.new
264
+ end
264
265
 
265
- def format_event(event)
266
- parts = EVENT_KEYS.map { |key| event.send(key) }
267
- parts[0] = format_timestamp(parts[0])
268
- parts.join(' ')
269
- end
266
+ EVENT_KEYS = %i[timestamp resource_type resource_status logical_resource_id
267
+ physical_resource_id resource_status_reason].freeze
270
268
 
271
- def format_timestamp(timestamp)
272
- timestamp.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
273
- end
269
+ def format_event(event)
270
+ parts = EVENT_KEYS.map { |key| event.send(key) }
271
+ parts[0] = format_timestamp(parts[0])
272
+ parts.join(' ')
273
+ end
274
+
275
+ def format_timestamp(timestamp)
276
+ timestamp.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
274
277
  end
278
+ end
275
279
  end
276
280
  end
277
281
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Cloudfoundry < Provider
@@ -7,9 +9,9 @@ module Dpl
7
9
 
8
10
  full_name 'Cloud Foundry'
9
11
 
10
- description sq(<<-str)
12
+ description sq(<<-STR)
11
13
  tbd
12
- str
14
+ STR
13
15
 
14
16
  env :cloudfoundry
15
17
 
@@ -23,20 +25,20 @@ module Dpl
23
25
  opt '--manifest FILE', 'Path to the manifest'
24
26
  opt '--skip_ssl_validation', 'Skip SSL validation'
25
27
  opt '--deployment_strategy STRATEGY', 'Deployment strategy, either rolling or null'
26
- opt '--v3', 'Use the v3 API version to push the application'
28
+ opt '--v3', 'Use the v3 API version to push the application'
27
29
  opt '--logout', default: true, internal: true
28
30
 
29
31
  cmds install: 'test $(uname) = "Linux" && rel="linux64-binary" || rel="macosx64"; wget "https://cli.run.pivotal.io/stable?release=${rel}&version=v7&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz',
30
- api: './cf api %{api} %{skip_ssl_validation_opt}',
31
- login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
32
- push: './cf %{push_cmd} %{push_args}',
33
- logout: './cf logout'
32
+ api: './cf api %{api} %{skip_ssl_validation_opt}',
33
+ login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
34
+ push: './cf %{push_cmd} %{push_args}',
35
+ logout: './cf logout'
34
36
 
35
37
  errs install: 'Failed to install CLI tools',
36
- api: 'Failed to set api %{api}',
37
- login: 'Failed to login',
38
- push: 'Failed to push app',
39
- logout: 'Failed to logout'
38
+ api: 'Failed to set api %{api}',
39
+ login: 'Failed to login',
40
+ push: 'Failed to push app',
41
+ logout: 'Failed to logout'
40
42
 
41
43
  msgs manifest_missing: 'Application must have a manifest.yml for unattended deployment'
42
44
 
@@ -63,25 +65,25 @@ module Dpl
63
65
 
64
66
  private
65
67
 
66
- def push_cmd
67
- v3? ? 'v3-push' : 'push'
68
- end
69
-
70
- def push_args
71
- args = []
72
- args << quote(app_name) if app_name?
73
- args << "-f #{manifest}" if manifest?
74
- args << "--strategy #{deployment_strategy}" if deployment_strategy?
75
- args.join(' ')
76
- end
77
-
78
- def skip_ssl_validation_opt
79
- '--skip-ssl-validation' if skip_ssl_validation?
80
- end
81
-
82
- def manifest_missing?
83
- !File.exists?(manifest)
84
- end
68
+ def push_cmd
69
+ v3? ? 'v3-push' : 'push'
70
+ end
71
+
72
+ def push_args
73
+ args = []
74
+ args << quote(app_name) if app_name?
75
+ args << "-f #{manifest}" if manifest?
76
+ args << "--strategy #{deployment_strategy}" if deployment_strategy?
77
+ args.join(' ')
78
+ end
79
+
80
+ def skip_ssl_validation_opt
81
+ '--skip-ssl-validation' if skip_ssl_validation?
82
+ end
83
+
84
+ def manifest_missing?
85
+ !File.exist?(manifest)
86
+ end
85
87
  end
86
88
  end
87
89
  end