Exemple #1
0
    def dump(self):
        """Write the repo statistics to stdout."""

        hfmt = "%-21s %-6s %-4s %-4s %-8s %-10s %-5s %-7s %-4s"
        dfmt = "%-21s %-6s %-4s %-4s %-8s %-10s %-5s %-6f %-4s"
        misc.msg(hfmt % ("URL", "Good", "Err", "Conn", "Speed", "Size", "Used",
                         "CSpeed", "Qual"))

        for ds in self.__rsobj.values():

            speedstr = misc.bytes_to_str(ds.transfer_speed,
                                         "%(num).0f %(unit)s/s")

            sizestr = misc.bytes_to_str(ds.bytes_xfr)

            url_tup = urlparse.urlsplit(ds.url)

            res_path = url_tup[1]
            if not res_path:
                # Some schemes don't have a netloc.
                res_path = url_tup[2]

            misc.msg(dfmt %
                     (res_path, ds.success, ds.failures, ds.num_connect,
                      speedstr, sizestr, ds.used, ds.connect_time, ds.quality))
        def dump(self):
                """Write the repo statistics to stdout."""

                hfmt = "%-21s %-6s %-4s %-4s %-8s %-10s %-5s %-7s %-4s"
                dfmt = "%-21s %-6s %-4s %-4s %-8s %-10s %-5s %-6f %-4s"
                misc.msg(hfmt % ("URL", "Good", "Err", "Conn", "Speed", "Size",
                    "Used", "CSpeed", "Qual"))

                for ds in self.__rsobj.values():

                        speedstr = misc.bytes_to_str(ds.transfer_speed,
                            "%(num).0f %(unit)s/s")

                        sizestr = misc.bytes_to_str(ds.bytes_xfr)

                        url_tup = urlparse.urlsplit(ds.url)

                        res_path = url_tup[1]
                        if not res_path:
                                # Some schemes don't have a netloc.
                                res_path = url_tup[2]

                        misc.msg(dfmt % (res_path, ds.success, ds.failures,
                            ds.num_connect, speedstr, sizestr, ds.used,
                            ds.connect_time, ds.quality))
Exemple #3
0
        def dump(self):
                """Write the repo statistics to stdout."""

                hfmt = "{0:41.41} {1:30} {2:6} {3:4} {4:4} {5:8} {6:10} {7:5} {8:7} {9:4}"
                dfmt = "{0:41.41} {1:30} {2:6} {3:4} {4:4} {5:8} {6:10} {7:5} {8:6f} {9:4}"
                misc.msg(hfmt.format("URL", "Proxy", "Good", "Err", "Conn",
                    "Speed", "Size", "Used", "CSpeed", "Qual"))

                for ds in self.__rsobj.values():

                        speedstr = misc.bytes_to_str(ds.transfer_speed,
                            "{num:>.0f} {unit}/s")

                        sizestr = misc.bytes_to_str(ds.bytes_xfr)
                        proxy = self.__get_proxy(ds)
                        misc.msg(dfmt.format(ds.url, proxy, ds.success,
                            ds.failures, ds.num_connect, speedstr, sizestr,
                            ds.used, ds.connect_time, ds.quality))
Exemple #4
0
        def dump(self):
                """Write the repo statistics to stdout."""

                hfmt = "%-41.41s %-30s %-6s %-4s %-4s %-8s %-10s %-5s %-7s %-4s"
                dfmt = "%-41.41s %-30s %-6s %-4s %-4s %-8s %-10s %-5s %-6f %-4s"
                misc.msg(hfmt % ("URL", "Proxy", "Good", "Err", "Conn", "Speed",
                    "Size", "Used", "CSpeed", "Qual"))

                for ds in self.__rsobj.values():

                        speedstr = misc.bytes_to_str(ds.transfer_speed,
                            "%(num).0f %(unit)s/s")

                        sizestr = misc.bytes_to_str(ds.bytes_xfr)
                        proxy = self.__get_proxy(ds)
                        misc.msg(dfmt % (ds.url, proxy, ds.success, ds.failures,
                            ds.num_connect, speedstr, sizestr, ds.used,
                            ds.connect_time, ds.quality))
