Example #1
0
def main():
    parser = argparse.ArgumentParser(description='generate exp_sys pb file')
    parser.add_argument('--conf', type=str, required=True, help='config file')
    parser.add_argument('--input', type=str, help='input file name')
    parser.add_argument('--output', type=str, required=True, help='output file name')
    parser.add_argument('--dry', action='store_true', help='whether dry run')
    parser.add_argument('--verbose', action='store_true', help='print verbose log')
    args = parser.parse_args()

    config = ConfigParser.ConfigParser()
    config.read(args.conf)
    dbconf = DbConf._make([config.get('mysql', 'host'),
                           config.get('mysql', 'port'),
                           config.get('mysql', 'user'),
                           config.get('mysql', 'passwd'),
                           config.get('mysql', 'dbname')])
    db = ExpDb(dbconf)
    json = None
    try:
        json = ExpJson(args.input)
    except:
        logger.warn('failed to load json file %s', args.input)
    ed = ExpDeploy(db, json)
    data = ed.build()
    logger.info('dump deployment (%d bytes) to file %s',
                len(data), args.output)
    with open(args.output, 'w') as fp:
        fp.write(data)
Example #2
0
 def _build_experiments(self):
     # merge with existed experiments
     db_exps = {}
     for e in self.db.get_experiments():
         db_exps[e.id] = e
     json_exps = []
     if self.json:
         for e in self.json.get_experiments():
             json_exps.append(Experiment.from_json(e))
     for e in json_exps:
         layer = self.layers.get(e.layer_id)
         if not layer:
             logger.warn('layer %d is not exists for exp %d',
                          e.layer_id, e.id)
             continue
         if e.id in db_exps and self._eq_exp(e, db_exps[e.id]):
             cnt = layer.load(e.id, e.ranges)
             self.exps[e.id] = e
             del db_exps[e.id]
             logger.info('load existed experiment %d, assigned %d buckets',
                         e.id, cnt)
     for row in db_exps.values():
         exp = Experiment.from_db(row)
         layer = self.layers.get(row.layer_id)
         # TODO catch exception
         bucketRanges = layer.assign(row.id, row.buckets_num)
         exp.set_bucket_ranges(bucketRanges)
         self.exps[row.id] = exp
         logger.info('assign new experiment %d in layer %d',
                     row.id, row.layer_id)
Example #3
0
 def _build_experiments(self):
     # merge with existed experiments
     db_exps = {}
     for e in self.db.get_experiments():
         db_exps[e.id] = e
     json_exps = []
     if self.json:
         for e in self.json.get_experiments():
             json_exps.append(Experiment.from_json(e))
     for e in json_exps:
         layer = self.layers.get(e.layer_id)
         if not layer:
             logger.warn('layer %d is not exists for exp %d', e.layer_id,
                         e.id)
             continue
         if e.id in db_exps and self._eq_exp(e, db_exps[e.id]):
             cnt = layer.load(e.id, e.ranges)
             self.exps[e.id] = e
             del db_exps[e.id]
             logger.info('load existed experiment %d, assigned %d buckets',
                         e.id, cnt)
     for row in db_exps.values():
         exp = Experiment.from_db(row)
         layer = self.layers.get(row.layer_id)
         # TODO catch exception
         bucketRanges = layer.assign(row.id, row.buckets_num)
         exp.set_bucket_ranges(bucketRanges)
         self.exps[row.id] = exp
         logger.info('assign new experiment %d in layer %d', row.id,
                     row.layer_id)
Example #4
0
def main():
    parser = argparse.ArgumentParser(description='generate exp_sys pb file')
    parser.add_argument('--conf', type=str, required=True, help='config file')
    parser.add_argument('--input', type=str, help='input file name')
    parser.add_argument('--output',
                        type=str,
                        required=True,
                        help='output file name')
    parser.add_argument('--dry', action='store_true', help='whether dry run')
    parser.add_argument('--verbose',
                        action='store_true',
                        help='print verbose log')
    args = parser.parse_args()

    config = ConfigParser.ConfigParser()
    config.read(args.conf)
    dbconf = DbConf._make([
        config.get('mysql', 'host'),
        config.get('mysql', 'port'),
        config.get('mysql', 'user'),
        config.get('mysql', 'passwd'),
        config.get('mysql', 'dbname')
    ])
    db = ExpDb(dbconf)
    json = None
    try:
        json = ExpJson(args.input)
    except:
        logger.warn('failed to load json file %s', args.input)
    ed = ExpDeploy(db, json)
    data = ed.build()
    logger.info('dump deployment (%d bytes) to file %s', len(data),
                args.output)
    with open(args.output, 'w') as fp:
        fp.write(data)