pyghmi 1.5.58__py3-none-any.whl → 1.5.60__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1202,7 +1202,7 @@ class OEMHandler(generic.OEMHandler):
1202
1202
  if self.has_xcc:
1203
1203
  return self.immhandler.get_bmc_configuration()
1204
1204
  if self.is_fpc:
1205
- return self.smmhandler.get_bmc_configuration()
1205
+ return self.smmhandler.get_bmc_configuration(self._fpc_variant)
1206
1206
  if self.has_tsma:
1207
1207
  return self.tsmahandler.get_bmc_configuration()
1208
1208
  return super(OEMHandler, self).get_bmc_configuration()
@@ -1489,12 +1489,23 @@ class XCCClient(IMMClient):
1489
1489
  def _create_array(self, pool):
1490
1490
  params = self._parse_array_spec(pool)
1491
1491
  cid = params['controller'].split(',')[0]
1492
+ cslotno = params['controller'].split(',')[1]
1492
1493
  url = '/api/function/raid_conf?params=raidlink_GetDefaultVolProp'
1493
1494
  args = (url, cid, 0, params['drives'])
1494
1495
  props = self.wc.grab_json_response(','.join([str(x) for x in args]))
1496
+ usesctrlslot = False
1495
1497
  if not props: # newer firmware requires raidlevel too
1496
1498
  args = (url, cid, params['raidlevel'], 0, params['drives'])
1497
1499
  props = self.wc.grab_json_response(','.join([str(x) for x in args]))
1500
+ elif 'return' in props and props['return'] == 22:
1501
+ # Jan 2023 XCC FW - without controller slot number
1502
+ args = (url, cid, params['raidlevel'], 0, params['drives'])
1503
+ props = self.wc.grab_json_response(','.join([str(x) for x in args]))
1504
+ if 'return' in props and props['return'] == 22:
1505
+ usesctrlslot = True
1506
+ # Jan 2023 XCC FW - with controller slot number
1507
+ args = (url, cid, params['raidlevel'], 0, params['drives'], cslotno)
1508
+ props = self.wc.grab_json_response(','.join([str(x) for x in args]))
1498
1509
  props = props['items'][0]
1499
1510
  volumes = pool.volumes
1500
1511
  remainingcap = params['capacity']
@@ -1565,14 +1576,14 @@ class XCCClient(IMMClient):
1565
1576
  parms = {'raidlink_AddNewVolWithNaAsync': arglist}
1566
1577
  rsp = self.wc.grab_json_response(url, parms)
1567
1578
  if rsp['return'] == 14: # newer firmware
1568
- if 'supported_cpwb' in props: # Whitley
1579
+ if 'supported_cpwb' in props and not usesctrlslot: # no ctrl_type
1569
1580
  arglist = '{0},{1},{2},{3},{4},{5},{6},'.format(
1570
1581
  cnum, params['raidlevel'], params['spans'],
1571
1582
  params['perspan'], 0, params['drives'], params['hotspares'])
1572
1583
  arglist += ''.join(vols)
1573
1584
  parms = {'raidlink_AddNewVolWithNaAsync': arglist}
1574
1585
  rsp = self.wc.grab_json_response(url, parms)
1575
- else: # Purley
1586
+ else: # with ctrl_type
1576
1587
  if cid[2] == 2:
1577
1588
  cnum = cid[1]
1578
1589
  arglist = '{0},{1},{2},{3},{4},{5},'.format(
@@ -415,7 +415,7 @@ class SMMClient(object):
415
415
  5: 'Boosted',
416
416
  }
417
417
 
418
- def get_bmc_configuration(self):
418
+ def get_bmc_configuration(self, variant):
419
419
  settings = {}
420
420
  wc = self.wc
