Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- import copy
- import lxml.etree as etree
- def create_new_cells(parent_element, new_cell_numbers, base_cell=None):
- cell_elements = get_cell_elements(parent_element, base_cell)
- for new_cell_number in new_cell_numbers:
- create_new_cell(parent_element, new_cell_number, cell_elements)
- def get_cell_elements(parent_element, cell_number=None):
- managedObject_elements = parent_element.findall('.//{raml21.xsd}managedObject[@distName]')
- cell_elements = filter_cell_elements(managedObject_elements, cell_number)
- return cell_elements
- def filter_cell_elements(elements, cell_number):
- if cell_number is None:
- cell_number = get_first_cell_number(elements)
- cell_elements = [element for element in elements if is_cell_element(element, cell_number)]
- return cell_elements
- def get_first_cell_number(managedObject_elements):
- for managedObject in managedObject_elements:
- cell_number = get_cell_number(managedObject)
- if cell_number:
- return cell_number
- def get_cell_number(element):
- cell_number = re.search('LNCEL-(\d+)|LCELL-(\d+)', element.attrib['distName'])
- if cell_number and cell_number.group(1):
- return cell_number.group(1)
- def is_cell_element(element, cell_num):
- return any(cell_string in element.attrib['distName'] for cell_string in
- ['LCELL-' + cell_num, 'LNCEL-' + cell_num])
- def create_new_cell(parent, cell_num, cell_elems):
- for old_cell_element in cell_elems:
- create_new_cell_element(old_cell_element, parent, cell_num)
- def create_new_cell_element(old_cell_element, parent_element, new_cell_number):
- new_cell_element = copy.deepcopy(old_cell_element)
- set_new_cell_number(new_cell_element, new_cell_number)
- parent_element.append(new_cell_element)
- def set_new_cell_number(cell_element, new_cell_number):
- cell_element.attrib['distName'] = re.sub(r'(LNCEL-|LCELL-)\d+', r'\g<1>' + str(new_cell_number),
- cell_element.attrib['distName'])
- def change_lcrId_numbers(parent_element):
- lcrIds_parent_elems = parent_element.findall('.//{raml21.xsd}managedObject[@class="NOKLTE:LNCEL"]')
- for managedObject in lcrIds_parent_elems:
- find_lcrId_element_and_set_text(managedObject)
- def find_lcrId_element_and_set_text(managedObject):
- lcrId_element = managedObject.findall('.//{raml21.xsd}p[@name="lcrId"]')[0]
- lcrId_element.text = get_cell_number(managedObject)
- def delete_cells(parent_element, cells_to_be_deleted):
- cells_to_be_deleted = [str(num) for num in cells_to_be_deleted]
- for cell_number in cells_to_be_deleted:
- delete_cell_elements(cell_number, parent_element)
- def delete_cell_elements(cell_number, parent_element):
- cell_elements = get_cell_elements(parent_element, cell_number=cell_number)
- for cell_element in cell_elements:
- cell_element.getparent().remove(cell_element)
- # if __name__ == '__main__':
- # treeelement = get_treeelement_from_file('/tmp/192.168.255.129_scf.xml')
- # delta_element = create_empty_delta_treeelement(treeelement)
- # xml_tree = etree.parse(r'/tmp/192.168.255.129_scf.xml')
- # create_new_cell(xml_tree.getroot()[0], 2, delta_file_parent_element=delta_element.getroot()[0])
- # print etree.tostring(delta_element)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement