Пример #1
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        image = self.uiIOSImageLineEdit.text()
        if self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            server = self.uiRemoteServersComboBox.currentText()
        elif self.uiVMRadioButton.isChecked():
            server = "vm"

        platform = self.uiPlatformComboBox.currentText()
        settings = {
            "name":
            self.uiNameLineEdit.text(),
            "image":
            image,
            "startup_config":
            get_default_base_config(self._base_startup_config_template),
            "ram":
            self.uiRamSpinBox.value(),
            "nvram":
            PLATFORMS_DEFAULT_NVRAM[platform],
            "idlepc":
            self.uiIdlepcLineEdit.text(),
            "platform":
            platform,
            "chassis":
            self.uiChassisComboBox.currentText(),
            "server":
            server,
        }

        if self.uiEtherSwitchCheckBox.isChecked():
            settings["default_name_format"] = "ESW"
            settings["startup_config"] = get_default_base_config(
                self._base_etherswitch_startup_config_template)
            settings["symbol"] = ":/symbols/multilayer_switch.svg"
            settings["disk0"] = 1  # adds 1MB disk to store vlan.dat
            settings["category"] = Node.switches
        else:
            settings["auto_delete_disks"] = True

        image_file = os.path.basename(image)
        if image_file.lower().startswith("c7200p"):
            settings["npe"] = "npe-g2"

        for slot_id, widget in self._widget_slots.items():
            if widget.isEnabled():
                settings["slot{}".format(slot_id)] = widget.currentText()

        for wic_id, widget in self._widget_wics.items():
            if widget.isEnabled():
                settings["wic{}".format(wic_id)] = widget.currentText()

        return settings
    def _iouImageBrowserSlot(self):
        """
        Slot to open a file browser and select an IOU image.
        """

        from .iou_device_preferences_page import IOUDevicePreferencesPage
        path = IOUDevicePreferencesPage.getIOUImage(self, self._compute_id)
        if not path:
            return
        self.uiIOUImageLineEdit.clear()
        self.uiIOUImageLineEdit.setText(path)

        if len(self.uiStartupConfigLineEdit.text().strip()) == 0:
            if "l2" in path:
                # set the default L2 base startup-config
                default_base_config = get_default_base_config(
                    self._base_iou_l2_config_template)
                if default_base_config:
                    self.uiStartupConfigLineEdit.setText(default_base_config)
            else:
                # set the default L3 base startup-config
                default_base_config = get_default_base_config(
                    self._base_iou_l3_config_template)
                if default_base_config:
                    self.uiStartupConfigLineEdit.setText(default_base_config)
Пример #3
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOUImageLineEdit.text()

        initial_config = ""
        if self.uiTypeComboBox.currentText() == "L2 image":
            # set the default L2 base initial-config
            default_base_config = get_default_base_config(
                self._base_iou_l2_config_template)
            if default_base_config:
                initial_config = default_base_config
            default_symbol = ":/symbols/multilayer_switch.normal.svg"
            hover_symbol = ":/symbols/multilayer_switch.selected.svg"
            category = Node.switches
            ethernet_adapters = 4
            serial_adapters = 0
        else:
            # set the default L3 base initial-config
            default_base_config = get_default_base_config(
                self._base_iou_l3_config_template)
            if default_base_config:
                initial_config = default_base_config
            default_symbol = ":/symbols/router.normal.svg"
            hover_symbol = ":/symbols/router.selected.svg"
            category = Node.routers
            ethernet_adapters = 2
            serial_adapters = 2

        if IOU.instance().settings(
        )["use_local_server"] or self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            if self.uiLoadBalanceCheckBox.isChecked():
                server = next(iter(Servers.instance()))
                server = "{}:{}".format(server.host, server.port)
            else:
                server = self.uiRemoteServersComboBox.currentText()
        else:  # Cloud is selected
            server = "cloud"

        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "image": os.path.basename(path),
            "initial_config": initial_config,
            "ethernet_adapters": ethernet_adapters,
            "serial_adapters": serial_adapters,
            "default_symbol": default_symbol,
            "category": category,
            "hover_symbol": hover_symbol,
            "server": server,
        }

        return settings
