def _updatePorts(self, ports): self._settings["ports"] = ports old_ports = self._ports.copy() self._ports = [] for port in ports: new_port = None # Update port if already exist for old_port in old_ports: if old_port.adapterNumber() == port["adapter_number"] and old_port.portNumber() == port["port_number"] and old_port.name() == port["name"]: new_port = old_port old_ports.remove(old_port) break if new_port is None: if port["link_type"] == "serial": new_port = SerialPort(port["name"]) else: new_port = EthernetPort(port["name"]) new_port.setShortName(port["short_name"]) new_port.setAdapterNumber(port["adapter_number"]) new_port.setPortNumber(port["port_number"]) new_port.setDataLinkTypes(port["data_link_types"]) new_port.setStatus(self.status()) self._ports.append(new_port)
def _updatePorts(self, ports): self._settings["ports"] = ports old_ports = self._ports.copy() self._ports = [] for port in ports: new_port = None # Update port if already exist for old_port in old_ports: if old_port.adapterNumber( ) == port["adapter_number"] and old_port.portNumber( ) == port["port_number"] and old_port.name() == port["name"]: new_port = old_port old_ports.remove(old_port) break if new_port is None: if port["link_type"] == "serial": new_port = SerialPort(port["name"]) else: new_port = EthernetPort(port["name"]) new_port.setShortName(port["short_name"]) new_port.setAdapterNumber(port["adapter_number"]) new_port.setPortNumber(port["port_number"]) new_port.setDataLinkTypes(port["data_link_types"]) new_port.setStatus(self.status()) self._ports.append(new_port)
def load(self, node_info): """ Loads a Frame Relay switch representation (from a topology file). :param node_info: representation of the node (dictionary) """ settings = node_info["properties"] name = settings.pop("name") # restore mappings if "mappings" in settings: self._settings["mappings"] = settings["mappings"].copy() # create the ports with the correct port numbers and IDs if "ports" in node_info: ports = node_info["ports"] for topology_port in ports: port = SerialPort(topology_port["name"]) port.setPortNumber(topology_port["port_number"]) port.setId(topology_port["id"]) port.setStatus(SerialPort.started) self._ports.append(port) log.info("Frame-Relay switch {} is loading".format(name)) self.setup(name)
def _updatePorts(self, ports): """ Update the ports on this node. :param ports: array of Port objects """ self._settings["ports"] = ports old_ports = self._ports.copy() self._ports = [] for port in ports: new_port = None # Update port if it already exists for old_port in old_ports: if old_port.adapterNumber() == port["adapter_number"] and old_port.portNumber() == port["port_number"]: new_port = old_port old_port.setName(port["name"]) old_ports.remove(old_port) break if new_port is None: if port["link_type"] == "serial": new_port = SerialPort(port["name"]) else: new_port = EthernetPort(port["name"]) new_port.setShortName(port["short_name"]) new_port.setAdapterNumber(port["adapter_number"]) new_port.setPortNumber(port["port_number"]) new_port.setDataLinkTypes(port["data_link_types"]) new_port.setStatus(self.status()) new_port.setAdapterType(port.get("adapter_type")) new_port.setMacAddress(port.get("mac_address")) self._ports.append(new_port)
def update(self, new_settings): """ Updates the settings for this Frame Relay switch. :param new_settings: settings dictionary """ ports_to_create = [] mapping = new_settings["mappings"] updated = False for source, destination in mapping.items(): source_port = source.split(":")[0] destination_port = destination.split(":")[0] if source_port not in ports_to_create: ports_to_create.append(source_port) if destination_port not in ports_to_create: ports_to_create.append(destination_port) for port in self._ports.copy(): if port.isFree(): self._ports.remove(port) updated = True log.debug("port {} has been removed".format(port.name())) else: ports_to_create.remove(port.name()) for port_name in ports_to_create: port = SerialPort(port_name) port.setPortNumber(int(port_name)) port.setStatus(SerialPort.started) self._ports.append(port) updated = True log.debug("port {} has been added".format(port_name)) params = {} if "name" in new_settings and new_settings["name"] != self.name(): if self.hasAllocatedName(new_settings["name"]): self.error_signal.emit( self.id(), 'Name "{}" is already used by another node'.format( new_settings["name"])) return params = {"id": self._frsw_id, "name": new_settings["name"]} updated = True self._settings["mappings"] = new_settings["mappings"].copy() if updated: if params: log.debug("{} is being updated: {}".format( self.name(), params)) self._server.send_message("dynamips.frsw.update", params, self._updateCallback) else: log.info("{} has been updated".format(self.name())) self.updated_signal.emit()
def update(self, new_settings): """ Updates the settings for this Frame Relay switch. :param new_settings: settings dictionary """ ports_to_create = [] mapping = new_settings["mappings"] updated = False for source, destination in mapping.items(): source_port = source.split(":")[0] destination_port = destination.split(":")[0] if source_port not in ports_to_create: ports_to_create.append(source_port) if destination_port not in ports_to_create: ports_to_create.append(destination_port) for port in self._ports.copy(): if port.isFree(): self._ports.remove(port) updated = True log.debug("port {} has been removed".format(port.name())) else: ports_to_create.remove(port.name()) for port_name in ports_to_create: port = SerialPort(port_name) port.setPortNumber(int(port_name)) port.setStatus(SerialPort.started) self._ports.append(port) updated = True log.debug("port {} has been added".format(port_name)) params = {} if "name" in new_settings and new_settings["name"] != self.name(): if self.hasAllocatedName(new_settings["name"]): self.error_signal.emit(self.id(), 'Name "{}" is already used by another node'.format(new_settings["name"])) return params = {"id": self._frsw_id, "name": new_settings["name"]} updated = True self._settings["mappings"] = new_settings["mappings"].copy() if updated: if params: log.debug("{} is being updated: {}".format(self.name(), params)) self._server.send_message("dynamips.frsw.update", params, self._updateCallback) else: log.info("{} has been updated".format(self.name())) self.updated_signal.emit()