o
    AVb®  ã                   @   sh   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 G d	d
„ d
eƒZdS )é    )Úlogé   )Úuiutil)ÚvmmGObjectUI)Ú	vmmEngine)Ú	Sparkline)ÚvmmHostNets)ÚvmmHostStoragec                   @   s¢   e Zd Zedd„ ƒZdd„ Zdd„ Zd&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S )'ÚvmmHostc              
   C   sŠ   z"|  ¡ }| jd u ri | _|| jvrt|ƒ| j|< | j|  ¡  W d S  tyD } z|s-‚ |j tdƒt|ƒ ¡ W Y d }~d S d }~ww )NzError launching host dialog: %s)	Úget_uriÚ
_instancesr
   ÚshowÚ	ExceptionÚerrÚshow_errÚ_Ústr)ÚclsÚ	parentobjÚconnÚuriÚe© r   ú+/usr/share/virt-manager/virtManager/host.pyÚshow_instance   s   

ÿ€ýzvmmHost.show_instancec                 C   sþ   t  | dd¡ || _| j ¡ \}}|dkrd}|dkrd}| j ||¡ d | _d | _d | _|  	¡  d | _
|  ¡  d | _|  ¡  | j | j| j| j| j| j| j| j| jdœ¡ | j d| j¡ | j d| j¡ |  ¡  |  ¡  |  d	¡ | j ¡ ¡ |  ¡  d S )
Nzhost.uizvmm-hostr   i   iX  )Ú"on_menu_file_view_manager_activateÚon_menu_file_quit_activateÚon_menu_file_close_activateÚon_vmm_host_delete_eventÚon_vmm_host_configure_eventÚon_host_page_switchÚon_overview_name_changedÚon_config_autoconnect_toggledzstate-changedzresources-sampledúconfig-autoconnect) r   Ú__init__r   Úget_details_window_sizeÚtopwinÚset_default_sizeÚ_window_sizeÚ_cpu_usage_graphÚ_memory_usage_graphÚ_init_conn_stateÚ_storagelistÚ_init_storage_stateÚ	_hostnetsÚ_init_net_stateÚbuilderÚconnect_signalsÚ_view_manager_cbÚ_exit_app_cbÚcloseÚ_window_resized_cbÚ_page_changed_cbÚ_overview_name_changed_cbÚ_autoconnect_toggled_cbÚconnectÚ_conn_state_changed_cbÚ_conn_resources_sampled_cbÚ_refresh_resourcesÚ_refresh_conn_stateÚwidgetÚ
set_activeÚget_autoconnectÚ_cleanup_on_conn_removed)Úselfr   ÚwÚhr   r   r   r$   "   sD   ÷
ÿzvmmHost.__init__c                 C   s8   t  d| j¡ |  ¡ }| j ¡  |rd S t ¡  ¡  d S )NzShowing host details: %s)	r   Údebugr   Ú
is_visibler&   Úpresentr   Úget_instanceÚincrement_window_counter)rB   Úvisr   r   r   r   T   s   
zvmmHost.showNc                 C   s<   |}|}t  d| j¡ |  ¡ sd S | j ¡  t ¡  ¡  dS )NzClosing host window for %sr   )	r   rE   r   rF   r&   Úhider   rH   Údecrement_window_counter)rB   ÚsrcÚeventÚdummyr   r   r   r4   ]   s   
zvmmHost.closec                 C   s^   | j r
| jj| j Ž  d | _| j ¡  d | _| j ¡  d | _| j ¡  d | _| j ¡  d | _d S ©N)	r(   r   Úset_details_window_sizer,   Úcleanupr.   r)   Údestroyr*   ©rB   r   r   r   Ú_cleanupi   s   




