55 lines
1.2 KiB
Python
55 lines
1.2 KiB
Python
import json
|
|
import sys
|
|
|
|
from ereuse_devicehub.db import db
|
|
from ereuse_devicehub.devicehub import Devicehub
|
|
from ereuse_devicehub.resources.action.models import Snapshot
|
|
|
|
|
|
def open_snapshot():
|
|
path = sys.argv[2]
|
|
f = open(path)
|
|
txt = f.read()
|
|
return json.loads(txt)
|
|
|
|
|
|
def get_family(snapshot):
|
|
debug = snapshot.get('debug', {})
|
|
lshw = debug.get('lshw', {})
|
|
return lshw.get('configuration', {}).get('family', '')
|
|
|
|
|
|
def get_device(uuid):
|
|
snapshot = Snapshot.query.filter_by(uuid=uuid).first()
|
|
if snapshot:
|
|
return snapshot.device
|
|
|
|
|
|
def main():
|
|
schema = sys.argv[1]
|
|
app = Devicehub(inventory=schema)
|
|
app.app_context().push()
|
|
snapshot = open_snapshot()
|
|
uuid = snapshot.get('uuid')
|
|
if not uuid:
|
|
return
|
|
family = get_family(snapshot)
|
|
device = get_device(uuid)
|
|
if not device:
|
|
return
|
|
device.family = family
|
|
device.set_hid()
|
|
for c in device.components:
|
|
c.set_hid()
|
|
|
|
if device.binding:
|
|
device.binding.device.family = family
|
|
device.binding.device.set_hid()
|
|
for c in device.binding.device.components:
|
|
c.set_hid()
|
|
db.session.commit()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|