o
    AVbÊ\  ã                   @   sø   d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ ddlmZ ddl	m
Z
 dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ eedƒƒ Z\ZZZdZeeƒ\ZZZZZ Z!Z"dZ#ee#ƒ\Z$Z%Z&Z'dZ(dZ)dd„ Z*G dd„ deƒZ+dS )é    )ÚGdk)ÚGtk)ÚPango)Ú
DeviceDisk)Úlogé   )Úuiutil)ÚvmmAsyncJob)ÚvmmGObjectUI)ÚvmmCreatePool)ÚvmmCreateVolume)ÚvmmStoragePool)ÚvmmXMLEditoré   é   é   Ústate_runningÚstate_shutoffc                 C   sD   |   ¡ }|  ¡ }d}|r|d urtt|ƒt|ƒ d ƒ}dt|ƒ S )Nr   éd   z<span size='small'>%s%%</span>)Úget_capacityÚget_allocationÚintÚfloat)ÚpoolÚcapÚallocÚper© r   ú2/usr/share/virt-manager/virtManager/hoststorage.pyÚ_get_pool_size_percent/   s   r   c                   @   s†  e Zd Zejdg fejdegfejdg fdœZdWdd„Zdd„ ZdXdd„Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!d9d:„ Z"d;d<„ Z#d=d>„ Z$d?d@„ Z%dAdB„ Z&dCdD„ Z'dEdF„ Z(dGdH„ Z)dIdJ„ Z*dKdL„ Z+dMdN„ Z,dOdP„ Z-dQdR„ Z.dSdT„ Z/dUdV„ Z0dS )YÚvmmHostStorageN)úbrowse-clickedúvolume-chosenúcancel-clickedc                    s6  t jˆ dd ||d |ˆ _|ˆ _d ˆ _tƒ ˆ _d ˆ _d ˆ _d ˆ _	d ˆ _
ˆ  d¡ˆ _ˆ j i dˆ j“dˆ j“dˆ j“dˆ j“dˆ j“d	‡ fd
d„“dˆ j“dˆ j“dˆ j“dˆ j“dˆ j“dˆ j“dˆ j“dˆ j“d‡ fdd„“dˆ j“¡ ˆ  ¡  ˆ  ¡  ˆ  ¡  ˆ j  dˆ j!¡ ˆ j  dˆ j!¡ ˆ j  dˆ j"¡ d S )Nzhoststorage.ui)ÚbuilderÚtopwinzstorage-gridÚon_pool_add_clickedÚon_pool_stop_clickedÚon_pool_start_clickedÚon_pool_delete_clickedÚon_pool_refresh_clickedÚon_pool_apply_clickedc                     ó   ˆ   ¡ S ©N)Ú_pool_apply©Úx©Úselfr   r   Ú<lambda>X   ó    z)vmmHostStorage.__init__.<locals>.<lambda>Úon_vol_delete_clickedÚon_vol_list_button_press_eventÚon_vol_list_changedÚon_vol_add_clickedÚon_browse_cancel_clickedÚon_browse_local_clickedÚon_choose_volume_clickedÚon_vol_list_row_activatedÚon_pool_name_changedc                     ó
   ˆ   t¡S r-   )Ú_enable_pool_applyÚEDIT_POOL_NAMEr/   r1   r   r   r3   d   ó   
Úon_pool_autostart_toggledz
pool-addedzpool-removedústate-changed)#r
   Ú__init__ÚconnÚ_vol_sensitive_cbÚ
_name_hintÚsetÚ_active_editsÚ_addpoolÚ_addvolÚ_volmenuÚ
_xmleditorÚwidgetÚtop_boxr$   Úconnect_signalsÚ_pool_add_cbÚ_pool_stop_cbÚ_pool_start_cbÚ_pool_delete_cbÚ_pool_refresh_cbÚ_vol_delete_cbÚ_vol_popup_menu_cbÚ_vol_selected_cbÚ_vol_add_cbÚ_cancel_clicked_cbÚ_browse_local_clicked_cbÚ_choose_volume_clicked_cbÚ_vol_list_row_activated_cbÚ_pool_autostart_changed_cbÚ_init_uiÚ_populate_poolsÚ_refresh_conn_stateÚconnectÚ_conn_pools_changed_cbÚ_conn_state_changed_cb)r2   rE   r$   r%   Úvol_sensitive_cbr   r1   r   rD   ?   sf   ÿÿþýüûúø	÷
öõóòñðîìzvmmHostStorage.__init__c                 C   sz   z| j  | ¡ W n	 ty   Y nw d | _ | jr | j ¡  d | _| jr+| j ¡  d | _| j ¡  d | _| j ¡  d | _d S r-   )	rE   Údisconnect_by_objÚ	ExceptionrJ   ÚcleanuprK   rL   ÚdestroyrM   r1   r   r   r   Ú_cleanupu   s    ÿ




zvmmHostStorage._cleanupc                 C   s8   | j r| j  ¡  | jr| j ¡  | jr| j ¡  d S d S r-   )rK   ÚcloserJ   rL   Úhide)r2   Úignore1Úignore2r   r   r   rk   Š   s   

ÿzvmmHostStorage.closec                 C   s*   dd„ }|t || t ƒt || t ƒƒS )Nc                 S   s   | |k| |k  S r-   r   )ÚaÚbr   r   r   Ú_cmp˜   ó   z.vmmHostStorage._cap_sort_func_cb.<locals>._cmp)r   ÚVOL_COLUMN_CAPACITY)r2   ÚmodelÚiter1Úiter2Úuserdatarq   r   r   r   Ú_cap_sort_func_cb—   s   ÿz vmmHostStorage._cap_sort_func_cbc              	      sR  ˆ   d¡ d¡ tˆ jˆ jˆ   d¡ˆ   d¡ƒˆ _ˆ j d‡ fdd„¡ ˆ j dˆ j¡ ˆ j d	ˆ j¡ ˆ   d
¡ 	d¡ ˆ   d¡ 	d¡ ˆ   d¡ 	d¡ t
 ¡ ˆ _t
j tdƒ¡}| ¡  | dˆ j¡ ˆ j |¡ t
 ttttttt¡}ˆ   d¡ |¡ t
 tdƒ¡}t
 ¡ }| |d¡ | |dt¡ | |dt¡ | t¡ ˆ   d¡ |¡ t
 tdƒ¡}t
 ¡ }| |d¡ | |dt ¡ | |dt¡ | t!¡ ˆ   d¡ |¡ | "t!ˆ j#¡ t
 tdƒ¡}t
 ¡ }| |d¡ | |dt$¡ | |dt¡ | t$¡ ˆ   d¡ |¡ t
 tdƒ¡}	t
 ¡ }
|	 |
d¡ |	 |
dt%¡ |	 |
dt¡ |	 t%¡ ˆ   d¡ |	¡ | tt
j&j'¡ ˆ   d¡}t
 tttt¡}| |¡ t
 tdƒ¡}t
 ¡ }| (dt)j*j+¡ t
 ¡ }| |d¡ | |d¡ | |dt,¡ | |dt-¡ | |dt.¡ | |¡ | t,t
j&j'¡ | /¡  dˆ j0¡ | /¡  1‡ fdd„d ¡ d S )Nústorage-pagesFzpool-details-alignúpool-detailsÚchangedc                    r>   r-   )r?   ÚEDIT_POOL_XML)Úsr1   r   r   r3   ¥   s   
 z)vmmHostStorage._init_ui.<locals>.<lambda>zxml-requestedz	xml-resetzbrowse-localzbrowse-cancelúchoose-volumezCopy Volume PathÚactivateúvol-listÚVolumesTÚtextÚ	sensitiveÚSizeÚFormatzUsed Byú	pool-listzStorage PoolsÚ	ellipsizeÚmarkupc                     r,   r-   )Ú_confirm_changesr/   r1   r   r   r3   õ   r4   )2rN   Úset_show_tabsr   r$   r%   rM   rb   Ú_xmleditor_xml_requested_cbÚ_xmleditor_xml_reset_cbÚset_visibler   ÚMenurL   ÚMenuItemÚnew_with_mnemonicÚ_ÚshowÚ_vol_copy_path_cbÚaddÚ	ListStoreÚobjectÚstrÚboolÚ	set_modelÚTreeViewColumnÚCellRendererTextÚ
pack_startÚadd_attributeÚVOL_COLUMN_NAMEÚVOL_COLUMN_SENSITIVEÚset_sort_column_idÚappend_columnÚVOL_COLUMN_SIZESTRrs   Úset_sort_funcrx   ÚVOL_COLUMN_FORMATÚVOL_COLUMN_INUSEBYÚSortTypeÚ	ASCENDINGÚset_propertyr   ÚEllipsizeModeÚENDÚPOOL_COLUMN_LABELÚPOOL_COLUMN_ISACTIVEÚPOOL_COLUMN_PERCENTÚget_selectionÚ_pool_selected_cbÚset_select_function)r2   ÚvolCopyPathÚvolListModelÚvolColÚvol_txt1Ú
volSizeColÚvol_txt2ÚvolFormatColÚvol_txt3Ú	volUseColÚvol_txt4Ú	pool_listÚpoolListModelÚpoolColÚpool_txtÚpool_perr   r1   r   r_   ž   s˜   
þ
ÿÿÿ