zvmmHost._cleanupc                 C   ó,   t | j| j| jƒ| _|  d¡ | jj¡ d S )Nz	net-align)r   r   r0   r&   r.   r>   ÚaddÚtop_boxrT   r   r   r   r/   €   ó   zvmmHost._init_net_statec                 C   rV   )Nzstorage-align)r	   r   r0   r&   r,   r>   rW   rX   rT   r   r   r   r-   „   rY   zvmmHost._init_storage_statec                 C   s˜   | j  ¡ }| j  ¡ }|  d¡ |¡ |  d¡ |¡ tƒ | _| j d¡ | j 	¡  |  d¡ 
| j¡ tƒ | _| j d¡ | j 	¡  |  d¡ 
| j¡ d S )Nzoverview-urir#   Tzperformance-cpu-alignzperformance-memory-align)r   r   r@   r>   Úset_textr?   r   r)   Úset_hexpandr   rW   r*   )rB   r   Úautor   r   r   r+   ˆ   s   



zvmmHost._init_conn_statec                 C   sœ   t  | j ¡ ¡}t  | j ¡ ¡}| j ¡ }| j ¡ }| ¡  | ¡  |  d¡ 	d| j 
¡  ¡ |  d¡ 	tdƒ||dœ ¡ | j d|¡ | j d|¡ d S )Nzperformance-cpuz%d %%zperformance-memoryz%(currentmem)s of %(maxmem)s)Ú
currentmemÚmaxmemÚ
data_array)r   Ú
pretty_memr   Ústats_memoryÚhost_memory_sizeÚhost_cpu_time_vectorÚstats_memory_vectorÚreverser>   rZ   Úhost_cpu_time_percentager   r)   Úset_propertyr*   )rB   Ú	vm_memoryÚhost_memoryÚ
cpu_vectorÚmemory_vectorr   r   r   r<   ž   s    

ÿ
ÿÿzvmmHost._refresh_resourcesc                 C   sl   | j  ¡ }| j tdƒd| j  ¡ i ¡ |  d¡ ¡ s&|  d¡ | j  ¡ ¡ |r*d S | j	 
¡  | j 
¡  d S )Nz#%(connection)s - Connection DetailsÚ
connectionúoverview-name)r   Ú	is_activer&   Ú	set_titler   Úget_pretty_descr>   Ú	has_focusrZ   r.   r4   r,   )rB   Úconn_activer   r   r   r=   °   s   
ÿÿ
zvmmHost._refresh_conn_statec                 C   s   ddl m} | | ¡ ¡  d S )Nr   )Ú
vmmManager)Úmanagerrs   rH   r   )rB   rM   rs   r   r   r   r2   Ã   s   zvmmHost._view_manager_cbc                 C   s   t  ¡  ¡  d S rP   )r   rH   Úexit_app©rB   rM   r   r   r   r3   Ç   s   zvmmHost._exit_app_cbc                 C   s   |   ¡ sd S | j ¡ | _d S rP   )rF   r&   Úget_sizer(   )rB   rM   rN   r   r   r   r5   Ê   s   zvmmHost._window_resized_cbc                 C   s   |   d¡}| j | ¡ ¡ d S )Nrm   )r>   r   Úset_config_pretty_nameÚget_textrv   r   r   r   r7   Ï   s   
z!vmmHost._overview_name_changed_cbc                 C   s   | j  | ¡ ¡ d S rP   )r   Úset_autoconnectÚ
get_activerv   r   r   r   r8   Ó   s   zvmmHost._autoconnect_toggled_cbc                 C   s0   |dkr| j  ¡  d S |dkr| j ¡  d S d S )Nr   é   )r.   Úrefresh_pager,   )rB   rM   ÚchildÚpagenumr   r   r   r6   Ö   s
   ÿzvmmHost._page_changed_cbc                 C   ó   |   ¡  d S rP   )r=   ©rB   r   r   r   r   r:   Ü   ó   zvmmHost._conn_state_changed_cbc                 C   r€   rP   )r<   r   r   r   r   r;   ß   r‚   z"vmmHost._conn_resources_sampled_cb)NN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r$   r   r4   rU   r/   r-   r+   r<   r=   r2   r3   r5   r7   r8   r6   r:   r;   r   r   r   r   r
      s(    
2
	r
   N)Úvirtinstr   Úlibr   Ú	baseclassr   Úenginer   Úlib.graphwidgetsr   Úhostnetsr   Úhoststorager	   r
   r   r   r   r   Ú<module>   s   