Пример #4
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOUImageLineEdit.text()

        initial_config = ""
        if self.uiTypeComboBox.currentText() == "L2 image":
            # set the default L2 base initial-config
            default_base_config = get_default_base_config(self._base_iou_l2_config_template)
            if default_base_config:
                initial_config = default_base_config
            default_symbol = ":/symbols/multilayer_switch.normal.svg"
            hover_symbol = ":/symbols/multilayer_switch.selected.svg"
            category = Node.switches
            ethernet_adapters = 4
            serial_adapters = 0
        else:
            # set the default L3 base initial-config
            default_base_config = get_default_base_config(self._base_iou_l3_config_template)
            if default_base_config:
                initial_config = default_base_config
            default_symbol = ":/symbols/router.normal.svg"
            hover_symbol = ":/symbols/router.selected.svg"
            category = Node.routers
            ethernet_adapters = 2
            serial_adapters = 2

        if IOU.instance().settings()["use_local_server"] or self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            if self.uiLoadBalanceCheckBox.isChecked():
                server = next(iter(Servers.instance()))
                server = "{}:{}".format(server.host, server.port)
            else:
                server = self.uiRemoteServersComboBox.currentText()
        else:  # Cloud is selected
            server = "cloud"

        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "image": os.path.basename(path),
            "initial_config": initial_config,
            "ethernet_adapters": ethernet_adapters,
            "serial_adapters": serial_adapters,
            "default_symbol": default_symbol,
            "category": category,
            "hover_symbol": hover_symbol,
            "server": server,
        }

        return settings
Пример #5
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        image = self.uiIOSImageLineEdit.text()
        if Dynamips.instance().settings()["use_local_server"] or self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            if self.uiLoadBalanceCheckBox.isChecked():
                server = next(iter(Servers.instance()))
                server = "{}:{}".format(server.host, server.port)
            else:
                server = self.uiRemoteServersComboBox.currentText()
        else:  # Cloud is selected
            server = "cloud"

        platform = self.uiPlatformComboBox.currentText()
        settings = {
            "name": self.uiNameLineEdit.text(),
            "image": image,
            "startup_config": get_default_base_config(self._base_startup_config_template),
            "ram": self.uiRamSpinBox.value(),
            "nvram": PLATFORMS_DEFAULT_NVRAM[platform],
            "idlepc": self.uiIdlepcLineEdit.text(),
            "platform": platform,
            "chassis": self.uiChassisComboBox.currentText(),
            "server": server,
        }

        if self.uiEtherSwitchCheckBox.isChecked():
            settings["startup_config"] = get_default_base_config(self._base_etherswitch_startup_config_template)
            settings["default_symbol"] = ":/symbols/multilayer_switch.normal.svg"
            settings["hover_symbol"] = ":/symbols/multilayer_switch.selected.svg"
            settings["disk0"] = 1  # adds 1MB disk to store vlan.dat
            settings["category"] = Node.switches
        else:
            settings["auto_delete_disks"] = True

        image_file = os.path.basename(image)
        if image_file.lower().startswith("c7200p"):
            settings["npe"] = "npe-g2"

        for slot_id, widget in self._widget_slots.items():
            if widget.isEnabled():
                settings["slot{}".format(slot_id)] = widget.currentText()

        for wic_id, widget in self._widget_wics.items():
            if widget.isEnabled():
                settings["wic{}".format(wic_id)] = widget.currentText()

        return settings
