pyghmi 1.5.67__tar.gz → 1.5.69__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pyghmi-1.5.67 → pyghmi-1.5.69}/ChangeLog +13 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/PKG-INFO +1 -1
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/config.py +7 -1
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/handler.py +1 -1
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/nextscale.py +10 -4
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/sdr.py +2 -2
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/generic.py +2 -2
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/xcc.py +11 -1
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/PKG-INFO +1 -1
- pyghmi-1.5.69/pyghmi.egg-info/pbr.json +1 -0
- pyghmi-1.5.67/pyghmi.egg-info/pbr.json +0 -1
- {pyghmi-1.5.67 → pyghmi-1.5.69}/.coveragerc +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/.stestr.conf +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/AUTHORS +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/CONTRIBUTING.rst +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/LICENSE +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/MANIFEST.in +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/README +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/README.md +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/builddeb +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/buildrpm +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/requirements.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/conf.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/contributor/index.rst +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/index.rst +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/install/index.rst +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/reference/index.rst +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/makesetup +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/post.yaml +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/run.yaml +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/py27-constraints.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/fakebmc.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/pyghmicons.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/pyghmiutil.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/virshbmc.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/constants.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/exceptions.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/bmc.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/command.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/console.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/events.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/fru.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/generic.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/cpu.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/dimm.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/drive.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/energy.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/firmware.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/imm.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/inventory.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/pci.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/psu.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/raid_controller.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/raid_drive.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lookup.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/constants.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/localsession.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/serversession.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/session.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/simplesession.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/spd.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/util.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/media.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/command.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/dell/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/dell/idrac.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/dell/main.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/main.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/tsma.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lookup.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/storage.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/base.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/ipmi/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/ipmi/test_sdr.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/util/__init__.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/util/parse.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/util/webclient.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/version.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/SOURCES.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/dependency_links.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/entry_points.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/not-zip-safe +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/requires.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/top_level.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/python-pyghmi.spec +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/python-pyghmi.spec.tmpl +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/requirements.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/setup.cfg +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/setup.py +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/setup.py.tmpl +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/test-requirements.txt +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/tox.ini +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/wheezy.patch +0 -0
- {pyghmi-1.5.67 → pyghmi-1.5.69}/zuul.d/project.yaml +0 -0
@@ -1,6 +1,19 @@
|
|
1
1
|
CHANGES
|
2
2
|
=======
|
3
3
|
|
4
|
+
1.5.69
|
5
|
+
------
|
6
|
+
|
7
|
+
* Handle out of order setting instances
|
8
|
+
|
9
|
+
1.5.68
|
10
|
+
------
|
11
|
+
|
12
|
+
* Fix handling of empty bays during cap manipulation
|
13
|
+
* Fix SMM height
|
14
|
+
* Extent redfish inventory enumeration of XCC
|
15
|
+
* No longer consider unrecognized states as 'warning'
|
16
|
+
|
4
17
|
1.5.67
|
5
18
|
------
|
6
19
|
|
@@ -372,7 +372,13 @@ class LenovoFirmwareConfig(object):
|
|
372
372
|
if not instances:
|
373
373
|
protect = True # not supported yet
|
374
374
|
else:
|
375
|
-
|
375
|
+
instbynum = {}
|
376
|
+
defidx = 1
|
377
|
+
for x in instances:
|
378
|
+
xid = int(x.get('ID', defidx))
|
379
|
+
instbynum[xid] = x
|
380
|
+
defidx += 1
|
381
|
+
current = [instbynum[idx].text for idx in sorted(instbynum)]
|
376
382
|
default = onedata.get('default', None)
|
377
383
|
if default == '':
|
378
384
|
default = None
|
@@ -1191,7 +1191,7 @@ class OEMHandler(generic.OEMHandler):
|
|
1191
1191
|
if self.has_xcc:
|
1192
1192
|
return self.immhandler.get_description()
|
1193
1193
|
if self.is_fpc:
|
1194
|
-
return {'height': self._fpc_variant, 'slot': 0}
|
1194
|
+
return {'height': self._fpc_variant & 0xf, 'slot': 0}
|
1195
1195
|
return super(OEMHandler, self).get_description()
|
1196
1196
|
|
1197
1197
|
def get_extended_bmc_configuration(self):
|
@@ -527,8 +527,11 @@ class SMMClient(object):
|
|
527
527
|
}
|
528
528
|
for baynum in range(numbays):
|
529
529
|
baynum += 1
|
530
|
-
|
531
|
-
|
530
|
+
try:
|
531
|
+
baycapinfo = self.ipmicmd.xraw_command(
|
532
|
+
0x32, 0x9d, data=[baynum])
|
533
|
+
except Exception:
|
534
|
+
continue
|
532
535
|
capmin, capmax, protcap, usercap, thermcap = struct.unpack(
|
533
536
|
'<HHHHH', baycapinfo['data'][retoffset:retoffset + 10])
|
534
537
|
settings['bay{0}_user_cap'.format(baynum)] = {
|
@@ -543,8 +546,11 @@ class SMMClient(object):
|
|
543
546
|
'help': 'Show the current protective cap for the system '
|
544
547
|
'in bay {0}'.format(baynum)
|
545
548
|
}
|
546
|
-
|
547
|
-
|
549
|
+
try:
|
550
|
+
baycapstate = self.ipmicmd.xraw_command(
|
551
|
+
0x32, 0xa0, data=[baynum])
|
552
|
+
except Exception:
|
553
|
+
continue
|
548
554
|
baycapstate = bool(baycapstate['data'][retoffset])
|
549
555
|
settings['bay{0}_user_cap_active'.format(baynum)] = {
|
550
556
|
'value': 'Enable' if baycapstate else 'Disable',
|
@@ -469,11 +469,11 @@ class SDREntry(object):
|
|
469
469
|
health = sensedata['severity']
|
470
470
|
else:
|
471
471
|
desc = "Unknown state %d" % state
|
472
|
-
health = const.Health.
|
472
|
+
health = const.Health.Ok
|
473
473
|
except KeyError:
|
474
474
|
desc = "Unknown state %d for reading type %d/sensor type %d" % (
|
475
475
|
state, self.reading_type, self.sensor_type_number)
|
476
|
-
health = const.Health.
|
476
|
+
health = const.Health.Ok
|
477
477
|
return desc, health
|
478
478
|
|
479
479
|
def decode_sensor_reading(self, ipmicmd, reading):
|
@@ -781,12 +781,12 @@ class OEMHandler(object):
|
|
781
781
|
def update_firmware(self, filename, data=None, progress=None, bank=None):
|
782
782
|
usd = self._do_web_request('/redfish/v1/UpdateService')
|
783
783
|
if usd.get('HttpPushUriTargetsBusy', False):
|
784
|
-
raise
|
784
|
+
raise exc.TemporaryError('Cannot run multtiple updates to '
|
785
785
|
'same target concurrently')
|
786
786
|
try:
|
787
787
|
upurl = usd['HttpPushUri']
|
788
788
|
except KeyError:
|
789
|
-
raise
|
789
|
+
raise exc.UnsupportedFunctionality('Redfish firmware update only supported for implementations with push update support')
|
790
790
|
if 'HttpPushUriTargetsBusy' in usd:
|
791
791
|
self._do_web_request(
|
792
792
|
'/redfish/v1/UpdateService',
|
@@ -1646,6 +1646,11 @@ class OEMHandler(generic.OEMHandler):
|
|
1646
1646
|
yield "System"
|
1647
1647
|
for key in natural_sort(hwmap):
|
1648
1648
|
yield key
|
1649
|
+
for cpuinv in self._get_cpu_inventory():
|
1650
|
+
yield cpuinv[0]
|
1651
|
+
for meminv in self._get_mem_inventory():
|
1652
|
+
yield meminv[0]
|
1653
|
+
|
1649
1654
|
|
1650
1655
|
def get_inventory_of_component(self, compname):
|
1651
1656
|
if compname.lower() == 'system':
|
@@ -1662,7 +1667,12 @@ class OEMHandler(generic.OEMHandler):
|
|
1662
1667
|
try:
|
1663
1668
|
return hwmap[compname]
|
1664
1669
|
except KeyError:
|
1665
|
-
|
1670
|
+
for cpuinv in self._get_cpu_inventory():
|
1671
|
+
if cpuinv[0] == compname:
|
1672
|
+
return cpuinv[1]
|
1673
|
+
for meminv in self._get_mem_inventory():
|
1674
|
+
if meminv[0] == compname:
|
1675
|
+
return meminv[1]
|
1666
1676
|
return None
|
1667
1677
|
|
1668
1678
|
def get_inventory(self, withids=False):
|
@@ -0,0 +1 @@
|
|
1
|
+
{"git_version": "ed94d36", "is_release": true}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"git_version": "da7796b", "is_release": true}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|