Exemple #5
0
        def dump(self):
                """Write the repo statistics to stdout."""

                fmt = "%-30s %-8s %-8s %-12s %-4s %-4s"
                print fmt % ("URL", "Good Tx", "Errors", "Speed", "Prio",
                    "Used")

                for ds in self.__rsobj.values():

                        speedstr = misc.bytes_to_str(ds.transfer_speed,
                            "%(num).0f %(unit)s/sec")

                        print fmt % (ds.url, ds.success, ds.failures,
                            speedstr, ds.priority, ds.used)
Exemple #6
0
def set_package_details(pkg_name,
                        local_info,
                        remote_info,
                        textview,
                        installed_icon,
                        not_installed_icon,
                        update_available_icon,
                        is_all_publishers_installed=None,
                        pubs_info=None,
                        renamed_info=None,
                        pkg_renamed=False):
    installed = True
    has_remote = True

    if not local_info:
        # Package is not installed
        local_info = remote_info
        installed = False

    if not remote_info:
        remote_info = local_info
        has_remote = False
        installed = True

    labs = {}
    labs["name"] = _("Name:")
    labs["summ"] = _("Summary:")
    labs["desc"] = _("Description:")
    labs["size"] = _("Size:")
    labs["cat"] = _("Category:")
    labs["ins"] = _("Installed:")
    labs["available"] = _("Version Available:")
    labs["renamed_to"] = _("Renamed To:")
    labs["lat"] = _("Latest Version:")
    labs["repository"] = _("Publisher:")

    summary = _("None")
    if local_info.summary:
        summary = local_info.summary
    description = ""
    if local_info.description:
        description = local_info.description

    obsolete_str = ""
    text = {}
    text["name"] = pkg_name
    text["summ"] = summary
    text["desc"] = description
    renamed_to = ""
    if renamed_info != None and \
            len(renamed_info.dependencies) > 0:
        renamed_pkgs = []
        for dep in renamed_info.dependencies:
            if dep.startswith('pkg:/'):
                dep_strs = dep.split('/', 1)
                dep = dep_strs[1]
            renamed_pkgs.append(dep)
        renamed_to += renamed_pkgs[0] + "\n"
        for dep in renamed_pkgs[1:]:
            renamed_to += "\t" + dep + "\n"
    text["renamed_to"] = renamed_to
    if installed:
        if api.PackageInfo.OBSOLETE in local_info.states:
            obsolete_str = _(" (Obsolete)")
        ver_text = _("%(version)s (Build %(build)s-%(branch)s)")
        text["ins"] = ver_text % \
            {"version": local_info.version,
            "build": local_info.build_release,
            "branch": local_info.branch}
        text["ins"] += obsolete_str
        labs["available"] = _("Latest Version:")
        if not same_pkg_versions(local_info, remote_info):
            text["available"] = ver_text % \
                {"version": remote_info.version,
                "build": remote_info.build_release,
                "branch": remote_info.branch}
        elif has_remote:
            text["available"] = _("Not available from this publisher")
        else:
            text["available"] = "No"
    else:
        if api.PackageInfo.OBSOLETE in remote_info.states:
            obsolete_str = _(" (Obsolete)")
        text["ins"] = _("No")
        text["ins"] += obsolete_str
        labs["available"] = _("Latest Version:")
        text["available"] = _(
            "%(version)s (Build %(build)s-%(branch)s)") % \
            {"version": remote_info.version,
            "build": remote_info.build_release,
            "branch": remote_info.branch}
    if local_info.size != 0:
        text["size"] = misc.bytes_to_str(local_info.size)
    else:
        text["size"] = "0"
    categories = _("None")
    if local_info.category_info_list:
        verbose = len(local_info.category_info_list) > 1
        categories = ""
        categories += local_info.category_info_list[0].__str__(verbose)
        if len(local_info.category_info_list) > 1:
            for ci in local_info.category_info_list[1:]:
                categories += ", " + ci.__str__(verbose)

    text["cat"] = categories
    pub_name = local_info.publisher
    if pubs_info != None:
        try:
            item = pubs_info[local_info.publisher]
        except KeyError:
            item = None
        if item:
            alias = item[1]
            if alias != None and len(alias) > 0:
                pub_name = "%s (%s)" % (alias, local_info.publisher)
    text["repository"] = pub_name
    # pubs_info: dict of publisher disabled status and aliases:
    # pub_info[pub_name][0] = True disabled or False enabled
    # pub_info[pub_name][1] = Alias
    if is_all_publishers_installed and pubs_info != None:
        if local_info.publisher in pubs_info:
            if pubs_info[local_info.publisher][0]:
                text["repository"] = pub_name + \
                _(" (disabled)")
        else:
            text["repository"] = pub_name + _(" (removed)")
    set_package_details_text(labs, text, textview, installed_icon,
                             not_installed_icon, update_available_icon,
                             pkg_renamed)
    return (labs, text)
