async def info(self): """ Returns basic system information. """ buildtime = sw_buildtime() if buildtime: buildtime = datetime.fromtimestamp(int(buildtime)), uptime = (await (await Popen( "env -u TZ uptime | awk -F', load averages:' '{ print $1 }'", stdout=subprocess.PIPE, shell=True, )).communicate())[0].decode().strip() serial = await self._system_serial() product = (await(await Popen( ['dmidecode', '-s', 'system-product-name'], stdout=subprocess.PIPE, )).communicate())[0].decode().strip() or None manufacturer = (await(await Popen( ['dmidecode', '-s', 'system-manufacturer'], stdout=subprocess.PIPE, )).communicate())[0].decode().strip() or None return { 'version': self.version(), 'buildtime': buildtime, 'hostname': socket.gethostname(), 'physmem': sysctl.filter('hw.physmem')[0].value, 'model': sysctl.filter('hw.model')[0].value, 'cores': sysctl.filter('hw.ncpu')[0].value, 'loadavg': os.getloadavg(), 'uptime': uptime, 'uptime_seconds': time.clock_gettime(5), # CLOCK_UPTIME = 5 'system_serial': serial, 'system_product': product, 'license': await self.__get_license(), 'boottime': datetime.fromtimestamp( struct.unpack('l', sysctl.filter('kern.boottime')[0].value[:8])[0] ), 'datetime': datetime.utcnow(), 'timezone': (await self.middleware.call('datastore.config', 'system.settings'))['stg_timezone'], 'system_manufacturer': manufacturer, }
async def build_time(self, app): """ Retrieve build time of the system. """ buildtime = sw_buildtime() return datetime.fromtimestamp(int(buildtime)) if buildtime else buildtime