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:
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:
db.session.commit()
if __name__ == '__main__':
main()