def size(self):
        attribute = "%s_size" % self.category.lower()
        size = self._attributes.get(attribute)

        if size:
            size = string_to_type(size)

        return size
Example #2
0
    def size(self):
        attribute = "%s_size" % self.category.lower()
        size = self._attributes.get(attribute)

        if size:
            size = string_to_type(size)

        return size
    def run(self, result):
        attributes = self.getAttributes()
        if not attributes:
            return

        # Default values
        machine = self.machine
        processor = {
            "platform": machine,
            "count": 1,
            "type": machine,
            "model": machine,
            "model_number": "",
            "model_version": "",
            "model_revision": "",
            "cache": -1,
            "bogomips": -1,
            "speed": -1,
            "other": ""
        }

        # Conversion table
        platform_to_conversion = {
            (
                "i386",
                "i486",
                "i586",
                "i686",
                "x86_64",
            ): {
                "type": "vendor_id",
                "model": "model name",
                "model_number": "cpu family",
                "model_version": "model",
                "model_revision": "stepping",
                "cache": "cache size",
                "other": "flags",
                "speed": "cpu MHz"
            },
            (
                "alpha",
                "alphaev6",
            ): {
                "count": "cpus detected",
                "type": "cpu",
                "model": "cpu model",
                "model_number": "cpu variation",
                "model_version": (
                    "system type",
                    "system variation",
                ),
                "model_revision": "cpu revision",
                "other": "platform string",
                "speed": "cycle frequency [Hz]"
            },
            ("armv7l", "aarch64"): {
                "type": "Hardware",
                "model": "Processor",
                "model_number": "CPU variant",
                "model_version": "CPU architecture",
                "model_revision": "CPU revision",
                "other": "Features",
                "bogomips": "BogoMIPS"
            },
            ("ia64", ): {
                "type": "vendor",
                "model": "family",
                "model_version": "archrev",
                "model_revision": "revision",
                "other": "features",
                "speed": "cpu mhz"
            },
            (
                "ppc64",
                "ppc64le",
                "ppc64el",
                "ppc",
            ): {
                "type": "platform",
                "model": "cpu",
                "model_number": "model",
                "model_version": "version",
                "model_revision": "revision",
                "other": "firmware",
                "speed": "clock"
            },
            (
                "sparc64",
                "sparc",
            ): {
                "count": "ncpus probed",
                "type": "type",
                "model": "cpu",
                "model_version": "type",
                "speed": "bogomips"
            }
        }

        for key in processor:
            if attributes.get(key):
                processor[key] = attributes.get(key)

        for platform, conversion in platform_to_conversion.items():
            if machine in platform:
                for pkey, ckey in conversion.items():
                    if isinstance(ckey, (list, tuple)):
                        processor[pkey] = "/".join(
                            [attributes[k] for k in ckey])
                    elif ckey in attributes:
                        processor[pkey] = attributes[ckey]

        # Adjust platform
        if machine[0] == "i" and machine[-2:] == "86":
            processor["platform"] = "i386"
        elif machine[:5] == "alpha":
            processor["platform"] = "alpha"

        # Adjust cache
        if processor["cache"]:
            try:
                processor["cache"] = string_to_type(processor["cache"])
            except TypeError:
                processor["cache"] = int(round(float(processor["cache"])))

        # Adjust speed
        try:
            if machine[:5] == "alpha":
                speed = processor["speed"].split()[0]
                processor["speed"] = int(round(float(speed))) / 1000000
            elif machine[:5] == "sparc":
                speed = processor["speed"]
                processor["speed"] = int(round(float(speed))) / 2
            elif machine[:3] == "ppc":
                # String is appended with "mhz"
                processor["speed"] = processor["speed"][:-3]
        except ValueError:
            processor["speed"] = -1

        # Make sure speed and bogomips are integers
        processor["speed"] = int(round(float(processor["speed"])) - 1)
        processor["bogomips"] = int(round(float(processor["bogomips"])))

        # Adjust other for ppc.  Firmware is empty for VM.
        if machine[:3] == "ppc" and processor["model_number"][13:-1] == \
                "emulated by qemu":
            processor["other"] = processor["model_number"][13:-1]

        # Adjust count
        try:
            processor["count"] = int(processor["count"])
        except ValueError:
            processor["count"] = 1
        else:
            # There is at least one processor
            if processor["count"] == 0:
                processor["count"] = 1

        result.setProcessor(processor)
Example #4
0
    def run(self, result):
        attributes = self.getAttributes()
        if not attributes:
            return

        # Default values
        machine = self.machine
        processor = {
            "platform": machine,
            "count": 1,
            "type": machine,
            "model": machine,
            "model_number": "",
            "model_version": "",
            "model_revision": "",
            "cache": 0,
            "bogomips": 0,
            "speed": -1,
            "other": ""}

        # Conversion table
        platform_to_conversion = {
            ("i386", "i486", "i586", "i686", "x86_64",): {
                "type": "vendor_id",
                "model": "model name",
                "model_number": "cpu family",
                "model_version": "model",
                "model_revision": "stepping",
                "cache": "cache size",
                "other": "flags",
                "speed": "cpu MHz"},
            ("alpha", "alphaev6",): {
                "count": "cpus detected",
                "type": "cpu",
                "model": "cpu model",
                "model_number": "cpu variation",
                "model_version": ("system type", "system variation",),
                "model_revision": "cpu revision",
                "other": "platform string",
                "speed": "cycle frequency [Hz]"},
            ("armv7l",): {
                "type": "Hardware",
                "model": "Processor",
                "model_number": "CPU variant",
                "model_version": "CPU architecture",
                "model_revision": "CPU revision",
                "other": "Features",
                "bogomips": "BogoMIPS"},
            ("ia64",): {
                "type": "vendor",
                "model": "family",
                "model_version": "archrev",
                "model_revision": "revision",
                "other": "features",
                "speed": "cpu mhz"},
            ("ppc64", "ppc",): {
                "type": "platform",
                "model": "cpu",
                "model_version": "revision",
                "speed": "clock"},
            ("sparc64", "sparc",): {
                "count": "ncpus probed",
                "type": "type",
                "model": "cpu",
                "model_version": "type",
                "speed": "bogomips"}}

        for key in processor:
            if attributes.get(key):
                processor[key] = attributes.get(key)

        for platform, conversion in platform_to_conversion.items():
            if machine in platform:
                for pkey, ckey in conversion.items():
                    if isinstance(ckey, (list, tuple)):
                        processor[pkey] = "/".join([attributes[k]
                                                    for k in ckey])
                    elif ckey in attributes:
                        processor[pkey] = attributes[ckey]

        # Adjust platform
        if machine[0] == "i" and machine[-2:] == "86":
            processor["platform"] = "i386"
        elif machine[:5] == "alpha":
            processor["platform"] = "alpha"

        # Adjust cache
        if processor["cache"]:
            processor["cache"] = string_to_type(processor["cache"])

        # Adjust speed
        try:
            if machine[:5] == "alpha":
                speed = processor["speed"].split()[0]
                processor["speed"] = int(round(float(speed))) / 1000000
            elif machine[:5] == "sparc":
                speed = processor["speed"]
                processor["speed"] = int(round(float(speed))) / 2
            elif machine[:3] == "ppc":
                # String is appended with "mhz"
                speed = processor["speed"][:-3]
        except ValueError:
            processor["speed"] = -1

        # Make sure speed and bogomips are integers    
        processor["speed"] = int(round(float(processor["speed"])) - 1)
        processor["bogomips"] = int(round(float(processor["bogomips"])))

        # Adjust count
        try:
            processor["count"] = int(processor["count"])
        except ValueError:
            processor["count"] = 1
        else:
            # There is at least one processor
            if processor["count"] == 0:
                processor["count"] = 1

        result.setProcessor(processor)