Пример #6
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOUImageLineEdit.text()

        startup_config = ""
        if self.uiTypeComboBox.currentText() == "L2 image":
            # set the default L2 base startup-config
            default_base_config = get_default_base_config(
                self._base_iou_l2_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/multilayer_switch.svg"
            category = Node.switches
            ethernet_adapters = 4
            serial_adapters = 0
        else:
            # set the default L3 base startup-config
            default_base_config = get_default_base_config(
                self._base_iou_l3_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/router.svg"
            category = Node.routers
            ethernet_adapters = 2
            serial_adapters = 2

        if self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            if self.uiLoadBalanceCheckBox.isChecked():
                server = "load-balance"
            else:
                server = self.uiRemoteServersComboBox.currentText()
        elif self.uiVMRadioButton.isChecked():
            server = "vm"

        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "image": os.path.basename(path),
            "startup_config": startup_config,
            "ethernet_adapters": ethernet_adapters,
            "serial_adapters": serial_adapters,
            "symbol": symbol,
            "category": category,
            "server": server,
        }

        return settings
Пример #7
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOSImageLineEdit.text()
        image = os.path.basename(path)
        if Dynamips.instance().settings()["use_local_server"] or self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            if self.uiLoadBalanceCheckBox.isChecked():
                server = next(iter(Servers.instance()))
                server = "{}:{}".format(server.host, server.port)
            else:
                server = self.uiRemoteServersComboBox.currentText()
        else:  # Cloud is selected
            server = "cloud"

        platform = self.uiPlatformComboBox.currentText()
        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "startup_config": get_default_base_config(self._base_startup_config_template),
            "private_config": get_default_base_config(self._base_private_config_template),
            "ram": self.uiRamSpinBox.value(),
            "nvram": PLATFORMS_DEFAULT_NVRAM[platform],
            "idlepc": self.uiIdlepcLineEdit.text(),
            "image": image,
            "platform": platform,
            "chassis": self.uiChassisComboBox.currentText(),
            "server": server,
        }

        if self.uiEtherSwitchCheckBox.isChecked():
            settings["startup_config"] = get_default_base_config(self._base_etherswitch_startup_config_template)
            settings["default_symbol"] = ":/symbols/multilayer_switch.normal.svg"
            settings["hover_symbol"] = ":/symbols/multilayer_switch.selected.svg"
            settings["disk0"] = 1  # adds 1MB disk to store vlan.dat
            settings["category"] = Node.switches

        if image.lower().startswith("c7200p"):
            settings["npe"] = "npe-g2"

        for slot_id, widget in self._widget_slots.items():
            if widget.isEnabled():
                settings["slot{}".format(slot_id)] = widget.currentText()

        for wic_id, widget in self._widget_wics.items():
            if widget.isEnabled():
                settings["wic{}".format(wic_id)] = widget.currentText()

        return settings
