conan_deploy 0.0.9 → 0.0.12

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.
@@ -0,0 +1,15 @@
1
+ class HasOptions
2
+ attr_accessor :options
3
+
4
+ def initialize(options)
5
+ @options = options
6
+ end
7
+
8
+ def option(key, value)
9
+ if @options[key].nil?
10
+ @options[key] = [value]
11
+ else
12
+ @options[key] << value
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ require 'conan/application'
2
+ class JvmApp < Application
3
+ attr_accessor :sha1, :artifact_repo
4
+
5
+ def initialize(id, project_name, artifact_repo, options, url_segment=nil)
6
+ super(id, project_name, :jvm, options, url_segment)
7
+ @sha1 = nil
8
+ @artifact_repo = artifact_repo
9
+ end
10
+
11
+ def download(location)
12
+ super
13
+ puts "- Provision NewRelic Agent jar"
14
+ @artifact_repo.downloadNewRelicAgent(File.join(location, @artifact_id), '3.2.3', 'c07cd82e033af9628cd7f90df874daee7000e471')
15
+ end
16
+ end
@@ -0,0 +1,120 @@
1
+ class Manifest
2
+
3
+ def initialize(options, artifact_repo, output)
4
+ @pipelines = {}
5
+ @environments = {}
6
+ @options = options
7
+ @artifact_repo = artifact_repo
8
+ @output = output
9
+ end
10
+
11
+ # select a pipeline and environment to do operations on
12
+ def select(pipeline_id, env_id)
13
+ env = @environments[env_id]
14
+ raise ArgumentError.new "Invalid environment id: '#{env_id}'. Valid options are #{@environments.keys.join(", ")}" if env.nil?
15
+ @current_environment = env
16
+ pl = @pipelines[pipeline_id]
17
+ raise ArgumentError.new "Invalid pipeline id: '#{pipeline_id}'. Valid options are #{@pipelines.keys.join(", ")}" if pl.nil?
18
+ @current_pipeline = pl
19
+ pl.load!(env, @options[:'deploy-shipcloud'])
20
+ end
21
+
22
+ def pipeline(pipeline_id, &block)
23
+ pl = Pipeline.new(pipeline_id, @artifact_repo, @output, @options)
24
+ pl.instance_eval(&block)
25
+ @pipelines[pipeline_id] = pl
26
+ pl
27
+ end
28
+
29
+ def environment(env_id, &block)
30
+ e = Environment.new(env_id)
31
+ e.instance_eval(&block)
32
+ @environments[env_id] = e
33
+ e
34
+ end
35
+
36
+ def appVersion(pipeline_id, app_id)
37
+ @pipelines[pipeline_id].appVersion(app_id)
38
+ end
39
+
40
+ def provision
41
+ validateThatEnvironmentIsSelected
42
+ # TODO banners
43
+ puts "Update #{@current_environment.id} manifest files for #{@current_pipeline.id} pipeline"
44
+ @current_pipeline.update(@current_environment, @environments[@current_environment.upstream_env])
45
+ end
46
+
47
+ def configure
48
+ validateThatEnvironmentIsSelected
49
+ puts "Configure #{@current_environment.id} manifest files for #{@current_pipeline.id} pipeline"
50
+ @current_pipeline.configure(@current_environment)
51
+ end
52
+
53
+ def bg_configure
54
+ validateThatEnvironmentIsSelected
55
+ puts "Blue/green configure #{@current_environment.id} manifest files for #{@current_pipeline.id} pipeline"
56
+ @current_pipeline.configure(@current_environment, true)
57
+ end
58
+
59
+ def paas
60
+ paas_user = @options[:'paas-user'] || ENV['PAAS_USER']
61
+ paas_pwd = @options[:'paas-password'] || ENV['PAAS_PASSWORD']
62
+ dry_run = @options[:'dry-run'] || false
63
+ trace = @options[:'verbose'] || false
64
+
65
+ Stackato.new(paas_user, paas_pwd, trace, dry_run)
66
+ end
67
+
68
+ def deploy
69
+ validateThatEnvironmentIsSelected
70
+ puts "Deploy #{@current_environment.id} for #{@current_pipeline.id} pipeline"
71
+
72
+ nr_api_key = @options[:'new-relic-api-key'] || ENV['NEWRELIC_API_KEY']
73
+ force = @options[:'force-deploy'] || false
74
+
75
+ @current_pipeline.deploy(@current_environment, paas, force) { |app_name|
76
+ if (nr_api_key)
77
+ puts 'Reporting Deployment to New Relic'
78
+ job = @options[:'job-url'] || 'nexus-app-manifest'
79
+ NewRelic.alertDeployment(nr_api_key, app_name, "Deployed by #{job}")
80
+ else
81
+ puts "WARNING: Skipping New Relic alert. No API defined"
82
+ end
83
+ }
84
+ end
85
+
86
+ def bg_deploy
87
+ validateThatEnvironmentIsSelected
88
+ puts "Blue/green deploy #{@current_environment.id} for #{@current_pipeline.id} pipeline"
89
+
90
+ force = @options[:'force-deploy'] || false
91
+
92
+ @current_pipeline.bg_deploy(@current_environment, paas, force)
93
+ end
94
+
95
+ def is_inactive_node_operational?
96
+ validateThatEnvironmentIsSelected
97
+ puts "Blue/green smoke test #{@current_environment.id} for #{@current_pipeline.id} pipeline"
98
+ @current_pipeline.is_inactive_node_operational?(@current_environment, paas)
99
+ end
100
+
101
+ def bg_switch
102
+ validateThatEnvironmentIsSelected
103
+ puts "Blue/green switch #{@current_environment.id} for #{@current_pipeline.id} pipeline"
104
+
105
+ @current_pipeline.bg_switch(@current_environment, paas)
106
+ end
107
+
108
+ def bg_clean
109
+ validateThatEnvironmentIsSelected
110
+ puts "Blue/green clean #{@current_environment.id} for #{@current_pipeline.id} pipeline"
111
+
112
+ @current_pipeline.bg_clean(@current_environment, paas)
113
+ end
114
+
115
+ def validateThatEnvironmentIsSelected
116
+ unless @current_environment && @current_pipeline
117
+ raise ScriptError, 'Environment and Pipeline must be selected'
118
+ end
119
+ end
120
+ end
@@ -1,541 +1,14 @@
1
- require 'rest_client'
2
- require 'rexml/document'
3
- require 'json'
4
- require 'securerandom'
5
- require 'daphne_util'
6
-
7
- require 'conan/output'
8
- require 'conan/repository'
9
- require 'conan/stackato'
10
- require 'conan/newrelic'
11
- require 'conan/application_helper'
12
-
13
1
  module ManifestBuilder