Exemple #7
0
    def test_info(self):
        """Testing information showed in /info/0."""

        depot_url = self.dc.get_depot_url()
        plist = self.pkgsend_bulk(depot_url, self.info20)

        openurl = urlparse.urljoin(depot_url, "info/0/{0}".format(plist[0]))
        content = urllib2.urlopen(openurl).read()
        # Get text from content.
        lines = content.splitlines()
        info_dic = {}
        attr_list = [
            'Name', 'Summary', 'Publisher', 'Version', 'Build Release',
            'Branch', 'Packaging Date', 'Size', 'Compressed Size', 'FMRI'
        ]

        for line in lines:
            fields = line.split(":", 1)
            attr = fields[0].strip()
            if attr == "License":
                break
            if attr in attr_list:
                if len(fields) == 2:
                    info_dic[attr] = fields[1].strip()
                else:
                    info_dic[attr] = ""

        # Read manifest.
        openurl = urlparse.urljoin(depot_url,
                                   "manifest/0/{0}".format(plist[0]))
        content = urllib2.urlopen(openurl).read()
        manifest = man.Manifest()
        manifest.set_content(content=content)
        fmri_content = manifest.get("pkg.fmri", "")

        # Check if FMRI is empty.
        self.assert_(fmri_content)
        pfmri = fmri.PkgFmri(fmri_content, None)
        pub, name, ver = pfmri.tuple()
        size, csize = manifest.get_size()

        # Human version.
        version = info_dic['Version']
        hum_ver = ""
        if '(' in version:
            start = version.find('(')
            end = version.rfind(')')
            hum_ver = version[start + 1:end - len(version)]
            version = version[:start - len(version)]
            info_dic['Version'] = version.strip()

        # Compare each attribute.
        self.assertEqual(
            info_dic["Summary"],
            manifest.get("pkg.summary", manifest.get("description", "")))
        self.assertEqual(info_dic["Version"], str(ver.release))
        self.assertEqual(hum_ver, manifest.get("pkg.human-version", ""))
        self.assertEqual(info_dic["Name"], name)
        self.assertEqual(info_dic["Publisher"], pub)
        self.assertEqual(info_dic["Build Release"], str(ver.build_release))
        timestamp = datetime.datetime.strptime(info_dic["Packaging Date"],
                                               "%a %b %d %H:%M:%S %Y")
        self.assertEqual(timestamp, ver.get_timestamp())
        self.assertEqual(info_dic["Size"], misc.bytes_to_str(size))
        self.assertEqual(info_dic["Compressed Size"], misc.bytes_to_str(csize))
        self.assertEqual(info_dic["FMRI"], fmri_content)
