pyghmi 1.5.72__tar.gz → 1.5.76__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pyghmi-1.5.72 → pyghmi-1.5.76}/ChangeLog +37 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/PKG-INFO +12 -9
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/command.py +6 -2
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/generic.py +3 -1
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/handler.py +3 -1
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/imm.py +9 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/command.py +225 -146
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/generic.py +274 -85
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/main.py +10 -3
- pyghmi-1.5.76/pyghmi/redfish/oem/lenovo/smm3.py +85 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/xcc.py +1 -0
- pyghmi-1.5.76/pyghmi/redfish/oem/lenovo/xcc3.py +448 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/util/webclient.py +32 -8
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/PKG-INFO +12 -9
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/SOURCES.txt +1 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/entry_points.txt +0 -1
- pyghmi-1.5.76/pyghmi.egg-info/pbr.json +1 -0
- pyghmi-1.5.72/pyghmi/redfish/oem/lenovo/xcc3.py +0 -137
- pyghmi-1.5.72/pyghmi.egg-info/pbr.json +0 -1
- {pyghmi-1.5.72 → pyghmi-1.5.76}/.coveragerc +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/.stestr.conf +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/AUTHORS +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/CONTRIBUTING.rst +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/LICENSE +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/MANIFEST.in +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/README +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/README.md +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/builddeb +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/buildrpm +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/requirements.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/conf.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/contributor/index.rst +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/index.rst +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/install/index.rst +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/reference/index.rst +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/makesetup +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/post.yaml +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/run.yaml +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/py27-constraints.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/fakebmc.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/pyghmicons.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/pyghmiutil.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/virshbmc.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/constants.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/exceptions.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/bmc.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/console.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/events.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/fru.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/config.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/cpu.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/dimm.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/drive.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/energy.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/firmware.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/inventory.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/nextscale.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/pci.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/psu.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/raid_controller.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/raid_drive.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lookup.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/constants.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/localsession.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/serversession.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/session.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/simplesession.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/spd.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/util.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/sdr.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/media.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/dell/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/dell/idrac.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/dell/main.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/tsma.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lookup.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/storage.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/base.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/ipmi/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/ipmi/test_sdr.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/util/__init__.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/util/parse.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/version.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/dependency_links.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/not-zip-safe +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/requires.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/top_level.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/python-pyghmi.spec +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/python-pyghmi.spec.tmpl +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/requirements.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/setup.cfg +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/setup.py +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/setup.py.tmpl +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/test-requirements.txt +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/tox.ini +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/wheezy.patch +0 -0
- {pyghmi-1.5.72 → pyghmi-1.5.76}/zuul.d/project.yaml +0 -0
@@ -1,6 +1,43 @@
|
|
1
1
|
CHANGES
|
2
2
|
=======
|
3
3
|
|
4
|
+
1.5.76
|
5
|
+
------
|
6
|
+
|
7
|
+
* Handle redfish modeling of some IB adapters
|
8
|
+
* Add XCC3 specific health check
|
9
|
+
* General fixup for sensor handling
|
10
|
+
* Suspend use of token for remote media attach
|
11
|
+
|
12
|
+
1.5.75
|
13
|
+
------
|
14
|
+
|
15
|
+
* Add standard NTP handling to redfish
|
16
|
+
* Attempt to get half-working sysurl if broken
|
17
|
+
* Handle inventory for systemless redfish endpoint
|
18
|
+
* Prefer generic sensors and handle system-less
|
19
|
+
* Relocate event log to oem, override for SMMv3
|
20
|
+
* Add reseat for SMMv3
|
21
|
+
* Fix coordinate calculation for XCC3 in new DWC chassis
|
22
|
+
* Implement next gen SMM3 support
|
23
|
+
* Fix redfish reset BMC to defaults
|
24
|
+
* Handle new variants of USB ethernet configuration in XCC3
|
25
|
+
* Add FFDC support for XCC3
|
26
|
+
* Provide update for backup XCC3 bank
|
27
|
+
* Implement normalized bmc settings for XCC3
|
28
|
+
* Ignore exhaust when looking for inlet
|
29
|
+
* Fix omitted comma in replace call
|
30
|
+
* Move normalized CPU and power to OEM
|
31
|
+
* Fix returning too much data when asked only for names
|
32
|
+
* Repair session token implicitly on expiration in OEM
|
33
|
+
* Fix IPMI identify on/off for IMM/XCC systems
|
34
|
+
* Add RDOC support for XCC3
|
35
|
+
* Fix issues with OEM retrieval
|
36
|
+
* Attempt generic height information extraction
|
37
|
+
* Add expanded/emulated expanded redfish support
|
38
|
+
* Negotiate a redfish session, if possible
|
39
|
+
* Add blink support to Lenovo "IPMI" support
|
40
|
+
|
4
41
|
1.5.72
|
5
42
|
------
|
6
43
|
|
@@ -1,18 +1,11 @@
|
|
1
|
-
Metadata-Version:
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: pyghmi
|
3
|
-
Version: 1.5.
|
3
|
+
Version: 1.5.76
|
4
4
|
Summary: Python General Hardware Management Initiative (IPMI and others)
|
5
5
|
Home-page: http://github.com/openstack/pyghmi/
|
6
6
|
Author: Jarrod Johnson
|
7
7
|
Author-email: jjohnson2@lenovo.com
|
8
8
|
License: Apache License, Version 2.0
|
9
|
-
Description: This is a pure python implementation of IPMI protocol.
|
10
|
-
|
11
|
-
pyghmicons and pyghmiutil are example scripts to show how one may incorporate
|
12
|
-
this library into python code
|
13
|
-
|
14
|
-
|
15
|
-
Platform: UNKNOWN
|
16
9
|
Classifier: Intended Audience :: Information Technology
|
17
10
|
Classifier: Intended Audience :: System Administrators
|
18
11
|
Classifier: License :: OSI Approved :: Apache Software License
|
@@ -24,3 +17,13 @@ Classifier: Programming Language :: Python :: 3
|
|
24
17
|
Classifier: Programming Language :: Python :: 3.6
|
25
18
|
Classifier: Programming Language :: Python :: 3.7
|
26
19
|
Classifier: Programming Language :: Python :: 3.8
|
20
|
+
License-File: LICENSE
|
21
|
+
Requires-Dist: cryptography>=2.1
|
22
|
+
Requires-Dist: python-dateutil>=2.8.1
|
23
|
+
Requires-Dist: six>=1.10.0
|
24
|
+
|
25
|
+
This is a pure python implementation of IPMI protocol.
|
26
|
+
|
27
|
+
pyghmicons and pyghmiutil are example scripts to show how one may incorporate
|
28
|
+
this library into python code
|
29
|
+
|
@@ -551,7 +551,7 @@ class Command(object):
|
|
551
551
|
return {'powerstate': self._get_power_state(
|
552
552
|
bridge_request=bridge_request)}
|
553
553
|
|
554
|
-
def set_identify(self, on=True, duration=None):
|
554
|
+
def set_identify(self, on=True, duration=None, blink=False):
|
555
555
|
"""Request identify light
|
556
556
|
|
557
557
|
Request the identify light to turn off, on for a duration,
|
@@ -563,10 +563,14 @@ class Command(object):
|
|
563
563
|
"""
|
564
564
|
self.oem_init()
|
565
565
|
try:
|
566
|
-
self._oem.set_identify(on, duration)
|
566
|
+
self._oem.set_identify(on, duration, blink)
|
567
|
+
return
|
568
|
+
except exc.BypassGenericBehavior:
|
567
569
|
return
|
568
570
|
except exc.UnsupportedFunctionality:
|
569
571
|
pass
|
572
|
+
if blink:
|
573
|
+
raise exc.IpmiException('Blink not supported with generic IPMI')
|
570
574
|
if duration is not None:
|
571
575
|
duration = int(duration)
|
572
576
|
if duration > 255:
|
@@ -104,6 +104,8 @@ class OEMHandler(object):
|
|
104
104
|
if sensor.sensor_type != 'Temperature':
|
105
105
|
continue
|
106
106
|
if sensor.entity == 'External environment':
|
107
|
+
if 'exhaust' in sensor.sensor_name.lower():
|
108
|
+
continue
|
107
109
|
extenv.append(sensor.sensor_name)
|
108
110
|
if sensor.entity == 'Air inlet':
|
109
111
|
airinlets.append(sensor.sensor_name)
|
@@ -377,7 +379,7 @@ class OEMHandler(object):
|
|
377
379
|
def list_media(self):
|
378
380
|
raise exc.UnsupportedFunctionality()
|
379
381
|
|
380
|
-
def set_identify(self, on, duration):
|
382
|
+
def set_identify(self, on, duration, blink):
|
381
383
|
"""Provide an OEM override for set_identify
|
382
384
|
|
383
385
|
Some systems may require an override for set identify.
|
@@ -671,9 +671,11 @@ class OEMHandler(generic.OEMHandler):
|
|
671
671
|
led_status_default)
|
672
672
|
yield (name, {'status': status})
|
673
673
|
|
674
|
-
def set_identify(self, on, duration):
|
674
|
+
def set_identify(self, on, duration, blink):
|
675
675
|
if on and not duration and self.is_sd350:
|
676
676
|
self.ipmicmd.xraw_command(netfn=0x3a, command=6, data=(1, 1))
|
677
|
+
elif self.has_xcc:
|
678
|
+
self.immhandler.set_identify(on, duration, blink)
|
677
679
|
else:
|
678
680
|
raise pygexc.UnsupportedFunctionality()
|
679
681
|
|
@@ -968,6 +968,15 @@ class XCCClient(IMMClient):
|
|
968
968
|
fru['manufacturer'] = memi['memory_manufacturer']
|
969
969
|
break
|
970
970
|
|
971
|
+
def set_identify(self, on, duration, blink):
|
972
|
+
if blink:
|
973
|
+
self.grab_redfish_response_with_status(
|
974
|
+
'/redfish/v1/Systems/1',
|
975
|
+
{'IndicatorLED': 'Blinking'},
|
976
|
+
method='PATCH')
|
977
|
+
raise pygexc.BypassGenericBehavior()
|
978
|
+
raise pygexc.UnsupportedFunctionality()
|
979
|
+
|
971
980
|
def get_description(self):
|
972
981
|
dsc = self.wc.grab_json_response('/DeviceDescription.json')
|
973
982
|
dsc = dsc[0]
|