Exemple #1
0
def get_ftp_dest(answers):
    text = "Please enter the URL for your FTP directory and, optionally, a username and password"
    url_field = snack.Entry(50)
    user_field = snack.Entry(16)
    passwd_field = snack.Entry(16, password=1)
    url_text = snack.Textbox(11, 1, "URL:")
    user_text = snack.Textbox(11, 1, "Username:"******"Password:"******"Specify Path", 'getftpdest', 1, 3)
    bb = snack.ButtonBar(tui.screen, ['Ok', 'Back'])
    t = snack.TextboxReflowed(50, text)

    entry_grid = snack.Grid(2, 3)
    entry_grid.setField(url_text, 0, 0)
    entry_grid.setField(url_field, 1, 0)
    entry_grid.setField(user_text, 0, 1)
    entry_grid.setField(user_field, 1, 1, anchorLeft=1)
    entry_grid.setField(passwd_text, 0, 2)
    entry_grid.setField(passwd_field, 1, 2, anchorLeft=1)

    gf.add(t, 0, 0, padding=(0, 0, 0, 1))
    gf.add(entry_grid, 0, 1, padding=(0, 0, 0, 1))
    gf.add(bb, 0, 2, growx=1)

    button = bb.buttonPressed(gf.runOnce())

    if button == 'back': return uicontroller.LEFT_BACKWARDS

    url = url_field.value()
    if not url.startswith('ftp://'):
        url = 'ftp://' + url
    if user_field.value() != '':
        quoted_user = urllib.quote(user_field.value(), safe='')
        if passwd_field.value() != '':
            quoted_passwd = urllib.quote(passwd_field.value(), safe='')
            answers['dest-address'] = url.replace(
                '//', '//%s:%s@' % (quoted_user, quoted_passwd), 1)
        else:
            answers['dest-address'] = url.replace('//', '//%s@' % quoted_user,
                                                  1)
    else:
        answers['dest-address'] = url

    return uicontroller.RIGHT_FORWARDS
Exemple #2
0
def ConfirmGplv3Window(insScreen, packages):
    if insScreen == None:
        print "error ConfirmGplv3Window: the screen is None"
    # Create CheckboxTree instance
    (main_width, main_height) = GetHotKeyMainSize(insScreen)
    main_height -= 2

    if len(packages) > main_height:
        scroll = 1
    else:
        scroll = 0

    hotkey_base_text = "These GPLv3 packages are depended, do you want to install them? (y/n)"
    wrapper = textwrap.TextWrapper(width=main_width)
    hotkey_text = wrapper.fill(hotkey_base_text)
    if hotkey_text != hotkey_base_text:
        main_height -= 1
        hotkey_line = 2
    else:
        hotkey_line = 1

    li = snack.Listbox(main_height, scroll=scroll, width=main_width)

    idx = 0
    for x in packages:
        li.append(x.name, idx)
        idx += 1

    # Set position
    iPosition = 0
    li.setCurrent(iPosition)

    # Create Text instance
    t1 = snack.Textbox(main_width, 1, "-" * main_width)
    t4 = snack.Textbox(main_width, hotkey_line, hotkey_text)

    # Create Grid instance
    title = "GPLv3 that be depended"

    g = snack.GridForm(insScreen, title, 1, 5)
    g.add(li, 0, 0)
    g.add(t1, 0, 1, (-1, 0, -1, 0))
    g.add(t4, 0, 4, (0, 0, 0, -1))

    ############# append test key 'S' ####
    myhotkeys = {"y"     : "y", \
                 "Y"     : "y", \
                 "n"     : "n", \
                 "N"     : "n"}
    for x in myhotkeys.keys():
        g.addHotKey(x)
#####################################
    result = g.run()
    if myhotkeys.has_key(result):
        if myhotkeys[result] == "y" or \
            myhotkeys[result] == "n":
            insScreen.popWindow()
            return (myhotkeys[result])
Exemple #3
0
def PKGINSTActionWindow(insScreen, lstSubject, iPosition):

    # Create CheckboxTree instance
    (main_width, main_height) = GetHotKeyMainSize(insScreen)

    if len(lstSubject) > main_height:
        scroll = 1
    else:
        scroll = 0

    li = snack.Listbox(main_height, scroll=scroll, width=main_width)

    idx = 0
    for idx in range(len(lstSubject)):
        str = "%s" % lstSubject[idx][0]
        li.append(str, idx)

    num_subject = len(lstSubject)
    if num_subject > iPosition:
        li.setCurrent(iPosition)
    else:
        li.setCurrent(num_subject - 1)
    # Create Text instance
    t1 = snack.Textbox(main_width, 1, "-" * main_width)
    text = "SPACE/ENTER:select  I:Info  X:eXit"
    t2 = snack.Textbox(main_width, 1, text)

    # Create Grid instance
    g = snack.GridForm(insScreen, "Select your operation", 1, 3)
    g.add(li, 0, 0)
    g.add(t1, 0, 1, (-1, 0, -1, 0))
    g.add(t2, 0, 2, (0, 0, 0, -1))

    myhotkeys = {"ENTER" : "ENTER", \
                 " "     : " ", \
                 "i"     : "i", \
                 "I"     : "i", \
                 "x"     : "x", \
                 "X"     : "x"}
    for x in myhotkeys.keys():
        g.addHotKey(x)

    # Display window
    while True:
        result = g.run()
        if myhotkeys.has_key(result):
            idx = li.current()
            break

    insScreen.popWindow()
    return (myhotkeys[result], idx)
