need_new_worker = worker_status['waiting'] - worker_status['idle_normal'] - worker_status['idle_power']
+ #TODO: scheduling
+ # 3 packages per 1 instance for 5 minutes
+ # number of packages can be handled with existing instances
+ num_can_handle_now = 3 * (worker_status['idle_normal'] \
+ + worker_status['idle_power'] \
+ + worker_status['building_normal'] \
+ + worker_status['building_power'])
+ # number of packages need workers
+ num_need_more = int((need_new_worker - num_can_handle_now) / 10)
+
if os.getenv('OBS_WORKER_NORMAL_AUTO_SCAILING_ENABLED', '0') == '0':
return
- if need_new_worker > 0:
- print "\"TitleDisplay\": \"+ %d\"" % need_new_worker
+ if num_need_more > 0:
+ print "\"TitleDisplay\": \"+ %d\"" % num_need_more
request_workers(need_new_worker)
elif worker_status['waiting'] <= 0 and len(worker_status['normal_slots_idle']) > 0:
revoke_workers(sorted(worker_status['normal_slots_idle']), OBS_NORMAL_WORKER)