1cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Copyright 2013 The Chromium Authors. All rights reserved. 2cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Use of this source code is governed by a BSD-style license that can be 3cef7893435aa41160dd1255c43cb8498279738ccChris Craik# found in the LICENSE file. 4cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.internal.platform import gpu_info 5cef7893435aa41160dd1255c43cb8498279738ccChris Craik 6cef7893435aa41160dd1255c43cb8498279738ccChris Craik 7cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass SystemInfo(object): 8cef7893435aa41160dd1255c43cb8498279738ccChris Craik """Provides low-level system information.""" 9cef7893435aa41160dd1255c43cb8498279738ccChris Craik 10cef7893435aa41160dd1255c43cb8498279738ccChris Craik def __init__(self, model_name, gpu_dict): 11cef7893435aa41160dd1255c43cb8498279738ccChris Craik if (model_name == None) or (gpu_dict == None): 12cef7893435aa41160dd1255c43cb8498279738ccChris Craik raise Exception("Missing model_name or gpu_dict argument") 13cef7893435aa41160dd1255c43cb8498279738ccChris Craik self._model_name = model_name 14cef7893435aa41160dd1255c43cb8498279738ccChris Craik self._gpu = gpu_info.GPUInfo.FromDict(gpu_dict) 15cef7893435aa41160dd1255c43cb8498279738ccChris Craik 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik @classmethod 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik def FromDict(cls, attrs): 18cef7893435aa41160dd1255c43cb8498279738ccChris Craik """Constructs a SystemInfo from a dictionary of attributes. 19cef7893435aa41160dd1255c43cb8498279738ccChris Craik Attributes currently required to be present in the dictionary: 20cef7893435aa41160dd1255c43cb8498279738ccChris Craik 21cef7893435aa41160dd1255c43cb8498279738ccChris Craik model_name (string): a platform-dependent string 22cef7893435aa41160dd1255c43cb8498279738ccChris Craik describing the model of machine, or the empty string if not 23cef7893435aa41160dd1255c43cb8498279738ccChris Craik supported. 24cef7893435aa41160dd1255c43cb8498279738ccChris Craik gpu (object containing GPUInfo's required attributes) 25cef7893435aa41160dd1255c43cb8498279738ccChris Craik """ 26cef7893435aa41160dd1255c43cb8498279738ccChris Craik return cls(attrs["model_name"], attrs["gpu"]) 27cef7893435aa41160dd1255c43cb8498279738ccChris Craik 28cef7893435aa41160dd1255c43cb8498279738ccChris Craik @property 29cef7893435aa41160dd1255c43cb8498279738ccChris Craik def model_name(self): 30cef7893435aa41160dd1255c43cb8498279738ccChris Craik """A string describing the machine model. 31cef7893435aa41160dd1255c43cb8498279738ccChris Craik 32cef7893435aa41160dd1255c43cb8498279738ccChris Craik This is a highly platform-dependent value and not currently 33cef7893435aa41160dd1255c43cb8498279738ccChris Craik specified for any machine type aside from Macs. On Mac OS, this 34cef7893435aa41160dd1255c43cb8498279738ccChris Craik is the model identifier, reformatted slightly; for example, 35cef7893435aa41160dd1255c43cb8498279738ccChris Craik 'MacBookPro 10.1'.""" 36cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self._model_name 37cef7893435aa41160dd1255c43cb8498279738ccChris Craik 38cef7893435aa41160dd1255c43cb8498279738ccChris Craik @property 39cef7893435aa41160dd1255c43cb8498279738ccChris Craik def gpu(self): 40cef7893435aa41160dd1255c43cb8498279738ccChris Craik """A GPUInfo object describing the graphics processor(s) on the system.""" 41cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self._gpu 42