14
- def self.build(options, pipeline_id, env_id, artifact_repo=nil, outthingy=nil, &block)
2
+ def self.build(options, artifact_repo=nil, outthingy=nil, &block)
15
3
  manifest_dir = options[:directory]
16
4
  output_type = options[:format]
17
5
 
18
6
  artifact_repo ||= DefaultArtifactRepository.new
19
7
  outthingy ||= StackatoOutThingy.new(manifest_dir)
20
-
8
+
21
9
  manifest = Manifest.new(options, artifact_repo, outthingy)
22
10
  manifest.instance_eval(&block)
23
- manifest.select(pipeline_id, env_id)
11
+ manifest.select(options[:pipeline], options[:environment])
24
12
  manifest
25
13
  end
26
14
  end
27
-
28
- class Manifest
29
-
30
- def initialize(options, artifact_repo, output)
31
- @pipelines = {}
32
- @environments = {}
33
- @options = options
34
- @artifact_repo = artifact_repo
35
- @output = output
36
- end
37
-
38
- # select a pipeline and environment to do operations on
39
- def select(pipeline_id, env_id)
40
- env = @environments[env_id]
41
- raise ArgumentError.new "Invalid environment id: '#{env_id}'. Valid options are #{@environments.keys.join(", ")}" if env.nil?
42
- @current_environment = env
43
- pl = @pipelines[pipeline_id]
44
- raise ArgumentError.new "Invalid pipeline id: '#{pipeline_id}'. Valid options are #{@pipelines.keys.join(", ")}" if pl.nil?
45
- @current_pipeline = pl
46
- pl.load!(env, @options[:'deploy-shipcloud'])
47
- end
48
-
49
- def pipeline(pipeline_id, &block)
50
- pl = Pipeline.new(pipeline_id, @artifact_repo, @output, @options)
51
- pl.instance_eval(&block)
52
- @pipelines[pipeline_id] = pl
53
- pl
54
- end
55
-
56
- def environment(env_id, &block)
57
- e = Environment.new(env_id)
58
- e.instance_eval(&block)
59
- @environments[env_id] = e
60
- e
61
- end
62
-
63
- def appVersion(pipeline_id, app_id)
64
- @pipelines[pipeline_id].appVersion(app_id)
65
- end
66
-
67
- def provision
68
- validateThatEnvironmentIsSelected
69
- # TODO banners
70
- puts "Update #{@current_environment.id} manifest files for #{@current_pipeline.id} pipeline"
71
- @current_pipeline.update(@current_environment, @environments[@current_environment.upstream_env])
72
- end
73
-
74
- def configure
75
- validateThatEnvironmentIsSelected
76
- puts "Configure #{@current_environment.id} manifest files for #{@current_pipeline.id} pipeline"
77
- @current_pipeline.configure(@current_environment)
78
- end
79
-
80
- def bg_configure
81
- validateThatEnvironmentIsSelected
82
- puts "Blue/green configure #{@current_environment.id} manifest files for #{@current_pipeline.id} pipeline"
83
- @current_pipeline.configure(@current_environment, true)
84
- end
85
-
86
- def paas
87
- paas_user = @options[:'paas-user'] || ENV['PAAS_USER']
88
- paas_pwd = @options[:'paas-password'] || ENV['PAAS_PASSWORD']
89
- dry_run = @options[:'dry-run'] || false
90
- trace = @options[:'verbose'] || false
91
-
92
- Stackato.new(paas_user, paas_pwd, trace, dry_run)
93
- end
94
-
95
- def deploy
96
- validateThatEnvironmentIsSelected
97
- puts "Deploy #{@current_environment.id} for #{@current_pipeline.id} pipeline"
98
-
99
- nr_api_key = @options[:'new-relic-api-key'] || ENV['NEWRELIC_API_KEY']
100
- force = @options[:'force-deploy'] || false
101
-
102
- @current_pipeline.deploy(@current_environment, paas, force) { |app_name|
103
- if (nr_api_key)
104
- puts 'Reporting Deployment to New Relic'
105
- job = @options[:'job-url'] || 'nexus-app-manifest'
106
- NewRelic.alertDeployment(nr_api_key, app_name, "Deployed by #{job}")
107
- else
108
- puts "WARNING: Skipping New Relic alert. No API defined"
109
- end
110
- }
111
- end
112
-
113
- def bg_deploy
114
- validateThatEnvironmentIsSelected
115
- puts "Blue/green deploy #{@current_environment.id} for #{@current_pipeline.id} pipeline"
116
-
117
- force = @options[:'force-deploy'] || false
118
-
119
- @current_pipeline.bg_deploy(@current_environment, paas, force)
120
- end
121
-
122
- def is_inactive_node_operational?
123
- validateThatEnvironmentIsSelected
124
- puts "Blue/green smoke test #{@current_environment.id} for #{@current_pipeline.id} pipeline"
125
- @current_pipeline.is_inactive_node_operational?(@current_environment, paas)
126
- end
127
-
128
- def bg_switch
129
- validateThatEnvironmentIsSelected
130
- puts "Blue/green switch #{@current_environment.id} for #{@current_pipeline.id} pipeline"
131
-
132
- @current_pipeline.bg_switch(@current_environment, paas)
133
- end
134
-
135
- def bg_clean
136
- validateThatEnvironmentIsSelected
137
- puts "Blue/green clean #{@current_environment.id} for #{@current_pipeline.id} pipeline"
138
-
139
- @current_pipeline.bg_clean(@current_environment, paas)
140
- end
141
-
142
- def validateThatEnvironmentIsSelected
143
- unless @current_environment && @current_pipeline
144
- raise ScriptError, 'Environment and Pipeline must be selected'
145
- end
146
- end
147
- end
148
-
149
- class Pipeline
150
- include ApiHelper
151
-
152
- attr_accessor :id, :apps
153
-
154
- def initialize(id, artifact_repo, output, options)
155
- @id = id
156
- @artifact_repo = artifact_repo
157
- @output = output
158
- @apps = {}
159
- @options = options
160
- end
161
-
162
- def app(app_id, project_name, platform_type, url_segment=nil)
163
- if (@options[:'deploy-app-name'].nil?) || (@options[:'deploy-app-name'] == app_id.to_s)
164
- puts "No app specified, or we matched the specified app: #{@options[:'deploy-app-name']}"
165
- @apps[app_id] = case platform_type
166
- when :jvm
167
- JvmApp.new(app_id, project_name, @artifact_repo, url_segment)
168
- when :rails_zip
169
- RailsZipApp.new(app_id, project_name, @artifact_repo, url_segment)
170
- else
171
- raise "unknown platform type: #{platform_type}"
172
- end
173
- else
174
- puts "App #{app_id} doesn't match specified app #{@options[:'deploy-app-name']}, skipping"
175
- end
176
- end
177
-
178
- def appVersion(app_id)
179
- @apps[app_id].version
180
- end
181
-
182
- def load!(environment, deploy_shipcloud)
183
- eachAppDeployment(environment) { |app, deploy|
184
- # load the persisted meta-data
185
- @output.loadAppMetadataFromDeploymentIfExists(app, deploy)
186
- }
187
- @deploy_shipcloud = deploy_shipcloud
188
- end
189
-
190
- def update(environment, from_upstream_env)
191
- @apps.values.each { |app|
192
- puts ''
193
- if !(@options[:'deploy-app-version'].nil?)
194
- puts "Using version from options: #{@options[:'deploy-app-version']}"
195
- app.findRequestedVersion(@options[:'deploy-app-version'])
196
- elsif (from_upstream_env)
197
- # promote versions from an upstream deploy
198
- # TODO: this needs improving
199
- puts "Promote #{app.id} from #{from_upstream_env.id} to #{environment.id}"
200
- upstream_deploy = from_upstream_env.deployments.select { |d| d.app_ids.select {|x| x == app.id }.size > 0 }.first
201
- @output.loadAppMetadataFromDeployment(app, upstream_deploy)
202
- else
203
- puts "Find latest #{app.artifact_id}"
204
- # lookup most recent from repo
205
- app.findRequestedVersion('LATEST')
206
- end
207
- @output.clean(app, environment)
208
- # download artifacts
209
- @output.provision(app)
210
- }
211
-
212
- # write out deployment artifact meta-data
213
- eachAppDeployment(environment) { |app, deploy| @output.writeArtifactMetadata(app, deploy) }
214
- end
215
-
216
- def configure(environment, bg=false)
217
- eachAppDeployment(environment) { |app, deploy| @output.writeConfiguration(app, deploy, bg) }
218
- end
219
-
220
- def deploy(environment, paas, force=false)
221
- eachAppDeployment(environment) { |app, deploy|
222
- work_dir = @output.workingDir(app)
223
- if (force)
224
- paas.deploy(work_dir, app, deploy, true)
225
- else
226
- paas.deploy(work_dir, app, deploy) unless app.isDeployedAt(deploy.manifest_url(app))
227
- end
228
- }
229
- end
230
-
231
- def bg_deploy(environment, paas, force=false)
232
- eachAppDeployment(environment) { |app, deploy|
233
- if (force or !app.isDeployedAt(deploy.manifest_url(app)))
234
- paas.bg_deploy(@output.workingDir(app), app, deploy)
235
- end
236
- }
237
- end
238
-
239
- def is_inactive_node_operational?(environment, paas)
240
- eachAppDeployment(environment) { |app, deploy|
241
- response = ApiHelper.smoke_test(deploy.inactive_smoke_test_url(app), 60)
242
-
243
- if(response.code != 200)
244
- puts "Smoke test failed for inactive (Blue) node. Here is the entire response: #{response.inspect}"
245
- return false
246
- else
247
- return true
248
- end
249
- }
250
- end
251
-
252
- def bg_switch(environment, paas)
253
- eachAppDeployment(environment) { |app, deploy| paas.bg_switch(app, deploy) }
254
- end
255
-
256
- def bg_clean(environment, paas)
257
- eachAppDeployment(environment) { |app, deploy| paas.bg_clean(app, deploy) }
258
- end
259
-
260
- def eachAppDeployment(environment)
261
- selected_deployments = environment.deployments.select{ |d| @deploy_shipcloud.nil? || d.shipcloud == @deploy_shipcloud }
262
- puts "WARNING no deploys selected: #{@deploy_shipcloud}" if selected_deployments.empty?
263
- selected_deployments.each { |d|
264
- d.app_ids.each { |a|
265
- app = @apps[a]
266
- yield app, d if app
267
- }
268
- }
269
- end
270
- end
271
-
272
- class Application
273
-
274
- attr_accessor :id, :platform_type, :group_id, :artifact_id, :version, :extension, :sha1, :artifact_meta_data, :url_segment
275
-
276
- def initialize(id, project_name, platform_type, url_segment=nil)
277
- @id = id
278
- @platform_type = platform_type
279
- @url_segment = url_segment || id
280
- mvn_id = project_name.split(':')
281
- @group_id = mvn_id[0]
282
- @artifact_id = mvn_id[1]
283
- end
284
-
285
- def findRequestedVersion(requested_version='LATEST')
286
- puts("Finding requested version: #{requested_version}")
287
- extension = case platform_type
288
- when :jvm
289
- "jar"
290
- when :rails_zip
291
- "tar.gz"
292
- else
293
- raise "Unsupported platform type: #{platform_type}"
294
- end
295
- readArtifactMetadata(@artifact_repo.resolveArtifact(group_id, artifact_id, extension, requested_version))
296
- puts "- Found version #{version} #{@id} artifact\n"+
297
- " Artifact: #{self}\n" +
298
- " Checksum: #{@sha1}"
299
- end
300
-
301
- def readArtifactMetadata(xml)
302
- @artifact_meta_data = xml
303
- begin
304
- doc = REXML::Document.new(xml)
305
- rescue Exception => e
306
- puts "Failed to parse meta-data: #{e}"
307
- puts "--------------------------------"
308
- puts xml
309
- puts "--------------------------------"
310
- raise "Unreadable artifact meta-data for #{self}"
311
- end
312
-
313
- meta_data = doc.elements['/artifact-resolution/data']
314
- @version = meta_data.elements['version'].text
315
- @sha1 = meta_data.elements['sha1'].text
316
- @extension = meta_data.elements['extension'].text
317
- end
318
-
319
- def download(location)
320
- puts "- Provision #{group_id}:#{artifact_id}:#{extension}:#{version}"
321
- @artifact_repo.downloadArtifact(location, group_id, artifact_id, extension, version, sha1)
322
- end
323
-
324
- def isDeployedAt(url)
325
- # only deploy if an older version is found, or no app found
326
- res = false
327
- begin
328
- response = RestClient::Request.new(
329
- :method => :get,
330
- :url => url,
331
- :headers => {
332
- 'accept' => :json,
333
- 'content_type' => :json
334
- },
335
- :timeout => 5,
336
- :open_timeout => 5
337
- ).execute
338
- if (response.code == 200)
339
- build_metadata = JSON.parse(response.to_str)
340
- puts ''
341
- puts "+- Currently at #{url}:"
342
- printM = ->(s) {
343
- puts " | #{s}: #{build_metadata[s]}"
344
- }
345
- printM.call 'Implementation-Title'
346
- printM.call 'Build-Version'
347
- printM.call 'Build-Url'
348
- printM.call 'Git-Commit'
349
- current_ver = build_metadata["Build-Version"]
350
- end
351
- #TODO make sure the artifact id matches too, currently finding "Implementation-Title": "apollo" in build metadata
352
- if (compareVersion(@version, current_ver))
353
- puts "#{@artifact_id} #{@version} is newer than version found at #{url}: #{current_ver}"
354
- else
355
- puts "#{@artifact_id} #{@version} found at #{url}. (skipping deployment)"
356
- res = true
357
- end
358
- rescue => e
359
- puts "#{@artifact_id} not found at #{url}: #{e}"
360
- end
361
- res
362
- end
363
-
364
-
365
- def compareVersion(target_version, deployed_version)
366
- target = Gem::Version.new(target_version)
367
- begin
368
- found = Gem::Version.new(deployed_version)
369
- target > found
370
- rescue => e
371
- puts "Error parsing version number: #{e}"
372
- false
373
- end
374
- end
375
-
376
- def to_s
377
- "#{artifact_id}-#{version}.#{extension}"
378
- end
379
- end
380
-
381
- class JvmApp < Application
382
- attr_accessor :sha1, :artifact_repo
383
-
384
- def initialize(id, project_name, artifact_repo, url_segment=nil)
385
- super(id, project_name, :jvm, url_segment)
386
- @sha1 = nil
387
- @artifact_repo = artifact_repo
388
- end
389
-
390
- def download(location)
391
- super
392
- puts "- Provision NewRelic Agent jar"
393
- @artifact_repo.downloadNewRelicAgent(File.join(location, @artifact_id), '3.2.3', 'c07cd82e033af9628cd7f90df874daee7000e471')
394
- end
395
- end
396
-
397
- class RailsZipApp < Application
398
- attr_accessor :sha1, :artifact_repo
399
-
400
- def initialize(id, project_name, artifact_repo, url_segment=nil)
401
- super(id, project_name, :rails_zip, url_segment)
402
- @sha1 = nil
403
- @artifact_repo = artifact_repo
404
- end
405
- end
406
-
407
- class HasOptions
408
- attr_accessor :options
409
-
410
- def initialize(options)
411
- @options = options
412
- end
413
-
414
- def option(key, value)
415
- if @options[key].nil?
416
- @options[key] = [value]
417
- else
418
- @options[key] << value
419
- end
420
- end
421
- end
422
-
423
- class Environment #< HasOptions
424
- attr_accessor :id, :upstream_env, :deployments
425
-
426
- def initialize(env_id)
427
- #super({})
428
- @id = env_id
429
- @deployments = []
430
- @org_holder = nil
431
- end
432
-
433
- def promotes_from(env_id)
434
- @upstream_env = env_id
435
- end
436
-
437
- def org(org_name, &block)
438
- @org_holder = org_name
439
- self.instance_eval(&block)
440
- end
441
-
442
- def deploy(ship, &block)
443
- d = Deployment.new(self, @org_holder, ship)
444
- d.instance_eval(&block)
445
- @deployments << d
446
- end
447
- end
448
-
449
- class Deployment < HasOptions
450
-
451
- @@paas_domain = 'mtnsatcloud.com'
452
-
453
- attr_accessor :environment, :org, :ship, :shipcloud, :app_ids, :facility_id, :additional_mappings, :custom_smoke_test_path
454
-
455
- def initialize(environment, org, ship)
456
- # inherit options from the environment
457
- #super(environment.options) # TODO: copy?!
458
- super({})
459
- @environment = environment
460
- @org = org
461
- @ship = ship
462
- @shipcloud = "#{org}-#{ship}"
463
- @app_ids = []
464
- @additional_mappings = []
465
- @facility_id = nil
466
- @enabled = true
467
- @randomid = SecureRandom.hex(3)
468
- @custom_smoke_test_path = nil
469
- end
470
-
471
- def apps(*app_ids)
472
- @app_ids = app_ids
473
- end
474
-
475
- def facility(facility_id)
476
- @facility_id = facility_id
477
- end
478
-
479
- def hostnames(*hostnames)
480
- hostnames.each do |hostname|
481
- @additional_mappings.push(hostname) unless hostname.empty?
482
- end
483
- end
484
-
485
- def enabled(b)
486
- @enabled = b
487
- end
488
-
489
- def enabled?
490
- @enabled
491
- end
492
-
493
- def name(app)
494
- "#{app.id}-#{@environment.id}-#{@ship}"
495
- end
496
-
497
- def unique_name(app)
498
- "#{name(app)}-#{@randomid}"
499
- end
500
-
501
- def dns_name(app)
502
- "#{@environment.id}.#{app.url_segment}.#{@ship}.#{@org}.#{@@paas_domain}"
503
- end
504
-
505
- def agnostic_dns_name(app)
506
- "#{@environment.id}.#{app.url_segment}.#{@@paas_domain}"
507
- end
508
-
509
- def active_urls(app)
510
- [ dns_name(app), agnostic_dns_name(app) ] + @additional_mappings
511
- end
512
-
513
- def inactive_urls(app)
514
- active_urls(app).map{ |url| "inactive.#{url}" }
515
- end
516
-
517
- def manifest_url(app)
518
- "http://#{dns_name(app)}/status/manifest"
519
- end
520
-
521
- def active_smoke_test_url(app)
522
- "http://#{dns_name(app)}/#{@custom_smoke_test_path || 'status/healthcheck'}"
523
- end
524
-
525
- def inactive_smoke_test_url(app)
526
- "http://inactive.#{dns_name(app)}/#{@custom_smoke_test_path || 'status/healthcheck'}"
527
- end
528
-
529
- def paas_target
530
- "https://api.paas.#{@ship}.#{@org}.#{@@paas_domain}"
531
- end
532
-
533
- def to_s
534
- "#{org}-#{ship}"
535
- end
536
-
537
- def smoke_test_path(path=nil)
538
- @custom_smoke_test_path = path
539
- end
540
- end
541
-