ÿ


ÿÿzvmmHostStorage._init_uic                 C   s   |   ¡  | jjdd d S )NT)Úpollpool)Ú_populate_volsrE   Úschedule_priority_tickr1   r   r   r   Úrefresh_pageü   s   zvmmHostStorage.refresh_pagec                 C   s
   || _ d S r-   )rG   )r2   Úvalr   r   r   Úset_name_hint   rA   zvmmHostStorage.set_name_hintc                 C   sx   | j  ¡ }|  d¡ |o| j j ¡ ¡ |r"| j j ¡ s"|  tdƒ¡ |r/t 	|  d¡d¡ d S |  
¡  |  tdƒ¡ d S )Nzpool-addz7Libvirt connection does not support storage management.r†   r   zConnection not active.)rE   Ú	is_activerN   Úset_sensitiveÚsupportÚconn_storageÚ_set_error_pager‘   r   Úset_list_selection_by_numberr`   )r2   Úconn_activer   r   r   ra     s   

ÿÿz"vmmHostStorage._refresh_conn_statec                 C   s   t  |  d¡¡S ©Nr†   )r   Úget_list_selectionrN   r1   r   r   r   Ú_current_pool  rr   zvmmHostStorage._current_poolc                 C   s    |   ¡ }|sd S t |  d¡¡S ©Nr€   )rÏ   r   rÎ   rN   ©r2   r   r   r   r   Ú_current_vol  s   zvmmHostStorage._current_volc                 C   sZ   |   d¡ ¡ D ]}|t |krq| ¡ |t< t|ƒ|t<  |  ¡ }||kr+|  ¡  d S d S rÍ   )	rN   Ú	get_modelÚPOOL_COLUMN_HANDLErÆ   r¬   r   r­   rÏ   Ú_refresh_current_pool)r2   r   ÚrowÚcurpoolr   r   r   Ú_update_pool_row!  s   ÿzvmmHostStorage._update_pool_rowc                 C   s¬  |  ¡ }| ¡ }|  d¡ d¡ |  d¡ | ¡ ¡ |  d¡ | ¡ |  d¡ tdƒ| 	¡ | 
¡ dœ ¡ |  d¡ | ¡ ¡ |  d¡ |rItpJttjj¡ |  d	¡ | ¡ ¡ |  d
¡ tdƒ¡ |  d
¡ |¡ |  d¡ |¡ |  ¡  |  d¡ | ¡ |  d¡ |¡ |  d¡ | ¡ |  d¡ |¡ |  d¡ |¡ |  d¡ tdƒ¡ |  d¡ d¡ |rÎt | ¡ ¡sÎ|  d¡ d¡ |  d¡ tdƒ¡ | j |¡ d S )Nrz   Túpool-name-entryz
pool-sizesz1%(bytesfree)s Free / <i>%(bytesinuse)s In Use</i>)Ú	bytesfreeÚ
bytesinusezpool-locationzpool-state-iconz
pool-stateúpool-autostartzOn Bootr€   úpool-deleteú	pool-stopú
pool-startzpool-refreshzvol-addzCreate new volumeú
vol-deleteFz%Pool does not support volume creation)Úget_autostartrÆ   rN   rÇ   Úset_textÚget_nameÚset_editableÚ
set_markupr‘   Úget_pretty_availableÚget_pretty_allocationÚget_target_pathÚset_from_icon_nameÚICON_RUNNINGÚICON_SHUTOFFr   ÚIconSizeÚBUTTONÚ
run_statusÚ	set_labelÚ
set_activerÁ   Úset_tooltip_textr   Úsupports_volume_creationÚget_typerM   Úset_xml_from_libvirtobject)r2   r   ÚautoÚactiver   r   r   Ú_populate_pool_state/  sN   
ÿÿÿ
ÿ

þÿ
ÿz#vmmHostStorage._populate_pool_statec                 C   s\   |   d¡ d¡ |   d¡ |¡ |   d¡ d¡ |   d¡ d¡ |   d¡ d¡ |  ¡  d S )Nry   r   zstorage-error-labelrÝ   FrÞ   rß   )rN   Úset_current_pagerâ   rÇ   Ú_disable_pool_apply)r2   Úmsgr   r   r   rÊ   W  s   zvmmHostStorage._set_error_pagec              
   C   sŠ   |   ¡ }|s|  tdƒ¡ d S |  d¡ d¡ z|  |¡ W n  ty> } zt |¡ |  tdƒ| ¡ W Y d }~nd }~ww |  	¡  d S )NzNo storage pool selected.ry   r   zError selecting pool: %s)
rÏ   rÊ   r‘   rN   rø   r÷   rg   r   Ú	exceptionrù   )r2   r   Úer   r   r   rÕ   _  s   
€þz$vmmHostStorage._refresh_current_poolc           	   	   C   sø   |   d¡}|  ¡ }| ¡ }| d ¡ z[| ¡  ¡  | ¡  | j ¡ D ]D}| 	| ¡ | 
d| j¡ | 
d| j¡ | ¡ }t | ¡ ¡}d||f }d gt }||t< ||t< | ¡ |t< t|ƒ|t< | |¡ q"W | |¡ n| |¡ w t ||¡ d S )Nr†   rC   Ú	refreshedz%s
<span size='small'>%s</span>)rN   rÏ   rÓ   r™   r®   Úunselect_allÚclearrE   Ú
list_poolsrf   rb   Ú_pool_changed_cbrã   r   Úpretty_typeró   ÚPOOL_NUM_COLUMNSrÔ   r«   rÆ   r¬   r   r­   Úappendr   Úset_list_selection)	r2   r»   r×   rt   r   ÚnameÚtypÚlabelrÖ   r   r   r   r`   n  s.   



