def monitor_registrations(): max_rate = JBoxDynConfig.get_registration_hourly_rate( CloudHost.INSTALL_ID) rate = JBoxUserV2.count_created(1) reg_allowed = JBoxDynConfig.get_allow_registration( CloudHost.INSTALL_ID) CloudHost.log_debug( "registration allowed: %r, rate: %d, max allowed: %d", reg_allowed, rate, max_rate) if (reg_allowed and (rate > max_rate * 1.1)) or ((not reg_allowed) and (rate < max_rate * 0.9)): reg_allowed = not reg_allowed CloudHost.log_info("Changing registration allowed to %r", reg_allowed) JBoxDynConfig.set_allow_registration(CloudHost.INSTALL_ID, reg_allowed) if reg_allowed: num_pending_activations = JBoxUserV2.count_pending_activations() if num_pending_activations > 0: CloudHost.log_info( "scheduling activations for %d pending activations", num_pending_activations) JBoxContainer.async_schedule_activations()
def run(self): try: CloudHost.deregister_instance_dns() except: CloudHost.log_info("No prior dns registration found for the instance") CloudHost.register_instance_dns() JBoxContainer.publish_container_stats() JBox.do_update_user_home_image() JBoxContainer.async_refresh_disks() self.ct.start() self.ioloop.start()
def run(self): try: CloudHost.deregister_instance_dns() except: CloudHost.log_info( "No prior dns registration found for the instance") CloudHost.register_instance_dns() JBoxContainer.publish_container_stats() JBox.do_update_user_home_image() JBoxContainer.async_refresh_disks() self.ct.start() self.ioloop.start()
def monitor_registrations(): max_rate = JBoxDynConfig.get_registration_hourly_rate(CloudHost.INSTALL_ID) rate = JBoxUserV2.count_created(1) reg_allowed = JBoxDynConfig.get_allow_registration(CloudHost.INSTALL_ID) CloudHost.log_debug("registration allowed: %r, rate: %d, max allowed: %d", reg_allowed, rate, max_rate) if (reg_allowed and (rate > max_rate*1.1)) or ((not reg_allowed) and (rate < max_rate*0.9)): reg_allowed = not reg_allowed CloudHost.log_warn("Changing registration allowed to %r", reg_allowed) JBoxDynConfig.set_allow_registration(CloudHost.INSTALL_ID, reg_allowed) if reg_allowed: num_pending_activations = JBoxUserV2.count_pending_activations() if num_pending_activations > 0: CloudHost.log_info("scheduling activations for %d pending activations", num_pending_activations) JBoxContainer.async_schedule_activations()
def do_housekeeping(): JBox.do_update_user_home_image() server_delete_timeout = JBox.cfg['expire'] JBoxContainer.maintain(max_timeout=server_delete_timeout, inactive_timeout=JBox.cfg['inactivity_timeout'], protected_names=JBox.cfg['protected_docknames']) if JBox.cfg['cloud_host']['scale_down'] and (JBoxContainer.num_active() == 0) and \ (JBoxContainer.num_stopped() == 0) and CloudHost.should_terminate(): JBox.log_info("terminating to scale down") try: CloudHost.deregister_instance_dns() except: CloudHost.log_error("Error deregistering instance dns") CloudHost.terminate_instance() elif is_cluster_leader(): CloudHost.log_info("I am the cluster leader") JBox.monitor_registrations() if not JBoxDynConfig.is_stat_collected_within(CloudHost.INSTALL_ID, 7): JBoxContainer.async_collect_stats()
def do_housekeeping(): terminating = False server_delete_timeout = JBox.cfg['expire'] JBoxContainer.maintain(max_timeout=server_delete_timeout, inactive_timeout=JBox.cfg['inactivity_timeout'], protected_names=JBox.cfg['protected_docknames']) if is_cluster_leader(): CloudHost.log_info("I am the cluster leader") JBox.monitor_registrations() if not JBoxDynConfig.is_stat_collected_within(CloudHost.INSTALL_ID, 1): JBoxContainer.async_collect_stats() JBoxContainer.async_update_disk_state() elif JBox.is_ready_to_terminate(): terminating = True JBox.log_warn("terminating to scale down") try: CloudHost.deregister_instance_dns() except: CloudHost.log_error("Error deregistering instance dns") CloudHost.terminate_instance() if not terminating: JBox.do_update_user_home_image()
def do_housekeeping(): terminating = False server_delete_timeout = JBox.cfg['expire'] JBoxContainer.maintain(max_timeout=server_delete_timeout, inactive_timeout=JBox.cfg['inactivity_timeout'], protected_names=JBox.cfg['protected_docknames']) if is_cluster_leader(): CloudHost.log_info("I am the cluster leader") JBox.monitor_registrations() if not JBoxDynConfig.is_stat_collected_within( CloudHost.INSTALL_ID, 7): JBoxContainer.async_collect_stats() elif JBox.is_ready_to_terminate(): terminating = True JBox.log_info("terminating to scale down") try: CloudHost.deregister_instance_dns() except: CloudHost.log_error("Error deregistering instance dns") CloudHost.terminate_instance() if not terminating: JBox.do_update_user_home_image()