Пример #1
0
    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
Пример #2
0
 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
Пример #3
0
    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()
Пример #4
0
 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()