#!/usr/bin/env python#-*- coding:utf-8 -*-
importjsonimportosdeffetch(backend):
backend_title= 'backend %s' %backend
record_list=[]
with open('ha') as obj:
flag=Falsefor line inobj:
line=line.strip()if line ==backend_title:
flag=Truecontinue
if flag and line.startswith('backend'):
flag=Falsebreak
if flag andline:
record_list.append(line)returnrecord_listdefadd(dict_info):
backend= dict_info.get('backend')
record_list=fetch(backend)
backend_title= "backend %s" %backend
current_record= "server %s %s weight %d maxconn %d" % (dict_info['record']['server'], dict_info['record']['server'], dict_info['record']['weight'], dict_info['record']['maxconn'])if notrecord_list:
record_list.append(backend_title)
record_list.append(current_record)
with open('ha') as read_file, open('ha.new', 'w') as write_file:
flag=Falsefor line inread_file:
write_file.write(line)for i inrecord_list:if i.startswith('backend'):
write_file.write(i+'\n')else:
write_file.write("%s%s\n" % (8*" ", i))else:
record_list.insert(0, backend_title)if current_record not inrecord_list:
record_list.append(current_record)
with open('ha') as read_file, open('ha.new', 'w') as write_file:
flag=False
has_write=Falsefor line inread_file:
line_strip=line.strip()if line_strip ==backend_title:
flag=Truecontinue
if flag and line_strip.startswith('backend'):
flag=Falseif notflag:
write_file.write(line)else:if nothas_write:for i inrecord_list:if i.startswith('backend'):
write_file.write(i+'\n')else:
write_file.write("%s%s\n" % (8*" ", i))
has_write=True
os.rename('ha','ha.bak')
os.rename('ha.new','ha')defremove(dict_info):
backend= dict_info.get('backend')
record_list=fetch(backend)
backend_title= "backend %s" %backend
current_record= "server %s %s weight %d maxconn %d" % (dict_info['record']['server'], dict_info['record']['server'], dict_info['record']['weight'], dict_info['record']['maxconn'])if notrecord_list:return
else:if current_record not inrecord_list:return
else:delrecord_list[record_list.index(current_record)]if len(record_list) >0:
record_list.insert(0, backend_title)
with open('ha') as read_file, open('ha.new', 'w') as write_file:
flag=False
has_write=Falsefor line inread_file:
line_strip=line.strip()if line_strip ==backend_title:
flag=Truecontinue
if flag and line_strip.startswith('backend'):
flag=Falseif notflag:
write_file.write(line)else:if nothas_write:for i inrecord_list:if i.startswith('backend'):
write_file.write(i+'\n')else:
write_file.write("%s%s\n" % (8*" ", i))
has_write=True
os.rename('ha','ha.bak')
os.rename('ha.new','ha')if __name__ == '__main__':"""print '1、获取;2、添加;3、删除'
num = raw_input('请输入序号:')
data = raw_input('请输入内容:')
if num == '1':
fetch(data)
else:
dict_data = json.loads(data)
if num == '2':
add(dict_data)
elif num == '3':
remove(dict_data)
else:
pass"""
#data = "www.oldboy.org"
#fetch(data)
#data = '{"backend": "tettst.oldboy.org","record":{"server": "100.1.7.90","weight": 20,"maxconn": 30}}'
#dict_data = json.loads(data)
#add(dict_data)
#remove(dict_data)
demo