7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/nucleus/adapters/v1/openshift_v2/scaling.rb', line 7
def scale(application_id, instances)
id = app_id_by_name(application_id)
app = get("/application/#{id}").body[:data]
fail_with(:not_scalable, [application_id]) unless app[:scalable]
user = get('/user').body[:data]
available_gears = user[:max_gears] - user[:consumed_gears]
requires_additional_gears = instances - app[:gear_count]
if requires_additional_gears > available_gears
fail_with(:insufficient_gears, [application_id, instances, requires_additional_gears, available_gears])
end
while requires_additional_gears > 0
send_event(id, 'scale-up')
requires_additional_gears -= 1
end
while requires_additional_gears < 0
send_event(id, 'scale-down')
requires_additional_gears += 1
end
application(id)
end
|