[PATCH skeleton v2 3/3] Deprecate Sensors.py

Cyril Bur cyrilbur at gmail.com
Wed May 18 11:33:21 AEST 2016


On Tue, 17 May 2016 20:00:56 -0500
OpenBMC Patches <openbmc-patches at stwcx.xyz> wrote:

> From: Brad Bishop <bradleyb at fuzziesquirrel.com>
> 
> The pyphosphor package provides equivalent function
> so use that and drop the duplicated code.
> 
> Signed-off-by: Brad Bishop <bradleyb at fuzziesquirrel.com>

Love deleting duplicated code!

Reviewed-by: Cyril Bur <cyrilbur at gmail.com>


> ---
>  bin/Sensors.py         | 222 -------------------------------------------------
>  bin/hwmon.py           |   6 +-
>  bin/inventory_items.py |   2 +-
>  bin/sensor_manager2.py |  16 ++--
>  bin/system_manager.py  |   2 +-
>  5 files changed, 13 insertions(+), 235 deletions(-)
>  delete mode 100755 bin/Sensors.py
> 
> diff --git a/bin/Sensors.py b/bin/Sensors.py
> deleted file mode 100755
> index 7c58c97..0000000
> --- a/bin/Sensors.py
> +++ /dev/null
> @@ -1,222 +0,0 @@
> -#!/usr/bin/python -u
> -
> -import sys
> -import subprocess
> -#from gi.repository import GObject
> -import gobject
> -import dbus
> -import dbus.service
> -import dbus.mainloop.glib
> -import os
> -from obmc.dbuslib.bindings import DbusProperties
> -
> -## Abstract class, must subclass
> -class SensorValue(DbusProperties):
> -	IFACE_NAME = 'org.openbmc.SensorValue'
> -	def __init__(self,bus,name):
> -		self.Set(SensorValue.IFACE_NAME,'units',"")
> -		self.Set(SensorValue.IFACE_NAME,'error',False)
> -		
> -	@dbus.service.method(IFACE_NAME,
> -		in_signature='v', out_signature='')
> -	def setValue(self,value):
> -		self.Set(SensorValue.IFACE_NAME,'value',value)
> -
> -	@dbus.service.method(IFACE_NAME,
> -		in_signature='', out_signature='v')
> -	def getValue(self):
> -		return self.Get(SensorValue.IFACE_NAME,'value')
> -
> -class SensorThresholds(DbusProperties):
> -	IFACE_NAME = 'org.openbmc.SensorThresholds'
> -	def __init__(self,bus,name):
> -		self.Set(SensorThresholds.IFACE_NAME,'thresholds_enabled',False)
> -		self.Set(SensorThresholds.IFACE_NAME,'emergency_enabled',False)
> -		self.Set(SensorThresholds.IFACE_NAME,'warning_upper',0)
> -		self.Set(SensorThresholds.IFACE_NAME,'warning_lower',0)
> -		self.Set(SensorThresholds.IFACE_NAME,'critical_upper',0)
> -		self.Set(SensorThresholds.IFACE_NAME,'critical_lower',0)
> -		self.Set(SensorThresholds.IFACE_NAME,'critical_lower',0)
> -		self.Set(SensorThresholds.IFACE_NAME,'threshold_state',"NORMAL")
> -		self.Set(SensorThresholds.IFACE_NAME,'worst_threshold_state',"NORMAL")
> -	
> -	@dbus.service.method(IFACE_NAME,
> -		in_signature='', out_signature='')
> -	def resetThresholdState(self):
> -		self.Set(SensorThresholds.IFACE_NAME,'worst_threshold_state',"NORMAL")
> -
> -	def check_thresholds(self,value):
> -		iface = SensorThresholds.IFACE_NAME
> -		if (self.Get(iface,'thresholds_enabled') == False):
> -			return False
> -		rtn = False
> -		current_state = "NORMAL"
> -		if (value >= self.properties[iface]['critical_upper']):
> -			current_state = "CRITICAL"
> -			rtn = True
> -		elif (value <= self.properties[iface]['critical_lower']):
> -			current_state = "CRITICAL"
> -			rtn = True
> -		elif (value >= self.properties[iface]['warning_upper']):
> -			current_state = "WARNING"
> -			rtn = True
> -		elif (value <= self.properties[iface]['warning_lower']):
> -			current_state = "WARNING"
> -			rtn = True
> -
> -		if (self.Get(iface,'threshold_state') != current_state and
> -		 		current_state == "CRITICAL" and
> -				self.Get(iface,'emergency_enabled') == True):
> -			self.Emergency()
> -
> -		self.Set(iface,'threshold_state',current_state)
> -		worst = self.properties[iface]['worst_threshold_state']
> -		if (current_state == "CRITICAL" or 
> -		   (current_state == "WARNING" and worst != "CRITICAL")):
> -			self.Set(iface,'worst_threshold_state',current_state)
> -
> -		return rtn
> -
> -	@dbus.service.signal(IFACE_NAME,signature='')
> -	def Emergency(self):
> -		pass
> -
> -
> -class VirtualSensor(SensorValue):
> -	def __init__(self,bus,name):
> -		DbusProperties.__init__(self)
> -		SensorValue.__init__(self,bus,name)
> -		dbus.service.Object.__init__(self,bus,name)
> -
> -class HwmonSensor(SensorValue,SensorThresholds):
> -	IFACE_NAME = 'org.openbmc.HwmonSensor'
> -	def __init__(self,bus,name):
> -		DbusProperties.__init__(self)
> -		SensorValue.__init__(self,bus,name)
> -		SensorThresholds.__init__(self,bus,name)
> -		self.Set(HwmonSensor.IFACE_NAME,'scale',1)
> -		self.Set(HwmonSensor.IFACE_NAME,'offset',0)
> -		self.Set(HwmonSensor.IFACE_NAME,'filename','')
> -		self.value_dirty = False
> -
> -		# need to cache value to know if changed
> -		self.value = None
> -		dbus.service.Object.__init__(self,bus,name)
> -
> -	@dbus.service.method(SensorValue.IFACE_NAME,
> -		in_signature='v', out_signature='')
> -	def setValue(self,value):
> -		self.value_dirty = True
> -		SensorValue.setValue(self,value)
> -
> -	## Called by sensor process to update value from polling
> -	## if returns not None, then sensor process will update hwmon value
> -	@dbus.service.method(IFACE_NAME,
> -		in_signature='v', out_signature='(bv)')
> -	def setByPoll(self,value):
> -		scale = self.properties[HwmonSensor.IFACE_NAME]['scale']
> -		offset = self.properties[HwmonSensor.IFACE_NAME]['offset']
> -		if (self.value_dirty == True):
> -			## new value externally set, so just return to hwmon
> -			## process to write value
> -			self.value_dirty = False
> -			val = (self.properties[SensorValue.IFACE_NAME]['value']-offset) * scale
> -			return [True,val]
> -		else:
> -			# Keep the val as integer. scale may be floating point
> -			val = int(value/scale + offset)
> -			if (val != self.value):
> -				SensorValue.setValue(self,val)
> -				self.check_thresholds(val)
> -				self.value = val
> -
> -			return [False,0]
> -		
> -CONTROL_IFACE = 'org.openbmc.Control'
> -class PowerCap(VirtualSensor):
> -	def __init__(self, bus, name):
> -		VirtualSensor.__init__(self, bus, name)
> -		SensorValue.setValue(self, 0)
> -		self.sysfs_attr = "/sys/class/hwmon/hwmon3/user_powercap"
> -	##override setValue method
> -	@dbus.service.method(SensorValue.IFACE_NAME,
> -		in_signature='v', out_signature='')
> -	def setValue(self, value):
> -		try:
> -			cmd_str = "echo "+str(value)+" > "+self.sysfs_attr
> -			ret = subprocess.check_output(cmd_str, shell=True)
> -		except subprocess.CalledProcessError as powerexc:
> -			print "Set PowerCap Error", powerexc.returncode,
> -			powerexc.output
> -			return
> -		print "Set PowerCap: ", value
> -		SensorValue.setValue(self, value)
> -		
> -class BootProgressSensor(VirtualSensor):
> -	def __init__(self,bus,name):
> -		VirtualSensor.__init__(self,bus,name)
> -		self.setValue("Off")
> -		bus.add_signal_receiver(self.SystemStateHandler,signal_name = "GotoSystemState")
> -
> -	def SystemStateHandler(self,state):
> -		if (state == "HOST_POWERED_OFF"):
> -			self.setValue("Off")
> -
> -
> -	##override setValue method
> -	@dbus.service.method(SensorValue.IFACE_NAME,
> -		in_signature='v', out_signature='')
> -	def setValue(self,value):
> -		SensorValue.setValue(self,value)
> -		if (value == "FW Progress, Starting OS"):
> -			self.GotoSystemState("HOST_BOOTED")
> -			
> -	@dbus.service.signal(CONTROL_IFACE,signature='s')
> -	def GotoSystemState(self,state):
> -		pass
> -		
> -class OccStatusSensor(VirtualSensor):
> -	def __init__(self,bus,name, sysfs = None):
> -		## default path. can be override
> -		if sysfs is None:
> -			self.sysfs_attr = "/sys/class/i2c-adapter/i2c-3/3-0050/online"
> -		else:
> -			self.sysfs_attr = sysfs
> -		VirtualSensor.__init__(self,bus,name)
> -		self.setValue("Disabled")
> -		bus.add_signal_receiver(self.SystemStateHandler,signal_name = "GotoSystemState")
> -
> -	def SystemStateHandler(self,state):
> -		if (state == "HOST_POWERED_OFF"):
> -			self.setValue("Disabled")
> -
> -	##override setValue method
> -	@dbus.service.method(SensorValue.IFACE_NAME,
> -		in_signature='v', out_signature='')
> -	def setValue(self,value):
> -		if (value == "Enabled"):
> -			print "Installing OCC device"
> -			os.system("echo 1 > " +  self.sysfs_attr)
> -		else:
> -			print "Deleting OCC device"
> -			os.system("echo 0 > " +  self.sysfs_attr)
> -		SensorValue.setValue(self,value)
> -			
> -	@dbus.service.signal(CONTROL_IFACE,signature='s')
> -	def GotoSystemState(self,state):
> -		pass
> -	
> -class BootCountSensor(VirtualSensor):
> -	def __init__(self,bus,name):
> -		VirtualSensor.__init__(self,bus,name)
> -		self.setValue(2)
> -
> -class OperatingSystemStatusSensor(VirtualSensor):
> -	def __init__(self,bus,name):
> -		VirtualSensor.__init__(self,bus,name)
> -		self.setValue("Off")
> -		bus.add_signal_receiver(self.SystemStateHandler,signal_name = "GotoSystemState")
> -
> -	def SystemStateHandler(self,state):
> -		if (state == "HOST_POWERED_OFF"):
> -			self.setValue("Off")
> diff --git a/bin/hwmon.py b/bin/hwmon.py
> index 7e1858e..0cf570c 100755
> --- a/bin/hwmon.py
> +++ b/bin/hwmon.py
> @@ -10,9 +10,9 @@ import dbus.mainloop.glib
>  import re
>  from obmc.dbuslib.bindings import get_dbus
>  
> -from Sensors import SensorValue as SensorValue
> -from Sensors import HwmonSensor as HwmonSensor
> -from Sensors import SensorThresholds as SensorThresholds
> +from obmc.sensors import SensorValue as SensorValue
> +from obmc.sensors import HwmonSensor as HwmonSensor
> +from obmc.sensors import SensorThresholds as SensorThresholds
>  
>  if (len(sys.argv) < 2):
>  	print "Usage:  sensors_hwmon.py [system name]"
> diff --git a/bin/inventory_items.py b/bin/inventory_items.py
> index 1b0fa39..5e53293 100755
> --- a/bin/inventory_items.py
> +++ b/bin/inventory_items.py
> @@ -8,7 +8,7 @@ import dbus.service
>  import dbus.mainloop.glib
>  import cPickle
>  import json
> -from obmc.dbuslib.propertycacher import PropertyCacher
> +import obmc.dbuslib.propertycacher as PropertyCacher
>  from obmc.dbuslib.bindings import get_dbus, DbusProperties, DbusObjectManager
>  
>  if (len(sys.argv) < 2):
> diff --git a/bin/sensor_manager2.py b/bin/sensor_manager2.py
> index b06b9a5..9ed51f3 100755
> --- a/bin/sensor_manager2.py
> +++ b/bin/sensor_manager2.py
> @@ -6,7 +6,7 @@ import gobject
>  import dbus
>  import dbus.service
>  import dbus.mainloop.glib
> -import Sensors
> +import obmc.sensors
>  from obmc.dbuslib.bindings import DbusProperties, DbusObjectManager, get_dbus
>  
>  DBUS_NAME = 'org.openbmc.Sensors'
> @@ -25,7 +25,7 @@ class SensorManager(DbusProperties,DbusObjectManager):
>  	def register(self,object_name,obj_path):
>  		if (self.objects.has_key(obj_path) == False):
>  			print "Register: "+object_name+" : "+obj_path
> -			sensor = eval('Sensors.'+object_name+'(bus,obj_path)')
> +			sensor = eval('obmc.sensors.Sensors.'+object_name+'(bus,obj_path)')
>  			self.add(obj_path,sensor)
>  
>  	@dbus.service.method(DBUS_NAME,
> @@ -53,29 +53,29 @@ if __name__ == '__main__':
>  	## TODO: this should not be hardcoded
>  
>  	obj_path = OBJ_PATH+"/host/PowerCap"
> -	sensor_obj = Sensors.PowerCap(bus,obj_path)
> +	sensor_obj = obmc.sensors.PowerCap(bus,obj_path)
>  	## hwmon3 is default for master OCC on Barreleye.
>  	## should rewrite sensor_manager to remove hardcode
>  	sensor_obj.sysfs_attr = "/sys/class/hwmon/hwmon3/user_powercap"
>  	root_sensor.add(obj_path,sensor_obj)
>  
>  	obj_path = OBJ_PATH+"/host/BootProgress"
> -	root_sensor.add(obj_path,Sensors.BootProgressSensor(bus,obj_path))
> +	root_sensor.add(obj_path,obmc.sensors.BootProgressSensor(bus,obj_path))
>  
>  	obj_path = OBJ_PATH+"/host/cpu0/OccStatus"
> -	sensor_obj = Sensors.OccStatusSensor(bus,obj_path)
> +	sensor_obj = obmc.sensors.OccStatusSensor(bus,obj_path)
>  	sensor_obj.sysfs_attr = "/sys/class/i2c-adapter/i2c-3/3-0050/online"
>  	root_sensor.add(obj_path,sensor_obj)
>  
>  	obj_path = OBJ_PATH+"/host/cpu1/OccStatus"
> -	sensor_obj = Sensors.OccStatusSensor(bus,obj_path)
> +	sensor_obj = obmc.sensors.OccStatusSensor(bus,obj_path)
>  	sensor_obj.sysfs_attr = "/sys/class/i2c-adapter/i2c-3/3-0051/online"
>  	root_sensor.add(obj_path,sensor_obj)
>  
>  	obj_path = OBJ_PATH+"/host/BootCount"
> -	root_sensor.add(obj_path,Sensors.BootCountSensor(bus,obj_path))
> +	root_sensor.add(obj_path,obmc.sensors.BootCountSensor(bus,obj_path))
>  	obj_path = OBJ_PATH+"/host/OperatingSystemStatus"
> -	root_sensor.add(obj_path,Sensors.OperatingSystemStatusSensor(bus,obj_path))
> +	root_sensor.add(obj_path,obmc.sensors.OperatingSystemStatusSensor(bus,obj_path))
>  
>  	mainloop = gobject.MainLoop()
>  	print "Starting sensor manager"
> diff --git a/bin/system_manager.py b/bin/system_manager.py
> index fdb1bf1..ad22f4a 100755
> --- a/bin/system_manager.py
> +++ b/bin/system_manager.py
> @@ -8,7 +8,7 @@ import dbus.service
>  import dbus.mainloop.glib
>  import os
>  import time
> -from obmc.dbuslib.propertycacher import PropertyCacher
> +import obmc.dbuslib.propertycacher as PropertyCacher
>  from obmc.dbuslib.bindings import DbusProperties, DbusObjectManager, get_dbus
>  import obmc.enums
>  



More information about the openbmc mailing list