예제 #1
0
 def get_pool_details_page(self, screen):
     fields = []
     if self.__config.needs_target_path():
         self.__target_path = Entry(50, self.__config.get_target_path())
         fields.append(("Target Path", self.__target_path))
     if self.__config.needs_format():
         formats = []
         for fmt in self.__config.get_formats():
             formats.append([fmt, fmt, fmt is self.__config.get_format()])
         self.__formats = RadioBar(screen, formats)
         fields.append(("Format", self.__formats))
     if self.__config.needs_hostname():
         self.__hostname = Entry(50, self.__config.get_hostname())
         fields.append(("Host Name", self.__hostname))
     if self.__config.needs_source_path():
         self.__source_path = Entry(50, self.__config.get_source_path())
         fields.append(("Source Path", self.__source_path))
     if self.__config.needs_build_pool():
         self.__build_pool = Checkbox("Build Pool",
                                      self.__config.get_build_pool())
         fields.append((None, self.__build_pool))
     return [
         Label("Add Storage Pool"),
         Label(HELPER_TEXT),
         self.create_grid_from_fields(fields)
     ]
예제 #2
0
파일: engine.py 프로젝트: ekohl/vdsm
    def form(self):
        elements = Grid(2, 8)
        is_network_up = network_up()
        if is_network_up:
            header_message = "oVirt Engine Configuration"
        else:
            header_message = "Network Down, oVirt Engine Configuration Disabled"
        heading = Label(header_message)
        self.ncs.screen.setColor(customColorset(1), "black", "magenta")
        heading.setColors(customColorset(1))
        elements.setField(heading, 0, 0, anchorLeft = 1)
        rhevm_grid = Grid(2,2)
        rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft = 1)
        self.rhevm_server = Entry(25, "")
        self.rhevm_server.setCallback(self.valid_rhevm_server_callback)
        rhevm_grid.setField(Label("Management Server Port:"), 0, 1, anchorLeft = 1)
        self.rhevm_server_port = Entry(6, "", scroll = 0)
        self.rhevm_server_port.setCallback(self.valid_rhevm_server_port_callback)
        rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(2, 0, 0, 1))
        rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(2, 0, 0, 1))
        elements.setField(rhevm_grid, 0, 1, anchorLeft = 1, padding = (0,0,0,0))
        elements.setField(Label(""), 0, 2, anchorLeft = 1)
        self.verify_rhevm_cert = Checkbox("Connect to oVirt Engine and Validate Certificate", isOn=True)
        elements.setField(self.verify_rhevm_cert, 0, 3, anchorLeft = 1, padding = (0,0,0,0))
        elements.setField(Label(""), 0, 4, anchorLeft = 1)

        elements.setField(Label("Set oVirt Engine Admin Password"), 0, 5, anchorLeft = 1)
        pw_elements = Grid(3,3)

        pw_elements.setField(Label("Password: "******"Confirm Password: "******"", wrap=1)

        elements.setField(pw_elements, 0, 6, anchorLeft=1)
        elements.setField(self.pw_msg, 0, 7, padding = (0,0,0,0))

        inputFields = [self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
                       self.root_password_1, self.root_password_2]
        if not is_network_up:
            for field in inputFields:
                field.setFlags(FLAG_DISABLED, FLAGS_SET)

        try:
            rhevm_server = get_rhevm_config()
            rhevm_server,rhevm_port = rhevm_server.split(":")
            if rhevm_server.startswith("None"):
                self.rhevm_server.set("")
            else:
                self.rhevm_server.set(rhevm_server)
            self.rhevm_server_port.set(rhevm_port)

        except:
            pass
        return [Label(""), elements]
예제 #3
0
def display_create_template(screen, title, vm_type, templates, help=None):
    """Helper function for displaying a form for creating a new VM template"""
    label_base = Textbox(
        40, 2,
        'Select %s VM to be used as a basis\n(only stopped VMs are allowed)' %
        vm_type, 0, 0)

    base_tmpl = Listbox(7, 1, 0, 30, 1)
    for vm in templates.keys():
        base_tmpl.append(templates[vm], vm)

    label_newname = Textbox(40, 2, 'Name of the template to be created', 0, 0)
    spacer1 = Textbox(1, 1, "", 0, 0)
    spacer2 = Textbox(1, 1, "", 0, 0)
    entry_newname = Entry(30, 'template_name')
    bb = ButtonBar(screen, ('Create new template', ('Back to menu', 'back')))
    form = GridFormHelp(screen, title, help, 1, 7)
    form.add(label_base, 0, 0)
    form.add(base_tmpl, 0, 1)
    form.add(spacer1, 0, 2)
    form.add(label_newname, 0, 3)
    form.add(entry_newname, 0, 4)
    form.add(spacer2, 0, 5)
    form.add(bb, 0, 6)
    form_result = form.runOnce()
    tmpl_name = entry_newname.value()
    # remove whitespaces from the template name
    tmpl_name = re.sub(r'\s', '', tmpl_name)
    return (bb.buttonPressed(form_result), str(base_tmpl.current()), tmpl_name)
예제 #4
0
def display_create_template(screen, title, vm_type, templates, help=None):
    """Helper class for displaying a form for creating a new VM template"""
    label_base = Textbox(40, 2, 
        'Select %s VM to be used as a basis\n(only stopped VMs are allowed)' % 
        vm_type, 0, 0)
    
    base_tmpl = Listbox(7, 1, 0, 30, 1)
    for vm in templates.keys():
        base_tmpl.append(templates[vm], vm)
    
    label_newname = Textbox(40, 2, 'Name of the template to be created', 0, 0)
    spacer1 = Textbox(1, 1, "", 0, 0)
    spacer2 = Textbox(1, 1, "", 0, 0)
    entry_newname = Entry(30, 'template_name')
    bb = ButtonBar(screen, ('Create new template', ('Back to menu', 'back')))
    form = GridFormHelp(screen, title, help, 1, 7)
    form.add(label_base, 0, 0)
    form.add(base_tmpl, 0, 1)
    form.add(spacer1, 0, 2)
    form.add(label_newname, 0, 3)
    form.add(entry_newname, 0, 4)
    form.add(spacer2, 0, 5)
    form.add(bb, 0, 6)
    form_result = form.runOnce()
    tmpl_name = entry_newname.value()
    # remove whitespaces from the template name
    tmpl_name = re.sub(r'\s', '', tmpl_name)
    return (bb.buttonPressed(form_result), str(base_tmpl.current()), tmpl_name)
예제 #5
0
def ExtEntryRadioWindow(screen, title, text, prompts,
                        allowCancel=1, width=40, entryWidth=20,
                        buttons=['Ok', 'Cancel'], help=None, radio_prompts=''):

    bb = ButtonBar(screen, buttons, compact=1)
    t = TextboxReflowed(width, text)
    radio_grid = Grid(3, len(radio_prompts))
    sg = Grid(2, len(prompts))

    max_name_length = 0
    for n in prompts:
        if isinstance(n, types.TupleType):
            n = n[0]
        if len(n) > max_name_length:
            max_name_length = len(n)

    radioList = parse_radio_prompts(radio_prompts, radio_grid, entryWidth,
                                    max_name_length)
    entryList = []
    entry_row = 0
    for n in prompts:
        if isinstance(n, types.TupleType):
            (n, e) = n
            if (type(e) in types.StringTypes):
                e = Entry(entryWidth, e)
        else:
            e = Entry(entryWidth)

        sg.setField(Label(n), 0, entry_row, padding=(0, 0, 1, 0), anchorLeft=1)
        sg.setField(e, 1, entry_row, anchorLeft=1)
        entry_row += 1
        entryList.append(e)

    g = GridFormHelp(screen, title, help, 1, 4)
    g.add(t, 0, 0, padding=(0, 0, 0, 1))
    g.add(radio_grid, 0, 1, padding=(0, 0, 0, 1))
    g.add(sg, 0, 2, padding=(0, 0, 0, 1))
    g.add(bb, 0, 3, growx=1)

    result = g.runOnce()

    entryValues = []
    for rowRadioList in radioList:
        for radio, radio_text in rowRadioList:
            if radio.selected():
                entryValues.append(radio_text)
                break
    for entry in entryList:
        entryValues.append(entry.value())

    return (result, bb.buttonPressed(result), tuple(entryValues))
예제 #6
0
 def __init__(self,
              name,
              default,
              width,
              min_value=None,
              max_value=None,
              expected_type=None,
              password=0,
              display_name=None,
              required=True):
     Entry.__init__(self, width, "%s" % default, password=password)
     self.name, self.min_value, self.max_value = name, min_value, max_value
     self.expected_type, self.required = expected_type, required
     self.display_name = display_name or name
예제 #7
0
파일: main.py 프로젝트: occi/ocmi-tester
 def display_configure_occi(self):
     """Display OCCI configuration menu"""
     occi_entry = Entry(30, self.occi_server)
     occi_input_entry = Entry(30, self.occi_input_rendering)
     occi_output_entry = Entry(30, self.occi_output_rendering)
     command, _ = EntryWindow(self.screen, TITLE, 'Please, enter OCCI endpoint parameters',
             [('OCCI endpoint', occi_entry),
              ('OCCI input rendering', occi_input_entry),
              ('OCCI output rendering', occi_output_entry)], 
             buttons = [('Save', 'save'), ('Back', 'main_menu')])
     if command == 'save':
         self.occi_server = occi_entry.value().strip()
         self.occi_input_rendering = occi_input_entry.value().strip()
         self.occi_output_rendering = occi_input_entry.value().strip()
     self.display_main_screen()
예제 #8
0
def ExtEntryWindow(screen, title, text, prompts,
                   allowCancel=1, width=40, entryWidth=20,
                   buttons=['Ok', 'Cancel'], help=None):

    bb = ButtonBar(screen, buttons, compact=1)
    t = TextboxReflowed(width, text)

    count = 0
    for n in prompts:
        count = count + 1

    sg = Grid(2, count)

    count = 0
    entryList = []
    for n in prompts:
        if isinstance(n, types.TupleType):
            (n, e) = n
            if (type(e) in types.StringTypes):
                e = Entry(entryWidth, e)
        else:
            e = Entry(entryWidth)

        sg.setField(Label(n), 0, count, padding=(0, 0, 1, 0), anchorLeft=1)
        sg.setField(e, 1, count, anchorLeft=1)
        count = count + 1
        entryList.append(e)

    g = GridFormHelp(screen, title, help, 1, 3)

    g.add(t, 0, 0, padding=(0, 0, 0, 1))
    g.add(sg, 0, 1, padding=(0, 0, 0, 1))
    g.add(bb, 0, 2, growx=1)

    result = g.runOnce()

    entryValues = []
    count = 0
    for n in prompts:
        entryValues.append(entryList[count].value())
        count = count + 1

    return (result, bb.buttonPressed(result), tuple(entryValues))
예제 #9
0
    def run(self):
        toplevel = GridForm(self.screen, _("Passphrase"), 1, 3)

        txt = TextboxReflowed(65, self.txt)
        toplevel.add(txt, 0, 0)

        passphraseentry = Entry(60, password=1)
        toplevel.add(passphraseentry, 0, 1, (0, 0, 0, 1))

        buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
        toplevel.add(buttons, 0, 2, growx=1)

        rc = toplevel.run()
        res = buttons.buttonPressed(rc)

        passphrase = None
        if res == TEXT_OK_CHECK or rc == "F12":
            passphrase = passphraseentry.value().strip()

        self.rc = passphrase
        return self.rc
예제 #10
0
파일: text.py 프로젝트: numbnet/anaconda
    def run(self):
        toplevel = GridForm(self.screen, _("Passphrase"), 1, 3)

        txt = TextboxReflowed(65, self.txt)
        toplevel.add(txt, 0, 0)

        passphraseentry = Entry(60, password=1)
        toplevel.add(passphraseentry, 0, 1, (0, 0, 0, 1))

        buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
        toplevel.add(buttons, 0, 2, growx=1)

        rc = toplevel.run()
        res = buttons.buttonPressed(rc)

        passphrase = None
        if res == TEXT_OK_CHECK or rc == "F12":
            passphrase = passphraseentry.value().strip()

        self.rc = passphrase
        return self.rc
class AssistantInfoRadioBar(Grid):
    def __init__(self, screen, info):
        """
        @param buttonarray is an array in the form ([radiobutton, widget], ...)
        """
        from snack import RadioGroup, Textbox, Entry, FLAG_DISABLED

        self.group = RadioGroup()
        self.list = []
        self.item = 0
        self.info = info

        Grid.__init__(self, 1, len(info.getSuggestions()) + 6)

        self.setField(Textbox(20, 1, "Default:"), 0, 0, padding=(0, 0, 0, 0), anchorLeft=1)
        db = self.group.add(info.getDefault(), info.getDefault(), info.getValue() == info.getDefault())

        # print >> sys.stderr, "default: %s, value %s" %(info.getDefault(), info.getValue())

        db.setCallback(self._hasManualToggled)
        self.setField(db, 0, 1, (0, 0, 0, 0), anchorLeft=1, growx=1)
        # self.setField(dt, 1, self.item)
        self.setField(Textbox(20, 1, "Detected:"), 0, 2, padding=(0, 0, 0, 0), anchorLeft=1)

        self.item = self.item + 3
        self.list.append(db)
        for value in info.getSuggestions():
            b = self.group.add(value, value, info.getValue() == value)
            b.setCallback(self._hasManualToggled)
            self.setField(b, 0, self.item, (0, 0, 1, 0), anchorLeft=1, growx=1)
            # self.setField(t, 1, self.item)
            self.item = self.item + 1

        self.setField(Textbox(20, 1, "Manual:"), 0, self.item, padding=(0, 0, 0, 0), anchorLeft=1)
        self.item = self.item + 1
        self.dm = self.group.add("edit", "manual", info.getValue() == info.getManual())
        self.dm.setCallback(self._hasManualToggled)
        self.manualentry = Entry(15, info.getManual())
        self.manualentry.setFlags(FLAG_DISABLED, sense=not (self.dm.selected()))
        self.setField(self.dm, 0, self.item, (0, 0, 1, 0), anchorLeft=1, growx=1)
        self.setField(self.manualentry, 0, self.item + 1, (0, 0, 1, 0), anchorLeft=1)
        self._hasManualToggled()

    def _hasManualToggled(self):
        from snack import FLAG_DISABLED

        self.manualentry.setFlags(FLAG_DISABLED, sense=self.dm.selected())

    def getSelection(self):
        # print >> sys.stderr, "getSelection"
        if self.group.getSelection() == "manual":
            self.info.setManual(self.manualentry.value())
            return self.manualentry.value()
        return self.group.getSelection()
예제 #12
0
    def get_pool_name_page(self, screen):
        self.__name = Entry(50, self.__config.get_name())
        pooltypes = []
        for pooltype in Storage.StoragePool.get_pool_types():
            pooltypes.append([
                "%s: %s" %
                (pooltype, Storage.StoragePool.get_pool_type_desc(pooltype)),
                pooltype,
                self.__config.get_type() is pooltype
            ])
        self.__type = RadioBar(screen, pooltypes)
        fields = []
        fields.append(("Name", self.__name))
        fields.append(("Type", self.__type))

        return [
            Label("Add Storage Pool"),
            Label(HELPER_TEXT),
            self.create_grid_from_fields(fields)
        ]
예제 #13
0
 def display_configure_cdmi(self):
     """Display CDMI configuration menu"""
     cdmi_entry = Entry(30, c('cdmi', 'cdmi_server'))
     cdmi_user_entry = Entry(30, c('cdmi', 'username'))
     cdmi_pass_entry = Entry(30, c('cdmi', 'password'))
     command, _ = EntryWindow(self.screen, TITLE, 'Please, enter CDMI endpoint parameters',
             [('CDMI endpoint', cdmi_entry),
              ('Username', cdmi_user_entry),
              ('Password', cdmi_pass_entry)], 
             buttons = [('Save', 'save'), ('Back', 'main_menu')])
     if command == 'save':
         cs('cdmi', 'server', cdmi_entry.value().strip())
         cs('cdmi', 'username', cdmi_user_entry.value().strip())
         cd('cdmi', 'password', cdmi_pass_entry.value().strip())
     self.display_main_screen()
    def __init__(self, screen, info):
        """
        @param buttonarray is an array in the form ([radiobutton, widget], ...)
        """
        from snack import RadioGroup, Textbox, Entry, FLAG_DISABLED
        self.group = RadioGroup()
        self.list = []
        self.item = 0
        self.info = info

        Grid.__init__(self, 1, len(info.getSuggestions()) + 6)

        self.setField(Textbox(20, 1, "Default:"),
                      0,
                      0,
                      padding=(0, 0, 0, 0),
                      anchorLeft=1)
        db = self.group.add(info.getDefault(), info.getDefault(), \
                            info.getValue() == info.getDefault())

        #print >> sys.stderr, "default: %s, value %s" %(info.getDefault(), info.getValue())

        db.setCallback(self._hasManualToggled)
        self.setField(db, 0, 1, (0, 0, 0, 0), anchorLeft=1, growx=1)
        #self.setField(dt, 1, self.item)
        self.setField(Textbox(20, 1, "Detected:"),
                      0,
                      2,
                      padding=(0, 0, 0, 0),
                      anchorLeft=1)

        self.item = self.item + 3
        self.list.append(db)
        for value in info.getSuggestions():
            b = self.group.add(value, value, info.getValue() == value)
            b.setCallback(self._hasManualToggled)
            self.setField(b, 0, self.item, (0, 0, 1, 0), anchorLeft=1, growx=1)
            #self.setField(t, 1, self.item)
            self.item = self.item + 1

        self.setField(Textbox(20, 1, "Manual:"),
                      0,
                      self.item,
                      padding=(0, 0, 0, 0),
                      anchorLeft=1)
        self.item = self.item + 1
        self.dm = self.group.add("edit", "manual",
                                 info.getValue() == info.getManual())
        self.dm.setCallback(self._hasManualToggled)
        self.manualentry = Entry(15, info.getManual())
        self.manualentry.setFlags(FLAG_DISABLED,
                                  sense=not (self.dm.selected()))
        self.setField(self.dm,
                      0,
                      self.item, (0, 0, 1, 0),
                      anchorLeft=1,
                      growx=1)
        self.setField(self.manualentry,
                      0,
                      self.item + 1, (0, 0, 1, 0),
                      anchorLeft=1)
        self._hasManualToggled()
예제 #15
0
파일: engine.py 프로젝트: ekohl/vdsm
class Plugin(PluginBase):
    """Plugin for oVirt Engine configuration.
    """

    def __init__(self, ncs):
        PluginBase.__init__(self, "oVirt Engine", ncs)

    def form(self):
        elements = Grid(2, 8)
        is_network_up = network_up()
        if is_network_up:
            header_message = "oVirt Engine Configuration"
        else:
            header_message = "Network Down, oVirt Engine Configuration Disabled"
        heading = Label(header_message)
        self.ncs.screen.setColor(customColorset(1), "black", "magenta")
        heading.setColors(customColorset(1))
        elements.setField(heading, 0, 0, anchorLeft = 1)
        rhevm_grid = Grid(2,2)
        rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft = 1)
        self.rhevm_server = Entry(25, "")
        self.rhevm_server.setCallback(self.valid_rhevm_server_callback)
        rhevm_grid.setField(Label("Management Server Port:"), 0, 1, anchorLeft = 1)
        self.rhevm_server_port = Entry(6, "", scroll = 0)
        self.rhevm_server_port.setCallback(self.valid_rhevm_server_port_callback)
        rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(2, 0, 0, 1))
        rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(2, 0, 0, 1))
        elements.setField(rhevm_grid, 0, 1, anchorLeft = 1, padding = (0,0,0,0))
        elements.setField(Label(""), 0, 2, anchorLeft = 1)
        self.verify_rhevm_cert = Checkbox("Connect to oVirt Engine and Validate Certificate", isOn=True)
        elements.setField(self.verify_rhevm_cert, 0, 3, anchorLeft = 1, padding = (0,0,0,0))
        elements.setField(Label(""), 0, 4, anchorLeft = 1)

        elements.setField(Label("Set oVirt Engine Admin Password"), 0, 5, anchorLeft = 1)
        pw_elements = Grid(3,3)

        pw_elements.setField(Label("Password: "******"Confirm Password: "******"", wrap=1)

        elements.setField(pw_elements, 0, 6, anchorLeft=1)
        elements.setField(self.pw_msg, 0, 7, padding = (0,0,0,0))

        inputFields = [self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
                       self.root_password_1, self.root_password_2]
        if not is_network_up:
            for field in inputFields:
                field.setFlags(FLAG_DISABLED, FLAGS_SET)

        try:
            rhevm_server = get_rhevm_config()
            rhevm_server,rhevm_port = rhevm_server.split(":")
            if rhevm_server.startswith("None"):
                self.rhevm_server.set("")
            else:
                self.rhevm_server.set(rhevm_server)
            self.rhevm_server_port.set(rhevm_port)

        except:
            pass
        return [Label(""), elements]

    def password_check_callback(self):
        resp, msg = password_check(self.root_password_1.value(), self.root_password_2.value())
        self.pw_msg.setText(msg)
        return

    def action(self):
        self.ncs.screen.setColor("BUTTON", "black", "red")
        self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
        if self.root_password_1.value() != "" and self.root_password_2.value() != "" and self.root_password_1.value() == self.root_password_2.value():
            set_password(self.root_password_1.value(), "root")
            augtool("set", "/files/etc/ssh/sshd_config/PasswordAuthentication", "yes")
            dn = file('/dev/null', 'w+')
            subprocess.Popen(['/sbin/service', 'sshd', 'restart'], stdout=dn, stderr=dn)
        if len(self.rhevm_server.value()) > 0:
            deployUtil.nodeCleanup()
            if self.verify_rhevm_cert.selected():
                if deployUtil.getRhevmCert(self.rhevm_server.value(),  self.rhevm_server_port.value()):
                    path, dontCare = deployUtil.certPaths('')
                    fp = deployUtil.generateFingerPrint(path)
                    approval = ButtonChoiceWindow(self.ncs.screen,
                                "Certificate Fingerprint:",
                                fp, buttons = ['Approve', 'Reject'])
                    if 'reject' == approval:
                        ButtonChoiceWindow(self.ncs.screen, "Fingerprint rejected", "oVirt Engine Configuration Failed", buttons = ['Ok'])
                        return False
                    else:
                        ovirt_store_config(path)
                        self.ncs.reset_screen_colors()
                else:
                    ButtonChoiceWindow(self.ncs.screen, "oVirt Engine Configuration", "Failed downloading oVirt Engine certificate", buttons = ['Ok'])
                    self.ncs.reset_screen_colors()
            # Stopping vdsm-reg may fail but its ok - its in the case when the menus are run after installation
            deployUtil._logExec([constants.EXT_SERVICE, 'vdsm-reg', 'stop'])
            if write_vdsm_config(self.rhevm_server.value(), self.rhevm_server_port.value()):
                deployUtil._logExec([constants.EXT_SERVICE, 'vdsm-reg',
                    'start'])
                ButtonChoiceWindow(self.ncs.screen, "oVirt Engine Configuration", "oVirt Engine Configuration Successfully Updated", buttons = ['Ok'])
                self.ncs.reset_screen_colors()
                return True
            else:
                ButtonChoiceWindow(self.ncs.screen, "oVirt Engine Configuration", "oVirt Engine Configuration Failed", buttons = ['Ok'])
                self.ncs.reset_screen_colors()
                return False

    def valid_rhevm_server_callback(self):
        if not is_valid_host_or_ip(self.rhevm_server.value()):
            self.ncs.screen.setColor("BUTTON", "black", "red")
            self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
            ButtonChoiceWindow(self.ncs.screen, "Configuration Check", "Invalid oVirt Engine Hostname or Address", buttons = ['Ok'])
            self.ncs.reset_screen_colors()


    def valid_rhevm_server_port_callback(self):
        if not is_valid_port(self.rhevm_server_port.value()):
            self.ncs.screen.setColor("BUTTON", "black", "red")
            self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
            ButtonChoiceWindow(self.ncs.screen, "Configuration Check", "Invalid oVirt Engine Server Port", buttons = ['Ok'])
            self.ncs.reset_screen_colors()
예제 #16
0
파일: rhevm.py 프로젝트: vikas-lamba/vdsm
    def form(self):
        elements = Grid(2, 8)
        is_network_up = network_up()
        if is_network_up:
            header_message = "RHEV-M Configuration"
        else:
            header_message = "Network Down, RHEV-M Configuration Disabled"
        heading = Label(header_message)
        self.ncs.screen.setColor(customColorset(1), "black", "magenta")
        heading.setColors(customColorset(1))
        elements.setField(heading, 0, 0, anchorLeft=1)
        rhevm_grid = Grid(2, 2)
        rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft=1)
        self.rhevm_server = Entry(25, "")
        self.rhevm_server.setCallback(self.valid_rhevm_server_callback)
        rhevm_grid.setField(Label("Management Server Port:"),
                            0,
                            1,
                            anchorLeft=1)
        self.rhevm_server_port = Entry(6, "", scroll=0)
        self.rhevm_server_port.setCallback(
            self.valid_rhevm_server_port_callback)
        rhevm_grid.setField(self.rhevm_server,
                            1,
                            0,
                            anchorLeft=1,
                            padding=(2, 0, 0, 1))
        rhevm_grid.setField(self.rhevm_server_port,
                            1,
                            1,
                            anchorLeft=1,
                            padding=(2, 0, 0, 1))
        elements.setField(rhevm_grid, 0, 1, anchorLeft=1, padding=(0, 0, 0, 0))
        elements.setField(Label(""), 0, 2, anchorLeft=1)
        self.verify_rhevm_cert = Checkbox(
            "Connect to RHEV Manager and Validate Certificate", isOn=True)
        elements.setField(self.verify_rhevm_cert,
                          0,
                          3,
                          anchorLeft=1,
                          padding=(0, 0, 0, 0))
        elements.setField(Label(""), 0, 4, anchorLeft=1)

        elements.setField(Label("Set RHEV-M Admin Password"),
                          0,
                          5,
                          anchorLeft=1)
        pw_elements = Grid(3, 3)

        pw_elements.setField(Label("Password: "******"Confirm Password: "******"", wrap=1)

        elements.setField(pw_elements, 0, 6, anchorLeft=1)
        elements.setField(self.pw_msg, 0, 7, padding=(0, 0, 0, 0))

        inputFields = [
            self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
            self.root_password_1, self.root_password_2
        ]
        if not is_network_up:
            for field in inputFields:
                field.setFlags(FLAG_DISABLED, FLAGS_SET)

        try:
            rhevm_server = get_rhevm_config()
            rhevm_server, rhevm_port = rhevm_server.split(":")
            if rhevm_server.startswith("None"):
                self.rhevm_server.set("")
            else:
                self.rhevm_server.set(rhevm_server)
            self.rhevm_server_port.set(rhevm_port)

        except:
            pass
        return [Label(""), elements]
예제 #17
0
파일: rhevm.py 프로젝트: vikas-lamba/vdsm
class Plugin(PluginBase):
    """Plugin for RHEV-M configuration.
    """
    def __init__(self, ncs):
        PluginBase.__init__(self, "RHEV-M", ncs)

    def form(self):
        elements = Grid(2, 8)
        is_network_up = network_up()
        if is_network_up:
            header_message = "RHEV-M Configuration"
        else:
            header_message = "Network Down, RHEV-M Configuration Disabled"
        heading = Label(header_message)
        self.ncs.screen.setColor(customColorset(1), "black", "magenta")
        heading.setColors(customColorset(1))
        elements.setField(heading, 0, 0, anchorLeft=1)
        rhevm_grid = Grid(2, 2)
        rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft=1)
        self.rhevm_server = Entry(25, "")
        self.rhevm_server.setCallback(self.valid_rhevm_server_callback)
        rhevm_grid.setField(Label("Management Server Port:"),
                            0,
                            1,
                            anchorLeft=1)
        self.rhevm_server_port = Entry(6, "", scroll=0)
        self.rhevm_server_port.setCallback(
            self.valid_rhevm_server_port_callback)
        rhevm_grid.setField(self.rhevm_server,
                            1,
                            0,
                            anchorLeft=1,
                            padding=(2, 0, 0, 1))
        rhevm_grid.setField(self.rhevm_server_port,
                            1,
                            1,
                            anchorLeft=1,
                            padding=(2, 0, 0, 1))
        elements.setField(rhevm_grid, 0, 1, anchorLeft=1, padding=(0, 0, 0, 0))
        elements.setField(Label(""), 0, 2, anchorLeft=1)
        self.verify_rhevm_cert = Checkbox(
            "Connect to RHEV Manager and Validate Certificate", isOn=True)
        elements.setField(self.verify_rhevm_cert,
                          0,
                          3,
                          anchorLeft=1,
                          padding=(0, 0, 0, 0))
        elements.setField(Label(""), 0, 4, anchorLeft=1)

        elements.setField(Label("Set RHEV-M Admin Password"),
                          0,
                          5,
                          anchorLeft=1)
        pw_elements = Grid(3, 3)

        pw_elements.setField(Label("Password: "******"Confirm Password: "******"", wrap=1)

        elements.setField(pw_elements, 0, 6, anchorLeft=1)
        elements.setField(self.pw_msg, 0, 7, padding=(0, 0, 0, 0))

        inputFields = [
            self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
            self.root_password_1, self.root_password_2
        ]
        if not is_network_up:
            for field in inputFields:
                field.setFlags(FLAG_DISABLED, FLAGS_SET)

        try:
            rhevm_server = get_rhevm_config()
            rhevm_server, rhevm_port = rhevm_server.split(":")
            if rhevm_server.startswith("None"):
                self.rhevm_server.set("")
            else:
                self.rhevm_server.set(rhevm_server)
            self.rhevm_server_port.set(rhevm_port)

        except:
            pass
        return [Label(""), elements]

    def password_check_callback(self):
        resp, msg = password_check(self.root_password_1.value(),
                                   self.root_password_2.value())
        self.pw_msg.setText(msg)
        return

    def action(self):
        self.ncs.screen.setColor("BUTTON", "black", "red")
        self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
        if self.root_password_1.value() != "" and self.root_password_2.value(
        ) != "" and self.root_password_1.value() == self.root_password_2.value(
        ):
            set_password(self.root_password_1.value(), "root")
            augtool("set", "/files/etc/ssh/sshd_config/PasswordAuthentication",
                    "yes")
            dn = file('/dev/null', 'w+')
            subprocess.Popen(['/sbin/service', 'sshd', 'restart'],
                             stdout=dn,
                             stderr=dn)
        if len(self.rhevm_server.value()) > 0:
            deployUtil.nodeCleanup()
            if self.verify_rhevm_cert.selected():
                if deployUtil.getRhevmCert(self.rhevm_server.value(),
                                           self.rhevm_server_port.value()):
                    path, dontCare = deployUtil.certPaths('')
                    fp = deployUtil.generateFingerPrint(path)
                    approval = ButtonChoiceWindow(
                        self.ncs.screen,
                        "Certificate Fingerprint:",
                        fp,
                        buttons=['Approve', 'Reject'])
                    if 'reject' == approval:
                        ButtonChoiceWindow(self.ncs.screen,
                                           "Fingerprint rejected",
                                           "RHEV-M Configuration Failed",
                                           buttons=['Ok'])
                        return False
                    else:
                        ovirt_store_config(path)
                        self.ncs.reset_screen_colors()
                else:
                    ButtonChoiceWindow(self.ncs.screen,
                                       "RHEV-M Configuration",
                                       "Failed downloading RHEV-M certificate",
                                       buttons=['Ok'])
                    self.ncs.reset_screen_colors()
            # Stopping vdsm-reg may fail but its ok - its in the case when the menus are run after installation
            deployUtil._logExec([constants.EXT_SERVICE, 'vdsm-reg', 'stop'])
            if write_vdsm_config(self.rhevm_server.value(),
                                 self.rhevm_server_port.value()):
                deployUtil._logExec(
                    [constants.EXT_SERVICE, 'vdsm-reg', 'start'])
                ButtonChoiceWindow(self.ncs.screen,
                                   "RHEV-M Configuration",
                                   "RHEV-M Configuration Successfully Updated",
                                   buttons=['Ok'])
                self.ncs.reset_screen_colors()
                return True
            else:
                ButtonChoiceWindow(self.ncs.screen,
                                   "RHEV-M Configuration",
                                   "RHEV-M Configuration Failed",
                                   buttons=['Ok'])
                self.ncs.reset_screen_colors()
                return False

    def valid_rhevm_server_callback(self):
        if not is_valid_host_or_ip(self.rhevm_server.value()):
            self.ncs.screen.setColor("BUTTON", "black", "red")
            self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
            ButtonChoiceWindow(self.ncs.screen,
                               "Configuration Check",
                               "Invalid RHEV-M Hostname or Address",
                               buttons=['Ok'])
            self.ncs.reset_screen_colors()

    def valid_rhevm_server_port_callback(self):
        if not is_valid_port(self.rhevm_server_port.value()):
            self.ncs.screen.setColor("BUTTON", "black", "red")
            self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
            ButtonChoiceWindow(self.ncs.screen,
                               "Configuration Check",
                               "Invalid RHEV-M Server Port",
                               buttons=['Ok'])
            self.ncs.reset_screen_colors()
예제 #18
0
 def __init__(self, name, default, width, min_value=None, max_value=None,
              expected_type=None, password=0, display_name=None, required=True):
     Entry.__init__(self, width, "%s" % default, password=password)
     self.name, self.min_value, self.max_value = name, min_value, max_value
     self.expected_type, self.required = expected_type, required
     self.display_name = display_name or name