コード例 #1
0
    def _build_node_waiting(self):
        """ creates a loading screen if nodes do not exist yet """
        text = [
            Padding.line_break(""),
            Text(self.message, align="center"),
            Padding.line_break("")
        ]

        load_box = [
            Color.pending_icon_on(Text("\u2581", align="center")),
            Color.pending_icon_on(Text("\u2582", align="center")),
            Color.pending_icon_on(Text("\u2583", align="center")),
            Color.pending_icon_on(Text("\u2584", align="center")),
            Color.pending_icon_on(Text("\u2585", align="center")),
            Color.pending_icon_on(Text("\u2586", align="center")),
            Color.pending_icon_on(Text("\u2587", align="center")),
            Color.pending_icon_on(Text("\u2588", align="center"))
        ]

        # Add loading boxes
        random.shuffle(load_box)
        loading_boxes = []
        loading_boxes.append(('weight', 1, Text('')))
        for i in load_box:
            loading_boxes.append(
                ('pack', load_box[random.randrange(len(load_box))]))
        loading_boxes.append(('weight', 1, Text('')))
        loading_boxes = Columns(loading_boxes)

        return Filler(Pile(text + [loading_boxes]), valign="middle")
コード例 #2
0
ファイル: gui.py プロジェクト: kavinsivak/openstack-installer
    def _build_node_waiting(self):
        """ creates a loading screen if nodes do not exist yet """
        text = [Padding.line_break(""), Text(self.message, align="center"), Padding.line_break("")]

        load_box = [
            Color.pending_icon_on(Text("\u2581", align="center")),
            Color.pending_icon_on(Text("\u2582", align="center")),
            Color.pending_icon_on(Text("\u2583", align="center")),
            Color.pending_icon_on(Text("\u2584", align="center")),
            Color.pending_icon_on(Text("\u2585", align="center")),
            Color.pending_icon_on(Text("\u2586", align="center")),
            Color.pending_icon_on(Text("\u2587", align="center")),
            Color.pending_icon_on(Text("\u2588", align="center")),
        ]

        # Add loading boxes
        random.shuffle(load_box)
        loading_boxes = []
        loading_boxes.append(("weight", 1, Text("")))
        for i in load_box:
            loading_boxes.append(("pack", load_box[random.randrange(len(load_box))]))
        loading_boxes.append(("weight", 1, Text("")))
        loading_boxes = Columns(loading_boxes)

        return Filler(Pile(text + [loading_boxes]), valign="middle")
コード例 #3
0
    def _build_node_columns(self, unit, charm_class):
        """ builds columns of node status """
        node_cols = []

        status_txt = "{:20}".format("[{}]".format(unit.agent_state))

        # unit.agent_state may be "pending" despite errors elsewhere,
        # so we check for error_info first.
        # if the agent_state is "error", _detect_errors returns that.
        error_info = self._detect_errors(unit, charm_class)

        if error_info:
            status = Color.error_icon(Text("\N{TETRAGRAM FOR FAILURE} "))
            if unit.agent_state != "error":
                status_txt = "{:20}".format("[{} (error)]"
                                            "".format(unit.agent_state))
        elif unit.agent_state == "pending":
            pending_status = [
                Color.pending_icon(Text("\N{CIRCLED BULLET} ")),
                Color.pending_icon(Text("\N{CIRCLED WHITE BULLET} ")),
                Color.pending_icon_on(Text("\N{FISHEYE} "))
            ]
            status = random.choice(pending_status)
        elif unit.agent_state == "installed":
            status = Color.pending_icon(Text("\N{HOURGLASS} "))
        elif unit.agent_state == "started":
            status = Color.success_icon(Text("\u2713 "))
        elif unit.agent_state == "stopped":
            status = Color.error_icon(Text("\N{BLACK FLAG} "))
        elif unit.agent_state == "down":
            status = Color.error_icon(Text("\N{DOWNWARDS BLACK ARROW} "))
        else:
            # NOTE: Should not get here, if we do make sure we account
            # for that error type above.
            status = Color.error_icon(Text(unit.agent_state))
        node_cols.append(('pack', status))
        node_cols.append(('pack', Text(status_txt)))
        if unit.public_address:
            node_cols.append(
                ('pack', Text("{0:<12}".format(unit.public_address))))
        elif error_info:
            node_cols.append(('pack', Text("{:<12}".format("Error"))))
        else:
            node_cols.append(('pack', Text("{:<12}".format("IP Pending"))))

        if error_info:
            infos = [('pack', Text(" | {}".format(error_info)))]
        else:
            hw_text = Text([" | "] + self._get_hardware_info(unit))

            if 'glance-simplestreams-sync' in unit.unit_name:
                status_oneline = get_sync_status().replace("\n", " - ")
                sync_text = Text('   ' + status_oneline)
                infos = [hw_text, sync_text]
            else:
                infos = [hw_text]

        if self.config.getopt('show_logs'):
            log_text = Text([('label', self.get_log_text(unit.unit_name))])
            infos.append(log_text)

        node_cols.append(Pile(infos))

        return Columns(node_cols)
