def add_ui_pages(self, options_file, maxy, maxx, install_config): items = [] license_agreement = License(maxy, maxx) select_disk = SelectDisk(maxy, maxx, install_config) select_partition = PartitionISO(maxy, maxx, install_config) package_selector = PackageSelector(maxy, maxx, install_config, options_file) hostname_reader = WindowStringReader( maxy, maxx, 10, 70, 'hostname', None, # confirmation error msg if it's a confirmation text None, # echo char self.hostname_accepted_chars, # set of accepted chars IsoConfig.validate_hostname, # validation function of the input None, # post processing of the input field 'Choose the hostname for your system', 'Hostname:', 2, install_config, self.random_hostname, True) root_password_reader = WindowStringReader( maxy, maxx, 10, 70, 'password', None, # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars IsoConfig.validate_password, # validation function of the input None, # post processing of the input field 'Set up root password', 'Root password:'******'password', # confirmation error msg if it's a confirmation text "Passwords don't match, please try again.", '*', # echo char None, # set of accepted chars None, # validation function of the input IsoConfig. generate_password_hash, # post processing of the input field 'Confirm root password', 'Confirm Root password:', 2, install_config) items.append((license_agreement.display, False)) items.append((select_disk.display, True)) items.append((select_partition.display, False)) items.append((select_disk.guided_partitions, False)) items.append((package_selector.display, True)) select_linux_index = -1 if self.is_vmware_virtualization(): linux_selector = LinuxSelector(maxy, maxx, install_config) items.append((linux_selector.display, True)) select_linux_index = items.index((linux_selector.display, True)) items.append((hostname_reader.get_user_string, True)) items.append((root_password_reader.get_user_string, True)) items.append((confirm_password_reader.get_user_string, False)) return items, select_linux_index
def add_ui_pages(self, install_config, ui_config, maxy, maxx): items = [] license_agreement = License(maxy, maxx) select_disk = SelectDisk(maxy, maxx, install_config) custom_partition = CustomPartition(maxy, maxx, install_config) package_selector = PackageSelector(maxy, maxx, install_config, ui_config['options_file']) hostname_reader = WindowStringReader( maxy, maxx, 10, 70, 'hostname', None, # confirmation error msg if it's a confirmation text None, # echo char self.hostname_accepted_chars, # set of accepted chars IsoConfig.validate_hostname, # validation function of the input None, # post processing of the input field 'Choose the hostname for your system', 'Hostname:', 2, install_config, self.random_hostname, True) root_password_reader = WindowStringReader( maxy, maxx, 10, 70, 'shadow_password', None, # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars IsoConfig.validate_password, # validation function of the input None, # post processing of the input field 'Set up root password', 'Root password:'******'shadow_password', # confirmation error msg if it's a confirmation text "Passwords don't match, please try again.", '*', # echo char None, # set of accepted chars None, # validation function of the input CommandUtils.generate_password_hash, # post processing of the input field 'Confirm root password', 'Confirm Root password:'******'repo_url', None, # confirmation error msg if it's a confirmation text None, # echo char None, # set of accepted chars IsoConfig.validate_ostree_url_input, # validation function of the input None, # post processing of the input field 'Please provide the URL of OSTree repo', 'OSTree Repo URL:', 2, install_config, "http://") ostree_ref_reader = OSTreeWindowStringReader( maxy, maxx, 10, 70, 'repo_ref', None, # confirmation error msg if it's a confirmation text None, # echo char None, # set of accepted chars IsoConfig.validate_ostree_refs_input, # validation function of the input None, # post processing of the input field 'Please provide the Refspec in OSTree repo', 'OSTree Repo Refspec:', 2, install_config, "photon/3.0/x86_64/minimal") confirm_window = ConfirmWindow(11, 60, maxy, maxx, (maxy - 11) // 2 + 7, 'Start installation? All data on the selected disk will be lost.\n\n' 'Press <Yes> to confirm, or <No> to quit') # This represents the installer screens, the bool indicated if # I can go back to this window or not items.append((license_agreement.display, False)) items.append((select_disk.display, True)) items.append((custom_partition.display, False)) items.append((package_selector.display, True)) if 'network_screen' in ui_config: allow_vlan = ui_config['network_screen'].get('allow_vlan', False) net_cfg = NetworkConfigure(maxy, maxx, install_config, allow_vlan) items.append((net_cfg.display, True)) if 'download_screen' in ui_config: title = ui_config['download_screen'].get('title', None) intro = ui_config['download_screen'].get('intro', None) dest = ui_config['download_screen'].get('destination', None) fd = FileDownloader(maxy, maxx, install_config, title, intro, dest, True) items.append((fd.display, True)) if CommandUtils.is_vmware_virtualization(): linux_selector = LinuxSelector(maxy, maxx, install_config) items.append((linux_selector.display, True)) items.append((hostname_reader.get_user_string, True)) items.append((root_password_reader.get_user_string, True)) items.append((confirm_password_reader.get_user_string, False)) items.append((ostree_server_selector.display, True)) items.append((ostree_url_reader.get_user_string, True)) items.append((ostree_ref_reader.get_user_string, True)) items.append((confirm_window.do_action, True)) return items
def ui_config(self, options_file, maxy, maxx): # This represents the installer screen, the bool indicated if I can go back to this window or not items = [] random_id = '%12x' % random.randrange(16**12) random_hostname = "photon-" + random_id.strip() install_config = {'iso_system': False} install_config['ui_install'] = True license_agreement = License(maxy, maxx) select_disk = SelectDisk(maxy, maxx, install_config) select_partition = PartitionISO(maxy, maxx, install_config) package_selector = PackageSelector(maxy, maxx, install_config, options_file) self.alpha_chars = list(range(65, 91)) self.alpha_chars.extend(range(97, 123)) hostname_accepted_chars = self.alpha_chars # Adding the numeric chars hostname_accepted_chars.extend(range(48, 58)) # Adding the . and - hostname_accepted_chars.extend([ord('.'), ord('-')]) hostname_reader = WindowStringReader( maxy, maxx, 10, 70, 'hostname', None, # confirmation error msg if it's a confirmation text None, # echo char hostname_accepted_chars, # set of accepted chars self.validate_hostname, # validation function of the input None, # post processing of the input field 'Choose the hostname for your system', 'Hostname:', 2, install_config, random_hostname, True) root_password_reader = WindowStringReader( maxy, maxx, 10, 70, 'password', None, # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars IsoConfig.validate_password, # validation function of the input None, # post processing of the input field 'Set up root password', 'Root password:'******'password', "Passwords don't match, please try again.", # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars None, # validation function of the input IsoConfig.generate_password_hash, # post processing of the input field 'Confirm root password', 'Confirm Root password:'******'type'] == 'ostree_server': index += 1 else: index -= 1 while index >= 0 and items[index][1] is False: index -= 1 if index < 0: index = 0 #Skip linux select screen for ostree installation. if index == select_linux_index: if install_config['type'] == 'ostree_server': index -= 1 return install_config
def __init__(self, stdscreen, options_file): self.screen = stdscreen # Init the colors curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE) curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_WHITE) curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_GREEN) curses.init_pair(4, curses.COLOR_RED, curses.COLOR_WHITE) self.screen.bkgd(' ', curses.color_pair(1)) self.maxy, self.maxx = self.screen.getmaxyx() self.screen.addstr(self.maxy - 1, 0, ' Arrow keys make selections; <Enter> activates.') curses.curs_set(0) self.cd_path = None kernel_params = subprocess.check_output(['cat', '/proc/cmdline']) # check the kickstart param ks_config = None m = re.match(r".*ks=(\S+)\s*.*\s*", kernel_params) if m != None: ks_config = self.get_config(m.group(1)) # check for the repo param m = re.match(r".*repo=(\S+)\s*.*\s*", kernel_params) if m != None: rpm_path = m.group(1) else: # the rpms should be in the cd self.mount_RPMS_cd() rpm_path = os.path.join(self.cd_path, "RPMS") # This represents the installer screen, the bool indicated if I can go back to this window or not items = [] if not ks_config: random_id = '%12x' % random.randrange(16**12) random_hostname = "photon-" + random_id.strip() install_config = {'iso_system': False} license_agreement = License(self.maxy, self.maxx) select_disk = SelectDisk(self.maxy, self.maxx, install_config) select_partition = PartitionISO(self.maxy, self.maxx, install_config) package_selector = PackageSelector(self.maxy, self.maxx, install_config, options_file) self.alpha_chars = range(65, 91) self.alpha_chars.extend(range(97, 123)) partition_accepted_chars = list(range(48, 58)) hostname_accepted_chars = list(self.alpha_chars) # Adding the numeric chars hostname_accepted_chars.extend(range(48, 58)) # Adding the . and - hostname_accepted_chars.extend([ord('.'), ord('-')]) hostname_reader = WindowStringReader( self.maxy, self.maxx, 10, 70, 'hostname', None, # confirmation error msg if it's a confirmation text None, # echo char hostname_accepted_chars, # set of accepted chars self.validate_hostname, # validation function of the input None, # post processing of the input field 'Choose the hostname for your system', 'Hostname:', 2, install_config, random_hostname, True) root_password_reader = WindowStringReader( self.maxy, self.maxx, 10, 70, 'password', None, # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars self.validate_password, # validation function of the input None, # post processing of the input field 'Set up root password', 'Root password:'******'password', "Passwords don't match, please try again.", # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars None, # validation function of the input self. generate_password_hash, # post processing of the input field 'Confirm root password', 'Confirm Root password:'******'iso_system'] = False if self.is_vmware_virtualization( ) and 'install_linux_esx' not in install_config: install_config['install_linux_esx'] = True installer = InstallerContainer(install_config, self.maxy, self.maxx, True, rpm_path=rpm_path, log_path="/var/log", ks_config=ks_config) items = items + [(installer.install, False)] index = 0 params = None while True: result = items[index][0](params) if result.success: index += 1 params = result.result if index == len(items) - 1: self.screen.clear() if index == len(items): break #Skip linux select screen for ostree installation. if index == select_linux_index: if (install_config['type'] == 'ostree_server'): index += 1 else: index -= 1 while index >= 0 and items[index][1] == False: index -= 1 if index < 0: index = 0 #Skip linux select screen for ostree installation. if index == select_linux_index: if (install_config['type'] == 'ostree_server'): index -= 1
def add_ui_pages(self, options_file, maxy, maxx, install_config): items = [] license_agreement = License(maxy, maxx) select_disk = SelectDisk(maxy, maxx, install_config) select_partition = PartitionISO(maxy, maxx, install_config) package_selector = PackageSelector(maxy, maxx, install_config, options_file) hostname_reader = WindowStringReader( maxy, maxx, 10, 70, 'hostname', None, # confirmation error msg if it's a confirmation text None, # echo char self.hostname_accepted_chars, # set of accepted chars IsoConfig.validate_hostname, # validation function of the input None, # post processing of the input field 'Choose the hostname for your system', 'Hostname:', 2, install_config, self.random_hostname, True) root_password_reader = WindowStringReader( maxy, maxx, 10, 70, 'password', None, # confirmation error msg if it's a confirmation text '*', # echo char None, # set of accepted chars IsoConfig.validate_password, # validation function of the input None, # post processing of the input field 'Set up root password', 'Root password:'******'password', # confirmation error msg if it's a confirmation text "Passwords don't match, please try again.", '*', # echo char None, # set of accepted chars None, # validation function of the input IsoConfig. generate_password_hash, # post processing of the input field 'Confirm root password', 'Confirm Root password:'******'ostree_repo_url', None, # confirmation error msg if it's a confirmation text None, # echo char None, # set of accepted chars IsoConfig. validate_ostree_url_input, # validation function of the input None, # post processing of the input field 'Please provide the URL of OSTree repo', 'OSTree Repo URL:', 2, install_config, "http://") ostree_ref_reader = OSTreeWindowStringReader( maxy, maxx, 10, 70, 'ostree_repo_ref', None, # confirmation error msg if it's a confirmation text None, # echo char None, # set of accepted chars IsoConfig. validate_ostree_refs_input, # validation function of the input None, # post processing of the input field 'Please provide the Refspec in OSTree repo', 'OSTree Repo Refspec:', 2, install_config, "photon/3.0/x86_64/minimal") confirm_window = ConfirmWindow( 11, 60, maxy, maxx, (maxy - 11) // 2 + 7, 'Start installation? All data on the selected disk will be lost.\n\n' 'Press <Yes> to confirm, or <No> to quit') items.append((license_agreement.display, False)) items.append((select_disk.display, True)) items.append((select_partition.display, False)) items.append((package_selector.display, True)) if self.is_vmware_virtualization(): linux_selector = LinuxSelector(maxy, maxx, install_config) items.append((linux_selector.display, True)) items.append((hostname_reader.get_user_string, True)) items.append((root_password_reader.get_user_string, True)) items.append((confirm_password_reader.get_user_string, False)) items.append((ostree_server_selector.display, True)) items.append((ostree_url_reader.get_user_string, True)) items.append((ostree_ref_reader.get_user_string, True)) items.append((confirm_window.do_action, True)) return items