1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import argparse
- from ciscoconfparse import CiscoConfParse
- def get_value(line, key, onu=False):
- """
- Obtain value from line
- :return: Returns value
- """
- data_compare = line.lower().split()
- try:
- index = data_compare.index(key)
- except ValueError:
- index = -1
- if index >= 0 and onu:
- return data_compare[index + 2].strip()
- elif index >= 0:
- return data_compare[index + 1].strip()
- else:
- return ""
- parser = argparse.ArgumentParser(description='Arguments')
- parser.add_argument('-cf', '--config_file', type=str, help='Config file', required=True)
- args = parser.parse_args()
- file_name = args.config_file
- conf_file_parse = CiscoConfParse(args.config_file)
- sql = []
- types = ['voip', 'data']
- bbs_config = conf_file_parse.find_objects("bbs-config")
- for lines in bbs_config:
- for line in lines.children:
- number = get_value(line.text, 'service-port')
- if number <> '':
- vlan = get_value(line.text, 'vlan')
- gpon = get_value(line.text, 'gpon')
- gpon_split = gpon.split('/')
- link = gpon_split[-1]
- ont = get_value(line.text, 'ont')
- gemport = get_value(line.text, 'gemport')
- type = 'voip'
- if gemport <> '' and (int(gemport) == 0 or int(gemport) == 1):
- type = types[int(gemport)]
- gpon_ = gpon_split[0] + '/' + gpon_split[1];
- parse = conf_file_parse.find_objects("gpon-%(gpon_)s" % locals())
- for child in parse:
- for line in child.children:
- if "ont add %(link)s %(ont)s " % locals() in line.text:
- sn_auth = get_value(line.text, 'sn-auth')
- sql.append(""" ((SELECT o.id FROM olt AS o JOIN onu ON o.id=onu.olt_id \
- WHERE onu.pon_serial_number=%(sn_auth)s),(SELECT id FROM onu \
- WHERE pon_serial_number=%(sn_auth)s),\
- %(number)s,%(gemport)s,%(vlan)s)\n""" % locals())
- if len(sql) > 0:
- print("""TRUNCATE service_port; INSERT INTO service_port (`olt_id`, `onu_id`, `number`, `gemport`, `vlan`)
- VALUES """ + ','.join(sql) + ";")
- else:
- print "NO SE PUDO PROCESAR EL ARCHIVO"
|