From 99a73730032ebd9bf4ff72e3f30845f37b54b72e Mon Sep 17 00:00:00 2001 From: Chrysostomos Nanakos Date: Tue, 12 Nov 2013 15:19:01 +0200 Subject: [PATCH] Change configuration file format New configuration file format respects the parsing language provided by the ConfigParser module --- xseg/conf/archipelago.conf | 80 ++++++++++++-------------- xseg/conf/archipelago.conf.rados_example | 64 ++++++++++----------- xseg/tools/archipelago/archipelago/common.py | 55 +++++++++++++++++- 3 files changed, 120 insertions(+), 79 deletions(-) diff --git a/xseg/conf/archipelago.conf b/xseg/conf/archipelago.conf index 0056053..95b9a7f 100644 --- a/xseg/conf/archipelago.conf +++ b/xseg/conf/archipelago.conf @@ -1,12 +1,11 @@ # xseg - +[XSEG] # Max xseg ports supported by segment SEGMENT_PORTS = 2048 SEGMENT_DYNPORTS = 1024 # Max segment size -SEGMENT_SIZE = 5120 - +SEGMENT_SIZE = 2048 # Start port of xsegbd devices XSEGBD_START=0 # End port of xsegbd devices @@ -33,7 +32,8 @@ VTOOL_END=1022 # Order matters. Peers will be started with list order and stopped with reversed # order. -roles = [('blockerb', 'file_blocker'), +[ROLES] +order=[('blockerb', 'file_blocker'), ('blockerm', 'file_blocker'), ('mapperd', 'mapperd'), ('vlmcd', 'vlmcd')] @@ -64,54 +64,48 @@ roles = [('blockerb', 'file_blocker'), # # pool: rados pool where objects will reside -blockerb= { - 'portno_start': 1000, - 'portno_end': 1000, - 'log_level': 3, - 'nr_ops': 64, - 'nr_threads': 64, - 'archip_dir': '/srv/archip/blocks', - 'fdcache': 512, - 'direct': True, -} - -blockerm = { - 'portno_start': 1002, - 'portno_end': 1002, - 'log_level': 3, - 'nr_ops': 64, - 'nr_threads': 64, - 'archip_dir': '/srv/archip/maps', - 'fdcache': 512, - 'direct': True, -} +[BLOCKERB] +portno_start=1000 +portno_end=1000 +log_level=3 +nr_ops=64 +nr_threads=64 +archip_dir=/srv/archip/blocks +fdcache=512 +direct=True + +[BLOCKERM] +portno_start=1002 +portno_end=1002 +log_level=3 +nr_ops=256 +nr_threads=256 +archip_dir=/srv/archip/maps +fdcache=512 +direct=True # mapperd specific options: # # blockerb_port: target port that will be used to communicate with the blockerb # blockerm_port: target port that will be used to communicate with the blockerm -mapperd = { - 'portno_start': 1001, - 'portno_end': 1001, - 'log_level': 3, - 'nr_ops': 512, - 'blockerb_port': 1000, - 'blockerm_port': 1002 -} +[MAPPERD] +portno_start=1001 +portno_end=1001 +log_level=3 +nr_ops=256 +blockerb_port=1000 +blockerm_port=1002 # vlmcd specific options: # # blocker_port: target port that will be used to communicate with the blockerb # mapper_port: target port that will be used to communicate with the mapper -vlmcd = { - 'portno_start': 500, - 'portno_end': 999, - 'log_level': 3, - 'nr_ops': 512, - 'blocker_port': 1000, - 'mapper_port': 1001 -} - - +[VLMCD] +portno_start=500 +portno_end=999 +log_level=3 +nr_ops=512 +blocker_port=1000 +mapper_port=1001 diff --git a/xseg/conf/archipelago.conf.rados_example b/xseg/conf/archipelago.conf.rados_example index b73d660..3df698a 100644 --- a/xseg/conf/archipelago.conf.rados_example +++ b/xseg/conf/archipelago.conf.rados_example @@ -1,8 +1,9 @@ # xseg #SPEC="segdev:xsegbd:1024:5120:12" +[XSEG] SEGMENT_PORTS = 2048 -SEGMENT_DYNPORTS = 1024 SEGMENT_SIZE = 5120 +SEGMENT_DYNPORTS = 1024 XSEGBD_START=0 XSEGBD_END=499 @@ -23,7 +24,8 @@ VTOOL_END=1022 # vlmcd # Order matters. Peers will be started with list order and stopped with reversed # order. -roles = [('blockerb', 'rados_blocker'), +[ROLES] +order=[('blockerb', 'rados_blocker'), ('blockerm', 'rados_blocker'), ('mapperd', 'mapperd'), ('vlmcd', 'vlmcd')] @@ -35,38 +37,32 @@ roles = [('blockerb', 'rados_blocker'), # 2 - Info # 3 - Debug -blockerb= { - 'portno_start': 1000, - 'portno_end': 1000, - 'log_level': 3, - 'nr_ops': 512, - 'pool': 'blocks' -} - -blockerm = { - 'portno_start': 1002, - 'portno_end': 1002, - 'log_level': 3, - 'nr_ops': 512, - 'pool': 'maps' -} - -mapperd = { - 'portno_start': 1001, - 'portno_end': 1001, - 'log_level': 3, - 'nr_ops': 512, - 'blockerb_port': 1000, - 'blockerm_port': 1002 -} +[BLOCKERB] +portno_start=1000 +portno_end=1000 +log_level=3 +nr_ops=512 +pool=blocks -vlmcd = { - 'portno_start': 500, - 'portno_end': 999, - 'log_level': 3, - 'nr_ops': 512, - 'blocker_port': 1000, - 'mapper_port': 1001 -} +[BLOCKERM] +portno_start=1002 +portno_end=1002 +log_level=3 +nr_ops=512 +pool=maps +[MAPPERD] +portno_start=1001 +portno_end=1001 +log_level=3 +nr_ops=512 +blockerb_port=1000 +blockerm_port=1002 +[VLMCD] +portno_start=500 +portno_end=999 +log_level=3 +nr_ops=512 +blocker_port=1000 +mapper_port=1001 diff --git a/xseg/tools/archipelago/archipelago/common.py b/xseg/tools/archipelago/archipelago/common.py index 0823bd2..57c28f4 100755 --- a/xseg/tools/archipelago/archipelago/common.py +++ b/xseg/tools/archipelago/archipelago/common.py @@ -53,6 +53,7 @@ from collections import namedtuple import socket import random from select import select +import ConfigParser random.seed() hostname = socket.gethostname() @@ -656,15 +657,65 @@ def exclusive(get_port=False): return lock return wrap +def createBDict(cfg, section): + sec_dic = {} + sec_dic['portno_start'] = cfg.getint(section, 'portno_start') + sec_dic['portno_end'] = cfg.getint(section, 'portno_end') + sec_dic['log_level'] = cfg.getint(section, 'log_level') + sec_dic['nr_ops'] = cfg.getint(section, 'nr_ops') + try: + sec_dic['nr_threads'] = cfg.getint(section, 'nr_threads') + sec_dic['archip_dir'] = cfg.get(section, 'archip_dir') + sec_dic['fdcache'] = cfg.getint(section, 'fdcache') + except: + sec_dic['pool'] = cfg.get(section, 'pool') + return sec_dic + +def createMDict(cfg, section): + sec_dic = {} + sec_dic['portno_start'] = cfg.getint(section, 'portno_start') + sec_dic['portno_end'] = cfg.getint(section, 'portno_end') + sec_dic['log_level'] = cfg.getint(section, 'log_level') + sec_dic['nr_ops'] = cfg.getint(section, 'nr_ops') + sec_dic['blockerb_port'] = cfg.getint(section, 'blockerb_port') + sec_dic['blockerm_port'] = cfg.getint(section, 'blockerm_port') + return sec_dic + +def createVDict(cfg, section): + sec_dic = {} + sec_dic['portno_start'] = cfg.getint(section, 'portno_start') + sec_dic['portno_end'] = cfg.getint(section, 'portno_end') + sec_dic['log_level'] = cfg.getint(section, 'log_level') + sec_dic['nr_ops'] = cfg.getint(section, 'nr_ops') + sec_dic['blocker_port'] = cfg.getint(section, 'blocker_port') + sec_dic['mapper_port'] = cfg.getint(section, 'mapper_port') + return sec_dic + + def loadrc(rc): try: if rc is None: - execfile(os.path.expanduser(DEFAULTS), config) + cfg_dir = os.path.expanduser(DEFAULTS) else: - execfile(rc, config) + cfg_dir = rc + cfg_fd = open(cfg_dir) except: raise Error("Cannot read config file") + cfg = ConfigParser.ConfigParser() + cfg.readfp(cfg_fd) + config['SEGMENT_PORTS'] = cfg.getint('XSEG','SEGMENT_PORTS') + config['SEGMENT_SIZE'] = cfg.getint('XSEG','SEGMENT_SIZE') + config['XSEGBD_START'] = cfg.getint('XSEG','XSEGBD_START') + config['XSEGBD_END'] = cfg.getint('XSEG','XSEGBD_END') + config['VTOOL_START'] = cfg.getint('XSEG','VTOOL_START') + config['VTOOL_END'] = cfg.getint('XSEG','VTOOL_END') + config['roles'] = eval(cfg.get('ROLES','order')) + config['blockerb'] = createBDict(cfg, 'BLOCKERB') + config['blockerm'] = createBDict(cfg, 'BLOCKERM') + config['mapperd'] = createMDict(cfg, 'MAPPERD') + config['vlmcd'] = createVDict(cfg, 'VLMCD') + if not check_conf(): raise Error("Invalid conf file") -- 1.7.10.4