421
421
  wc.request(
@@ -453,7 +453,10 @@ class SMMClient(object):
453
453
  powercfg = self.ipmicmd.xraw_command(0x32, 0xa2)
454
454
  powercfg = bytearray(powercfg['data'])
455
455
  if len(powercfg) == 5:
456
- powercfg = powercfg[1:]
456
+ if variant and variant >> 5:
457
+ powercfg = powercfg[-2:]
458
+ else:
459
+ powercfg = powercfg[1:]
457
460
  val = powercfg[0]
458
461
  if val == 2:
459
462
  val = 'N+N'
@@ -700,6 +703,8 @@ class SMMClient(object):
700
703
  if None in powercfg:
701
704
  currcfg = self.ipmicmd.xraw_command(0x32, 0xa2)
702
705
  currcfg = bytearray(currcfg['data'])
706
+ if variant and variant >> 5 and len(currcfg) == 5:
707
+ currcfg = currcfg[-2:]
703
708
  if powercfg[0] is None:
704
709
  powercfg[0] = currcfg[0]
705
710
  if powercfg[1] is None:
@@ -185,9 +185,9 @@ class OEMHandler(object):
185
185
  return {'bootdev': reqbootdev}
186
186
  except Exception:
187
187
  del payload['BootSourceOverrideMode']
188
- thetag = fishclient.sysinfo.get('@odata.etag', None)
188
+ #thetag = fishclient.sysinfo.get('@odata.etag', None)
189
189
  fishclient._do_web_request(fishclient.sysurl, payload, method='PATCH',
190
- etag=thetag)
190
+ etag='*') # thetag)
191
191
  return {'bootdev': reqbootdev}
192
192
 
193
193
  def _get_cache(self, url):
@@ -811,12 +811,23 @@ class OEMHandler(generic.OEMHandler):
811
811
  def _create_array(self, pool):
812
812
  params = self._parse_array_spec(pool)
813
813
  cid = params['controller'].split(',')[0]
814
+ cslotno = params['controller'].split(',')[1]
814
815
  url = '/api/function/raid_conf?params=raidlink_GetDefaultVolProp'
815
816
  args = (url, cid, 0, params['drives'])
816
817
  props = self.wc.grab_json_response(','.join([str(x) for x in args]))
817
- if not props: # newer firmwarerequires raidlevel too
818
+ usesctrlslot = False
819
+ if not props: # newer firmware requires raidlevel too
818
820
  args = (url, cid, params['raidlevel'], 0, params['drives'])
819
821
  props = self.wc.grab_json_response(','.join([str(x) for x in args]))
822
+ elif 'return' in props and props['return'] == 22:
823
+ # Jan 2023 XCC FW - without controller slot number
824
+ args = (url, cid, params['raidlevel'], 0, params['drives'])
825
+ props = self.wc.grab_json_response(','.join([str(x) for x in args]))
826
+ if 'return' in props and props['return'] == 22:
827
+ usesctrlslot = True
828
+ # Jan 2023 XCC FW - with controller slot number
829
+ args = (url, cid, params['raidlevel'], 0, params['drives'], cslotno)
830
+ props = self.wc.grab_json_response(','.join([str(x) for x in args]))
820
831
  props = props['items'][0]
821
832
  volumes = pool.volumes
822
833
  remainingcap = params['capacity']
@@ -888,14 +899,14 @@ class OEMHandler(generic.OEMHandler):
888
899
  parms = {'raidlink_AddNewVolWithNaAsync': arglist}
889
900
  rsp = self.wc.grab_json_response(url, parms)
890
901
  if rsp['return'] == 14: # newer firmware
891
- if 'supported_cpwb' in props: # Whitley
902
+ if 'supported_cpwb' in props and not usesctrlslot: # no ctrl_type
892
903
  arglist = '{0},{1},{2},{3},{4},{5},{6},'.format(
893
904
  cnum, params['raidlevel'], params['spans'],
894
905
  params['perspan'], 0, params['drives'], params['hotspares'])
895
906
  arglist += ''.join(vols)
896
907
  parms = {'raidlink_AddNewVolWithNaAsync': arglist}
897
908
  rsp = self.wc.grab_json_response(url, parms)
898
- else: # Purley
909
+ else: # with ctrl_type
899
910
  if cid[2] == 2:
900
911
  cnum = cid[1]