Exemple #4
0
    def __init__(self, screen, tui):
        self.screen = screen
        self.tui = tui
        self.tui.alreadyRegistered = 0

        self.server = self.tui.serverURL

        size = snack._snack.size()

        toplevel = snack.GridForm(screen, REGISTER_WINDOW.encode('utf-8'), 1,
                                  4)

        decoded_server = convert_url_from_pune(self.server)
        url = self.server
        if decoded_server != self.server:
            url += " (%s)" % decoded_server
        login_prompt = LOGIN_PROMPT % url
        login_label = LOGIN
        login_tip = LOGIN_TIP

        label = snack.Textbox(size[0] - 10,
                              3,
                              login_prompt.encode('utf-8'),
                              scroll=0,
                              wrap=1)

        toplevel.add(label, 0, 0, anchorLeft=1)

        grid = snack.Grid(2, 3)

        label = snack.Label(login_label.encode('utf-8'))
        grid.setField(label, 0, 0, padding=(0, 0, 1, 0), anchorRight=1)

        self.userNameEntry = snack.Entry(20)
        self.userNameEntry.set(tui.userName)
        grid.setField(self.userNameEntry, 1, 0, anchorLeft=1)

        label = snack.Label(PASSWORD.encode('utf-8'))
        grid.setField(label, 0, 1, padding=(0, 0, 1, 0), anchorRight=1)

        try:
            self.passwordEntry = snack.Entry(20, password=1)
        except TypeError:
            self.passwordEntry = snack.Entry(20, hidden=1)
        self.passwordEntry.set(tui.password)
        grid.setField(self.passwordEntry, 1, 1, anchorLeft=1)

        toplevel.add(grid, 0, 1)

        label = snack.TextboxReflowed(size[0] - 10, login_tip.encode('utf-8'))
        toplevel.add(label, 0, 2, anchorLeft=1)

        # BUTTON BAR
        self.bb = snack.ButtonBar(screen, [(NEXT.encode('utf-8'), "next"),
                                           (BACK.encode('utf-8'), "back"),
                                           (CANCEL.encode('utf-8'), "cancel")])

        toplevel.add(self.bb, 0, 3, padding=(0, 1, 0, 0), growx=1)

        self.g = toplevel
 def VoteText(self, header, text, buttons=None, watches=None, reflow=False):
     if not buttons:
         buttons = ['Ok']
     if watches is None:
         watches = {}
     with self:
         btnsbar = snack.ButtonBar(self.__screen, buttons)
         form = snack.GridForm(self.__screen, header, 1, 2)
         if text and reflow:
             textbox = snack.TextboxReflowed(width=TEXT_WIDTH,
                                             text=text,
                                             flexDown=FLEX_DOWN,
                                             flexUp=FLEX_UP)
             form.add(textbox, 0, 0, padding=(0, 0, 0, 1))
         elif text:
             width, height, scroll = self.__GetWidgetBounds(5, text=text)
             textbox = snack.Textbox(width,
                                     height,
                                     text=text,
                                     scroll=scroll,
                                     wrap=True)
             form.add(textbox, 0, 0, padding=(0, 0, 0, 1))
         form.add(btnsbar, 0, 1, padding=(0, 0, 0, 0))
         for watch in watches:
             form.form.watchFile(watch, 1)
         ret = form.runOnce()
         if btnsbar.buttonPressed(ret):
             return btnsbar.buttonPressed(ret)
         elif ret in watches:
             return watches[ret]
         else:
             return None
Exemple #6
0
    def __init__(self, screen, tui):
        self.screen = screen
        self.tui = tui
        size = snack._snack.size()
        toplevel = snack.GridForm(self.screen,
                                  WHY_REGISTER_WINDOW.encode('utf-8'), 1, 2)


        why_register_text = WHY_REGISTER_TEXT + "\n\n" + \
                            WHY_REGISTER_SEC  + "\n" + \
                            WHY_REGISTER_SEC_TXT + "\n\n" + \
                            WHY_REGISTER_DLD + "\n" + \
                            WHY_REGISTER_DLD_TXT + "\n\n" + \
                            WHY_REGISTER_SUPP + "\n" + \
                            WHY_REGISTER_SUPP_TXT + "\n\n" + \
                            WHY_REGISTER_COMP + "\n" + \
                            WHY_REGISTER_COMP_TXT + "\n\n" + \
                            WHY_REGISTER_TIP

        tb = snack.Textbox(size[0] - 10, size[1] - 14,
                           why_register_text.encode('utf-8'), 1, 1)

        toplevel.add(tb, 0, 0, padding=(0, 0, 0, 1))

        self.bb = snack.ButtonBar(self.screen,
                                  [(BACK_REGISTER.encode('utf-8'), "back")])
        toplevel.add(self.bb, 0, 1, growx=1)

        self.g = toplevel
Exemple #7
0
    def __init__(self, screen, tui):
        self.screen = screen
        self.tui = tui
        self.tui.alreadyRegistered = 0

        self.server = convert_url_from_puny(self.tui.serverURL)
        fixed_server_url = rhnreg.makeNiceServerUrl(self.server)

        #Save the config only if the url is different
        if fixed_server_url != self.server:
            self.server = fixed_server_url
            config.setServerURL(self.server)
            cfg.save()

        size = snack._snack.size()

        toplevel = snack.GridForm(screen, sstr(SATELLITE_URL_WINDOW), 1, 4)

        prompt_text = SATELLITE_URL_TEXT
        url_label = SATELLITE_URL_PROMPT
        ssl_label = SATELLITE_URL_PROMPT2

        label = snack.Textbox(size[0] - 10,
                              3,
                              sstr(prompt_text),
                              scroll=0,
                              wrap=1)

        toplevel.add(label, 0, 0, anchorLeft=1)

        # spacer
        label = snack.Label(sstr(""))
        toplevel.add(label, 0, 1)

        grid = snack.Grid(2, 3)

        label = snack.Label(sstr(url_label))
        grid.setField(label, 0, 0, padding=(0, 0, 1, 0), anchorRight=1)

        self.urlEntry = snack.Entry(40)
        self.urlEntry.set(self.server)
        grid.setField(self.urlEntry, 1, 0, anchorLeft=1)

        label = snack.Label(sstr(ssl_label))
        grid.setField(label, 0, 1, padding=(0, 0, 1, 0), anchorRight=1)

        self.sslEntry = snack.Entry(40)
        self.sslEntry.set(tui.sslCACert)
        grid.setField(self.sslEntry, 1, 1, anchorLeft=1)

        toplevel.add(grid, 0, 2)

        # BUTTON BAR
        self.bb = snack.ButtonBar(screen, [(sstr(NEXT), "next"),
                                           (sstr(BACK), "back"),
                                           (sstr(CANCEL), "cancel")])

        toplevel.add(self.bb, 0, 3, padding=(0, 1, 0, 0), growx=1)

        self.g = toplevel
Exemple #8
0
    def __init__(self, screen, tui):
        self.name = "ConnectWindow"
        self.screen = screen
        self.tui = tui
        size = snack._snack.size()

        self.server = convert_url_from_puny(self.tui.serverURL)

        fixed_server_url = rhnreg.makeNiceServerUrl(self.server)

        #Save the config only if the url is different
        if fixed_server_url != self.server:
            self.server = fixed_server_url
            config.setServerURL(self.server)

            cfg.save()

        self.proxy = cfg['httpProxy']

        toplevel = snack.GridForm(self.screen, CONNECT_WINDOW.encode('utf-8'),
                                  1, 1)

        text = CONNECT_WINDOW_TEXT % self.server + "\n\n"

        if self.proxy:
            text += CONNECT_WINDOW_TEXT2 % self.proxy

        tb = snack.Textbox(size[0] - 30, size[1] - 20, text.encode('utf-8'), 1,
                           1)

        toplevel.add(tb, 0, 0, padding=(0, 0, 0, 1))

        self.g = toplevel
