pyghmi 1.5.71__tar.gz → 1.5.75__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pyghmi-1.5.71 → pyghmi-1.5.75}/ChangeLog +41 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/PKG-INFO +12 -9
- {pyghmi-1.5.71 → pyghmi-1.5.75}/builddeb +5 -2
- pyghmi-1.5.75/makesetup +14 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/command.py +6 -2
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/generic.py +3 -1
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/handler.py +3 -1
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/imm.py +9 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/command.py +212 -163
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/generic.py +325 -117
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/lenovo/main.py +24 -4
- pyghmi-1.5.75/pyghmi/redfish/oem/lenovo/smm3.py +85 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/lenovo/xcc.py +2 -2
- pyghmi-1.5.75/pyghmi/redfish/oem/lenovo/xcc3.py +395 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/util/webclient.py +32 -8
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/PKG-INFO +12 -9
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/SOURCES.txt +2 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/entry_points.txt +0 -1
- pyghmi-1.5.75/pyghmi.egg-info/pbr.json +1 -0
- pyghmi-1.5.71/makesetup +0 -10
- pyghmi-1.5.71/pyghmi.egg-info/pbr.json +0 -1
- {pyghmi-1.5.71 → pyghmi-1.5.75}/.coveragerc +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/.stestr.conf +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/AUTHORS +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/CONTRIBUTING.rst +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/LICENSE +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/MANIFEST.in +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/README +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/README.md +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/buildrpm +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/doc/requirements.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/doc/source/conf.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/doc/source/contributor/index.rst +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/doc/source/index.rst +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/doc/source/install/index.rst +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/doc/source/reference/index.rst +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/post.yaml +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/run.yaml +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/py27-constraints.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/cmd/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/cmd/fakebmc.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/cmd/pyghmicons.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/cmd/pyghmiutil.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/cmd/virshbmc.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/constants.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/exceptions.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/bmc.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/console.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/events.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/fru.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/config.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/cpu.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/dimm.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/drive.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/energy.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/firmware.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/inventory.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/nextscale.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/pci.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/psu.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/raid_controller.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lenovo/raid_drive.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/oem/lookup.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/constants.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/localsession.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/serversession.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/session.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/simplesession.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/spd.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/private/util.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/ipmi/sdr.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/media.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/dell/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/dell/idrac.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/dell/main.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/lenovo/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/lenovo/tsma.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/redfish/oem/lookup.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/storage.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/tests/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/tests/unit/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/tests/unit/base.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/tests/unit/ipmi/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/tests/unit/ipmi/test_sdr.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/util/__init__.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/util/parse.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi/version.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/dependency_links.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/not-zip-safe +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/requires.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/pyghmi.egg-info/top_level.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/python-pyghmi.spec +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/python-pyghmi.spec.tmpl +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/requirements.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/setup.cfg +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/setup.py +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/setup.py.tmpl +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/test-requirements.txt +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/tox.ini +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/wheezy.patch +0 -0
- {pyghmi-1.5.71 → pyghmi-1.5.75}/zuul.d/project.yaml +0 -0
@@ -1,6 +1,47 @@
|
|
1
1
|
CHANGES
|
2
2
|
=======
|
3
3
|
|
4
|
+
1.5.75
|
5
|
+
------
|
6
|
+
|
7
|
+
* Add standard NTP handling to redfish
|
8
|
+
* Attempt to get half-working sysurl if broken
|
9
|
+
* Handle inventory for systemless redfish endpoint
|
10
|
+
* Prefer generic sensors and handle system-less
|
11
|
+
* Relocate event log to oem, override for SMMv3
|
12
|
+
* Add reseat for SMMv3
|
13
|
+
* Fix coordinate calculation for XCC3 in new DWC chassis
|
14
|
+
* Implement next gen SMM3 support
|
15
|
+
* Fix redfish reset BMC to defaults
|
16
|
+
* Handle new variants of USB ethernet configuration in XCC3
|
17
|
+
* Add FFDC support for XCC3
|
18
|
+
* Provide update for backup XCC3 bank
|
19
|
+
* Implement normalized bmc settings for XCC3
|
20
|
+
* Ignore exhaust when looking for inlet
|
21
|
+
* Fix omitted comma in replace call
|
22
|
+
* Move normalized CPU and power to OEM
|
23
|
+
* Fix returning too much data when asked only for names
|
24
|
+
* Repair session token implicitly on expiration in OEM
|
25
|
+
* Fix IPMI identify on/off for IMM/XCC systems
|
26
|
+
* Add RDOC support for XCC3
|
27
|
+
* Fix issues with OEM retrieval
|
28
|
+
* Attempt generic height information extraction
|
29
|
+
* Add expanded/emulated expanded redfish support
|
30
|
+
* Negotiate a redfish session, if possible
|
31
|
+
* Add blink support to Lenovo "IPMI" support
|
32
|
+
|
33
|
+
1.5.72
|
34
|
+
------
|
35
|
+
|
36
|
+
* Rework get description to enable it to work fer XCC3
|
37
|
+
* Modify build for snap versions
|
38
|
+
* Amend deb package build to avoid extranoeus content
|
39
|
+
* Use approved method to determine XCC vintage
|
40
|
+
* Implement fixup of firmware inventory
|
41
|
+
* Prefer XCC3 detection over XCC2
|
42
|
+
* Fix str concatenation on redfish spec violations
|
43
|
+
* Refactor redfish settings and leverage in XCC3
|
44
|
+
|
4
45
|
1.5.71
|
5
46
|
------
|
6
47
|
|
@@ -1,18 +1,11 @@
|
|
1
|
-
Metadata-Version:
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: pyghmi
|
3
|
-
Version: 1.5.
|
3
|
+
Version: 1.5.75
|
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
|
+
|
@@ -11,7 +11,10 @@ if grep wheezy /etc/os-release; then
|
|
11
11
|
export DSCARGS=""
|
12
12
|
fi
|
13
13
|
# If not PBR, use the setup.py.tmpl
|
14
|
-
|
14
|
+
sed -e 's/~/./' ./makesetup > ./makesetup.deb
|
15
|
+
chmod +x ./makesetup.deb
|
16
|
+
./makesetup.deb
|
17
|
+
#$PYEXEC -c 'import pbr' || ./makesetup
|
15
18
|
VERSION=`$PYEXEC setup.py --version`
|
16
19
|
$PYEXEC setup.py sdist
|
17
20
|
py2dsc $DSCARGS dist/pyghmi-$VERSION.tar.gz
|
@@ -21,4 +24,4 @@ dpkg-buildpackage -rfakeroot -uc -us -i
|
|
21
24
|
cd -
|
22
25
|
rm -rf $(find deb_dist -mindepth 1 -maxdepth 1 -type d)
|
23
26
|
rm $1/*pyghmi*
|
24
|
-
cp deb_dist
|
27
|
+
cp deb_dist/*.deb $1/
|
pyghmi-1.5.75/makesetup
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
cd `dirname $0`
|
3
|
+
VERSION=`git describe|cut -d- -f 1`
|
4
|
+
NUMCOMMITS=`git describe|cut -d- -f 2`
|
5
|
+
if [ "$NUMCOMMITS" != "$VERSION" ]; then
|
6
|
+
LASTNUM=$(echo $VERSION|rev|cut -d . -f 1|rev)
|
7
|
+
LASTNUM=$((LASTNUM+1))
|
8
|
+
FIRSTPART=$(echo $VERSION|rev|cut -d . -f 2- |rev)
|
9
|
+
VERSION=${FIRSTPART}.${LASTNUM}
|
10
|
+
VERSION=$VERSION~dev$NUMCOMMITS+`git describe|cut -d- -f 3`
|
11
|
+
fi
|
12
|
+
echo $VERSION > VERSION
|
13
|
+
sed -e "s/#VERSION#/$VERSION/" setup.py.tmpl > setup.py
|
14
|
+
|
@@ -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]
|