Пример #8
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOUImageLineEdit.text()

        startup_config = ""
        if self.uiTypeComboBox.currentText() == "L2 image":
            # set the default L2 base startup-config
            default_base_config = get_default_base_config(self._base_iou_l2_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/multilayer_switch.svg"
            category = Node.switches
            ethernet_adapters = 4
            serial_adapters = 0
        else:
            # set the default L3 base startup-config
            default_base_config = get_default_base_config(self._base_iou_l3_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/router.svg"
            category = Node.routers
            ethernet_adapters = 2
            serial_adapters = 2

        if self.uiLocalRadioButton.isChecked():
            server = "local"
        elif self.uiRemoteRadioButton.isChecked():
            if self.uiLoadBalanceCheckBox.isChecked():
                server = "load-balance"
            else:
                server = self.uiRemoteServersComboBox.currentText()
        elif self.uiVMRadioButton.isChecked():
            server = "vm"

        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "image": os.path.basename(path),
            "startup_config": startup_config,
            "ethernet_adapters": ethernet_adapters,
            "serial_adapters": serial_adapters,
            "symbol": symbol,
            "category": category,
            "server": server,
        }

        return settings
Пример #9
0
    def createNode(self, node, node_name):
        """
        Creates a node.

        :param node: Node instance
        :param node_name: Node name
        """

        log.info("creating node {}".format(node))

        if node_name:
            for node_key, info in self._vpcs_nodes.items():
                if node_name == info["name"]:
                    vm_settings = {}
                    for setting_name, value in self._vpcs_nodes[
                            node_key].items():

                        if setting_name in node.settings(
                        ) and setting_name != "name" and value != "" and value is not None:
                            vm_settings[setting_name] = value

                    node.create(
                        default_name_format=info["default_name_format"],
                        additional_settings=vm_settings)
                    return

        vm_settings = {
            "base_script_file":
            self._settings.get(
                "base_script_file",
                get_default_base_config(
                    get_resource(
                        os.path.join("configs", "vpcs_base_config.txt"))))
        }
        node.create(additional_settings=vm_settings)
Пример #10
0
    def _loadSettings(self):
        """
        Loads the settings from the persistent settings file.
        """

        local_config = LocalConfig.instance()

        # restore the VPCS settings from QSettings (for backward compatibility)
        legacy_settings = {}
        settings = QtCore.QSettings()
        settings.beginGroup(self.__class__.__name__)
        for name in VPCS_SETTINGS.keys():
            if settings.contains(name):
                legacy_settings[name] = settings.value(
                    name, type=VPCS_SETTING_TYPES[name])
        settings.remove("")
        settings.endGroup()

        if legacy_settings:
            local_config.saveSectionSettings(self.__class__.__name__,
                                             legacy_settings)
        self._settings = local_config.loadSectionSettings(
            self.__class__.__name__, VPCS_SETTINGS)

        if not self._settings["base_script_file"]:
            self._settings["base_script_file"] = get_default_base_config(
                get_resource(os.path.join("configs", "vpcs_base_config.txt")))

        if not os.path.exists(self._settings["vpcs_path"]):
            self._settings["vpcs_path"] = self._findVPCS(self)

        # keep the config file sync
        self._saveSettings()
Пример #11
0
    def createNode(self, node, node_name):
        """
        Creates a node.

        :param node: Node instance
        :param node_name: Node name
        """

        log.info("creating node {}".format(node))

        if node_name:
            for node_key, info in self._vpcs_nodes.items():
                if node_name == info["name"]:
                    vm_settings = {}
                    for setting_name, value in self._vpcs_nodes[node_key].items():

                        if setting_name in node.settings() and setting_name != "name" and value != "" and value is not None:
                            vm_settings[setting_name] = value

                    node.create(default_name_format=info["default_name_format"], additional_settings=vm_settings)
                    return

        vm_settings = {
            "base_script_file": self._settings.get("base_script_file", get_default_base_config(get_resource(os.path.join("configs", "vpcs_base_config.txt"))))
        }
        node.create(additional_settings=vm_settings)
Пример #12
0
    def _loadSettings(self):
        """
        Loads the settings from the persistent settings file.
        """

        local_config = LocalConfig.instance()

        # restore the VPCS settings from QSettings (for backward compatibility)
        legacy_settings = {}
        settings = QtCore.QSettings()
        settings.beginGroup(self.__class__.__name__)
        for name in VPCS_SETTINGS.keys():
            if settings.contains(name):
                legacy_settings[name] = settings.value(name, type=VPCS_SETTING_TYPES[name])
        settings.remove("")
        settings.endGroup()

        if legacy_settings:
            local_config.saveSectionSettings(self.__class__.__name__, legacy_settings)
        self._settings = local_config.loadSectionSettings(self.__class__.__name__, VPCS_SETTINGS)

        if not self._settings["base_script_file"]:
            self._settings["base_script_file"] = get_default_base_config(get_resource(os.path.join("configs", "vpcs_base_config.txt")))

        if not os.path.exists(self._settings["vpcs_path"]):
            self._settings["vpcs_path"] = self._findVPCS(self)

        # keep the config file sync
        self._saveSettings()
Пример #13
0
    def _loadSettings(self):
        """
        Loads the settings from the persistent settings file.
        """

        # Copy the default base config in the final location
        get_default_base_config(get_resource(os.path.join("configs", "vpcs_base_config.txt")))

        self._settings = LocalConfig.instance().loadSectionSettings(self.__class__.__name__, VPCS_SETTINGS)
        if not os.path.exists(self._settings["vpcs_path"]):
            vpcs_path = shutil.which("vpcs")
            if vpcs_path:
                self._settings["vpcs_path"] = os.path.abspath(vpcs_path)
            else:
                self._settings["vpcs_path"] = ""

        self._loadVPCSNodes()
Пример #14
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOUImageLineEdit.text()

        startup_config = ""
        if self.uiTypeComboBox.currentText() == "L2 image":
            # set the default L2 base startup-config
            default_base_config = get_default_base_config(
                self._base_iou_l2_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/multilayer_switch.svg"
            category = Node.switches
            ethernet_adapters = 4
            serial_adapters = 0
        else:
            # set the default L3 base startup-config
            default_base_config = get_default_base_config(
                self._base_iou_l3_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/router.svg"
            category = Node.routers
            ethernet_adapters = 2
            serial_adapters = 2

        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "image": os.path.basename(path),
            "startup_config": startup_config,
            "ethernet_adapters": ethernet_adapters,
            "serial_adapters": serial_adapters,
            "symbol": symbol,
            "category": category,
            "server": self._compute_id,
        }

        return settings
Пример #15
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        image = self.uiIOSImageLineEdit.text()

        platform = self.uiPlatformComboBox.currentText()
        settings = {
            "name": self.uiNameLineEdit.text(),
            "image": image,
            "startup_config": get_default_base_config(self._base_startup_config_template),
            "ram": self.uiRamSpinBox.value(),
            "nvram": PLATFORMS_DEFAULT_NVRAM[platform],
            "idlepc": self.uiIdlepcLineEdit.text(),
            "platform": platform,
            "chassis": self.uiChassisComboBox.currentText(),
            "server": self._compute_id,
        }

        if self.uiEtherSwitchCheckBox.isChecked():
            settings["default_name_format"] = "ESW{0}"
            settings["startup_config"] = get_default_base_config(self._base_etherswitch_startup_config_template)
            settings["symbol"] = ":/symbols/multilayer_switch.svg"
            settings["disk0"] = 1  # adds 1MB disk to store vlan.dat
            settings["category"] = Node.switches
        else:
            settings["auto_delete_disks"] = True

        image_file = os.path.basename(image)
        if image_file.lower().startswith("c7200p"):
            settings["npe"] = "npe-g2"

        for slot_id, widget in self._widget_slots.items():
            if widget.isEnabled():
                settings["slot{}".format(slot_id)] = widget.currentText()

        for wic_id, widget in self._widget_wics.items():
            if widget.isEnabled():
                settings["wic{}".format(wic_id)] = widget.currentText()

        return settings
Пример #16
0
    def _loadSettings(self):
        """
        Loads the settings from the persistent settings file.
        """

        # Copy the default base config in the final location
        get_default_base_config(
            get_resource(os.path.join("configs", "vpcs_base_config.txt")))

        self._settings = LocalConfig.instance().loadSectionSettings(
            self.__class__.__name__, VPCS_SETTINGS)
        if not os.path.exists(self._settings["vpcs_path"]):
            vpcs_path = shutil.which("vpcs")
            if vpcs_path:
                self._settings["vpcs_path"] = os.path.abspath(vpcs_path)
            else:
                self._settings["vpcs_path"] = ""

        self._loadVPCSNodes()
Пример #17
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        path = self.uiIOUImageLineEdit.text()

        startup_config = ""
        if self.uiTypeComboBox.currentText() == "L2 image":
            # set the default L2 base startup-config
            default_base_config = get_default_base_config(self._base_iou_l2_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/multilayer_switch.svg"
            category = Node.switches
            ethernet_adapters = 4
            serial_adapters = 0
        else:
            # set the default L3 base startup-config
            default_base_config = get_default_base_config(self._base_iou_l3_config_template)
            if default_base_config:
                startup_config = default_base_config
            symbol = ":/symbols/router.svg"
            category = Node.routers
            ethernet_adapters = 2
            serial_adapters = 2

        settings = {
            "name": self.uiNameLineEdit.text(),
            "path": path,
            "image": os.path.basename(path),
            "startup_config": startup_config,
            "ethernet_adapters": ethernet_adapters,
            "serial_adapters": serial_adapters,
            "symbol": symbol,
            "category": category,
            "server": self._compute_id,
        }

        return settings
    def _iouImageBrowserSlot(self):
        """
        Slot to open a file browser and select an IOU image.
        """

        from .iou_device_preferences_page import IOUDevicePreferencesPage
        path = IOUDevicePreferencesPage.getIOUImage(self, self._server)
        if not path:
            return
        self.uiIOUImageLineEdit.clear()
        self.uiIOUImageLineEdit.setText(path)

        if "l2" in path:
            # set the default L2 base startup-config
            default_base_config = get_default_base_config(self._base_iou_l2_config_template)
            if default_base_config:
                self.uiStartupConfigLineEdit.setText(default_base_config)
        else:
            # set the default L3 base startup-config
            default_base_config = get_default_base_config(self._base_iou_l3_config_template)
            if default_base_config:
                self.uiStartupConfigLineEdit.setText(default_base_config)
Пример #19
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        settings = {"name": self.uiNameLineEdit.text(),
                    "base_script_file": get_default_base_config(get_resource(os.path.join("configs", "vpcs_base_config.txt"))),
                    "symbol": ":/symbols/vpcs_guest.svg",
                    "category": Node.end_devices,
                    "server": self._compute_id}

        return settings
Пример #20
0
    def getSettings(self):
        """
        Returns the settings set in this Wizard.

        :return: settings dict
        """

        settings = {
            "name":
            self.uiNameLineEdit.text(),
            "base_script_file":
            get_default_base_config(
                get_resource(os.path.join("configs", "vpcs_base_config.txt"))),
            "symbol":
            ":/symbols/vpcs_guest.svg",
            "category":
            Node.end_devices,
            "server":
            self._compute_id
        }

        return settings