Ejemplo n.º 1
0
    def _after_init_common(self, server):
        """ Initializes parts of the server that don't depend on whether the
        server's been allowed to join the cluster or not.
        """
        # Patterns to match during deployment
        self.service_store.patterns_matcher.read_config(
            self.fs_server_config.deploy_patterns_allowed)

        # Static config files
        self.static_config = StaticConfig(
            os.path.join(self.repo_location, 'static'))

        # Key-value DB
        kvdb_config = get_kvdb_config_for_log(self.fs_server_config.kvdb)
        kvdb_logger.info('Worker config `%s`', kvdb_config)

        self.kvdb.config = self.fs_server_config.kvdb
        self.kvdb.server = self
        self.kvdb.decrypt_func = self.crypto_manager.decrypt
        self.kvdb.init()

        kvdb_logger.info('Worker config `%s`', kvdb_config)

        # Lua programs, both internal and user defined ones.
        for name, program in self.get_lua_programs():
            self.kvdb.lua_container.add_lua_program(name, program)

        # TimeUtil needs self.kvdb so it can be set now
        self.time_util = TimeUtil(self.kvdb)

        # Service sources
        self.service_sources = []
        for name in open(
                os.path.join(self.repo_location,
                             self.fs_server_config.main.service_sources)):
            name = name.strip()
            if name and not name.startswith('#'):
                if not os.path.isabs(name):
                    name = os.path.normpath(os.path.join(self.base_dir, name))
                self.service_sources.append(name)

        # User-config from ./config/repo/user-config
        for file_name in os.listdir(self.user_conf_location):
            conf = get_config(self.user_conf_location, file_name)

            # Not used at all in this type of configuration
            conf.pop('user_config_items', None)

            self.user_config[get_user_config_name(file_name)] = conf

        # Convert size of FIFO response buffers to megabytes
        self.fifo_response_buffer_size = int(
            float(self.fs_server_config.misc.fifo_response_buffer_size) *
            megabyte)

        is_first, locally_deployed = self.maybe_on_first_worker(
            server, self.kvdb.conn)

        return is_first, locally_deployed
Ejemplo n.º 2
0
    def handle(self):
        input = self.request.input

        with self.lock('{}-{}-{}'.format(self.name, self.server.name,
                                         input.data)):
            with open(
                    os.path.join(self.server.user_conf_location,
                                 input.file_name), 'wb') as f:
                f.write(input.data)

            conf = get_config(self.server.user_conf_location, input.file_name)
            entry = self.server.user_config.setdefault(
                get_user_config_name(input.file_name), Bunch())
            entry.clear()
            entry.update(conf)