save exceptions of components
This commit is contained in:
parent
6ef2d8795d
commit
b836e0a9ae
|
@ -1,3 +1,4 @@
|
||||||
|
import logging
|
||||||
import re
|
import re
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -13,7 +14,11 @@ from ereuse_utils.nested_lookup import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from ereuse_devicehub.parser import base2, unit, utils
|
from ereuse_devicehub.parser import base2, unit, utils
|
||||||
|
from ereuse_devicehub.parser.models import SnapshotErrors
|
||||||
from ereuse_devicehub.parser.utils import Dumpeable
|
from ereuse_devicehub.parser.utils import Dumpeable
|
||||||
|
from ereuse_devicehub.resources.enums import Severity
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Device(Dumpeable):
|
class Device(Dumpeable):
|
||||||
|
@ -417,7 +422,7 @@ class Computer(Device):
|
||||||
self._ram = None
|
self._ram = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def run(cls, lshw, hwinfo_raw):
|
def run(cls, lshw, hwinfo_raw, uuid=None, sid=None):
|
||||||
"""
|
"""
|
||||||
Gets hardware information from the computer and its components,
|
Gets hardware information from the computer and its components,
|
||||||
like serial numbers or model names, and benchmarks them.
|
like serial numbers or model names, and benchmarks them.
|
||||||
|
@ -428,17 +433,35 @@ class Computer(Device):
|
||||||
hwinfo = hwinfo_raw.splitlines()
|
hwinfo = hwinfo_raw.splitlines()
|
||||||
computer = cls(lshw)
|
computer = cls(lshw)
|
||||||
components = []
|
components = []
|
||||||
|
try:
|
||||||
for Component in cls.COMPONENTS:
|
for Component in cls.COMPONENTS:
|
||||||
if Component == Display and computer.type != 'Laptop':
|
if Component == Display and computer.type != 'Laptop':
|
||||||
continue # Only get display info when computer is laptop
|
continue # Only get display info when computer is laptop
|
||||||
components.extend(Component.new(lshw=lshw, hwinfo=hwinfo))
|
components.extend(Component.new(lshw=lshw, hwinfo=hwinfo))
|
||||||
components.append(Motherboard.new(lshw, hwinfo))
|
components.append(Motherboard.new(lshw, hwinfo))
|
||||||
|
|
||||||
computer._ram = sum(
|
computer._ram = sum(
|
||||||
ram.size for ram in components if isinstance(ram, RamModule)
|
ram.size for ram in components if isinstance(ram, RamModule)
|
||||||
)
|
)
|
||||||
|
except Exception as err:
|
||||||
|
# if there are any problem with components, save the problem and continue
|
||||||
|
txt = "Error: Snapshot: {uuid}, sid: {sid}, type_error: {type}, error: {error}".format(
|
||||||
|
uuid=uuid, sid=sid, type=err.__class__, error=err
|
||||||
|
)
|
||||||
|
cls.errors(txt, uuid=uuid, sid=sid)
|
||||||
|
|
||||||
return computer, components
|
return computer, components
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def errors(cls, txt=None, uuid=None, sid=None, severity=Severity.Error):
|
||||||
|
if not txt:
|
||||||
|
return
|
||||||
|
|
||||||
|
logger.error(txt)
|
||||||
|
error = SnapshotErrors(
|
||||||
|
description=txt, snapshot_uuid=uuid, severity=severity, sid=sid
|
||||||
|
)
|
||||||
|
error.save()
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
specs = super().__str__()
|
specs = super().__str__()
|
||||||
return '{} with {} MB of RAM.'.format(specs, self._ram)
|
return '{} with {} MB of RAM.'.format(specs, self._ram)
|
||||||
|
|
Reference in New Issue