add new parse for hwmd step1 scooter
This commit is contained in:
parent
99f4c71ee1
commit
ca4a995a27
|
@ -1,4 +1,5 @@
|
|||
import json
|
||||
import logging
|
||||
from binascii import Error as asciiError
|
||||
|
||||
from flask import Blueprint
|
||||
|
@ -21,6 +22,8 @@ from ereuse_devicehub.resources.action.views.snapshot import (
|
|||
)
|
||||
from ereuse_devicehub.resources.enums import Severity
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
api = Blueprint('api', __name__, url_prefix='/api')
|
||||
|
||||
|
||||
|
@ -55,7 +58,19 @@ class InventoryView(LoginMixin, SnapshotMixin):
|
|||
if type(snapshot_json) == Response:
|
||||
return snapshot_json
|
||||
|
||||
self.snapshot_json = ParseSnapshotLsHw(snapshot_json).get_snapshot()
|
||||
try:
|
||||
self.snapshot_json = ParseSnapshotLsHw(snapshot_json).get_snapshot()
|
||||
raise 1 == 2
|
||||
except Exception as err:
|
||||
logger.error("Error: {} \n{}\n".format(err, self.snapshot_json))
|
||||
|
||||
self.response = jsonify(
|
||||
{
|
||||
'error': err,
|
||||
}
|
||||
)
|
||||
self.response.status_code = 500
|
||||
return self.response
|
||||
|
||||
snapshot = self.build()
|
||||
snapshot.device.set_hid()
|
||||
|
|
|
@ -18,25 +18,28 @@ logger = logging.getLogger(__name__)
|
|||
class ParseSnapshot:
|
||||
def __init__(self, snapshot, default="n/a"):
|
||||
self.default = default
|
||||
self.dmidecode_raw = snapshot["data"]["dmidecode"]
|
||||
self.smart_raw = snapshot["data"]["smart"]
|
||||
self.hwinfo_raw = snapshot["data"]["hwinfo"]
|
||||
self.dmidecode_raw = snapshot["hwmd"]["dmidecode"]
|
||||
self.smart_raw = snapshot["hwmd"]["smart"]
|
||||
self.hwinfo_raw = snapshot["hwmd"]["hwinfo"]
|
||||
self.lshw_raw = snapshot["hwmd"]["lshw"]
|
||||
self.lscpi_raw = snapshot["hwmd"]["lspci"]
|
||||
self.device = {"actions": []}
|
||||
self.components = []
|
||||
|
||||
self.dmi = DMIParse(self.dmidecode_raw)
|
||||
self.smart = self.loads(self.smart_raw)
|
||||
self.lshw = self.loads(self.lshw_raw)
|
||||
self.hwinfo = self.parse_hwinfo()
|
||||
|
||||
self.set_basic_datas()
|
||||
self.set_components()
|
||||
self.snapshot_json = {
|
||||
"device": self.device,
|
||||
"software": "Workbench",
|
||||
"software": "UsodyOS",
|
||||
"components": self.components,
|
||||
"uuid": snapshot['uuid'],
|
||||
"type": snapshot['type'],
|
||||
"version": "14.0.0",
|
||||
"version": "1.0.0",
|
||||
"endTime": snapshot["timestamp"],
|
||||
"elapsed": 1,
|
||||
"sid": snapshot["sid"],
|
||||
|
@ -46,6 +49,7 @@ class ParseSnapshot:
|
|||
return Snapshot().load(self.snapshot_json)
|
||||
|
||||
def set_basic_datas(self):
|
||||
# import pdb; pdb.set_trace()
|
||||
self.device['manufacturer'] = self.dmi.manufacturer()
|
||||
self.device['model'] = self.dmi.model()
|
||||
self.device['serialNumber'] = self.dmi.serial_number()
|
||||
|
@ -321,10 +325,10 @@ class ParseSnapshotLsHw:
|
|||
self.uuid = snapshot.get("uuid")
|
||||
self.sid = snapshot.get("sid")
|
||||
self.version = str(snapshot.get("version"))
|
||||
self.dmidecode_raw = snapshot["data"]["dmidecode"]
|
||||
self.smart = snapshot["data"]["smart"]
|
||||
self.hwinfo_raw = snapshot["data"]["hwinfo"]
|
||||
self.lshw = snapshot["data"]["lshw"]
|
||||
self.dmidecode_raw = snapshot["hwmd"]["dmidecode"]
|
||||
self.smart = snapshot["hwmd"]["smart"]
|
||||
self.hwinfo_raw = snapshot["hwmd"]["hwinfo"]
|
||||
self.lshw = snapshot["hwmd"]["lshw"]
|
||||
self.device = {"actions": []}
|
||||
self.components = []
|
||||
self.components_obj = []
|
||||
|
|
|
@ -5,13 +5,24 @@ from marshmallow.fields import Dict, List, Nested, String
|
|||
|
||||
from ereuse_devicehub.resources.schemas import Thing
|
||||
|
||||
# from marshmallow_enum import EnumField
|
||||
|
||||
|
||||
class Snapshot_lite_data(MarshmallowSchema):
|
||||
dmidecode = String(required=True)
|
||||
hwinfo = String(required=True)
|
||||
smart = List(Dict(), required=True)
|
||||
hwmd_version = String(required=True)
|
||||
lshw = Dict(required=True)
|
||||
dmidecode = String(required=True)
|
||||
lspci = String(required=True)
|
||||
hwinfo = String(required=True)
|
||||
smart = List(Dict(), required=False)
|
||||
|
||||
|
||||
class Test(MarshmallowSchema):
|
||||
type = String(required=True)
|
||||
|
||||
|
||||
class Sanitize(MarshmallowSchema):
|
||||
type = String(required=True)
|
||||
|
||||
|
||||
class Snapshot_lite(Thing):
|
||||
|
@ -19,11 +30,18 @@ class Snapshot_lite(Thing):
|
|||
version = String(required=True)
|
||||
schema_api = String(required=True)
|
||||
software = String(required=True)
|
||||
# software = EnumField(
|
||||
# SnapshotSoftware,
|
||||
# required=True,
|
||||
# description='The software that generated this Snapshot.',
|
||||
# )
|
||||
sid = String(required=True)
|
||||
type = String(required=True)
|
||||
timestamp = String(required=True)
|
||||
settings_version = String(required=False)
|
||||
data = Nested(Snapshot_lite_data, required=True)
|
||||
hwmd = Nested(Snapshot_lite_data, required=True)
|
||||
tests = Nested(Test, many=True, collection_class=list, required=False)
|
||||
sanitize = Nested(Sanitize, many=True, collection_class=list, required=False)
|
||||
|
||||
@validates_schema
|
||||
def validate_workbench_version(self, data: dict):
|
||||
|
|
|
@ -15,6 +15,7 @@ class SnapshotSoftware(Enum):
|
|||
Web = 'Web'
|
||||
DesktopApp = 'DesktopApp'
|
||||
WorkbenchDesktop = 'WorkbenchDesktop'
|
||||
UsodyOS = 'UsodyOS'
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
Reference in New Issue