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.
Files changed (105) hide show
  1. {pyghmi-1.5.67 → pyghmi-1.5.69}/ChangeLog +13 -0
  2. {pyghmi-1.5.67 → pyghmi-1.5.69}/PKG-INFO +1 -1
  3. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/config.py +7 -1
  4. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/handler.py +1 -1
  5. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/nextscale.py +10 -4
  6. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/sdr.py +2 -2
  7. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/generic.py +2 -2
  8. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/xcc.py +11 -1
  9. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/PKG-INFO +1 -1
  10. pyghmi-1.5.69/pyghmi.egg-info/pbr.json +1 -0
  11. pyghmi-1.5.67/pyghmi.egg-info/pbr.json +0 -1
  12. {pyghmi-1.5.67 → pyghmi-1.5.69}/.coveragerc +0 -0
  13. {pyghmi-1.5.67 → pyghmi-1.5.69}/.stestr.conf +0 -0
  14. {pyghmi-1.5.67 → pyghmi-1.5.69}/AUTHORS +0 -0
  15. {pyghmi-1.5.67 → pyghmi-1.5.69}/CONTRIBUTING.rst +0 -0
  16. {pyghmi-1.5.67 → pyghmi-1.5.69}/LICENSE +0 -0
  17. {pyghmi-1.5.67 → pyghmi-1.5.69}/MANIFEST.in +0 -0
  18. {pyghmi-1.5.67 → pyghmi-1.5.69}/README +0 -0
  19. {pyghmi-1.5.67 → pyghmi-1.5.69}/README.md +0 -0
  20. {pyghmi-1.5.67 → pyghmi-1.5.69}/builddeb +0 -0
  21. {pyghmi-1.5.67 → pyghmi-1.5.69}/buildrpm +0 -0
  22. {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/requirements.txt +0 -0
  23. {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/conf.py +0 -0
  24. {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/contributor/index.rst +0 -0
  25. {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/index.rst +0 -0
  26. {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/install/index.rst +0 -0
  27. {pyghmi-1.5.67 → pyghmi-1.5.69}/doc/source/reference/index.rst +0 -0
  28. {pyghmi-1.5.67 → pyghmi-1.5.69}/makesetup +0 -0
  29. {pyghmi-1.5.67 → pyghmi-1.5.69}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/post.yaml +0 -0
  30. {pyghmi-1.5.67 → pyghmi-1.5.69}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/run.yaml +0 -0
  31. {pyghmi-1.5.67 → pyghmi-1.5.69}/py27-constraints.txt +0 -0
  32. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/__init__.py +0 -0
  33. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/__init__.py +0 -0
  34. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/fakebmc.py +0 -0
  35. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/pyghmicons.py +0 -0
  36. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/pyghmiutil.py +0 -0
  37. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/cmd/virshbmc.py +0 -0
  38. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/constants.py +0 -0
  39. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/exceptions.py +0 -0
  40. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/__init__.py +0 -0
  41. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/bmc.py +0 -0
  42. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/command.py +0 -0
  43. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/console.py +0 -0
  44. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/events.py +0 -0
  45. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/fru.py +0 -0
  46. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/__init__.py +0 -0
  47. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/generic.py +0 -0
  48. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/__init__.py +0 -0
  49. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/cpu.py +0 -0
  50. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/dimm.py +0 -0
  51. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/drive.py +0 -0
  52. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/energy.py +0 -0
  53. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/firmware.py +0 -0
  54. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/imm.py +0 -0
  55. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/inventory.py +0 -0
  56. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/pci.py +0 -0
  57. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/psu.py +0 -0
  58. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/raid_controller.py +0 -0
  59. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lenovo/raid_drive.py +0 -0
  60. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/oem/lookup.py +0 -0
  61. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/__init__.py +0 -0
  62. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/constants.py +0 -0
  63. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/localsession.py +0 -0
  64. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/serversession.py +0 -0
  65. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/session.py +0 -0
  66. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/simplesession.py +0 -0
  67. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/spd.py +0 -0
  68. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/ipmi/private/util.py +0 -0
  69. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/media.py +0 -0
  70. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/__init__.py +0 -0
  71. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/command.py +0 -0
  72. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/__init__.py +0 -0
  73. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/dell/__init__.py +0 -0
  74. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/dell/idrac.py +0 -0
  75. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/dell/main.py +0 -0
  76. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/__init__.py +0 -0
  77. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/main.py +0 -0
  78. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lenovo/tsma.py +0 -0
  79. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/redfish/oem/lookup.py +0 -0
  80. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/storage.py +0 -0
  81. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/__init__.py +0 -0
  82. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/__init__.py +0 -0
  83. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/base.py +0 -0
  84. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/ipmi/__init__.py +0 -0
  85. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/tests/unit/ipmi/test_sdr.py +0 -0
  86. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/util/__init__.py +0 -0
  87. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/util/parse.py +0 -0
  88. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/util/webclient.py +0 -0
  89. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi/version.py +0 -0
  90. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/SOURCES.txt +0 -0
  91. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/dependency_links.txt +0 -0
  92. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/entry_points.txt +0 -0
  93. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/not-zip-safe +0 -0
  94. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/requires.txt +0 -0
  95. {pyghmi-1.5.67 → pyghmi-1.5.69}/pyghmi.egg-info/top_level.txt +0 -0
  96. {pyghmi-1.5.67 → pyghmi-1.5.69}/python-pyghmi.spec +0 -0
  97. {pyghmi-1.5.67 → pyghmi-1.5.69}/python-pyghmi.spec.tmpl +0 -0
  98. {pyghmi-1.5.67 → pyghmi-1.5.69}/requirements.txt +0 -0
  99. {pyghmi-1.5.67 → pyghmi-1.5.69}/setup.cfg +0 -0
  100. {pyghmi-1.5.67 → pyghmi-1.5.69}/setup.py +0 -0
  101. {pyghmi-1.5.67 → pyghmi-1.5.69}/setup.py.tmpl +0 -0
  102. {pyghmi-1.5.67 → pyghmi-1.5.69}/test-requirements.txt +0 -0
  103. {pyghmi-1.5.67 → pyghmi-1.5.69}/tox.ini +0 -0
  104. {pyghmi-1.5.67 → pyghmi-1.5.69}/wheezy.patch +0 -0
  105. {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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: pyghmi
3
- Version: 1.5.67
3
+ Version: 1.5.69
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
@@ -372,7 +372,13 @@ class LenovoFirmwareConfig(object):
372
372
  if not instances:
373
373
  protect = True # not supported yet
374
374
  else:
375
- current = [x.text for x in instances]
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
- baycapinfo = self.ipmicmd.xraw_command(
531
- 0x32, 0x9d, data=[baynum])
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
- baycapstate = self.ipmicmd.xraw_command(
547
- 0x32, 0xa0, data=[baynum])
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.Warning
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.Warning
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 pygexc.TemporaryError('Cannot run multtiple updates to '
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 pygexc.UnsupportedFunctionality('Redfish firmware update only supported for implementations with push update support')
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):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: pyghmi
3
- Version: 1.5.67
3
+ Version: 1.5.69
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
@@ -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