Exemple #8
0
def set_package_details(pkg_name, local_info, remote_info, textview,
    installed_icon, not_installed_icon, update_available_icon, 
    is_all_publishers_installed=None, pubs_info=None, renamed_info=None,
    pkg_renamed = False):
        installed = True
        has_remote = True 

        if not local_info:
                # Package is not installed
                local_info = remote_info
                installed = False

        if not remote_info:
                remote_info = local_info
                has_remote = False
                installed = True

        labs = {}
        labs["name"] = _("Name:")
        labs["summ"] = _("Summary:")
        labs["desc"] = _("Description:")
        labs["size"] = _("Size:")
        labs["cat"] = _("Category:")
        labs["ins"] = _("Installed:")
        labs["available"] = _("Version Available:")
        labs["renamed_to"] = _("Renamed To:")
        labs["lat"] = _("Latest Version:")
        labs["repository"] = _("Publisher:")

        summary = _("None")
        if local_info.summary:
                summary = local_info.summary
        description = ""
        if local_info.description:
                description = local_info.description

        obsolete_str = ""
        text = {}
        text["name"] = pkg_name
        text["summ"] = summary
        text["desc"] = description
        renamed_to = ""
        if renamed_info != None and \
                len(renamed_info.dependencies) > 0:
                renamed_pkgs = []
                for dep in renamed_info.dependencies:
                        if dep.startswith('pkg:/'):
                                dep_strs = dep.split('/', 1)
                                dep = dep_strs[1]
                        renamed_pkgs.append(dep)
                renamed_to += renamed_pkgs[0] + "\n"
                for dep in renamed_pkgs[1:]:
                        renamed_to += "\t" + dep + "\n"
        text["renamed_to"] = renamed_to
        if installed:
                if api.PackageInfo.OBSOLETE in local_info.states:
                        obsolete_str = _(" (Obsolete)")
                ver_text = _("%(version)s (Build %(build)s-%(branch)s)")
                text["ins"] = ver_text % \
                    {"version": local_info.version,
                    "build": local_info.build_release,
                    "branch": local_info.branch}
                text["ins"] += obsolete_str
                labs["available"] =  _("Latest Version:")
                if not same_pkg_versions(local_info, remote_info):
                        text["available"] = ver_text % \
                            {"version": remote_info.version,
                            "build": remote_info.build_release,
                            "branch": remote_info.branch}
                elif has_remote:
                        text["available"] = _("Not available from this publisher")
                else:
                        text["available"] = "No"
        else:
                if api.PackageInfo.OBSOLETE in remote_info.states:
                        obsolete_str = _(" (Obsolete)")
                text["ins"] = _("No")
                text["ins"] += obsolete_str
                labs["available"] =  _("Latest Version:")
                text["available"] = _(
                    "%(version)s (Build %(build)s-%(branch)s)") % \
                    {"version": remote_info.version,
                    "build": remote_info.build_release,
                    "branch": remote_info.branch}
        if local_info.size != 0:
                text["size"] = misc.bytes_to_str(local_info.size)
        else:
                text["size"] = "0"
        categories = _("None")
        if local_info.category_info_list:
                verbose = len(local_info.category_info_list) > 1
                categories = ""
                categories += local_info.category_info_list[0].__str__(verbose)
                if len(local_info.category_info_list) > 1:
                        for ci in local_info.category_info_list[1:]:
                                categories += ", " + ci.__str__(verbose)

        text["cat"] = categories
        pub_name = local_info.publisher
        if pubs_info != None:
                try:
                        item = pubs_info[local_info.publisher]
                except KeyError:
                        item = None
                if item:
                        alias = item[1]
                        if alias != None and len(alias) > 0:
                                pub_name = "%s (%s)" % (
                                    alias, local_info.publisher)
        text["repository"] = pub_name
        # pubs_info: dict of publisher disabled status and aliases:
        # pub_info[pub_name][0] = True disabled or False enabled
        # pub_info[pub_name][1] = Alias
        if is_all_publishers_installed and pubs_info != None:
                if local_info.publisher in pubs_info:
                        if pubs_info[local_info.publisher][0]:
                                text["repository"] = pub_name + \
                                _(" (disabled)")
                else:
                        text["repository"] = pub_name + _(" (removed)")
        set_package_details_text(labs, text, textview, installed_icon,
                not_installed_icon, update_available_icon, pkg_renamed)
        return (labs, text)