コード例 #4
0
ファイル: gui.py プロジェクト: kavinsivak/openstack-installer
    def _build_node_columns(self, unit, charm_class):
        """ builds columns of node status """
        node_cols = []

        status_txt = "{:20}".format("[{}]".format(unit.agent_state))

        # unit.agent_state may be "pending" despite errors elsewhere,
        # so we check for error_info first.
        # if the agent_state is "error", _detect_errors returns that.
        error_info = self._detect_errors(unit, charm_class)

        if error_info:
            status = Color.error_icon(Text("\N{TETRAGRAM FOR FAILURE} "))
            if unit.agent_state != "error":
                status_txt = "{:20}".format("[{} (error)]" "".format(unit.agent_state))
        elif unit.agent_state == "pending":
            pending_status = [
                Color.pending_icon(Text("\N{CIRCLED BULLET} ")),
                Color.pending_icon(Text("\N{CIRCLED WHITE BULLET} ")),
                Color.pending_icon_on(Text("\N{FISHEYE} ")),
            ]
            status = random.choice(pending_status)
        elif unit.agent_state == "installed":
            status = Color.pending_icon(Text("\N{HOURGLASS} "))
        elif unit.agent_state == "started":
            status = Color.success_icon(Text("\u2713 "))
        elif unit.agent_state == "stopped":
            status = Color.error_icon(Text("\N{BLACK FLAG} "))
        elif unit.agent_state == "down":
            status = Color.error_icon(Text("\N{DOWNWARDS BLACK ARROW} "))
        else:
            # NOTE: Should not get here, if we do make sure we account
            # for that error type above.
            status = Color.error_icon(Text(unit.agent_state))
        node_cols.append(("pack", status))
        node_cols.append(("pack", Text(status_txt)))
        if unit.public_address:
            node_cols.append(("pack", Text("{0:<12}".format(unit.public_address))))
        elif error_info:
            node_cols.append(("pack", Text("{:<12}".format("Error"))))
        else:
            node_cols.append(("pack", Text("{:<12}".format("IP Pending"))))

        if error_info:
            infos = [("pack", Text(" | {}".format(error_info)))]
        else:
            hw_text = Text([" | "] + self._get_hardware_info(unit))

            if "glance-simplestreams-sync" in unit.unit_name:
                status_oneline = get_sync_status().replace("\n", " - ")
                sync_text = Text("   " + status_oneline)
                infos = [hw_text, sync_text]
            else:
                infos = [hw_text]

        if self.config.getopt("show_logs"):
            log_text = Text([("label", self.get_log_text(unit.unit_name))])
            infos.append(log_text)

        node_cols.append(Pile(infos))

        return Columns(node_cols)