class NapalmGeneral(QWidget): # Facts and environment @update_paths def __init__(self, node, controller): super().__init__() self.node = node action_label = QLabel('Action') object_label = QLabel('Object') self.general_list = QListWidget() self.general_list.setSortingEnabled(True) self.general_list.itemSelectionChanged.connect(self.info_update) self.action_list = QListWidget() self.action_list.setSortingEnabled(True) self.action_list.itemSelectionChanged.connect(self.action_update) self.properties_edit = QConsoleEdit() self.properties_edit.setMinimumSize(300, 300) layout = QGridLayout() layout.addWidget(object_label, 0, 0) layout.addWidget(self.general_list, 1, 0) layout.addWidget(action_label, 0, 1) layout.addWidget(self.action_list, 1, 1) layout.addWidget(self.properties_edit, 2, 0, 1, 2) self.setLayout(layout) def update(self): self.general_list.clear() if 'Environment' in self.node.napalm_data: infos = ['Facts'] + list(self.node.napalm_data['Environment']) self.general_list.addItems(infos) def info_update(self): self.properties_edit.clear() info = self.general_list.currentItem().text() if info == 'Facts': value = str_dict(self.node.napalm_data['Facts']) self.properties_edit.insertPlainText(value) else: self.action_list.clear() values = map(str, self.node.napalm_data['Environment'][info]) self.action_list.addItems(values) def action_update(self): self.properties_edit.clear() action = self.action_list.currentItem() if action: info = self.general_list.currentItem().text() action_dict = self.node.napalm_data['Environment'][info][ action.text()] self.properties_edit.insertPlainText(str_dict(action_dict))
class NapalmInterfaces(QWidget): napalm_actions = ( 'Interfaces', 'Interface IP', 'Interfaces counters', ) @update_paths def __init__(self, node, controller): super().__init__() self.node = node action_label = QLabel('Action') object_label = QLabel('Object') self.object_list = QListWidget() self.object_list.setSortingEnabled(True) self.object_list.itemSelectionChanged.connect(self.text_update) self.action_list = QListWidget() self.action_list.setSortingEnabled(True) self.action_list.itemSelectionChanged.connect(self.text_update) self.action_list.addItems(self.napalm_actions) self.properties_edit = QConsoleEdit() self.properties_edit.setMinimumSize(300, 300) layout = QGridLayout() layout.addWidget(object_label, 0, 0) layout.addWidget(self.object_list, 1, 0) layout.addWidget(action_label, 0, 1) layout.addWidget(self.action_list, 1, 1) layout.addWidget(self.properties_edit, 2, 0, 1, 2) self.setLayout(layout) def update(self): self.object_list.clear() if 'Interfaces' in self.node.napalm_data: self.object_list.addItems(self.node.napalm_data['Interfaces']) def text_update(self): action = self.action_list.currentItem() object = self.object_list.currentItem() if action and object: self.properties_edit.clear() # we display a dictionnary with the following format: # property1: value1 # property2: value2 action, object = action.text(), object.text() value = str_dict(self.node.napalm_data[action][object]) self.properties_edit.insertPlainText(value)