コード例 #1
0
ファイル: load_collector.py プロジェクト: qinguoan/rambo
parm = { 'fname=s' : 'a conf info data file, one json per line' }
options = OptConf( **parm )
opt = options.opt
args = options.args
conf = options.conf
alertr = RedisClient(db='alert', **conf['database'])
print "redis connect stat: %s" % alertr.ping()
data = opt['fname']
data = yaml.load(open(data))
dict_obj = dict()
for i in data:
    key = '%s' % i['name']
    type = i['type']
    if re.match('SYSTEM|SCRIPT|DEFAULT', type, re.I):
        name = 'client'
    elif re.match('HTTP', type, re.I):
        name = 'http'
    elif re.match('TCP', type, re.I):
        name = 'tcp'
    else:
        continue
    if not dict_obj.has_key(name):
        dict_obj[name] = dict()
    aa = json.dumps(i)
    dict_obj[name][key] = aa

# save all config into one key.
for name in dict_obj:
    key = 'total:%s:collector:configs' % name
    alertr.hmset(key, dict_obj[name])
コード例 #2
0
ファイル: load_policy.py プロジェクト: qinguoan/rambo
dict_obj = dict()

conf_type = ['client', 'http', 'tcp']

for p in data:
    policy_key = ''
    name = p['name']
    collector = p['collector']
    print "collector", collector
    type = ''
    for t in conf_type:
        key = 'total:%s:collector:configs' % t
        conf_name = alertr.hkeys(key)
        if collector in conf_name:
            type = t
    if type:
        policy_key = 'total:%s:policy:configs' % type
    elif name == 'client_status':
        policy_key = 'total:client:policy:configs'
    else:
        continue
    p = json.dumps(p)
    if not dict_obj.has_key(policy_key):
        dict_obj[policy_key] = dict()
    dict_obj[policy_key][name] = p
for key, value in dict_obj.items():
    print key, value
    alertr.hmset(key, value)

コード例 #3
0
ファイル: loadhost.py プロジェクト: qinguoan/rambo
def load_host(conf):
    dbconf = conf
    url = "server/api/servers"
    username = "******"
    password = "******"
    data_dict = {}
    data = Ldapapi.get_wrapper(url,username,password,data_dict)
    data_set = dict()
    i=0
    for block in data:
        i+=1
        idc = None if 'idc' not in block else block['idc'].encode('utf-8')
        hostname = block['hostname'].encode('utf-8')
        product = None if 'product' not in block or not block['product'] else \
                    block['product'].encode('utf-8')
        service = None if 'service' not in block or not block['service'] else block['service']
        if isinstance(service,list):
            for s in service:
                s = s.encode('utf-8')
                key = '%s:%s:%s:%s' % ('server',idc,product,s)
                if key.lower() not in data_set: data_set[key.lower()]=list()
                data_set[key.lower()].append(hostname)
        else:
            key = '%s:%s:%s:%s' % ('server',idc,product,service)
            if key.lower() not in data_set: data_set[key.lower()]=list()
            data_set[key.lower()].append(hostname)
    print "all server total:%s" % i
    # check servers of the key
    host_r = RedisClient(db='hosts', **dbconf)
    range_r = RedisClient(db='range', **dbconf)
    server_info = dict()
    for key in data_set:
        new_server = data_set[key]
        if range_r.exists(key):
            old_servers = range_r.smembers(key)
            need_add = [x for x in new_server if x not in old_servers]
            need_del = [x for x in old_servers if x not in new_server]
            if need_add:
                print "%s set add new server ret: %s" % (key,range_r.sadd(key,*need_add))
            if need_del:
                print "%s set del old server ret: %s" % (key,range_r.srem(key,*need_del))
        else:
            print "new %s set add new server ret: %s" %(key,range_r.sadd(key,*new_server))
        (start,idc,product,service)=key.split(':')
        for s in new_server:
            if s not in server_info:server_info[s] = dict()
            server_info[s]['idc'] = idc
            server_info[s]['production'] = product
            server_info[s]['service'] = service
    
    # del key which not contain in data_set
    
    keys = range_r.keys('server:*')
    
    delKey = [ x for x in keys if x not in data_set.keys() ]
    
    if delKey:
        print 'delete keys from range db %s ' % range_r.delete(*delKey)
    
    old_server = host_r.keys('*')
    
    del_server = [ x for x in old_server if x not in server_info ]
    
    for s,v in server_info.items():
        host_r.hmset(s,v)
    if del_server: print "delete old servers not in new server, %s " % host_r.delete(*del_server)