XenServer рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп
, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
XenCenter рдЪрд┐рддреНрд░рдордп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░
xe рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░,
XML рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реАрдзреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рдмрд╛рдж рдХреА рдмрд╛рдд рд╣реИ рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╕рднреА рд╡рд╛рдВрдЫрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реАрдзреЗ рдмрджрд▓рдирд╛, рдЖрдк рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ /var/xapi/state.db рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдирд┐рд░реНрдорд╛рддрд╛ рдпрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЬрд╛рдирддреЗ рд╣реИрдВ, XenServer рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗрдВрджреНрд░
xapi рдбреЗрдореЙрди рд╣реИред
рднрдВрдбрд╛рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдирдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
1. XAPI рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
2. рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ XML рд╕реНрдерд┐рддрд┐ .bb рд╕реНрдореГрддрд┐ рдореЗрдВ
3. рдХрд╛рдо (рдЗрд╕ рд╕рдордп рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ)
4. XAPI рдмрдВрдж рдХрд░реЛ
5. XML State.db рдкрд░ рд▓рд┐рдЦрдирд╛
рдЪреВрдВрдХрд┐ XAPI рдЕрдирдзрд┐рдХреГрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ "рдЬрд╛рдиреЗ рдкрд░" рдХрд╛рдЯрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП
xapi рд╕реЗрд╡рд╛ рдХреЛ
рд░реЛрдХрдирд╛ ред
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХрдИ "BUT" рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред
Vi рдФрд░ рдЕрдиреНрдп рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдмрд╕реЗ рдмрдбрд╝реА BUT рдлрд╛рдЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдорд╛рдзреНрдпрдорд┐рдХ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдХрдо рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ: XenServer рдХреЗ рд▓рд┐рдП, XML рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рд▓рд┐рдП, рдорд╛рдирдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЦреЛрдЬрдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ xmlsh.py
рдпреВрдЯрд┐рд▓рд┐рдЯреА рдмрдирд╛рдИ
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк XML рдлрд╛рдЗрд▓ рдХреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЯреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдХрдорд╛рдВрдб рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХрдорд╛рдВрдб рдХреЛ ls, cd, set, рдЖрджрд┐ред рд╕рд╣рд╛рдпрддрд╛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ XenServer рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЦреИрд░, рдЕрдм "рдЕрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ" рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ "рд╡реИрдЪрд╛рд░рд┐рдХ" рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдЬрдЧрд░ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рд╣рдо рд╕рдВрд╕реНрдХрд░рдг 2.4 (XenServer рдкрд░) рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ 2 рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ: рдбреЛрдо / рдорд┐рдиреАрдбреЛрдо рдФрд░ рдПрд▓рд┐рдореЗрдВрдЯреНрд░реАред
рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдкрд╛рд╕ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд░рд╛рд╕рдд рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ "рдСрд░реНрдбрд░рдбреЗрдб" (рдХреНрдпреЛрдВ? рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛:
рдорд┐рдиреАрдбреЛрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рдЖрдВрджреЛрд▓рди рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ElementTree рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕рдм рдЯреИрдЧ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдкрд░ XenServer рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрд╛рдп рд╣реИ (рдЬреЛ, рд╕рдВрдпреЛрдЧ рд╕реЗ, рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдЧреИрд░-рдЕрдиреБрдкрд╛рд▓рди рд╣реИ)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, ElementTree рдХреЛ "рдЕрдиреБрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:
рдЕрдЧрд░ ( рдХреНрд░рд┐рдпрд╛ [ 0 ] == "2" ) :
# рдкрд╛рдпрджрд╛рди 2.4 рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреА рдЗрдорд╛рд░рдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
def _start ( рд╕реНрд╡рдпрдВ , рдЯреИрдЧ, attrib_in ) :
fixname = self ._fixname
рдЯреИрдЧ = рдлрд┐рдХреНрд╕рдирд╛рдо ( рдЯреИрдЧ )
рдЕрдЯреНрд░рд┐рдм = рдУрдбрд┐рдХреНрдЯ ( )
рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП, attrib_in рдореЗрдВ рдорд╛рдиред рдЖрдЗрдЯрдо ( ) :
рдЕрдЯреНрд░рд┐рдм [ рдлрд┐рдХреНрд╕рдирд╛рдо ( рдХреА ) ] = рд╕реНрд╡ ._рд╕реБрд╡рд┐рдзрд╛ ( рдорд╛рди )
рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░рдВрдн ( рдЯреИрдЧ, рдЕрдЯреНрд░рд┐рдм )
def _start_list ( рд╕реНрд╡рдпрдВ , рдЯреИрдЧ, attrib_in ) :
fixname = self ._fixname
рдЯреИрдЧ = рдлрд┐рдХреНрд╕рдирд╛рдо ( рдЯреИрдЧ )
рдЕрдЯреНрд░рд┐рдм = рдУрдбрд┐рдХреНрдЯ ( )
рдЕрдЧрд░ рдЕрдЯрд░рд┐рдм_рдЗрди:
рдореИрдВ рд╕реАрдорд╛ рдореЗрдВ ( 0 , len ( attrib_in ) , 2 ) :
attrib [ fixname ( attrib_in [ i ] ) ] = attrib_in [ i + 1 ]
рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░рдВрдн ( рдЯреИрдЧ, рдЕрдЯреНрд░рд┐рдм )
# рдореЗрд░рд╛ рдЖрдзрд╛рд░ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░реЗрдВ
etreeред XMLTreeBuilder ._start_list = _start_list
etreeред XMLTreeBuilder ._strt = _start
рдЗрди рджреЛ рддрд░реАрдХреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдмрджрд▓рд╛рд╡: рд╣рдо рдорд╛рдирдХ рдХреЛ рдУрдбрд┐рдХреНрдЯ рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рд╕реВрдЪреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рджреНрд╡рд┐рддреАрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
etree.ElementTree._write=_write
рдФрд░ рд╡рд┐рдзрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
etree._escape_attrib = _escape_attrib
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдЕрдкрдиреА XML рдлрд╝рд╛рдЗрд▓ рдХреЗ "рд╕рд╣реА" рдЧрд▓рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ред
рдЪреВрдБрдХрд┐ XenServer рдкрд░ Python 2.4 рдореЗрдВ рдХреЛрдИ рдЖрд░реНрдбрд░рдбреАрдбрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред
рдЕрдиреНрдпрдерд╛, рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЫреЛрдЯреА рд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рди рдХреЗрд╡рд▓ State.db рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреИрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред