def _do_startup(self, cloud): """Starts up the service. At least one node should be running scalaris when the service is started.""" startCloud = self._init_cloud(cloud) try: # create node self.controller.add_context_replacement(self.context, startCloud) reg_key = self.cloud_groups.register_node(cloud) self.logger.info('Creating node in cloud: %s (cloud group %s)', cloud, self.cloud_groups.number(cloud)) [instance] = self.controller.create_nodes(1, client.check_agent_process, 5555, startCloud) # startup agent first_in_group = self.cloud_groups.complete_registration(instance, reg_key, cloud) cloud_number = self.cloud_groups.number(cloud) client.startup(instance.ip, 5555, instance.ip, cloud_number, self.cloud_groups.no_of_groups, first_in_group) self.logger.info('Started node %s in cloud %s (cloud group: %s)', instance.id, cloud, cloud_number) self.logger.info('%s was first node in cloud group: %s', instance.id, first_in_group) self.context['FIRST'] = 'false' self.context['MGMT_SERVER'] = self._render_node(instance, 'mgmt_server') self.logger.info('Finished first node') self.controller.add_context_replacement(self.context, startCloud) except: self.logger.exception('do_startup: Failed to request a new node') self.state = self.S_STOPPED return self.state = self.S_RUNNING
def _do_startup(self, cloud): ''' Starts up the service. At least one node should be running scalaris when the service is started. ''' startCloud = self._init_cloud(cloud) try: self.controller.add_context_replacement(self.context, startCloud) instance = self.controller.create_nodes(1, \ client.check_agent_process, 5555, startCloud) self.nodes += instance self.logger.info('Created node: %s', instance[0]) client.startup(instance[0].ip, 5555, instance[0].ip) self.logger.info('Called startup: %s', instance[0]) self.context['FIRST'] = 'false' self.context['MGMT_SERVER']=self._render_node(instance[0], 'mgmt_server') self.logger.info('Finished first node') self.controller.add_context_replacement(self.context, startCloud) except: self.logger.exception('do_startup: Failed to request a new node') self.state = self.S_STOPPED return self.state = self.S_RUNNING
def _do_add_nodes(self, count, cloud, auto_placement): self.context['KNOWN_HOSTS'] = self._render_known_hosts() try: queue = Queue(maxsize=count) for i in range(count): if auto_placement: (cloud, reg_id) = self.cloud_groups.next() Thread(target=self._do_create_node, args=[cloud, queue, reg_id]).start() else: reg_id = self.cloud_groups.register_node(cloud) Thread(target=self._do_create_node, args=[cloud, queue, reg_id]).start() node_instances = [] for i in range(queue.maxsize): node_instances.append(queue.get(True)) # Startup agents for ([service_node], reg_id, cloud) in node_instances: self.logger.info('node: %s, reg_key: %s, cloud: %s', service_node, reg_id, cloud) cloud_group = self.cloud_groups.number(cloud) first_in_group = self.cloud_groups.complete_registration(service_node, reg_id, cloud) client.startup(service_node.ip, 5555, service_node.ip, cloud_group, self.cloud_groups.no_of_groups, first_in_group) self.logger.info('Started node %s on cloud %s (cloud group: %s)', service_node.id, cloud, cloud_group) self.logger.info('%s was first node in cloud group: %s', service_node.id, first_in_group) self.state = self.S_RUNNING except HttpError as e: self.logger.info('exception in _do_add_nodes2: %s', e) return HttpJsonResponse() except Exception as e: self.logger.info('exception in _do_add_nodes1: %s', e) return HttpJsonResponse() finally: self.logger.info('finished _do_add_nodes') return HttpJsonResponse()
def _do_add_nodes(self, count, cloud): startCloud = self._init_cloud(cloud) try: self.logger.info('Starting nodes: %d', count) self.context['KNOWN_HOSTS']=self._render_known_hosts() self.controller.add_context_replacement(self.context, startCloud) node_instances = self.controller.create_nodes(count, client.check_agent_process, 5555, startCloud) self.logger.info('Create nodes: %s', node_instances) self.nodes += node_instances # Startup agents for node in node_instances: client.startup(node.ip, 5555, node.ip) self.state = self.S_RUNNING self.logger.info('Started nodes: %d %s', count, self.state) except HttpError as e: self.logger.info('exception in _do_add_nodes2: %s', e) return HttpJsonResponse() except Exception as e: self.logger.info('exception in _do_add_nodes1: %s', e) return HttpJsonResponse() finally: self.logger.info('finished _do_add_nodes') return HttpJsonResponse()