Beispiel #1
0
    def testCfgValuesFromNamedSection(self):
        cfg_parser = SafeConfigParser()

        cfg_parser.set('DEFAULT', 'host', 'myhost')
        cfg_parser.set('DEFAULT', 'bucket', 'mybucket')
        cfg_parser.set('DEFAULT', 'password', 'mypassword')
        cfg_parser.set('DEFAULT', 'cfg_docid', 'mycfg_docid')

        cfg_parser.add_section('pdc')
        cfg_parser.set('pdc', 'host', 'pdchost')
        cfg_parser.set('pdc', 'bucket', 'pdcbucket')
        cfg_parser.set('pdc', 'password', 'pdcpassword')
        cfg_parser.set('pdc', 'cfg_docid', 'pdccfg_docid')

        _, cfg_file = tempfile.mkstemp()
        with open(cfg_file, 'w') as fp:
            cfg_parser.write(fp)

        params = util.read_cb_cfg('pdc', '', cfg_path=cfg_file)

        os.remove(cfg_file)
        self.assertEqual('pdchost', params['host'])
        self.assertEqual('pdcbucket', params['bucket'])
        self.assertEqual('pdcpassword', params['password'])
        self.assertEqual('pdccfg_docid', params['cfg_docid'])
Beispiel #2
0
    def run(self):

        self.logger = self._setup_logger(self.service_name)

        self.logger.info('starting')

        try:
            cb_cfg = util.read_cb_cfg(self.service_name, self.default_cfg_docid)
            self.logger.info('read Couchbase configuration: %(host)s, %(bucket)s' % cb_cfg)
        except Exception as e:
            self.logger.error('error reading Couchbase configuration: %s' % e)
            return 1

        try:
            self.cb = util.init_cb_client(cb_cfg)
            self.logger.info('created Couchbase client')
        except Exception as e:
            self.logger.error('error creating Couchbase client: %s' % e)
            return 1

        self.logger.info('finished initialization')

        try:

            while True:

                time.sleep(self.pause)

                try:
                    self.cfg = util.get_service_cfg(self.cb, cb_cfg['cfg_docid'])
                except Exception as e:
                    self.logger.error('error reading service configuration: %s' % e)
                    continue

                try:
                    self._validate_service_cfg(self.cfg)
                    util.heartbeat(self.cb, self.heartbeat_docid)
                except Exception as e:
                    msg = 'service configuration error: %s' % e
                    util.heartbeat(self.cb, self.heartbeat_docid, status='ERROR', message=msg)
                    self.logger.error(msg)
                    continue

                for job in self._jobs():
                    job_id = self._job_id(job)
                    self.logger.info('evaluating %s' % job_id)
                    if self._claim(job):
                        self.logger.info('claimed %s' % job_id)
                        self._execute(job)

        except SystemExit:
            util.heartbeat(self.cb, self.heartbeat_docid, status='STOPPED', message='normal shutdown')
            self.logger.info('terminated')

        except Exception as e:
            util.heartbeat(self.cb, self.heartbeat_docid, status='ERROR', message=str(e))
            self.logger.error('unexpected exception: %s' % traceback.format_exc())
Beispiel #3
0
    def testDefaultsFromEmptyCfg(self):
        _, cfg_file = tempfile.mkstemp()

        params = util.read_cb_cfg('pdc', '', cfg_path=cfg_file)

        os.remove(cfg_file)
        self.assertEqual('localhost', params['host'])
        self.assertEqual('default', params['bucket'])
        self.assertEqual('', params['password'])
        self.assertEqual('', params['cfg_docid'])