ñzvmmHostStorage._populate_poolsc              	      s”  |   d¡}|  ¡ }|r| ¡ pg }| ¡ }| ¡  ¡  | ¡  |   d¡ ¡ ‰ ˆ  ¡ t	ˆ  
¡ dƒ ‰|D ]ˆ}z| ¡ }| | ¡ ¡}t| ¡ ƒ}| ¡ }	| ¡ pPd}
W n tyc   tjd|dd Y q3w d }z|r{t |j ¡ |¡}d |¡}|s{d }W n tyŠ   t d	¡ Y nw d}| jr•|  |
¡}d gt }||t< ||t< |	|t< ||t < |
|t!< ||t"< ||t#< | $|¡ q3‡ ‡fd
d„}|  %|¡ d S )Nr€   z
vol-scrollr   Ú z-Error getting volume info for '%s', hiding itT)Úexc_infoz, z-Failed to determine if storage volume in use.c                      s   ˆ   ˆ  ¡ ˆ ¡ d S r-   )Ú	set_valueÚ	get_upperr   ©ÚvadjÚvscroll_percentr   r   Ú_reset_vscroll_position¿  s   z>vmmHostStorage._populate_vols.<locals>._reset_vscroll_position)&rN   rÏ   Úget_volumesrÓ   r®   rþ   rÿ   Úget_vadjustmentÚ	get_valueÚmaxr  rè   Úget_pretty_nameró   r—   r   Úget_pretty_capacityÚ
get_formatrg   r   Údebugr   Úpath_in_use_byrE   Úget_backendÚjoinrû   rF   ÚVOL_NUM_COLUMNSÚVOL_COLUMN_HANDLErž   r¢   rs   r¤   r¥   rŸ   r  Úidle_add)r2   Úlist_widgetr   Úvolsrt   ÚvolÚpathr  r   ÚsizestrÚfmtÚnamestrÚnamesrƒ   rÖ   r  r   r  r   rÁ   Ž  s`   
ÿýÿ
€ÿ

zvmmHostStorage._populate_volsc                 C   óF   |   ¡ }|d u r
d S t d| ¡ ¡ t |jg | tdƒ| ¡  ¡ d S )NzStopping pool '%s'zError stopping pool '%s')rÏ   r   r  rã   r	   Úsimple_async_noshowÚstopr‘   ©r2   Úsrcr   r   r   r   rR   È  ó   ÿzvmmHostStorage._pool_stop_cbc                 C   r'  )NzStarting pool '%s'zError starting pool '%s')rÏ   r   r  rã   r	   r(  Ústartr‘   r*  r   r   r   rS   Ñ  r,  zvmmHostStorage._pool_start_cbc              
   C   st   t  d¡ z| jd u rt| jƒ| _| j | j¡ W d S  ty9 } z| j 	t
dƒt|ƒ ¡ W Y d }~d S d }~ww )NzLaunching 'Add Pool' wizardzError launching pool wizard: %s)r   r  rJ   r   rE   r’   r%   rg   ÚerrÚshow_errr‘   r—   )r2   r+  rü   r   r   r   rQ   Ú  s   

&€ÿzvmmHostStorage._pool_add_cbc                 C   sf   |   ¡ }|d u r
d S | j tdƒ| ¡  ¡}|sd S t d| ¡ ¡ t |j	g | tdƒ| ¡  ¡ d S )Nz8Are you sure you want to permanently delete the pool %s?zDeleting pool '%s'zError deleting pool '%s')
rÏ   r.  Úyes_nor‘   rã   r   r  r	   r(  Údelete)r2   r+  r   Úresultr   r   r   rT   ä  s   ÿÿzvmmHostStorage._pool_delete_cbc                 C   sN   |   ¡ }|d u r
d S |  ¡  t d| ¡ ¡ t |jg | tdƒ| ¡  ¡ d S )NzRefresh pool '%s'zError refreshing pool '%s')	rÏ   r‰   r   r  rã   r	   r(  Úrefreshr‘   r*  r   r   r   rU   ò  s   ÿzvmmHostStorage._pool_refresh_cbc                 C   s>   |   ¡ }|sd S tj tj¡}| ¡ }|r| |d¡ d S d S )Néÿÿÿÿ)rÒ   r   Ú	ClipboardÚgetr   ÚSELECTION_CLIPBOARDrè   râ   )r2   r+  r!  Ú	clipboardÚtarget_pathr   r   r   r“     s   ÿz vmmHostStorage._vol_copy_path_cbc              
   C   sÎ   |   ¡ }|d u r
d S t d| ¡ ¡ z5| jd u r(t| j|ƒ| _| j d| j¡ n| j 	|¡ | j 
| j ¡ ¡ | j | j¡ | j | j¡ W d S  tyf } z| j tdƒt|ƒ ¡ W Y d }~d S d }~ww )Nz+Launching 'Add Volume' wizard for pool '%s'zvol-createdz!Error launching volume wizard: %s)rÏ   r   r  rã   rK   r   rE   rb   Ú_vol_created_cbÚset_parent_poolÚ	set_modalr%   Ú	get_modalrÅ   rG   r’   rg   r.  r/  r‘   r—   )r2   r+  r   rü   r   r   r   rY     s$   ÿ
&€ÿzvmmHostStorage._vol_add_cbc                    s|   ˆ  ¡ ‰ˆd u r
d S ˆ ¡ ‰ ˆj tdƒˆ ¡  ¡}|sd S ‡ ‡‡fdd„}t dˆ ¡ ¡ t 	|g ˆtdƒˆ ¡  ¡ d S )Nz:Are you sure you want to permanently delete the volume %s?c                     s"   ˆ  ¡  ‡ fdd„} ˆ | ¡ d S )Nc                      s   ˆ   ¡  d S r-   )r3  r   )r   r   r   Úidlecb,  ó   z9vmmHostStorage._vol_delete_cb.<locals>.cb.<locals>.idlecb)r1  r  )r>  ©r   r2   r!  r   r   Úcb*  s   z)vmmHostStorage._vol_delete_cb.<locals>.cbzDeleting volume '%s'zError deleting volume '%s')
rÒ   rÏ   r.  r0  r‘   rã   r   r  r	   r(  )r2   r+  r2  rA  r   r@  r   rV     s   ÿ
ÿzvmmHostStorage._vol_delete_cbc              
   C   sÚ   |   ¡ }|d u r
d S t d| ¡ ¡ z5t| jv r$|  d¡ ¡ }| |¡ t	| jv r9| 
|  d¡ ¡ ¡ |  | j¡ t| jv rF| | j ¡ ¡ W n tyf } z| j tdƒt|ƒ ¡ W Y d }~d S d }~ww |  ¡  d S )NzApplying changes for pool '%s'rÜ   rÙ   z Error changing pool settings: %s)rÏ   r   r  rã   ÚEDIT_POOL_AUTOSTARTrI   rN   Ú
get_activeÚset_autostartr@   Údefine_nameÚget_textr  r`   r|   Ú
define_xmlrM   Úget_xmlrg   r.  r/  r‘   r—   rù   )r2   r   rõ   rü   r   r   r   r.   9  s(   



€€þzvmmHostStorage._pool_applyc                 C   s(   | j  |¡ |  d¡ d¡ d| j_d S )Nú
pool-applyT)rI   r”   rN   rÇ   rM   Údetails_changed)r2   Úedittyper   r   r   r?   P  s   z!vmmHostStorage._enable_pool_applyc                 C   s$   t ƒ | _|  d¡ d¡ d| j_d S )NrI  F)rH   rI   rN   rÇ   rM   rJ  r1   r   r   r   rù   U  s   z"vmmHostStorage._disable_pool_applyc                 C   s,   |   ¡ r| jr| j ¡ r|  ¡  |  ¡  dS )NT)Ú
is_visiblerI   r.  Úconfirm_unapplied_changesr.   rù   r1   r   r   r   r‰   Z  s   ÿþzvmmHostStorage._confirm_changesc                 C   ó   |   d¡ d S )Nr!   ©Úemit©r2   r+  r   r   r   r[   h  ó   z'vmmHostStorage._browse_local_clicked_cbc                 C   ó   |   d|  ¡ ¡ d S ©Nr"   ©rP  rÒ   rQ  r   r   r   r\   k  ó   z(vmmHostStorage._choose_volume_clicked_cbc                 C   rS  rT  rU  )r2   r+  ÚtreeiterÚviewcolr   r   r   r]   n  rV  z)vmmHostStorage._vol_list_row_activated_cbc                 C   s*   |   ¡ }||kr
d S t |  d¡|¡ d S rÐ   )rÏ   r   r  rN   )r2   r+  r   r!  r×   r   r   r   r:  q  s   zvmmHostStorage._vol_created_cbc                 C   s   |   t¡ d S r-   )r?   rB  rQ  r   r   r   r^   z  rR  z)vmmHostStorage._pool_autostart_changed_cbc                 C   sH   |  ¡ \}}|  d¡ t|ƒ¡ t|o|| t ƒ}|  d¡ |¡ d S )Nrà   r~   )Úget_selectedrN   rÇ   r˜   rŸ   )r2   r+  rt   rW  Ú
can_chooser   r   r   rX   }  s   zvmmHostStorage._vol_selected_cbc                 C   s   |j dkrd S | j |¡ d S )Nr   )ÚbuttonrL   Úpopup_at_pointer)r2   r+  Úeventr   r   r   rW   „  s   
z!vmmHostStorage._vol_popup_menu_cbc                 C   rN  )Nr#   rO  rQ  r   r   r   rZ   Š  rR  z!vmmHostStorage._cancel_clicked_cbc                 C   s   |   |¡ d S r-   )rØ   rÑ   r   r   r   r    rR  zvmmHostStorage._pool_changed_cbc                 C   ó   |   ¡  d S r-   )ra   )r2   rE   r   r   r   rd     r?  z%vmmHostStorage._conn_state_changed_cbc                 C   r^  r-   )r`   r*  r   r   r   rc   “  r?  z%vmmHostStorage._conn_pools_changed_cbc                 C   r^  r-   ©rÕ   )r2   Ú	selectionr   r   r   r¯   –  r?  z vmmHostStorage._pool_selected_cbc                 C   r^  r-   r_  rQ  r   r   r   r‹   ™  r?  z*vmmHostStorage._xmleditor_xml_requested_cbc                 C   r^  r-   r_  rQ  r   r   r   rŒ   œ  r?  z&vmmHostStorage._xmleditor_xml_reset_cbr-   )NN)1Ú__name__Ú
__module__Ú__qualname__r
   Ú	RUN_FIRSTr–   Ú__gsignals__rD   rj   rk   rx   r_   rÃ   rÅ   ra   rÏ   rÒ   rØ   r÷   rÊ   rÕ   r`   rÁ   rR   rS   rQ   rT   rU   r“   rY   rV   r.   r?   rù   r‰   r[   r\   r]   r:  r^   rX   rW   rZ   r  rd   rc   r¯   r‹   rŒ   r   r   r   r   r    8   s^    

ý
6
^( :		

	r    N),Úgi.repositoryr   r   r   Úvirtinstr   r   Úlibr   Úasyncjobr	   Ú	baseclassr
   Ú
createpoolr   Ú	createvolr   Úobject.storagepoolr   Ú	xmleditorr   ÚlistÚrangeÚEDIT_POOL_IDSr@   rB  r|   r  r  rž   rs   r¢   r¤   r¥   rŸ   r  rÔ   r«   r¬   r­   rê   rë   r   r    r   r   r   r   Ú<module>   sH   
üúý	