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.
Files changed (108) hide show
  1. {pyghmi-1.5.72 → pyghmi-1.5.76}/ChangeLog +37 -0
  2. {pyghmi-1.5.72 → pyghmi-1.5.76}/PKG-INFO +12 -9
  3. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/command.py +6 -2
  4. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/generic.py +3 -1
  5. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/handler.py +3 -1
  6. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/imm.py +9 -0
  7. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/command.py +225 -146
  8. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/generic.py +274 -85
  9. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/main.py +10 -3
  10. pyghmi-1.5.76/pyghmi/redfish/oem/lenovo/smm3.py +85 -0
  11. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/xcc.py +1 -0
  12. pyghmi-1.5.76/pyghmi/redfish/oem/lenovo/xcc3.py +448 -0
  13. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/util/webclient.py +32 -8
  14. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/PKG-INFO +12 -9
  15. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/SOURCES.txt +1 -0
  16. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/entry_points.txt +0 -1
  17. pyghmi-1.5.76/pyghmi.egg-info/pbr.json +1 -0
  18. pyghmi-1.5.72/pyghmi/redfish/oem/lenovo/xcc3.py +0 -137
  19. pyghmi-1.5.72/pyghmi.egg-info/pbr.json +0 -1
  20. {pyghmi-1.5.72 → pyghmi-1.5.76}/.coveragerc +0 -0
  21. {pyghmi-1.5.72 → pyghmi-1.5.76}/.stestr.conf +0 -0
  22. {pyghmi-1.5.72 → pyghmi-1.5.76}/AUTHORS +0 -0
  23. {pyghmi-1.5.72 → pyghmi-1.5.76}/CONTRIBUTING.rst +0 -0
  24. {pyghmi-1.5.72 → pyghmi-1.5.76}/LICENSE +0 -0
  25. {pyghmi-1.5.72 → pyghmi-1.5.76}/MANIFEST.in +0 -0
  26. {pyghmi-1.5.72 → pyghmi-1.5.76}/README +0 -0
  27. {pyghmi-1.5.72 → pyghmi-1.5.76}/README.md +0 -0
  28. {pyghmi-1.5.72 → pyghmi-1.5.76}/builddeb +0 -0
  29. {pyghmi-1.5.72 → pyghmi-1.5.76}/buildrpm +0 -0
  30. {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/requirements.txt +0 -0
  31. {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/conf.py +0 -0
  32. {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/contributor/index.rst +0 -0
  33. {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/index.rst +0 -0
  34. {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/install/index.rst +0 -0
  35. {pyghmi-1.5.72 → pyghmi-1.5.76}/doc/source/reference/index.rst +0 -0
  36. {pyghmi-1.5.72 → pyghmi-1.5.76}/makesetup +0 -0
  37. {pyghmi-1.5.72 → pyghmi-1.5.76}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/post.yaml +0 -0
  38. {pyghmi-1.5.72 → pyghmi-1.5.76}/playbooks/legacy/tempest-devstack-ironic-pxe_ipmitool-pyghmi-src/run.yaml +0 -0
  39. {pyghmi-1.5.72 → pyghmi-1.5.76}/py27-constraints.txt +0 -0
  40. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/__init__.py +0 -0
  41. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/__init__.py +0 -0
  42. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/fakebmc.py +0 -0
  43. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/pyghmicons.py +0 -0
  44. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/pyghmiutil.py +0 -0
  45. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/cmd/virshbmc.py +0 -0
  46. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/constants.py +0 -0
  47. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/exceptions.py +0 -0
  48. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/__init__.py +0 -0
  49. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/bmc.py +0 -0
  50. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/console.py +0 -0
  51. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/events.py +0 -0
  52. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/fru.py +0 -0
  53. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/__init__.py +0 -0
  54. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/__init__.py +0 -0
  55. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/config.py +0 -0
  56. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/cpu.py +0 -0
  57. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/dimm.py +0 -0
  58. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/drive.py +0 -0
  59. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/energy.py +0 -0
  60. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/firmware.py +0 -0
  61. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/inventory.py +0 -0
  62. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/nextscale.py +0 -0
  63. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/pci.py +0 -0
  64. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/psu.py +0 -0
  65. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/raid_controller.py +0 -0
  66. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lenovo/raid_drive.py +0 -0
  67. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/oem/lookup.py +0 -0
  68. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/__init__.py +0 -0
  69. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/constants.py +0 -0
  70. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/localsession.py +0 -0
  71. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/serversession.py +0 -0
  72. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/session.py +0 -0
  73. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/simplesession.py +0 -0
  74. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/spd.py +0 -0
  75. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/private/util.py +0 -0
  76. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/ipmi/sdr.py +0 -0
  77. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/media.py +0 -0
  78. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/__init__.py +0 -0
  79. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/__init__.py +0 -0
  80. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/dell/__init__.py +0 -0
  81. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/dell/idrac.py +0 -0
  82. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/dell/main.py +0 -0
  83. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/__init__.py +0 -0
  84. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lenovo/tsma.py +0 -0
  85. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/redfish/oem/lookup.py +0 -0
  86. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/storage.py +0 -0
  87. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/__init__.py +0 -0
  88. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/__init__.py +0 -0
  89. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/base.py +0 -0
  90. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/ipmi/__init__.py +0 -0
  91. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/tests/unit/ipmi/test_sdr.py +0 -0
  92. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/util/__init__.py +0 -0
  93. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/util/parse.py +0 -0
  94. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi/version.py +0 -0
  95. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/dependency_links.txt +0 -0
  96. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/not-zip-safe +0 -0
  97. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/requires.txt +0 -0
  98. {pyghmi-1.5.72 → pyghmi-1.5.76}/pyghmi.egg-info/top_level.txt +0 -0
  99. {pyghmi-1.5.72 → pyghmi-1.5.76}/python-pyghmi.spec +0 -0
  100. {pyghmi-1.5.72 → pyghmi-1.5.76}/python-pyghmi.spec.tmpl +0 -0
  101. {pyghmi-1.5.72 → pyghmi-1.5.76}/requirements.txt +0 -0
  102. {pyghmi-1.5.72 → pyghmi-1.5.76}/setup.cfg +0 -0
  103. {pyghmi-1.5.72 → pyghmi-1.5.76}/setup.py +0 -0
  104. {pyghmi-1.5.72 → pyghmi-1.5.76}/setup.py.tmpl +0 -0
  105. {pyghmi-1.5.72 → pyghmi-1.5.76}/test-requirements.txt +0 -0
  106. {pyghmi-1.5.72 → pyghmi-1.5.76}/tox.ini +0 -0
  107. {pyghmi-1.5.72 → pyghmi-1.5.76}/wheezy.patch +0 -0
  108. {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.1
1
+ Metadata-Version: 2.1
2
2
  Name: pyghmi
3
- Version: 1.5.72
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]