1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
¶LŒic@sed„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd    „Z    d
„Z
d „Z e d kraiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Z d!d"GHd#GHd!d"GHd$GHd dgdddggZd%Ged&eƒGHd'GedeƒGHd(Ged)eƒGHd*Ged+eƒGHd,d!d"GHd-GHd.Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd1GHiid dd2gdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd3GHiidd gdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd4GHiid dgd5gd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd6GHiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd 6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd7GHiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd8GHiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd9GHiid d2gdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd:GHiid dgdgd 6d dgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd;GHiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd<GHiid dgdgd 6ddgdgd6ddgdgd6d6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd=GHiid d&gdgd 6d>dgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd?GHiid d&gdgd 6ddgdgd6ddgdgd6d6id>dgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHd@GHiid dAgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHdBGHiid dgddgd 6ddgdgd6ddgdgd6d6iddggd6ddggd6d 6Zee eƒ\ZZd/GeGd0GeGHd,d!d"GHdCGHiid dgdgd 6ddgdgd6ddgdgd6ddDggdE6d6idFdgdgd6ddggd6d 6Z ee e ƒ\ZZd/GeGd0GeGHd,d!d"GHdGGHiid dgdgd 6ddgdgd6ddgdgd6d6id)dDgdgd6ddggd6d 6Z!ee e!ƒ\ZZd/GeGd0GeGHd,d!d"GHdHGHiid dgdgd 6ddgdgd6ddgdgd6dIdJggdE6d6iddgdgd6ddggd6d 6Z"ee e"ƒ\ZZd/GeGd0GeGHd,d!d"GHdKGHiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d)gdE6d 6Z#ee e#ƒ\ZZd/GeGd0GeGHd,d!d"GHdLGHiid dgdgd 6ddgdgd6ddgdgd6d6iddggd6ddggd6d 6id dMggdE6dN6Z$ee e$ƒ\ZZd/GeGd0GeGHd,d!d"GHdOGHiid dPgdgd 6dQdgdgd6ddgdgd6d6iddgdgd6ddggd6d 6Z%ee e%ƒ\ZZd/GeGd0GeGHd,d!d"GHdRGHiid dgddgd 6ddgdgd6d6iddgdgd6ddggd6d 6Z&ee e&ƒ\ZZd/GeGd0GeGHd,d!d"GHdSGHiid dgdTdUgddVgd 6ddgdgd6ddgdgd6d6iddgdWdXgddYgd6ddggd6d 6Z'ee e'ƒ\ZZd/GeGd0GeGHd,d!d"GHdZGHiid dgdgd 6ddgdgd6ddgdgd6d6iddgdgd6ddggd6d 6idd[ggdE6dN6Z(ee e(ƒ\ZZd/GeGd0GeGHd,d!d"GHd\GHiid dgdgd 6ddgdgd6ddgdgd6d]d^ggd_6d6iddgdgd6ddggd6d 6Z)ee e)ƒ\ZZd/GeGd0GeGHd,d!d"GHd`GHiid dgddgd 6ddgdgd6d6iddgdgd6ddggd6d 6Z*ee e*ƒ\ZZd/GeGd0GeGHd,d!d"GHdaGHd!d"GHndbS(ccCs™|dkrtS|stSxx|D]p}t|ttfƒrrt|ƒdkrr|d|kom|dknst|tƒr!||kr!tSq!WtS(s>¼ì²éserverIDÊÇ·ñÔÚserverIDListÖУ¬serverIDList°üº¬Çø¼äºÍµ¥¸öIDiiiN(tNonetFalsetTruet
isinstancetlistttupletlentint(tserverIDt serverIDListt serverIDInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pytCheckServerIDInLists  '$cCst|ƒ\}}|s"t|fSt|ƒ\}}|sDt|fSt|ƒ\}}|sft|fSt||ƒ\}}|s‹t|fSt||ƒ\}}|s°t|fSt||ƒ\}}|sÕt|fSt|ƒ\}}|s÷t|fStdfS(sмì²é´ý¸üеķÖÇøÅäÖÃÊÇ·ñ·ûºÏ¹æÔò£¬²»·ûºÏµÄ»°±£ÁôÔ­ÅäÖ㬲»¸üÐÂ
    @param curCrossZoneCfgDict: µ±Ç°¿ç·þ·ÖÇøÅäÖà {crossServerID:{zoneID:[[serverIDA, toServerIDB], serverID, ...], ...}, ...}
    @param updCrossZoneCfgDict: Òª¸üеĿç·þ·ÖÇøÅäÖà {crossServerID:{zoneID:[[serverIDA, toServerIDB], serverID, ...], ...}, ...}
    @return: (isOK, errMsg) isOKΪTrue±íʾ·ûºÏ¹æÔò£¬errMsgΪ´íÎóÐÅÏ¢
    t(    t_validate_formatRt_check_zone_id_uniquet_check_server_id_uniquet _check_no_delete_cross_server_idt"_check_old_server_ranges_not_splitt_check_no_cross_server_merget_check_cross_server_overlapR(tcurCrossZoneCfgDicttupdCrossZoneCfgDicttis_okterr_msg((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pytCheckCrossZoneCfg s, 
 
 
 
 
 
 
cCsmt|tƒstdfSxG|jƒD]9\}}t|tƒsOtd|fSx |jƒD]ÿ\}}t|tƒs‹td||ffSxÍ|D]Å}t|tƒr4t|ƒdkrÍtd||ffSt|dtƒ sõt|dtƒ r    td||ffS|d|dkrWtd    ||ffSq’t|tƒs’td
||ffSq’Wq\Wq&Wtd fS( sÑéÖ¤ÅäÖøñʽÊÇ·ñÕýÈ·sÅäÖñØÐëÊÇ×ÖµäÀàÐÍs(crossServerID=%sµÄ·ÖÇøÅäÖñØÐëÊÇ×ÖµäÀàÐÍs4crossServerID=%s,zoneID=%sµÄ·þÎñÆ÷ÁÐ±í±ØÐëÊÇÁбíÀàÐÍis@crossServerID=%s,zoneID=%sµÄÇø¼ä¸ñʽ´íÎ󣬱ØÐëÊÇ[start, end]¸ñʽiis,crossServerID=%s,zoneID=%sµÄÇø¼äÖµ±ØÐëÊÇÕûÊýs4crossServerID=%s,zoneID=%sµÄÇø¼äÆðʼֵ²»ÄÜ´óÓÚ½áÊøÖµs.crossServerID=%s,zoneID=%sµÄ·þÎñÆ÷ID±ØÐëÊÇÕûÊýR (RtdictRtitemsRRRR(tcfgDictt crossServerIDtzonestzoneIDt
serverListtitem((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyR Ps&
 ( cCs{i}xh|jƒD]Z\}}xK|jƒD]=}||kr_d||||f}t|fS|||<q,WqWtdfS(s¼ì²ézoneIDÊÇ·ñÈ«¾ÖΨһsIzoneID±ØÐëÈ«¾ÖΨһ£¡zoneID=%sÖØ¸´³öÏÖÔÚcrossServerID=%sºÍcrossServerID=%sR (RtkeysRR(Rt zone_id_mapRRRR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyRls 
cCsHg}x;|D]3}t|tƒr |j|d|dfƒq q W|S(s´Ó·þÎñÆ÷ÁбíÖÐÌáÈ¡Çø¼äii(RRtappend(RtrangesR ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyt_get_server_ranges{s
 "cCs/|\}}|\}}||kp-||k S(s¼ì²éÁ½¸öÇø¼äÊÇ·ñÓÐÖØµþ((trange1trange2ta1ta2tb1tb2((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyt_check_range_overlap„s  c Cszg}tƒ}x2|jƒD]$\}}x|jƒD]\}}t|ƒ}x$|D]}|j|||fƒqTWxÅ|D]½}    t|    tƒr{|    |kr(xl|D]d\}
} } | d|    koÑ| dknr£d|    |
| | d| d||f} t| fSq£Wd|    ||f} t| fS|j|    ƒq{q{Wq5WqWx¯tt    |ƒƒD]›}||\}}}xt|dt    |ƒƒD]d}||\}}}t
||ƒrŠd|||d|d|||d|df} t| fSqŠWqWWxw|D]o}xf|D]^\}
} } | d|ko8| dknr
d||
| | d| df} t| fSq
WqýWt dfS(s"¼ì²éserverIDÊÇ·ñÈ«¾ÖΨһ£¨²»½»²æ£©iisjserverID±ØÐëÈ«¾ÖΨһ£¡serverID=%sÔÚcrossServerID=%s,zoneID=%sÇø¼ä[%s,%s]ÄÚÓëcrossServerID=%s,zoneID=%sÖØ¸´sMserverID±ØÐëÈ«¾ÖΨһ£¡serverID=%sÔÚcrossServerID=%s,zoneID=%sÖÐÓëÆäËûµØ·½Öظ´shserverIDÇø¼ä²»Äܽ»²æ£¡crossServerID=%s,zoneID=%sÇø¼ä[%s,%s]ÓëcrossServerID=%s,zoneID=%sÇø¼ä[%s,%s]Óн»²æsHserverID±ØÐëÈ«¾ÖΨһ£¡serverID=%sÔÚcrossServerID=%s,zoneID=%sÇø¼ä[%s,%s]R ( tsetRR%R#RRRtaddtrangeRR,R(Rtall_server_rangestall_server_idsRRRRR$trR tcsidtzidtrngRtitcsid1tzid1tr1tjtcsid2tzid2tr2t    server_id((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyR‹sD        $$
 / $cCset|jƒƒ}t|jƒƒ}||}|r[ddjd„|Dƒƒ}t|fStdfS(s!¼ì²é²»ÄÜɾ³ýÒÑ´æÔÚµÄcrossServerIDs6²»ÄÜɾ³ýÒÑ´æÔÚµÄcrossServerID£¡É¾³ýµÄcrossServerID£º%ss, css|]}t|ƒVqdS(N(tstr(t.0ts((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pys    <genexpr>ÅsR (R-R!tjoinRR(RRtold_cross_serverstnew_cross_serverstremoved_cross_serversR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyR½s
 
cCsttƒ}xd|D]\}t|tƒr_|\}}x8t||dƒD]}|j|ƒqEWq|j|ƒqW|S(s(´Ó·ÖÇøÅäÖÃÖлñÈ¡ËùÓзþÎñÆ÷ID£¨Õ¹¿ªÇø¼ä£©i(R-RRR/R.(Rt
server_idsR tstarttendR>((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyt_get_all_server_ids_from_zoneËs      cCsúi}xd|jƒD]V\}}xG|jƒD]9\}}t|ƒ}x|D]}||f||<qKWq,WqWi}    xz|jƒD]l\}}x]|jƒD]O\}}t|ƒ}
tƒ} x§|
D]Ÿ}t} xm|jƒD]_\} }xF|jƒD]8\}}t||ƒró| j| |fƒt} PqóqóW| rÚPqÚqÚW| sÁd|||f}t|fSqÁWt| ƒdkrÅg| D]\}}d||f^q}}d||dj|ƒf}t|fS| r™t    | ƒd|    ||f<q™q™Wq€WtdfS(s ¼ì²éÒÑÅäÖõÄserverIDÇø¼ä²»Äܲð·ÖsEÒÑÅäÖõÄserverID²»ÄÜɾ³ý£¡serverID=%sÔ­±¾ÔÚcrossServerID=%s,zoneID=%siscrossServerID=%s,zoneID=%ssNÒÑÅäÖõÄserverIDÇø¼ä²»Äܲð·Ö£¡Ô­crossServerID=%s,zoneID=%sµÄ·þÎñÆ÷±»²ð·Öµ½£º%ss¡¢iR (
RRIR-RR R.RRRBR(RRtold_server_to_locationRRRRRFR>told_zone_to_new_zonetold_server_idst new_locationstfoundtnew_crossServerIDt    new_zonest
new_zoneIDtnew_serverListRR3R4t locations_str((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyRÜsB        )
%c Cs i}x^|jƒD]P\}}xA|jƒD]3\}}t|ƒ}x|D]}|||<qKWq,WqWx™|jƒD]‹\}}x||jƒD]n\}}t|ƒ}xS|D]K}||kr¬||}    |    |kr÷d||    ||f}
t|
fSq¬q¬WqWqtWtdfS(s¼ì²é²»ÄÜ¿çcrossServerIDºÏ²¢sb²»ÄÜ¿çcrossServerIDºÏ²¢£¡serverID=%sÔ­±¾ÔÚcrossServerID=%s£¬ÏÖÔÚ±»·ÖÅäµ½crossServerID=%s,zoneID=%sR (RRIRR( RRtold_server_to_cross_serverRRRRRFR>told_cross_serverR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyRs"     
 c
Cs t|jƒƒ}xtt|ƒƒD]í}||\}}xÔt|dt|ƒƒD]¹}||\}}x |jƒD]’\}}    t|    ƒ}
xw|jƒD]i\} } t| ƒ} |
j| ƒr|
j| ƒ}t|ƒd}d||||| f}t|fSqWqxWqUWq%WtdfS(s#¼ì²é²»Í¬crossServerIDÖ®¼äÊÇ·ñÓн»²æiisr²»Í¬crossServerIDÖ®¼äserverID²»Äܽ»²æ£¡serverID=%sͬʱ³öÏÖÔÚcrossServerID=%s,zoneID=%sºÍcrossServerID=%s,zoneID=%sR (RRR/RRIt intersectionRR(Rtcross_server_itemsR6tcross_server_id1tzones1R:tcross_server_id2tzones2tzoneID1t serverList1t server_ids1tzoneID2t serverList2t server_ids2RVt    sample_idR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyR-s    t__main__ii2iéi3idiêiieiÈiëii'iÉi,iìii(#i'ii's=iPs¿ªÊ¼²âÊÔËùÓв»ºÏ·¨Çé¿ös 
1. ²âÊÔCheckServerIDInListº¯Êý:s   25ÔÚÁбíÖÐ:is  1001ÔÚÁбíÖÐ:s  150ÔÚÁбíÖÐ:i–s   75ÔÚÁбíÖÐ:iKs
s²âÊÔ1: ¸ñʽ´íÎó - ·Ç×ÖµäÀàÐÍs ²»ÊÇ×ÖµäÀàÐÍs  ½á¹û:s    ´íÎóÐÅÏ¢:s5²âÊÔ2: ¸ñʽ´íÎó - Çø¼ä¸ñʽ´íÎ󣨲»ÊÇ[start,end]¸ñʽ£©i<s&²âÊÔ3: ¸ñʽ´íÎó - Çø¼äÆðʼֵ´óÓÚ½áÊøÖµs"²âÊÔ4: ¸ñʽ´íÎó - ·þÎñÆ÷ID²»ÊÇÕûÊýt1001s²âÊÔ5: zoneIDÈ«¾ÖÖØ¸´s(²âÊÔ6: serverIDÖØ¸´ - µ¥¶ÀµÄ·þÎñÆ÷IDÖØ¸´s,²âÊÔ7: serverIDÖØ¸´ - Çø¼ä°üº¬µ¥¶ÀµÄ·þÎñÆ÷IDs²âÊÔ8: serverIDÖØ¸´ - Çø¼ä½»²æs"²âÊÔ9: serverIDÖØ¸´ - Çø¼äÍêÈ«ÖØµþs)²âÊÔ10: serverIDÖØ¸´ - Çø¼ä°üº¬ÁíÒ»¸öÇø¼äs!²âÊÔ11: É¾³ýÒÑ´æÔÚµÄcrossServerIDs"²âÊÔ12: ÒÑÅäÖõÄserverIDÇø¼ä±»²ð·Öis5²âÊÔ13: ÒÑÅäÖõÄserverIDÇø¼ä±»²ð·Öµ½²»Í¬crossServerIDs²âÊÔ14: ÒÑÅäÖõÄserverID±»É¾³ýi1s²âÊÔ15: ¿çcrossServerIDºÏ²¢s²âÊÔ16: ¿çcrossServerIDºÏ²¢Çø¼äiúiiûs²âÊÔ17: ¿çcrossServerID½»²æs%²âÊÔ18: ¿çcrossServerID½»²æ£¨ÐÂÇø¼ä£©i"i6s8²âÊÔ19: serverIDÖØ¸´ - µ¥¶ÀIDÔÚÇø¼äÄÚ£¨¿çcrossServerID£©s3²âÊÔ20: ÒÑÅäÖõÄserverID±»Òƶ¯µ½²»Í¬µÄcrossServerIDi
i's,²âÊÔ21: ÒÑÅäÖõÄserverID±»²ð·Öµ½²»Í¬µÄzoneIDiis*²âÊÔ22: ºÏ·¨µÄÅäÖà- Í¬crossServerIDϺϲ¢s²âÊÔ23: ºÏ·¨µÄÅäÖà- À©ÈÝiôiXiÑiYi¼iÔs*²âÊÔ24: ºÏ·¨µÄÅäÖà- Ôö¼ÓеÄcrossServerIDi Ns#²âÊÔ25: ºÏ·¨µÄÅäÖà- Ôö¼ÓеÄzoneIDi-iis4²âÊÔ26: ºÏ·¨µÄÅäÖà- É¾³ýzoneID£¨Í¬crossServerIDÏ£©sËùÓвâÊÔÓÃÀýÖ´ÐÐÍê±ÏN(+R RR RR%R,RRRIRRRt__name__Rt    test_listtupd1RRtupd2tupd3tupd4tupd5tupd6tupd7tupd8tupd9tupd10tupd11tupd12tupd13tupd14tupd15tupd16tupd17tupd18tupd19tupd20tupd21tupd22tupd23tupd24tupd25tupd26(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\CheckServerID.pyt<module>s¨        0                        2            6