コード例 #1
0
    def __init__(self, parent):
        self.name = "Network Setup"
        self.priority = 5
        self.visible = True
        self.netsettings = dict()
        self.parent = parent
        self.screen = None
        self.log = logging
        self.log.basicConfig(filename='./fuelmenu.log', level=logging.DEBUG)
        self.getNetwork()
        self.gateway = self.get_default_gateway_linux()
        self.activeiface = sorted(self.netsettings.keys())[0]
        self.extdhcp = True

        # UI text
        self.net_choices = widget.ChoicesGroup(sorted(self.netsettings.keys()),
                                               default_value=self.activeiface,
                                               fn=self.radioSelectIface)
        # Placeholders for network settings text
        self.net_text1 = widget.TextLabel("")
        self.net_text2 = widget.TextLabel("")
        self.net_text3 = widget.TextLabel("")
        self.header_content = [
            self.net_choices, self.net_text1, self.net_text2, self.net_text3
        ]
        self.fields = [
            "blank", "ifname", "onboot", "bootproto", "ipaddr", "netmask",
            "gateway"
        ]
        self.defaults = \
            {
                "ifname": {"label": "Interface name:",
                           "tooltip": "Interface system identifier",
                           "value": "locked"},
                "onboot": {"label": "Enable interface:",
                           "tooltip": "",
                           "type": WidgetType.RADIO,
                           "callback": self.radioSelect},
                "bootproto": {"label": "Configuration via DHCP:",
                              "tooltip": "",
                              "type": WidgetType.RADIO,
                              "choices": ["Static", "DHCP"],
                              "callback": self.radioSelect},
                "ipaddr": {"label": "IP address:",
                           "tooltip": "Manual IP address (example \
192.168.1.2)"             ,
                           "value": ""},
                "netmask": {"label": "Netmask:",
                            "tooltip": "Manual netmask (example \
255.255.255.0)"               ,
                            "value": "255.255.255.0"},
                "gateway": {"label": "Default Gateway:",
                            "tooltip": "Manual gateway to access Internet \
(example 192.168.1.1)"                      ,
                            "value": ""},
            }
コード例 #2
0
ファイル: cobblerconf.py プロジェクト: Vegasq/fuel-menu
    def __init__(self, parent):
        self.name = "PXE Setup"
        self.priority = 20
        self.visible = True
        self.netsettings = dict()
        self.parent = parent
        self.getNetwork()
        self.gateway = self.get_default_gateway_linux()
        self.activeiface = sorted(self.netsettings.keys())[0]
        self.parent.managediface = self.activeiface

        # UI text
        text1 = "Settings for PXE booting of slave nodes."
        text2 = "Select the interface where PXE will run:"
        # Placeholder for network settings text
        self.net_choices = widget.ChoicesGroup(sorted(self.netsettings.keys()),
                                               default_value=self.activeiface,
                                               fn=self.radioSelect)
        self.net_text1 = widget.TextLabel("")
        self.net_text2 = widget.TextLabel("")
        self.net_text3 = widget.TextLabel("")
        self.net_text4 = widget.TextLabel("")
        self.header_content = [
            text1, text2, self.net_choices, self.net_text1, self.net_text2,
            self.net_text3, self.net_text4
        ]
        self.fields = [
            "dynamic_label", "ADMIN_NETWORK/dhcp_pool_start",
            "ADMIN_NETWORK/dhcp_pool_end", "ADMIN_NETWORK/dhcp_gateway"
        ]

        self.defaults = \
            {
                "ADMIN_NETWORK/dhcp_pool_start": {"label": "DHCP Pool Start",
                                                  "tooltip": "Used for \
defining IPs for hosts and instance public addresses"                                                     ,
                                                  "value": "10.0.0.3"},
                "ADMIN_NETWORK/dhcp_pool_end": {"label": "DHCP Pool End",
                                                "tooltip": "Used for defining \
IPs for hosts and instance public addresses"                                            ,
                                                "value": "10.0.0.254"},
                "ADMIN_NETWORK/dhcp_gateway": {"label": "DHCP Gateway",
                                               "tooltip": "Default gateway \
to advertise via DHCP to nodes"                               ,
                                               "value": "10.0.0.2"},
                "dynamic_label": {"label": "DHCP pool for node discovery:",
                                  "tooltip": "",
                                  "type": WidgetType.LABEL},
            }

        self.load()
        self.extdhcp = True
        self.screen = None
