bosh-director 1.2682.1.0 → 1.2685.0
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.
- checksums.yaml +4 -4
- data/bin/bosh-director +55 -2
- data/lib/bosh/director.rb +15 -2
- data/lib/bosh/director/api/controllers/backups_controller.rb +2 -2
- data/lib/bosh/director/api/controllers/base_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/compiled_packages_controller.rb +2 -2
- data/lib/bosh/director/api/controllers/deployments_controller.rb +40 -26
- data/lib/bosh/director/api/controllers/info_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/locks_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/packages_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/releases_controller.rb +5 -5
- data/lib/bosh/director/api/controllers/resources_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/resurrection_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/stemcells_controller.rb +4 -4
- data/lib/bosh/director/api/controllers/task_controller.rb +20 -0
- data/lib/bosh/director/api/controllers/tasks_controller.rb +3 -18
- data/lib/bosh/director/api/controllers/users_controller.rb +3 -3
- data/lib/bosh/director/api/deployment_lookup.rb +1 -1
- data/lib/bosh/director/api/resource_manager.rb +1 -1
- data/lib/bosh/director/instance_updater/vm_updater.rb +2 -1
- data/lib/bosh/director/jobs/cloud_check/scan.rb +1 -1
- data/lib/bosh/director/jobs/cloud_check/scan_and_fix.rb +1 -1
- data/lib/bosh/director/problem_handlers/missing_disk.rb +74 -0
- data/lib/bosh/director/problem_scanner/disk_scan_stage.rb +80 -0
- data/lib/bosh/director/problem_scanner/problem_register.rb +55 -0
- data/lib/bosh/director/problem_scanner/scanner.rb +86 -0
- data/lib/bosh/director/problem_scanner/vm_scan_stage.rb +134 -0
- data/lib/bosh/director/version.rb +1 -1
- data/lib/cloud/dummy.rb +9 -0
- metadata +29 -26
- data/lib/bosh/director/api/controller.rb +0 -33
- data/lib/bosh/director/api/controllers/errands_controller.rb +0 -26
- data/lib/bosh/director/problem_scanner.rb +0 -268
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 98b2d92521f2e7c1f4b858e42e743b4c6f870725
|
|
4
|
+
data.tar.gz: fc2d3f58d4ba28091df63f69c73d274f367b3052
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 520bc0f8c7bb6079be71da973cfefdad7af0d5331feee3fcabcbe3d5b495b5a39baaded8c47d98cdf6cdeb631729ac6fc511d53466ce87730c0e2a25f760da6c
|
|
7
|
+
data.tar.gz: a76f8db3e2e866081be3e5203dc945685de2feec2cc7c8abd82dc5f4489684c87eeedddeaf4d5fedc7f08eb3b7f67f92e04f2a8a376396cd55138f6854fece8b
|
data/bin/bosh-director
CHANGED
|
@@ -20,8 +20,61 @@ Bosh::Director::App.new(config)
|
|
|
20
20
|
|
|
21
21
|
thin_server = Thin::Server.new('127.0.0.1', config.hash['port'], signals: false) do
|
|
22
22
|
use Rack::CommonLogger
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
|
|
24
|
+
map '/info' do
|
|
25
|
+
run Bosh::Director::Api::Controllers::InfoController.new
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
map '/tasks' do
|
|
29
|
+
run Bosh::Director::Api::Controllers::TasksController.new
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
map '/backups' do
|
|
33
|
+
run Bosh::Director::Api::Controllers::BackupsController.new
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
map '/deployments' do
|
|
37
|
+
run Bosh::Director::Api::Controllers::DeploymentsController.new
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
map '/packages' do
|
|
41
|
+
run Bosh::Director::Api::Controllers::PackagesController.new
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
map '/releases' do
|
|
45
|
+
run Bosh::Director::Api::Controllers::ReleasesController.new
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
map '/resources' do
|
|
49
|
+
run Bosh::Director::Api::Controllers::ResourcesController.new
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
map '/resurrection' do
|
|
53
|
+
run Bosh::Director::Api::Controllers::ResurrectionController.new
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
map '/stemcells' do
|
|
57
|
+
run Bosh::Director::Api::Controllers::StemcellsController.new
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
map '/tasks' do
|
|
61
|
+
run Bosh::Director::Api::Controllers::TasksController.new
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
map '/task' do
|
|
65
|
+
run Bosh::Director::Api::Controllers::TaskController.new
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
map '/users' do
|
|
69
|
+
run Bosh::Director::Api::Controllers::UsersController.new
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
map '/compiled_package_groups' do
|
|
73
|
+
run Bosh::Director::Api::Controllers::CompiledPackagesController.new
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
map '/locks' do
|
|
77
|
+
run Bosh::Director::Api::Controllers::LocksController.new
|
|
25
78
|
end
|
|
26
79
|
end
|
|
27
80
|
|
data/lib/bosh/director.rb
CHANGED
|
@@ -84,7 +84,7 @@ require 'bosh/director/lock'
|
|
|
84
84
|
require 'bosh/director/nats_rpc'
|
|
85
85
|
require 'bosh/director/network_reservation'
|
|
86
86
|
require 'bosh/director/package_compiler'
|
|
87
|
-
require 'bosh/director/problem_scanner'
|
|
87
|
+
require 'bosh/director/problem_scanner/scanner'
|
|
88
88
|
require 'bosh/director/problem_resolver'
|
|
89
89
|
require 'bosh/director/resource_pool_updater'
|
|
90
90
|
require 'bosh/director/sequel'
|
|
@@ -97,6 +97,7 @@ require 'bosh/director/cloudcheck_helper'
|
|
|
97
97
|
require 'bosh/director/problem_handlers/base'
|
|
98
98
|
require 'bosh/director/problem_handlers/invalid_problem'
|
|
99
99
|
require 'bosh/director/problem_handlers/inactive_disk'
|
|
100
|
+
require 'bosh/director/problem_handlers/missing_disk'
|
|
100
101
|
require 'bosh/director/problem_handlers/out_of_sync_vm'
|
|
101
102
|
require 'bosh/director/problem_handlers/unresponsive_agent'
|
|
102
103
|
require 'bosh/director/problem_handlers/unbound_instance_vm'
|
|
@@ -138,4 +139,16 @@ end
|
|
|
138
139
|
|
|
139
140
|
require 'bosh/director/thread_pool'
|
|
140
141
|
require 'bosh/director/api/controller_helpers'
|
|
141
|
-
require 'bosh/director/api/
|
|
142
|
+
require 'bosh/director/api/controllers/backups_controller'
|
|
143
|
+
require 'bosh/director/api/controllers/deployments_controller'
|
|
144
|
+
require 'bosh/director/api/controllers/packages_controller'
|
|
145
|
+
require 'bosh/director/api/controllers/info_controller'
|
|
146
|
+
require 'bosh/director/api/controllers/releases_controller'
|
|
147
|
+
require 'bosh/director/api/controllers/resources_controller'
|
|
148
|
+
require 'bosh/director/api/controllers/resurrection_controller'
|
|
149
|
+
require 'bosh/director/api/controllers/stemcells_controller'
|
|
150
|
+
require 'bosh/director/api/controllers/tasks_controller'
|
|
151
|
+
require 'bosh/director/api/controllers/task_controller'
|
|
152
|
+
require 'bosh/director/api/controllers/users_controller'
|
|
153
|
+
require 'bosh/director/api/controllers/compiled_packages_controller'
|
|
154
|
+
require 'bosh/director/api/controllers/locks_controller'
|
|
@@ -3,11 +3,11 @@ require 'bosh/director/api/controllers/base_controller'
|
|
|
3
3
|
module Bosh::Director
|
|
4
4
|
module Api::Controllers
|
|
5
5
|
class BackupsController < BaseController
|
|
6
|
-
post '/
|
|
6
|
+
post '/' do
|
|
7
7
|
start_task { @backup_manager.create_backup(@user) }
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
get '/
|
|
10
|
+
get '/' do
|
|
11
11
|
send_file(@backup_manager.destination_path)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
@@ -57,7 +57,7 @@ module Bosh::Director
|
|
|
57
57
|
request.env.has_key?(key)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
protected! if auth_provided || !PUBLIC_URLS.include?(request.
|
|
60
|
+
protected! if auth_provided || !PUBLIC_URLS.include?(request.path)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
after { headers('Date' => Time.now.rfc822) } # As thin doesn't inject date
|
|
@@ -16,7 +16,7 @@ module Bosh::Director
|
|
|
16
16
|
@compiled_package_group_manager = Api::CompiledPackageGroupManager.new
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
post '/
|
|
19
|
+
post '/export', consumes: :json do
|
|
20
20
|
stemcell = find_stemcell_by_name_and_version
|
|
21
21
|
release_version = find_release_version_by_name_and_version
|
|
22
22
|
|
|
@@ -36,7 +36,7 @@ module Bosh::Director
|
|
|
36
36
|
send_file(output_path, type: :tgz)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
post '/
|
|
39
|
+
post '/import', consumes: :multipart do
|
|
40
40
|
task = @compiled_package_group_manager.create_from_file_path(@user, params[:nginx_upload_path])
|
|
41
41
|
redirect "/tasks/#{task.id}"
|
|
42
42
|
end
|
|
@@ -3,7 +3,7 @@ require 'bosh/director/api/controllers/base_controller'
|
|
|
3
3
|
module Bosh::Director
|
|
4
4
|
module Api::Controllers
|
|
5
5
|
class DeploymentsController < BaseController
|
|
6
|
-
get '
|
|
6
|
+
get '/:deployment/jobs/:job/:index' do
|
|
7
7
|
instance = @instance_manager.find_by_name(params[:deployment], params[:job], params[:index])
|
|
8
8
|
|
|
9
9
|
response = {
|
|
@@ -18,7 +18,7 @@ module Bosh::Director
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# PUT /deployments/foo/jobs/dea?new_name=dea_new
|
|
21
|
-
put '
|
|
21
|
+
put '/:deployment/jobs/:job', :consumes => :yaml do
|
|
22
22
|
if params['state']
|
|
23
23
|
options = {
|
|
24
24
|
'job_states' => {
|
|
@@ -48,7 +48,7 @@ module Bosh::Director
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
# PUT /deployments/foo/jobs/dea/2?state={started,stopped,detached,restart,recreate}
|
|
51
|
-
put '
|
|
51
|
+
put '/:deployment/jobs/:job/:index', :consumes => :yaml do
|
|
52
52
|
begin
|
|
53
53
|
index = Integer(params[:index])
|
|
54
54
|
rescue ArgumentError
|
|
@@ -72,7 +72,7 @@ module Bosh::Director
|
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
# GET /deployments/foo/jobs/dea/2/logs
|
|
75
|
-
get '
|
|
75
|
+
get '/:deployment/jobs/:job/:index/logs' do
|
|
76
76
|
deployment = params[:deployment]
|
|
77
77
|
job = params[:job]
|
|
78
78
|
index = params[:index]
|
|
@@ -86,17 +86,17 @@ module Bosh::Director
|
|
|
86
86
|
redirect "/tasks/#{task.id}"
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
-
get '
|
|
89
|
+
get '/:deployment/snapshots' do
|
|
90
90
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
|
91
91
|
json_encode(@snapshot_manager.snapshots(deployment))
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
get '
|
|
94
|
+
get '/:deployment/jobs/:job/:index/snapshots' do
|
|
95
95
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
|
96
96
|
json_encode(@snapshot_manager.snapshots(deployment, params[:job], params[:index]))
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
post '
|
|
99
|
+
post '/:deployment/snapshots' do
|
|
100
100
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
|
101
101
|
# until we can tell the agent to flush and wait, all snapshots are considered dirty
|
|
102
102
|
options = {clean: false}
|
|
@@ -105,13 +105,13 @@ module Bosh::Director
|
|
|
105
105
|
redirect "/tasks/#{task.id}"
|
|
106
106
|
end
|
|
107
107
|
|
|
108
|
-
put '
|
|
108
|
+
put '/:deployment/jobs/:job/:index/resurrection', consumes: :json do
|
|
109
109
|
payload = json_decode(request.body)
|
|
110
110
|
|
|
111
111
|
@resurrector_manager.set_pause_for_instance(params[:deployment], params[:job], params[:index], payload['resurrection_paused'])
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
post '
|
|
114
|
+
post '/:deployment/jobs/:job/:index/snapshots' do
|
|
115
115
|
instance = @instance_manager.find_by_name(params[:deployment], params[:job], params[:index])
|
|
116
116
|
# until we can tell the agent to flush and wait, all snapshots are considered dirty
|
|
117
117
|
options = {clean: false}
|
|
@@ -120,14 +120,14 @@ module Bosh::Director
|
|
|
120
120
|
redirect "/tasks/#{task.id}"
|
|
121
121
|
end
|
|
122
122
|
|
|
123
|
-
delete '
|
|
123
|
+
delete '/:deployment/snapshots' do
|
|
124
124
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
|
125
125
|
|
|
126
126
|
task = @snapshot_manager.delete_deployment_snapshots_task(@user, deployment)
|
|
127
127
|
redirect "/tasks/#{task.id}"
|
|
128
128
|
end
|
|
129
129
|
|
|
130
|
-
delete '
|
|
130
|
+
delete '/:deployment/snapshots/:cid' do
|
|
131
131
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
|
132
132
|
snapshot = @snapshot_manager.find_by_cid(deployment, params[:cid])
|
|
133
133
|
|
|
@@ -135,7 +135,7 @@ module Bosh::Director
|
|
|
135
135
|
redirect "/tasks/#{task.id}"
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
get '/
|
|
138
|
+
get '/' do
|
|
139
139
|
deployments = Models::Deployment.order_by(:name.asc).map { |deployment|
|
|
140
140
|
name = deployment.name
|
|
141
141
|
|
|
@@ -153,12 +153,12 @@ module Bosh::Director
|
|
|
153
153
|
json_encode(deployments)
|
|
154
154
|
end
|
|
155
155
|
|
|
156
|
-
get '
|
|
156
|
+
get '/:name' do
|
|
157
157
|
deployment = @deployment_manager.find_by_name(params[:name])
|
|
158
158
|
@deployment_manager.deployment_to_json(deployment)
|
|
159
159
|
end
|
|
160
160
|
|
|
161
|
-
get '
|
|
161
|
+
get '/:name/vms' do
|
|
162
162
|
deployment = @deployment_manager.find_by_name(params[:name])
|
|
163
163
|
|
|
164
164
|
format = params[:format]
|
|
@@ -170,7 +170,7 @@ module Bosh::Director
|
|
|
170
170
|
end
|
|
171
171
|
end
|
|
172
172
|
|
|
173
|
-
delete '
|
|
173
|
+
delete '/:name' do
|
|
174
174
|
deployment = @deployment_manager.find_by_name(params[:name])
|
|
175
175
|
|
|
176
176
|
options = {}
|
|
@@ -181,37 +181,37 @@ module Bosh::Director
|
|
|
181
181
|
end
|
|
182
182
|
|
|
183
183
|
# Property management
|
|
184
|
-
get '
|
|
184
|
+
get '/:deployment/properties' do
|
|
185
185
|
properties = @property_manager.get_properties(params[:deployment]).map do |property|
|
|
186
186
|
{ 'name' => property.name, 'value' => property.value }
|
|
187
187
|
end
|
|
188
188
|
json_encode(properties)
|
|
189
189
|
end
|
|
190
190
|
|
|
191
|
-
get '
|
|
191
|
+
get '/:deployment/properties/:property' do
|
|
192
192
|
property = @property_manager.get_property(params[:deployment], params[:property])
|
|
193
193
|
json_encode('value' => property.value)
|
|
194
194
|
end
|
|
195
195
|
|
|
196
|
-
post '
|
|
196
|
+
post '/:deployment/properties', :consumes => [:json] do
|
|
197
197
|
payload = json_decode(request.body)
|
|
198
198
|
@property_manager.create_property(params[:deployment], payload['name'], payload['value'])
|
|
199
199
|
status(204)
|
|
200
200
|
end
|
|
201
201
|
|
|
202
|
-
post '
|
|
202
|
+
post '/:deployment/ssh', :consumes => [:json] do
|
|
203
203
|
payload = json_decode(request.body)
|
|
204
204
|
task = @instance_manager.ssh(@user, payload)
|
|
205
205
|
redirect "/tasks/#{task.id}"
|
|
206
206
|
end
|
|
207
207
|
|
|
208
|
-
put '
|
|
208
|
+
put '/:deployment/properties/:property', :consumes => [:json] do
|
|
209
209
|
payload = json_decode(request.body)
|
|
210
210
|
@property_manager.update_property(params[:deployment], params[:property], payload['value'])
|
|
211
211
|
status(204)
|
|
212
212
|
end
|
|
213
213
|
|
|
214
|
-
delete '
|
|
214
|
+
delete '/:deployment/properties/:property' do
|
|
215
215
|
@property_manager.delete_property(params[:deployment], params[:property])
|
|
216
216
|
status(204)
|
|
217
217
|
end
|
|
@@ -219,12 +219,12 @@ module Bosh::Director
|
|
|
219
219
|
# Cloud check
|
|
220
220
|
|
|
221
221
|
# Initiate deployment scan
|
|
222
|
-
post '
|
|
222
|
+
post '/:deployment/scans' do
|
|
223
223
|
start_task { @problem_manager.perform_scan(@user, params[:deployment]) }
|
|
224
224
|
end
|
|
225
225
|
|
|
226
226
|
# Get the list of problems for a particular deployment
|
|
227
|
-
get '
|
|
227
|
+
get '/:deployment/problems' do
|
|
228
228
|
problems = @problem_manager.get_problems(params[:deployment]).map do |problem|
|
|
229
229
|
{
|
|
230
230
|
'id' => problem.id,
|
|
@@ -239,12 +239,12 @@ module Bosh::Director
|
|
|
239
239
|
end
|
|
240
240
|
|
|
241
241
|
# Try to resolve a set of problems
|
|
242
|
-
put '
|
|
242
|
+
put '/:deployment/problems', :consumes => [:json] do
|
|
243
243
|
payload = json_decode(request.body)
|
|
244
244
|
start_task { @problem_manager.apply_resolutions(@user, params[:deployment], payload['resolutions']) }
|
|
245
245
|
end
|
|
246
246
|
|
|
247
|
-
put '
|
|
247
|
+
put '/:deployment/scan_and_fix', :consumes => :json do
|
|
248
248
|
jobs_json = json_decode(request.body)['jobs']
|
|
249
249
|
# payload: [['j1', 'i1'], ['j1', 'i2'], ['j2', 'i1'], ...]
|
|
250
250
|
payload = convert_job_instance_hash(jobs_json)
|
|
@@ -252,13 +252,27 @@ module Bosh::Director
|
|
|
252
252
|
start_task { @problem_manager.scan_and_fix(@user, params[:deployment], payload) }
|
|
253
253
|
end
|
|
254
254
|
|
|
255
|
-
post '/
|
|
255
|
+
post '/', :consumes => :yaml do
|
|
256
256
|
options = {}
|
|
257
257
|
options['recreate'] = true if params['recreate'] == 'true'
|
|
258
258
|
|
|
259
259
|
task = @deployment_manager.create_deployment(@user, request.body, options)
|
|
260
260
|
redirect "/tasks/#{task.id}"
|
|
261
261
|
end
|
|
262
|
+
|
|
263
|
+
post '/:deployment_name/errands/:errand_name/runs' do
|
|
264
|
+
deployment_name = params[:deployment_name]
|
|
265
|
+
errand_name = params[:errand_name]
|
|
266
|
+
|
|
267
|
+
task = JobQueue.new.enqueue(
|
|
268
|
+
@user,
|
|
269
|
+
Jobs::RunErrand,
|
|
270
|
+
"run errand #{errand_name} from deployment #{deployment_name}",
|
|
271
|
+
[deployment_name, errand_name],
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
redirect "/tasks/#{task.id}"
|
|
275
|
+
end
|
|
262
276
|
end
|
|
263
277
|
end
|
|
264
278
|
end
|
|
@@ -3,7 +3,7 @@ require 'bosh/director/api/controllers/base_controller'
|
|
|
3
3
|
module Bosh::Director
|
|
4
4
|
module Api::Controllers
|
|
5
5
|
class PackagesController < BaseController
|
|
6
|
-
post '/
|
|
6
|
+
post '/matches', :consumes => :yaml do
|
|
7
7
|
manifest = Psych.load(request.body)
|
|
8
8
|
|
|
9
9
|
unless manifest.is_a?(Hash) && manifest['packages'].is_a?(Array)
|
|
@@ -3,20 +3,20 @@ require 'bosh/director/api/controllers/base_controller'
|
|
|
3
3
|
module Bosh::Director
|
|
4
4
|
module Api::Controllers
|
|
5
5
|
class ReleasesController < BaseController
|
|
6
|
-
post '/
|
|
6
|
+
post '/', :consumes => :json do
|
|
7
7
|
payload = json_decode(request.body)
|
|
8
8
|
rebase = params['rebase'] == 'true'
|
|
9
9
|
task = @release_manager.create_release_from_url(@user, payload['location'], rebase)
|
|
10
10
|
redirect "/tasks/#{task.id}"
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
post '/
|
|
13
|
+
post '/', :consumes => :multipart do
|
|
14
14
|
rebase = params['rebase'] == 'true'
|
|
15
15
|
task = @release_manager.create_release_from_file_path(@user, params[:nginx_upload_path], rebase)
|
|
16
16
|
redirect "/tasks/#{task.id}"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
get '/
|
|
19
|
+
get '/' do
|
|
20
20
|
releases = Models::Release.order_by(:name.asc).map do |release|
|
|
21
21
|
release_versions = release.versions_dataset.order_by(:version.asc).map do |rv|
|
|
22
22
|
{
|
|
@@ -37,7 +37,7 @@ module Bosh::Director
|
|
|
37
37
|
json_encode(releases)
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
get '
|
|
40
|
+
get '/:name' do
|
|
41
41
|
name = params[:name].to_s.strip
|
|
42
42
|
release = @release_manager.find_by_name(name)
|
|
43
43
|
|
|
@@ -69,7 +69,7 @@ module Bosh::Director
|
|
|
69
69
|
json_encode(result)
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
delete '
|
|
72
|
+
delete '/:name' do
|
|
73
73
|
release = @release_manager.find_by_name(params[:name])
|
|
74
74
|
|
|
75
75
|
options = {}
|