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) ]
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 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)
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)
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))
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
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()
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))
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()
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) ]
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()
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()
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]
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()