コード例 #3
0
    def _create_radiobutton_widget(cls, default_data):
        label = widget.TextLabel(('editlbl', default_data["label"]))
        callback = default_data.get("callback", None)

        choices_list = default_data.get("choices")
        if not choices_list:
            choices_list = ["Yes", "No"]
        choices = widget.ChoicesGroup(choices_list,
                                      default_value=choices_list[0],
                                      fn=callback)
        columns = widget.Columns([('weight', 2, label),
                                  ('weight', 3, choices)])
        # Attach choices rb_group so we can use it later
        columns.rb_group = choices.rb_group
        return columns
コード例 #4
0
ファイル: modulehelper.py プロジェクト: SergK/fuel-web
    def screenUI(cls,
                 modobj,
                 headertext,
                 fields,
                 defaults,
                 showallbuttons=False,
                 buttons_visible=True):

        log.debug("Preparing screen UI for %s" % modobj.name)
        #Define text labels, text fields, and buttons first
        header_content = []
        for text in headertext:
            if isinstance(text, str):
                header_content.append(urwid.Text(text))
            else:
                header_content.append(text)

        edits = []
        toolbar = modobj.parent.footer
        for key in fields:
            #Example: key = hostname, label = Hostname, value = fuel-pm
            if key == "blank":
                edits.append(blank)
            elif defaults[key]["value"] == "radio":
                label = widget.TextLabel(defaults[key]["label"])
                if "choices" in defaults[key]:
                    choices_list = defaults[key]["choices"]
                else:
                    choices_list = ["Yes", "No"]
                choices = widget.ChoicesGroup(choices_list,
                                              default_value="Yes",
                                              fn=modobj.radioSelect)
                columns = widget.Columns([('weight', 2, label),
                                          ('weight', 3, choices)])
                #Attach choices rb_group so we can use it later
                columns.rb_group = choices.rb_group
                edits.append(columns)
            elif defaults[key]["value"] == "label":
                edits.append(widget.TextLabel(defaults[key]["label"]))
            else:
                ispassword = "******" in key.upper()
                caption = defaults[key]["label"]
                default = defaults[key]["value"]
                tooltip = defaults[key]["tooltip"]
                edits.append(
                    widget.TextField(key,
                                     caption,
                                     23,
                                     default,
                                     tooltip,
                                     toolbar,
                                     ispassword=ispassword))

        listbox_content = []
        listbox_content.extend(header_content)
        listbox_content.append(blank)
        listbox_content.extend(edits)
        listbox_content.append(blank)

        #Wrap buttons into Columns so it doesn't expand and look ugly
        if buttons_visible:
            #Button to check
            button_check = widget.Button("Check", modobj.check)
            #Button to revert to previously saved settings
            button_cancel = widget.Button("Cancel", modobj.cancel)
            #Button to apply (and check again)
            button_apply = widget.Button("Apply", modobj.apply)

            if modobj.parent.globalsave and showallbuttons is False:
                check_col = widget.Columns([button_check])
            else:
                check_col = widget.Columns([
                    button_check, button_cancel, button_apply,
                    ('weight', 2, blank)
                ])
            listbox_content.append(check_col)

        #Add everything into a ListBox and return it
        listwalker = widget.TabbedListWalker(listbox_content)
        screen = urwid.ListBox(listwalker)
        modobj.edits = edits
        modobj.walker = listwalker
        modobj.listbox_content = listbox_content
        return screen