diff options
Diffstat (limited to 'pyipmi/commands/pef.py')
-rw-r--r-- | pyipmi/commands/pef.py | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/pyipmi/commands/pef.py b/pyipmi/commands/pef.py new file mode 100644 index 0000000..6221d1a --- /dev/null +++ b/pyipmi/commands/pef.py @@ -0,0 +1,130 @@ +# Copyright (c) 2012, Calxeda Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Calxeda Inc. nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +# DAMAGE. + + +"""PEF related commands""" + +from .. import Command +from pyipmi.pef import * +from pyipmi.tools.responseparser import ResponseParserMixIn + + +class PEFGetInfoCommand(Command, ResponseParserMixIn): + """Describes the get PEF info IPMI command + + This is "pef info" to ipmitool + """ + name = "Get PEF Capabilities" + result_type = PEFInfoResult + + response_fields = { + 'Version' : {}, + 'PEF table size' : {}, + 'Alert policy table size' : {}, + 'System GUID' : {}, + 'Alert' : {}, + 'Power-off' : {}, + 'Reset' : {}, + 'Power-cycle' : {}, + 'OEM-defined' : {}, + 'Diagnostic-interrupt' : {} + } + + ipmitool_args = ["-v", "pef", "info"] + + +class PEFGetPolicyCommand(Command, ResponseParserMixIn): + """Describes the get PEF policies ipmitool command + + This is "pef policy" to ipmitool + """ + + name = "Get PEF Policy" + result_type = PEFPolicyResult + + response_fields = { + } + + ipmitool_args = ["pef", "policy"] + + +class PEFGetStatusCommand(Command, ResponseParserMixIn): + """Describes the get PEF status ipmitool command + + This is "pef status" to ipmitool + """ + name = "Get PEF Status" + result_type = PEFStatusResult + + response_fields = { + 'Last SEL addition' : {}, + 'Last SEL record ID' : {}, + 'Last S/W processed ID' : {}, + 'Last BMC processed ID' : {}, + 'PEF' : {}, + 'PEF event messages' : {}, + 'PEF startup delay' : {}, + 'Alert startup delay' : {}, + 'Alert' : {}, + 'Power-off' : {}, + 'Reset' : {}, + 'Power-cycle' : {}, + 'OEM-defined' : {}, + 'Diagnostic-interrupt' : {} + } + + ipmitool_args = ["pef", "status"] + + +class PEFListEntriesCommand(Command, ResponseParserMixIn): + """Describes the get PEF list entries ipmitool command + + This is "pef list" to ipmitool + """ + name = "List PEF Entries" + + response_parser = ResponseParserMixIn.parse_colon_record_list + + result_type = PEFListResult + + response_fields = { + 'PEF table entry' : {}, + 'Status' : {} + } + + ipmitool_args = ["-v", "pef", "list"] + + +pef_commands = { + 'pef_get_info' : PEFGetInfoCommand, + 'pef_get_status' : PEFGetStatusCommand, + 'pef_get_policies' : PEFGetPolicyCommand, + 'pef_list_entries' : PEFListEntriesCommand +} |