Exemple #9
0
    def __init__(self, screen, tui):

        if not rhnreg.registered() or tui.test:
            raise WindowSkipException()

        self.screen = screen
        self.tui = tui
        size = snack._snack.size()

        systemIdXml = rpclib.xmlrpclib.loads(up2dateAuth.getSystemId())
        oldUsername = systemIdXml[0][0]['username']
        oldsystemId = systemIdXml[0][0]['system_id']

        toplevel = snack.GridForm(self.screen,
                                  SYSTEM_ALREADY_SETUP.encode('utf-8'), 1, 2)
        self.bb = snack.ButtonBar(self.screen,
                                  [(YES_CONT.encode('utf-8'), "next"),
                                   (NO_CANCEL.encode('utf-8'), "exit")])
        toplevel.add(self.bb, 0, 1, growx=1)

        tb = snack.Textbox(
            size[0] - 30, size[1] - 20,
            (SYSTEM_ALREADY_REGISTERED + "\n\n" + _("Spacewalk Location:") +
             " " + convert_url_from_pune(self.tui.serverURL) + "\n" +
             _("Login:"******" " + oldUsername + "\n" + _("System ID:") + " " +
             oldsystemId + "\n\n" + SYSTEM_ALREADY_REGISTERED_CONT +
             "\n").encode('utf-8'), 1, 1)
        toplevel.add(tb, 0, 0, padding=(0, 0, 0, 1))

        self.g = toplevel
Exemple #10
0
    def error(self, message):
        form = snack.GridForm(self._screen, "Error", 1, 3)

        form.add(snack.TextboxReflowed(40, message), 0, 0)
        form.add(snack.Textbox(0, 2, ""), 0, 1)
        form.add(snack.Button("Quit"), 0, 2)

        form.runOnce()
Exemple #11
0
    def startGUI(self):

        GUI.startGUI(self)

        self.form = snack.GridForm(self.screen, _("Discovered Hosts"), 1, 1)
        self.textbox = snack.Textbox(50, 4, "", scroll=1)
        self.form.add(self.textbox, 0, 0)

        self.screen.drawRootText(
            0, 0,
            _("%s -- version %s") %
            (self.sql.usage_name, self.sql.usage_version))

        self.screen.pushHelpLine(' ')
Exemple #12
0
    def printDiscovered(self, mac):
        form = snack.GridForm(self.screen, _("Discovered New Appliance"), 1, 1)

        new_app = _("Discovered a new appliance with MAC (%s)") % (mac)
        textbox = snack.Textbox(len(new_app), 1, new_app)
        form.add(textbox, 0, 0)

        #
        # display the message for 2 seconds
        #
        form.draw()
        self.screen.refresh()
        time.sleep(2)
        self.screen.popWindow()
Exemple #13
0
def HotkeyInfoWindow(insScreen, sTitle, sText, iWidth, iHeight, \
                     dctHotkeys, sHtext):

    # Get line number
    length = len(sText)
    index = 0
    count = 0
    scroll = 0
    while index < length:
        if sText[index] == "\n":
            count += 1
            if count > iHeight:
                scroll = 1
                break
        index += 1

    # Create Text instance
    t1 = snack.Textbox(iWidth - scroll * 2, iHeight, sText, scroll)
    t2 = snack.Textbox(iWidth, 1, "-" * iWidth)
    t3 = snack.Textbox(iWidth, 1, sHtext)

    # Create Grid instance
    g = snack.GridForm(insScreen, sTitle, 1, 3)
    g.add(t1, 0, 0)
    g.add(t2, 0, 1, (-1, 0, -1, 0))
    g.add(t3, 0, 2, (0, 0, 0, -1))
    for x in dctHotkeys.keys():
        g.addHotKey(x)
    # Display window
    while True:
        result = g.run()
        if dctHotkeys.has_key(result):
            break

    # Return
    insScreen.popWindow()
    return dctHotkeys[result]
Exemple #14
0
	def startGUI(self):

		GUI.startGUI(self)

		self.form = snack.GridForm(self.screen,
					   _("Inserted Appliances"), 1, 1)
		self.textbox = snack.Textbox(50, 4, "", scroll = 1)
		self.form.add(self.textbox, 0, 0)

		self.screen.drawRootText(0, 0, _("%s -- version %s") % 
					 (self.sql.usage_name,
					  self.sql.usage_version))
		self.screen.drawRootText(0, 1, 
				_("Opened kickstart access to %s network") % 
				self.sql.getPrivateNet())
		self.screen.pushHelpLine(' ')
Exemple #15
0
	def start(self):
		# Create our discovery list
		form = snack.GridForm(self._screen, "Discovered Hosts", 1, 3)
		self._textbox = snack.Textbox(60, 10, "", scroll=1)
		label = snack.Label("MAC Address         Hostname               Kickstarted")

		form.add(label, 0, 0, anchorLeft=True, padding=(1, 0, 0, 0))
		form.add(self._textbox, 0, 1, padding=(1, 0, 0, 2))
		form.add(snack.Button("Quit"), 0, 2)

		# Call start on the base class to start the thread
		self.daemon = True
		super().start()

		# Launch the form and wait for the quit button to be pressed
		form.runOnce()
Exemple #16
0
    def __init__(self, screen, tui):
        self.screen = screen
        self.tui = tui
        size = snack._snack.size()
        toplevel = snack.GridForm(self.screen, START_REGISTER_WINDOW.encode('utf-8'),
                                  1, 2)

        start_register_text = START_REGISTER_TEXT.encode('utf-8')

        tb = snack.Textbox(size[0]-10, size[1]-14, start_register_text, 1, 1)
        toplevel.add(tb, 0, 0, padding = (0, 0, 0, 1))

        self.bb = snack.ButtonBar(self.screen,
                                  [(WHY_REGISTER.encode('utf-8'), "why_register"),
                                   (NEXT.encode('utf-8'), "next"),
                                   (CANCEL.encode('utf-8'), "cancel")])
        toplevel.add(self.bb, 0, 1, growx = 1)

        self.g = toplevel
Exemple #17
0
    def __init__(self, screen, tui):
        self.screen = screen
        self.tui = tui
        size = snack._snack.size()

        self.server = convert_url_from_puny(self.tui.serverURL)

        self.proxy = cfg['httpProxy']

        toplevel = snack.GridForm(self.screen, sstr(CONNECT_WINDOW), 1, 1)

        text = CONNECT_WINDOW_TEXT % self.server + "\n\n"

        if self.proxy:
            text += CONNECT_WINDOW_TEXT2 % self.proxy

        tb = snack.Textbox(size[0] - 30, size[1] - 20, sstr(text), 1, 1)

        toplevel.add(tb, 0, 0, padding=(0, 0, 0, 1))

        self.g = toplevel
Exemple #18
0
def ButtonInfoWindow(insScreen, sTitle, sText, iWidth, iHeight, lstButtons):

    # Get line number
    length = len(sText)
    index = 0
    count = 0
    scroll = 0
    while index < length:
        if sText[index] == "\n":
            count += 1
            if count > iHeight:
                scroll = 1
                break
        index += 1

    # Create Text instance
    t1 = snack.Textbox(iWidth - scroll * 2, iHeight, sText, scroll)

    # Create Button instance
    bb = snack.ButtonBar(insScreen, lstButtons)

    # Create Grid instance
    g = snack.GridForm(insScreen, sTitle, 1, 2)
    g.add(t1, 0, 0)
    g.add(bb, 0, 1, (0, 1, 0, -1))

    # Display window
    while True:
        result = bb.buttonPressed(g.run())

        rcode = None
        for x in lstButtons:
            if result == x.lower():
                rcode = x[0].lower()
                break
        if rcode != None:
            break

    insScreen.popWindow()
    return rcode
Exemple #19
0
    def __init__(self,screen,title,msg,ok_button='OK',width=40,height=7,**kargs):
        '''
        This form will create a simple message box at the format of

        +-----------------------------+
        |                             |
        |    Message .............    |
        |    .....................    |
        |    .....................    |
        |    .....................    |
        |    .....................    |
        |    .....................    |
        |    .....................    |
        |    .....................    |
        |    .....................    |
        |                             |
        |          +-------+          |
        |          |  OK   |          |
        |          +-------+          |
        +-----------------------------+

        Variables:
        screen    - the screen to write to
        title     - form title
        msg          - The message to display
        ok_button - The OK button title
        width     - Text box width in columns
        height    - Text box height in lines
        scroll    - Add scrolling  1:yes 0 :no

        Addtional arguments:
        Buttons         - If the keyword Buttons is given,
        it is assumet to be a widget and added to the form insted of the Ok/Cancel Buttons
        '''
        self.TextBox=snack.Textbox(width=width,height=height,text=msg,scroll=0)
        if kargs.get('Buttons',None):
            self.Buttons=kargs['Buttons']
        else:
            self.Buttons=snack.Button(ok_button)
        super(MessageForm,self).__init__(screen,name=title,Widgets=[self.TextBox,self.Buttons])
Exemple #20
0
    def __init__(self, screen, tui):

        if not rhnreg.rhsm_registered() or tui.test:
            raise WindowSkipException()

        self.screen = screen
        self.tui = tui
        size = snack._snack.size()

        toplevel = snack.GridForm(self.screen, sstr(SYSTEM_ALREADY_SETUP), 1,
                                  2)
        self.bb = snack.ButtonBar(self.screen, [(sstr(YES_CONT), "next"),
                                                (sstr(NO_CANCEL), "exit")])
        toplevel.add(self.bb, 0, 1, growx=1)

        tb = snack.Textbox(
            size[0] - 30, size[1] - 20,
            sstr(WARNING + "\n\n" + RHSM_SYSTEM_ALREADY_REGISTERED + "\n\n" +
                 SYSTEM_ALREADY_REGISTERED_CONT + "\n"), 1, 1)
        toplevel.add(tb, 0, 0, padding=(0, 0, 0, 1))

        self.g = toplevel
Exemple #21
0
    def waitGUI(self):
        """Shows a list of discovered but not kickstarted nodes
		for a few seconds."""

        not_done = ''
        hosts = self.kickstarted.keys()
        hosts.sort()
        for name in hosts:
            status = self.kickstarted[name]
            if status != 200:
                ks = '( )'
                if status:
                    ks = '(%s)' % status
                not_done += '%s \t %s\n' % (name, ks)

        form = snack.GridForm(self.screen,
                              _("Not kickstarted, please wait..."), 1, 1)
        textbox = snack.Textbox(35, 4, not_done, scroll=1)
        form.add(textbox, 0, 0)

        form.draw()
        self.screen.refresh()
        time.sleep(1)
        self.screen.popWindow()
Exemple #22
0
    def __init__(self, screen, tui):

        if not rhnreg.rhsm_registered() or tui.test:
            raise WindowSkipException()

        self.name = "AlreadyRegisteredSubscriptionManagerWindow"
        self.screen = screen
        self.tui = tui
        size = snack._snack.size()

        toplevel = snack.GridForm(self.screen,
                                  SYSTEM_ALREADY_SETUP.encode('utf-8'), 1, 2)
        self.bb = snack.ButtonBar(self.screen,
                                  [(YES_CONT.encode('utf-8'), "next"),
                                   (NO_CANCEL.encode('utf-8'), "exit")])
        toplevel.add(self.bb, 0, 1, growx=1)

        tb = snack.Textbox(size[0] - 30, size[1] - 20,
                           (WARNING + "\n\n" + RHSM_SYSTEM_ALREADY_REGISTERED +
                            "\n\n" + SYSTEM_ALREADY_REGISTERED_CONT +
                            "\n").encode('utf-8'), 1, 1)
        toplevel.add(tb, 0, 0, padding=(0, 0, 0, 1))

        self.g = toplevel
Exemple #23
0
    def __init__(self, screen, tui):
        self.screen = screen
        self.tui = tui
        self.reg_info = tui.reg_info
        size = snack._snack.size()

        toplevel = snack.GridForm(screen, REVIEW_WINDOW.encode('utf-8'), 1, 2)
        review_window_text = ''

        if not self.tui.yum_plugin_present:
            review_window_text += YUM_PLUGIN_WARNING + "\n\n"
        if self.tui.yum_plugin_conf_error:
            review_window_text += YUM_PLUGIN_CONF_ERROR + "\n\n"
        if self.tui.yum_plugin_conf_changed:
            review_window_text += YUM_PLUGIN_CONF_CHANGED + "\n\n"

        # Build up the review_window_text based on the data in self.reg_info
        review_window_text += REVIEW_WINDOW_PROMPT + "\n\n"

        # Create and add the text for what channels the system was
        # subscribed to.
        if len(self.reg_info['channels']) > 0:
            channel_list = ""
            for channel in self.reg_info['channels']:
                channel_list += channel + "\n"

            channels = CHANNELS_TITLE + "\n" + \
                       OK_CHANNELS + "\n" + \
                       "%s\n"

            log.log_debug("server type is %s " % self.tui.serverType)
            channels += CHANNELS_SAT_WARNING

            review_window_text += channels % channel_list + "\n\n"

        if len(self.reg_info['system_slots']) > 0:
            slot_list = ""
            for slot in self.reg_info['system_slots']:
                if slot == 'enterprise_entitled':
                    slot_list += MANAGEMENT + "\n"
                elif slot == 'provisioning_entitled':
                    slot_list += PROVISIONING + "\n"
                elif slot == 'sw_mgr_entitled':
                    slot_list += UPDATES + "\n"
                elif slot == 'monitoring_entitled':
                    slot_list += MONITORING + "\n"
                elif slot == 'virtualization_host':
                    slot_list += VIRT + "\n"
                elif slot == 'virtualization_host_platform':
                    slot_list += VIRT_PLATFORM + "\n"
                else:
                    slot_list += slot + "\n"
            review_window_text += SLOTS % slot_list + "\n\n"

        if len(self.reg_info['universal_activation_key']) > 0:
            act_key_list = ""
            for act_key in self.reg_info['universal_activation_key']:
                act_key_list += act_key
            review_window_text += ACTIVATION_KEY % (act_key_list)

        self.review_window = snack.Textbox(size[0] - 10, size[1] - 14,
                                           review_window_text.encode('utf-8'),
                                           1, 1)

        toplevel.add(self.review_window, 0, 0, padding=(0, 1, 0, 0))

        # BUTTON BAR
        self.bb = snack.ButtonBar(screen, [(OK.encode('utf-8'), "next")])
        toplevel.add(self.bb, 0, 1, padding=(0, 1, 0, 0), growx=1)

        self.g = toplevel
Exemple #24
0
    def run(self):
        self.startGUI()

        #
        # make sure the box requested exists
        #
        if self.getBox() == 0:
            self.endGUI()
            return

        if self.getBootaction() == 0:
            self.endGUI()
            return

        self.controller.loadPlugins(self.sql)

        try:

            self.applianceLongNameGUI()
            self.initializeRank()

            if self.hostname:
                query = 'select id from nodes ' +\
                 'where name="%s"' % self.hostname
                rows = self.sql.execute(query)
                if rows:
                    raise InsertError("Node %s already exists" % self.hostname)

        except (ValueError, InsertError) as msg:
            self.errorGUI(msg)
            self.endGUI()
            sys.stderr.write(_("%s\n") % str(msg))
            return

        log = open('/var/log/messages', 'r')
        log.seek(0, 2)

        for dir in ['httpd', 'apache2']:
            try:
                kslog = open('/var/log/%s/ssl_access_log' % dir, 'r')
            except:
                pass
        kslog.seek(0, 2)

        #
        # key used to quit
        #
        self.screen.pushHelpLine(
            _(" Press <F8> to quit, press <F9> to force quit"))
        self.form.addHotKey('F8')
        self.form.addHotKey('F9')
        self.form.setTimer(1000)

        self.statusGUI()

        result = self.form.run()
        suggest_done = 0
        done = 0
        while not done:

            # Check syslog for a new line

            syslog_line = log.readline()
            if syslog_line and not suggest_done:
                try:
                    self.listenDhcp(syslog_line)
                except InsertDone:
                    suggest_done = 1

                except (ValueError, InsertError) as msg:
                    self.warningGUI(msg)
                continue

            # Check http log for a new line

            access_line = kslog.readline()
            if access_line:
                try:
                    self.listenKs(access_line)
                except InsertError as msg:
                    self.warningGUI(msg)
                continue

            result = self.form.run()
            done = self.checkDone(result, suggest_done)

        #
        # if there was a change to the database, restart some
        # services
        #
        if self.restart_services == 1:
            form = snack.GridForm(self.screen, _("Restarting Services"), 1, 1)

            message = _("Restarting Services...")
            textbox = snack.Textbox(len(message), 1, message)
            form.add(textbox, 0, 0)
            form.draw()
            self.screen.refresh()

            self.controller.done()

            self.screen.popWindow()

        #
        # cleanup
        #
        log.close()
        self.endGUI()

        if self.lastmsg != '':
            sys.stderr.write(_("%s\n") % self.lastmsg)
Exemple #25
0
def PKGINSTPackageWindow(insScreen, packages, selected_packages, iPosition, lTargetSize, lHostSize, search, \
                                                                                               install_type):
    installed_pkgs = 0
    numChange = True  #Select or unselect operation that lead selected number change

    # Create CheckboxTree instance
    (main_width, main_height) = GetHotKeyMainSize(insScreen)
    main_height -= 2

    #print " packages = %s" % len(packages)
    if len(packages) > main_height:
        scroll = 1
    else:
        scroll = 0

    hotkey_base_text = "SPACE/ENTER:select/unselect  A:select/unselect All  R:seaRch N:Next  B:Back  I:Info  X:eXit"
    wrapper = textwrap.TextWrapper(width=main_width)
    hotkey_text = wrapper.fill(hotkey_base_text)
    if hotkey_text != hotkey_base_text:
        main_height -= 1
        hotkey_line = 2
    else:
        hotkey_line = 1

    li = snack.Listbox(main_height, scroll=scroll, width=main_width)

    idx = 0
    for x in packages:
        if install_type == ACTION_INSTALL and x.installed:
            status = "I"
            installed_pkgs += 1
        elif x in selected_packages:
            status = SIGN_SELECT[install_type]
        else:
            status = " "
        str = "[%s] %s " % (status, x.name)

        li.append(str, idx)
        idx += 1
    # Set position
    num_package = len(packages)
    before_position = 0
    if num_package > 1:
        if num_package <= iPosition:
            iPosition = num_package - 1
        if num_package > (iPosition + main_height / 2):
            before_position = (iPosition + main_height / 2)
        else:
            before_position = num_package - 1
    li.setCurrent(before_position)
    li.setCurrent(iPosition)

    # Create Text instance
    text = ""
    t1 = snack.Textbox(main_width, 1, "-" * main_width)
    t2 = snack.Textbox(main_width, 1, text)
    t3 = snack.Textbox(main_width, 1, "-" * main_width)
    t4 = snack.Textbox(main_width, hotkey_line, hotkey_text)

    # Create Grid instance
    if search == None:
        title = "Select package"
    else:
        title = "Select package - (%s)" % search

    g = snack.GridForm(insScreen, title, 1, 5)
    g.add(li, 0, 0)
    g.add(t1, 0, 1, (-1, 0, -1, 0))
    g.add(t2, 0, 2)
    g.add(t3, 0, 3, (-1, 0, -1, 0))
    g.add(t4, 0, 4, (0, 0, 0, -1))

    ############# append test key 'S' ####
    myhotkeys = {"ENTER" : "ENTER", \
                 " "     : " ", \
                 "n"     : "n", \
                 "N"     : "n", \
                 "b"     : "b", \
                 "B"     : "b", \
                 "r"     : "r", \
                 "R"     : "r", \
                 "i"     : "i", \
                 "I"     : "i", \
                 "x"     : "x", \
                 "X"     : "x", \
                 "a"     : "a", \
                 "A"     : "a"}

    for x in myhotkeys.keys():
        g.addHotKey(x)

#####################################
    while True:

        if numChange:
            if install_type == ACTION_INSTALL:
                text = "All Packages [%ld]    Installed Packages [%ld]    Selected Packages [%ld]" % \
                       (num_package, installed_pkgs, len(selected_packages))
            else:
                text = "All Packages [%ld]    Selected Packages [%ld]" % \
                       (num_package, len(selected_packages))
            t2.setText(text)
            numChange = False

        result = g.run()
        idx = li.current()
        if myhotkeys.has_key(result):
            if myhotkeys[result] == "ENTER" or \
               myhotkeys[result] == " ":
                numChange = True
                li = _StatusToggle(li, myhotkeys[result], idx, selected_packages, \
                                                          packages, install_type)
                idx += 1
                if idx >= num_package:
                    idx = num_package - 1
                li.setCurrent(idx)
            elif myhotkeys[result] == "a":  ###
                li = _SelectAll(li, myhotkeys[result],num_package, selected_packages, \
                                                         packages, install_type)
                li.setCurrent(idx)
                numChange = True
            else:
                break

    insScreen.popWindow()
    return (myhotkeys[result], idx, selected_packages)
Exemple #26
0
def PKGINSTDebuginfoWindow(insScreen, lstDebugPkg, selected_packages, iPosition, \
                         lTargetSize, lHostSize):

    installed_pkgs = 0
    # Create CheckboxTree instance

    (main_width, main_height) = GetHotKeyMainSize(insScreen)
    main_height -= 2

    if len(lstDebugPkg) > main_height:
        scroll = 1
    else:
        scroll = 0

    hotkey_base_text = "SPACE/ENTER:select/unselect  N:Next  B:Back  I:Info  X:eXit"
    wrapper = textwrap.TextWrapper(width=main_width)
    hotkey_text = wrapper.fill(hotkey_base_text)
    if hotkey_text != hotkey_base_text:
        main_height -= 1
        hotkey_line = 2
    else:
        hotkey_line = 1

    li = snack.Listbox(main_height, scroll=scroll, width=main_width)

    idx = 0
    for x in lstDebugPkg:
        if x.installed:
            status = "I"
            installed_pkgs += 1
        elif x in selected_packages:
            status = "*"
        else:
            status = " "
        str = "[%s] %s " % (status, x.name)

        li.append(str, idx)
        idx += 1

    # Set position
    num_package = len(lstDebugPkg)
    if num_package <= iPosition:
        iPosition = num_package - 1
    if num_package > (iPosition + main_height / 2):
        before_position = (iPosition + main_height / 2)
    else:
        before_position = num_package - 1
    li.setCurrent(before_position)
    li.setCurrent(iPosition)

    # Create Text instance
    t1 = snack.Textbox(main_width, 1, "-" * main_width)
    text = "All Packages [%ld]    Installed Packages    [%ld] Selected Packages [%ld]" % \
          (num_package, installed_pkgs, len(selected_packages))

    t2 = snack.Textbox(main_width, 1, text)
    t3 = snack.Textbox(main_width, 1, "-" * main_width)
    t4 = snack.Textbox(main_width, hotkey_line, hotkey_text)

    # Create Grid instance
    g = snack.GridForm(insScreen, "Select debuginfo packages", 1, 5)
    g.add(li, 0, 0)
    g.add(t1, 0, 1, (-1, 0, -1, 0))
    g.add(t2, 0, 2)
    g.add(t3, 0, 3, (-1, 0, -1, 0))
    g.add(t4, 0, 4, (0, 0, 0, -1))

    ############# append test key 'S' ####
    myhotkeys = {"ENTER" : "ENTER", \
                 " "     : " ", \
                 "n"     : "n", \
                 "N"     : "n", \
                 "b"     : "b", \
                 "B"     : "b", \
                 "i"     : "i", \
                 "I"     : "i", \
                 "x"     : "x", \
                 "X"     : "x"}
    for x in myhotkeys.keys():
        g.addHotKey(x)


#####################################

# Display window
    while True:
        result = g.run()
        idx = li.current()
        if myhotkeys.has_key(result):
            if myhotkeys[result] == "ENTER" or \
               myhotkeys[result] == " ":
                li = _StatusToggle(li, myhotkeys[result], idx,
                                   selected_packages, lstDebugPkg)
                idx += 1
                if idx >= num_package:
                    idx = num_package - 1
                li.setCurrent(idx)
            else:
                break

    insScreen.popWindow()
    return (myhotkeys[result], idx, selected_packages)
Exemple #27
0
                except InsertError, msg:
                    self.warningGUI(msg)
                continue

            result = self.form.run()
            done = self.checkDone(result, suggest_done)

        #
        # if there was a change to the database, restart some
        # services
        #
        if self.restart_services == 1:
            form = snack.GridForm(self.screen, _("Restarting Services"), 1, 1)

            message = _("Restarting Services...")
            textbox = snack.Textbox(len(message), 1, message)
            form.add(textbox, 0, 0)
            form.draw()
            self.screen.refresh()

            self.controller.done()

            self.screen.popWindow()

        #
        # cleanup
        #
        log.close()
        self.endGUI()

        if self.lastmsg != '':
 def ActionChoice(self,
                  header,
                  text,
                  options,
                  watches=None,
                  current=None,
                  timeout=None):
     if watches is None:
         watches = []
     with self:
         text, text_width, text_height = snack.reflow(text,
                                                      width=TEXT_WIDTH,
                                                      flexDown=FLEX_DOWN,
                                                      flexUp=FLEX_UP)
         width, height, scroll = self.__GetWidgetBounds(text_height,
                                                        nlines=len(options))
         items_width = [len(option) for option, item in options]
         scrolled = 3 if scroll else 0
         width = min(
             TEXT_WIDTH,
             max(items_width) + scrolled if items_width else TEXT_WIDTH)
         listbox = snack.Listbox(height,
                                 scroll=scroll,
                                 width=width,
                                 returnExit=1)
         for option, item in options:
             listbox.append(option, item)
         if current is not None:
             try:
                 listbox.setCurrent(current)
             except KeyError:
                 pass
         form = snack.GridForm(self.__screen, header, 1, 2)
         if text:
             textbox = snack.Textbox(width=text_width,
                                     height=text_height,
                                     text=text)
             form.add(textbox, 0, 0, padding=(0, 0, 0, 1))
         form.add(listbox, 0, 1)
         for watch in watches:
             form.form.watchFile(watch, 1)
         if timeout is not None:
             form.form.setTimer(timeout)
         form.addHotKey('ESC')
         form.addHotKey('+')
         form.addHotKey('-')
         form.addHotKey('LEFT')
         form.addHotKey('RIGHT')
         ret = form.runOnce()
         if ret is listbox:
             return listbox.current(), ACTION_SET
         elif ret == 'TIMER':
             return listbox.current() if options else None, None
         elif ret in watches:
             return listbox.current() if options else None, watch
         elif ret == 'F12':
             return listbox.current() if options else None, ACTION_SET
         elif ret == 'ESC':
             raise KeyboardInterrupt()
         elif ret == '-' or ret == 'LEFT':
             return listbox.current() if options else None, ACTION_DEC
         elif ret == '+' or ret == 'RIGHT':
             return listbox.current() if options else None, ACTION_INC
         else:
             raise NotImplementedError(
                 "Unexpected return value from form.runOnce: %s" % ret)
Exemple #29
0
 def __init__(self, width, height, text, scroll=0, wrap=0):
     BaseWidget.__init__(self)
     self._widget = snack.Textbox(width, height, text, scroll, wrap)
Exemple #30
0
def PKGTypeSelectWindow(insScreen, pkgTypeList, position=0):

    iPosition = position
    # Create CheckboxTree instance
    (main_width, main_height) = GetHotKeyMainSize(insScreen)
    main_height -= 2

    #print " packages = %s" % len(packages)
    if len(pkgTypeList) > main_height:
        scroll = 1
    else:
        scroll = 0

    hotkey_base_text = "SPACE/ENTER:select/unselect  N:Next  B:Back  I:Info  X:eXit"
    wrapper = textwrap.TextWrapper(width=main_width)
    hotkey_text = wrapper.fill(hotkey_base_text)
    if hotkey_text != hotkey_base_text:
        main_height -= 1
        hotkey_line = 2
    else:
        hotkey_line = 1

    li = snack.Listbox(main_height, scroll=scroll, width=main_width)
    idx = 0
    for x in pkgTypeList:
        if x.status:
            status = "*"
        else:
            status = " "
        str = "%s [%s]" % (x.name, status)

        li.append(str, idx)
        idx += 1
    # Set position
    num_type = len(pkgTypeList)
    if num_type > 1:
        if num_type <= iPosition:
            iPosition = num_typr - 1
        if num_type > (iPosition + main_height / 2):
            before_position = (iPosition + main_height / 2)
        else:
            before_position = num_type - 1
    li.setCurrent(before_position)
    li.setCurrent(iPosition)

    t1 = snack.Textbox(main_width, 1, "-" * main_width)
    t2 = snack.Textbox(main_width, hotkey_line, hotkey_text)

    # Create Grid instance
    title = "Customize special type packages"

    g = snack.GridForm(insScreen, title, 1, 5)

    g.add(t1, 0, 2)
    g.add(t2, 0, 4, (0, 0, 0, -1))
    g.add(li, 0, 0)

    ############# append test key 'S' ####
    myhotkeys = {"ENTER" : "ENTER", \
                 " "     : " ", \
                 "n"     : "n", \
                 "N"     : "n", \
                 "b"     : "b", \
                 "B"     : "b", \
                 "i"     : "i", \
                 "I"     : "i", \
                 "x"     : "x", \
                 "X"     : "x"}

    for x in myhotkeys.keys():
        g.addHotKey(x)


#####################################
    while True:
        result = g.run()
        idx = li.current()
        if myhotkeys.has_key(result):
            if myhotkeys[result] == "ENTER" or \
               myhotkeys[result] == " ":
                curr_type = pkgTypeList[idx]
                if not curr_type.status:
                    curr_type.status = True
                    newsign = "*"
                else:
                    curr_type.status = False
                    newsign = " "
                item = "%s [%s]" % (curr_type.name, newsign)
                li.replace(item, idx)
                idx += 1

                if idx >= num_type:
                    idx = num_type - 1
                li.setCurrent(idx)
            else:
                break
    insScreen.popWindow()
    return (myhotkeys[result], idx, pkgTypeList)