901
912
  arglist = '{0},{1},{2},{3},{4},{5},'.format(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyghmi
3
- Version: 1.5.58
3
+ Version: 1.5.60
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
@@ -26,10 +26,10 @@ pyghmi/ipmi/oem/lenovo/dimm.py,sha256=L8k1aBgtvxqyubDBNKdDkz80pDE8Sck1eMLcMz1GhF
26
26
  pyghmi/ipmi/oem/lenovo/drive.py,sha256=MmVgaosEwJXcwi1kKYGnY-dbrx4Zp55941qWMvprUMA,2055
27
27
  pyghmi/ipmi/oem/lenovo/energy.py,sha256=1AhpCFBXvlHtDIU8gGYPX6Wd-AjCzSTRxhgusgeXpmE,4980
28
28
  pyghmi/ipmi/oem/lenovo/firmware.py,sha256=KS9uUBjFUzvdMw_e-kpr5sYIvFUaeg0yqyo69T94IVc,3747
29
- pyghmi/ipmi/oem/lenovo/handler.py,sha256=WWU9RWzjZohffPDJqDYDQ_Ly5Iy6-UEwA6-9DKU4D04,56362
30
- pyghmi/ipmi/oem/lenovo/imm.py,sha256=RNGaCxUoA0_D5kpfAQmRD7_KvMaU8F1IF4iG4BYvCjY,108574
29
+ pyghmi/ipmi/oem/lenovo/handler.py,sha256=ALXoa0kLEdgA5_9UmOEuluR-jIHcZHRGNwW3lfWv2ss,56379
30
+ pyghmi/ipmi/oem/lenovo/imm.py,sha256=ZN5S4s8MXF9pb5-fgjIa2XTHfEYmlaF2i8R4OcsgSe0,109294
31
31
  pyghmi/ipmi/oem/lenovo/inventory.py,sha256=FLJJinw-ibdHtf3KmrTzhWXbQrpxq3TSycVf96Hg7cw,5911
32
- pyghmi/ipmi/oem/lenovo/nextscale.py,sha256=qPQlvsNNvb1Id-ZWl5b0ifwqAwSlGRb6IeD30iJzP_g,42810
32
+ pyghmi/ipmi/oem/lenovo/nextscale.py,sha256=c5eX8fCQdvgZ6_f7k3GYxcJMAc2I0Je6d8M3o_tOSJQ,43041
33
33
  pyghmi/ipmi/oem/lenovo/pci.py,sha256=S7p-5Q2qu2YhlffN-LEmIvjfXim6OlfYL7Q6r6VZqJ4,2020
34
34
  pyghmi/ipmi/oem/lenovo/psu.py,sha256=ISgGe7MdLd1Z7MiRcgJ0gyC92m-4CDNmhMs-H0T3GVY,3098
35
35
  pyghmi/ipmi/oem/lenovo/raid_controller.py,sha256=hr9W17FwgpG9B544eebkEH88gOlU6M4gIapZq7WOPsw,2335
@@ -45,7 +45,7 @@ pyghmi/ipmi/private/util.py,sha256=ayYodiSydlrrt0_pQppoRB1T6n-KNOiHZSfAlCMcpG0,3
45
45
  pyghmi/redfish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  pyghmi/redfish/command.py,sha256=Eyrjv19rTITztUlZvUZvYovr9sNE4EmmMOFnAlwxarg,57541
47
47
  pyghmi/redfish/oem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- pyghmi/redfish/oem/generic.py,sha256=Mdvw6NSMMmRglnAAIK3xTroTTQSNAhRMYmK7C9CnlSo,31323
48
+ pyghmi/redfish/oem/generic.py,sha256=V9Jh_H0weFU0KqClTos_monqspV33PJPYFvO4dQ6jIk,31331
49
49
  pyghmi/redfish/oem/lookup.py,sha256=pfJW5xSkUY61OirMeYy0b1SbjBFz6IDfN5ZOYog_Yq4,1530
50
50
  pyghmi/redfish/oem/dell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  pyghmi/redfish/oem/dell/idrac.py,sha256=pNnmqdV1sOP3ABw0xq0wF1QEO2L8onT7Osc_-sDO8EU,2146
@@ -53,7 +53,7 @@ pyghmi/redfish/oem/dell/main.py,sha256=g8773SShUpbYxXB9zVx2pD5z1xP04wB_sXAxcAs6_
53
53
  pyghmi/redfish/oem/lenovo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  pyghmi/redfish/oem/lenovo/main.py,sha256=eaCoePPXAw78BjKj9Ht7cqiXVGlj26Effy5_ybCnVDY,1622
55
55
  pyghmi/redfish/oem/lenovo/tsma.py,sha256=puSj0fO5Dt5VpDoEMVTRY95CP9q18eXcAqq7TDK350E,34633
56
- pyghmi/redfish/oem/lenovo/xcc.py,sha256=09-QI-iTcYWOjiqoCUF_JH8v1vW6vuH4vCienKF21Ik,75508
56
+ pyghmi/redfish/oem/lenovo/xcc.py,sha256=yEfdv91bvbcuulmlCAltQ2WhO8CnH-jfzWgISnTikS0,76229
57
57
  pyghmi/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  pyghmi/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  pyghmi/tests/unit/base.py,sha256=xWImA7zPRgfrEe2xAdRZ6w_dLwExGRBJ5CBybssUQGg,744
@@ -62,11 +62,11 @@ pyghmi/tests/unit/ipmi/test_sdr.py,sha256=vb3iLY0cnHJ2K_m4xgYUjEcbPd_ZYhYx-uBowB
62
62
  pyghmi/util/__init__.py,sha256=GZLBWJiun2Plb_VE9dDSh4_PQMCha3gA7QLUqx3oSYI,25
63
63
  pyghmi/util/parse.py,sha256=6VlyBCEcE8gy8PJWmEDdtCyWATaKwPaTswCdioPCWOE,2120
64
64
  pyghmi/util/webclient.py,sha256=i3ZVQEO68Bq4EqkmN8jysXPGQjTvDzVl2-hZxq4zBWQ,14150
65
- pyghmi-1.5.58.dist-info/AUTHORS,sha256=Y5fQrIX2SnPK6llV0RjxLtWUQk4PCaAnsGHXU74foik,2007
66
- pyghmi-1.5.58.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
67
- pyghmi-1.5.58.dist-info/METADATA,sha256=RVWUhtN--9bAl12euX3hqzrHBTqPyRO_g1gON-2vnd4,1119
68
- pyghmi-1.5.58.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
69
- pyghmi-1.5.58.dist-info/entry_points.txt,sha256=WkbeJkEZzG9MOILxkaEPSEQ109YP9euntH9kcxbysuk,169
70
- pyghmi-1.5.58.dist-info/pbr.json,sha256=vlgsyAtUx3OK0xo4qAz99c8SDczSr5a5OPQ0vjXRuas,46
71
- pyghmi-1.5.58.dist-info/top_level.txt,sha256=aDtt6S9eVu6-tNdaUs4Pz9PbdUd69bziZZMhNvk9Ulc,7
72
- pyghmi-1.5.58.dist-info/RECORD,,
65
+ pyghmi-1.5.60.dist-info/AUTHORS,sha256=Y5fQrIX2SnPK6llV0RjxLtWUQk4PCaAnsGHXU74foik,2007
66
+ pyghmi-1.5.60.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
67
+ pyghmi-1.5.60.dist-info/METADATA,sha256=DOxNUHbD68zv-_6XBJHC5XFGaArAXWBUIkgESALHggs,1119
68
+ pyghmi-1.5.60.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
69
+ pyghmi-1.5.60.dist-info/entry_points.txt,sha256=WkbeJkEZzG9MOILxkaEPSEQ109YP9euntH9kcxbysuk,169
70
+ pyghmi-1.5.60.dist-info/pbr.json,sha256=TWeoCrKqtAI3uE3HiYRdHkejnC6F4JIglclQVsn2d2k,46
71
+ pyghmi-1.5.60.dist-info/top_level.txt,sha256=aDtt6S9eVu6-tNdaUs4Pz9PbdUd69bziZZMhNvk9Ulc,7
72
+ pyghmi-1.5.60.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"git_version": "bcfbd8f", "is_release": true}
@@ -1 +0,0 @@
1
- {"git_version": "14652e8", "is_release": true}