diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2016-05-28 18:41:04 -0400 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2016-06-10 18:06:59 -0400 |
commit | 40a360c2a4feef97a8f7041e655b2a42e51e0224 (patch) | |
tree | 75dfea3064d7c3243788c72cb9f30e2ce6241dea /pyinventorymgr | |
parent | a73122191a7aba80f97332687a2e03cfb0336981 (diff) | |
download | talos-skeleton-40a360c2a4feef97a8f7041e655b2a42e51e0224.tar.gz talos-skeleton-40a360c2a4feef97a8f7041e655b2a42e51e0224.zip |
Reorganize directory structure
Moving to directory per-application layout. This facilitates
building single applications which is useful in the Yocto build
environment since different applications satisfy different OpenBMC
build requirements.
A number of issues are also addressed:
- All applications were pulling in libsystemd and the gdbus libs
irrespective of whether or not they were needed.
- gpio.o duplicated in every application - moved to libopenbmc_intf
- Added install target
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'pyinventorymgr')
l--------- | pyinventorymgr/Makefile | 1 | ||||
-rw-r--r-- | pyinventorymgr/inventory_items.py | 98 | ||||
l--------- | pyinventorymgr/setup.cfg | 1 | ||||
-rw-r--r-- | pyinventorymgr/setup.py | 6 |
4 files changed, 106 insertions, 0 deletions
diff --git a/pyinventorymgr/Makefile b/pyinventorymgr/Makefile new file mode 120000 index 0000000..76a90fc --- /dev/null +++ b/pyinventorymgr/Makefile @@ -0,0 +1 @@ +../Makefile.python
\ No newline at end of file diff --git a/pyinventorymgr/inventory_items.py b/pyinventorymgr/inventory_items.py new file mode 100644 index 0000000..5e53293 --- /dev/null +++ b/pyinventorymgr/inventory_items.py @@ -0,0 +1,98 @@ +#!/usr/bin/python -u + +import os +import sys +import gobject +import dbus +import dbus.service +import dbus.mainloop.glib +import cPickle +import json +import obmc.dbuslib.propertycacher as PropertyCacher +from obmc.dbuslib.bindings import get_dbus, DbusProperties, DbusObjectManager + +if (len(sys.argv) < 2): + print "Usage: inventory_items.py [system name]" + exit(1) +System = __import__(sys.argv[1]) + + +INTF_NAME = 'org.openbmc.InventoryItem' +DBUS_NAME = 'org.openbmc.Inventory' +FRUS = System.FRU_INSTANCES + +class Inventory(DbusProperties,DbusObjectManager): + def __init__(self,bus,name): + DbusProperties.__init__(self) + DbusObjectManager.__init__(self) + dbus.service.Object.__init__(self,bus,name) + self.InterfacesAdded(name,self.properties) + + +class InventoryItem(DbusProperties): + def __init__(self,bus,name,data): + DbusProperties.__init__(self) + dbus.service.Object.__init__(self,bus,name) + + self.name = name + + ## this will load properties from cache + if (data.has_key('present') == False): + data['present'] = 'False' + if (data.has_key('fault') == False): + data['fault'] = 'False' + if (data.has_key('version') == False): + data['version'] = '' + + self.SetMultiple(INTF_NAME,data) + + + @dbus.service.method(INTF_NAME, + in_signature='a{sv}', out_signature='') + def update(self,data): + self.SetMultiple(INTF_NAME,data) + PropertyCacher.save(self.name,INTF_NAME,self.properties) + + @dbus.service.method(INTF_NAME, + in_signature='s', out_signature='') + def setPresent(self,present): + self.Set(INTF_NAME,'present',present) + + @dbus.service.method(INTF_NAME, + in_signature='s', out_signature='') + def setFault(self,fault): + self.Set(INTF_NAME,'fault',fault) + + +def getVersion(): + version = "Error" + with open('/etc/os-release', 'r') as f: + for line in f: + p = line.rstrip('\n') + parts = line.rstrip('\n').split('=') + if (parts[0] == "VERSION_ID"): + version = parts[1] + return version + + +if __name__ == '__main__': + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + bus = get_dbus() + mainloop = gobject.MainLoop() + obj_parent = Inventory(bus, '/org/openbmc/inventory') + + for f in FRUS.keys(): + obj_path=f.replace("<inventory_root>",System.INVENTORY_ROOT) + obj = InventoryItem(bus,obj_path,FRUS[f]) + obj_parent.add(obj_path,obj) + + ## TODO: this is a hack to update bmc inventory item with version + ## should be done by flash object + if (FRUS[f]['fru_type'] == "BMC"): + version = getVersion() + obj.update({'version': version}) + + name = dbus.service.BusName(DBUS_NAME,bus) + print "Running Inventory Manager" + mainloop.run() + diff --git a/pyinventorymgr/setup.cfg b/pyinventorymgr/setup.cfg new file mode 120000 index 0000000..29939b5 --- /dev/null +++ b/pyinventorymgr/setup.cfg @@ -0,0 +1 @@ +../setup.cfg
\ No newline at end of file diff --git a/pyinventorymgr/setup.py b/pyinventorymgr/setup.py new file mode 100644 index 0000000..851d961 --- /dev/null +++ b/pyinventorymgr/setup.py @@ -0,0 +1,6 @@ +from distutils.core import setup + +setup(name='pyinventorymgr', + version='1.0', + scripts=['inventory_items.py'], + ) |