Skip to content

Commit

Permalink
add new psu and fan API for platform API 1.0 (#62)
Browse files Browse the repository at this point in the history
1) add new API to psu base class (1.0 APIs) to support PDDF CLI utils
2) Add fan_base class to support PDDF fan CLI utils
  • Loading branch information
FuzailBrcm authored and lguohan committed Dec 6, 2019
1 parent cdaefa2 commit 8f609ad
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 0 deletions.
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
'sonic_platform_base.sonic_sfp',
'sonic_platform_base.sonic_ssd',
'sonic_psu',
'sonic_fan',
'sonic_sfp',
],
classifiers=[
Expand Down
Empty file added sonic_fan/__init__.py
Empty file.
84 changes: 84 additions & 0 deletions sonic_fan/fan_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/usr/bin/env python
#
# fan_base.py
#
# Base class for implementing platform-specific
# FAN control functionality for SONiC
#

try:
import abc
except ImportError as e:
raise ImportError (str(e) + " - required module not found")

class FanBase(object):
__metaclass__ = abc.ABCMeta

def get_num_fans(self):
"""
Retrieves the number of FANs supported on the device
:return: An integer, the number of FANs supported on the device
"""
return 0

def get_status(self, index):
"""
Retrieves the operational status of FAN defined
by index 1-based <index>
:param index: An integer, 1-based index of the PSU of which to query status
:return: Boolean,
- True if FAN is running with some speed
- False if FAN has stopped running
"""
return False

def get_presence(self, index):
"""
Retrieves the presence status of a FAN defined
by 1-based index <index>
:param index: An integer, 1-based index of the FAN of which to query status
:return: Boolean, True if FAN is plugged, False if not
"""
return False

def get_direction(self, index):
"""
Retrieves the airflow direction of a FAN defined
by 1-based index <index>
:param index: An integer, 1-based index of the FAN of which to query status
:return: string, denoting FAN airflow direction
"""
return ""

def get_speed(self, index):
"""
Retrieves the speed of a Front FAN in the tray in revolutions per minute defined
by 1-based index <index>
:param index: An integer, 1-based index of the FAN of which to query speed
:return: integer, denoting front FAN speed
"""
return 0

def get_speed_rear(self, index):
"""
Retrieves the speed of a rear FAN in the tray (applicable only for 2-fan tray)
in revolutions per minute defined by 1-based index <index>
:param index: An integer, 1-based index of the FAN of which to query speed
:return: integer, denoting rear FAN speed
"""
return 0

def set_speed(self, val):
"""
Sets the speed of all the FANs to a value denoted by the duty-cycle percentage val
:param val: An integer, <0-100> denoting FAN duty cycle percentage
:return: Boolean, True if operation is successful, False if not
"""
return False
72 changes: 72 additions & 0 deletions sonic_psu/psu_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,75 @@ def get_psu_presence(self, index):
"""
return False

def get_model(self, idx):
"""
Retrieves the model number/name of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query model number
:return: String, denoting model number/name
"""
return ""

def get_mfr_id(self, idx):
"""
Retrieves the manufacturing id of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query mfr id
:return: String, denoting manufacturing id
"""
return ""

def get_serial(self, idx):
"""
Retrieves the serial number of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query serial number
:return: String, denoting serial number of the PSU unit
"""
return ""

def get_direction(self, idx):
"""
Retrieves the airflow direction of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query airflow direction
:return: String, denoting the airflow direction
"""
return ""

def get_output_voltage(self, idx):
"""
Retrieves the ouput volatage in milli volts of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query o/p volatge
:return: An integer, value of o/p voltage in mV if PSU is good, else zero
"""
return 0

def get_output_current(self, idx):
"""
Retrieves the output current in milli amperes of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query o/p current
:return: An integer, value of o/p current in mA if PSU is good, else zero
"""
return 0

def get_output_power(self, idx):
"""
Retrieves the output power in micro watts of a power supply unit (PSU) defined
by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query o/p power
:return: An integer, value of o/p power in micro Watts if PSU is good, else zero
"""
return 0

def get_fan_speed(self, idx, fan_idx):
"""
Retrieves the speed of fan, in rpm, denoted by 1-based <fan_idx> of a power
supply unit (PSU) defined by 1-based index <idx>
:param idx: An integer, 1-based index of the PSU of which to query fan speed
:param fan_idx: An integer, 1-based index of the PSU-fan of which to query speed
:return: An integer, value of PSU-fan speed in rpm if PSU-fan is good, else zero
"""
return 0

0 comments on commit 8f609ad

Please sign in to comment.