@@ -201,7 +201,7 @@ def details1(num):
201201 h .add (li , 0 , n + 5 )
202202 bb = CompactButton ('返回' )
203203 h .add (bb , 0 , 14 )
204- rc = h .runOnce (44 ,3 )
204+ rc = h .runOnce (43 ,3 )
205205 if rc == "ESC" or "snack.CompactButton" in str (rc ):
206206 return ADPSelect ()
207207 elif li .current () == 1 :
@@ -279,7 +279,7 @@ def pdinfo(num):
279279 if 'None' in pdforeign [n ]:
280280 li .append (str (i ).strip ('\n ' ).replace ('Slot Number' ,'槽位' ) + "\t 大小: " + str (pdsize [n ]).strip ('\n ' ) + "\t 状态: " + str (pdstate [n ]).strip ('\n ' ).replace (' ' ,'' ), n + 1 )
281281 else :
282- li .append (str (i ).strip ('\n ' ).replace ('Slot Number' ,'<Foreign>槽位' ) + "\t 大小: " + str (pdsize [n ]).strip ('\n ' ) + "\t \ t 状态: " + str (pdstate [n ]).strip ('\n ' ).replace (' ' ,'' ), n + 1 )
282+ li .append (str (i ).strip ('\n ' ).replace ('Slot Number' ,'<Foreign>槽位' ) + "\t 大小: " + str (pdsize [n ]).strip ('\n ' ) + "\t 状态: " + str (pdstate [n ]).strip ('\n ' ).replace (' ' ,'' ), n + 1 )
283283 n = n + 1
284284 g = GridForm (screen , "物理磁盘信息" , 1 , 10 )
285285 g .add (li , 0 , 1 )
@@ -301,7 +301,7 @@ def pdinfo(num):
301301 f .add (li2 , 0 , 1 )
302302 bb2 = CompactButton ('返回' )
303303 f .add (bb2 , 0 , 2 )
304- rf = f .runOnce (44 ,3 )
304+ rf = f .runOnce (43 ,3 )
305305 if rf == 'ESC' or 'snack.CompactButton' in str (rf ) :
306306 return pdinfo (num )
307307 elif li2 .current () == 1 :
@@ -401,11 +401,12 @@ def vdinfo(num):
401401 if int (vdhsp [selectDG ]) != 0 :
402402 li2 .append ("查看" + str (vdshow [selectDG ].replace ('SPANNED DISK GROUP' ,'组合磁盘组' ).replace ('DISK GROUP' ,'普通磁盘组' )).strip ('\n ' ) + " 的热备盘" , 3 )
403403 li2 .append ("指定" + str (vdshow [selectDG ].replace ('SPANNED DISK GROUP' ,'组合磁盘组' ).replace ('DISK GROUP' ,'普通磁盘组' )).strip ('\n ' ) + " 为BOOT磁盘组" , 4 )
404+ li2 .append ("设定" + str (vdshow [selectDG ].replace ('SPANNED DISK GROUP' ,'组合磁盘组' ).replace ('DISK GROUP' ,'普通磁盘组' )).strip ('\n ' ) + " 的缓存策略" , 5 )
404405 f = GridForm (screen , "请选择" , 1 , 10 )
405406 f .add (li2 , 0 , 1 )
406407 bb2 = CompactButton ('返回' )
407408 f .add (bb2 , 0 , 2 )
408- rf = f .runOnce (44 ,3 )
409+ rf = f .runOnce (43 ,3 )
409410 if rf == 'ESC' or 'snack.CompactButton' in str (rf ) :
410411 return vdinfo (num )
411412 elif li2 .current () == 1 :
@@ -460,7 +461,7 @@ def vdinfo(num):
460461 bb = CompactButton ('返回' )
461462 h .add (Textbox (55 , 15 , gethsp , scroll = 1 , wrap = 1 ), 0 , 1 )
462463 h .add (bb , 0 , 2 )
463- rq = h .runOnce (44 ,3 )
464+ rq = h .runOnce (43 ,3 )
464465 return vdinfo (num )
465466 elif li2 .current () == 4 :
466467 setbootdrv = os .popen (megacli + " -adpbootdrive -set -l" + str (selectDG ) + " -a" + num + " -nolog" ).read ()
@@ -469,6 +470,42 @@ def vdinfo(num):
469470 return vdinfo (num )
470471 warwindows (screen , "警告" , "BOOT磁盘组设置失败" )
471472 return vdinfo (num )
473+ elif li2 .current () == 5 :
474+ currentcachepolicy = os .popen (megacli + " -ldinfo -l" + str (selectDG ) + " -a" + num + " -nolog | egrep 'Current Cache Policy|Disk Cache Policy'" ).read ()
475+ CachePolicyRB = RadioBar (screen , (("强制打开" , " -ForcedWB" , 0 ), ("打开" , " -wb" , 0 ), ("关闭" , " -wt" , 1 )))
476+ RAPolicyRB = RadioBar (screen , (("打开" , " -ra" , 1 ), ("关闭" , " -nora" , 0 ), ("自适应" , " -adra" , 0 )))
477+ DiskCachePolicyRB = RadioBar (screen , (("关闭" , " -DisDskCache" , 1 ), ("打开" , " -EnDskCache" , 0 )))
478+ bb = ButtonBar (screen , (("确定" , "ok" ), ("取消" , "cancel" )))
479+ g = GridForm (screen , str (vdshow [selectDG ].replace ('SPANNED DISK GROUP' ,'组合磁盘组' ).replace ('DISK GROUP' ,'普通磁盘组' )).strip ('\n ' ) + " 缓存策略" , 4 , 10 )
480+ g .add (Textbox (40 , 5 , "当前缓存状态:\n " + currentcachepolicy , wrap = 1 ), 3 , 6 )
481+ g .add (TextboxReflowed (10 , "RAID卡缓存" , flexDown = 5 , flexUp = 10 , maxHeight = - 1 ), 1 , 2 )
482+ g .add (CachePolicyRB , 1 , 3 )
483+ g .add (TextboxReflowed (10 , "预读选项" , flexDown = 5 , flexUp = 10 , maxHeight = - 1 ), 1 , 4 )
484+ g .add (RAPolicyRB , 1 , 5 )
485+ g .add (TextboxReflowed (10 , "磁盘缓存策略" , flexDown = 5 , flexUp = 10 , maxHeight = - 1 ), 2 , 2 )
486+ g .add (DiskCachePolicyRB , 2 , 3 )
487+ g .add (bb , 3 , 7 )
488+ rc = g .runOnce (25 ,3 )
489+ if rc == 'ESC' or bb .buttonPressed (rc ) == 'cancel' :
490+ return details1 (num )
491+ CachePolicy = str (CachePolicyRB .getSelection ()).strip ('\n ' )
492+ RAPolicy = str (RAPolicyRB .getSelection ()).strip ('\n ' )
493+ DiskCachePolicy = str (DiskCachePolicyRB .getSelection ()).strip ('\n ' )
494+ k = []
495+ if CachePolicy == ' -wb' :
496+ k .append (megacli + " -LDSetProp -NoCachedBadBBU -l" + str (selectDG ) + " -a" + num + " -nolog" )
497+ k .append (megacli + " -LDSetProp" + CachePolicy + " -l" + str (selectDG ) + " -a" + num + " -nolog" )
498+ k .append (megacli + " -LDSetProp" + RAPolicy + " -l" + str (selectDG ) + " -a" + num + " -nolog" )
499+ k .append (megacli + " -LDSetProp -Direct -l" + str (selectDG ) + " -a" + num + " -nolog" )
500+ k .append (megacli + " -LDSetProp" + DiskCachePolicy + " -l" + str (selectDG ) + " -a" + num + " -nolog" )
501+ for i in k :
502+ success = os .popen (i ).read ()
503+ if "success" not in success :
504+ warwindows (screen , "警告" , "设置失败" )
505+ break
506+ return vdinfo (num )
507+ warwindows (screen , "完成" , "已重新设置磁盘策略" )
508+ return vdinfo (num )
472509 else :
473510 warwindows (screen , "警告" , "还未创建磁盘组" )
474511 return details1 (num )
@@ -502,7 +539,7 @@ def CommandList(num):
502539 g = GridForm (screen , "命令清单" , 1 , 10 )
503540 g .add (li , 0 , 1 )
504541 g .add (bb , 0 , 2 )
505- rc = g .runOnce (44 , 3 )
542+ rc = g .runOnce (43 , 3 )
506543 if rc == 'ESC' or 'snack.CompactButton' in str (rc ) :
507544 return ADPSelect ()
508545 elif li .current () == 1 :
@@ -534,12 +571,13 @@ def AddSDG(num):
534571 li .append ("\t Raid-10" , 1 )
535572 li .append ("\t Raid-50" , 2 )
536573 li .append ("\t Raid-60" , 3 )
537- li .append ("\t 返回" , 4 )
538574 g = GridForm (screen , "选择RAID级别" , 1 , 10 )
575+ bb = CompactButton ('返回' )
539576 g .add (li , 0 , 1 )
540- rc = g .runOnce (44 ,3 )
577+ g .add (bb , 0 , 2 )
578+ rc = g .runOnce (43 ,3 )
541579 SelectRaidLevel = li .current ()
542- if li . current () == 4 or rc == 'ESC' :
580+ if 'snack.CompactButton' in str ( rc ) or rc == 'ESC' :
543581 return CommandList (num )
544582 if li .current () == 1 :
545583 if diskcount < 4 :
@@ -609,7 +647,7 @@ def AddSDGR10(num):
609647 g .add (ct , 0 , 2 )
610648 g .add (Label (" " ), 1 , 2 )
611649 g .add (bb , 0 , 3 , growx = 1 )
612- rc = g .runOnce (44 ,3 )
650+ rc = g .runOnce (43 ,3 )
613651 else :
614652 warwindows (screen , "警告" , "剩余磁盘不足" )
615653 return CommandList (num )
@@ -755,6 +793,8 @@ def AddSDGR10(num):
755793 g .add (CachePolicyRB , 1 , 4 )
756794 g .add (bb , 3 , 2 , growx = 1 )
757795 rc = g .runOnce (25 ,3 )
796+ if rc == 'ESC' or str (bb .buttonPressed (rc )) == "cancel" :
797+ return AddSDG (num )
758798 arraygroup = ''
759799 for i in j :
760800 arraygroup = arraygroup + str (i ).strip ('\n ' )
@@ -990,6 +1030,8 @@ def AddSDGR50(num):
9901030 g .add (CachePolicyRB , 1 , 4 )
9911031 g .add (bb , 3 , 2 , growx = 1 )
9921032 rc = g .runOnce (25 ,3 )
1033+ if rc == 'ESC' or str (bb .buttonPressed (rc )) == "cancel" :
1034+ return AddSDG (num )
9931035 arraygroup = ''
9941036 for i in j :
9951037 arraygroup = arraygroup + str (i ).strip ('\n ' )
@@ -1225,6 +1267,8 @@ def AddSDGR60(num):
12251267 g .add (CachePolicyRB , 1 , 4 )
12261268 g .add (bb , 3 , 2 , growx = 1 )
12271269 rc = g .runOnce (25 ,3 )
1270+ if rc == 'ESC' or str (bb .buttonPressed (rc )) == "cancel" :
1271+ return AddSDG (num )
12281272 arraygroup = ''
12291273 for i in j :
12301274 arraygroup = arraygroup + str (i ).strip ('\n ' )
@@ -1486,7 +1530,7 @@ def ADPSelect():
14861530 li .setCurrent (adpl )
14871531 h .add (li , 0 , 1 )
14881532 h .add (bb , 0 , 9 )
1489- rc = h .run (25 ,3 )
1533+ rc = h .run (24 ,3 )
14901534 if "snack.CompactButton" in str (rc ) or rc == 'ESC' :
14911535 return mainform ()
14921536 else :
@@ -1513,7 +1557,7 @@ def QCCMDList(num):
15131557 g = GridForm (screen , "命令清单" , 1 , 10 )
15141558 g .add (li , 0 , 1 )
15151559 g .add (bb , 0 , 2 )
1516- rc = g .runOnce (44 , 3 )
1560+ rc = g .runOnce (43 , 3 )
15171561 if rc == 'ESC' or "snack.CompactButton" in str (rc ):
15181562 return ADPSelect ()
15191563 elif li .current () == 1 :
@@ -1661,7 +1705,7 @@ def mainform():
16611705 g .add (Label (" " ),0 ,3 )
16621706 g .add (Label ("[LSI RAID卡]" ),0 ,4 )
16631707 g .add (Label ("[配置程序]" ),0 ,5 )
1664- screen .pushHelpLine ("<Version 0.91 beta> Powered by Patrick Zheng...请使用TAB在选项间切换" )
1708+ screen .pushHelpLine ("<Version 0.92 beta> Powered by Patrick Zheng...请使用TAB在选项间切换" )
16651709 rc = g .run (1 ,3 )
16661710 mainl = li .current ()
16671711 if rc == 'ESC' or 'snack.CompactButton' in str (rc ) :
@@ -1709,4 +1753,4 @@ def main():
17091753 print "MegaCli/StorCli路径无效,请使用-s参数重新指定"
17101754except :
17111755 print "指定的参数无效"
1712- usage ()
1756+ usage ()
0 commit comments