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

Sign up to get free protection for your applications and to get access to all the features.
@@ -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}