o
    >Vb\                     @   s4   d dl Z ddlmZ ddlmZ G dd deZdS )    N   )Device   )XMLPropertyc                   @   s  e Zd ZdZg dZdZdZdZdZdZ	dZ
d	Zd
ZdZedZedZedZedZedZedZedddZedZedZedZedZedZedZedZedZedZedZedZ ed Z!ed!Z"ed"Z#ed#Z$ed$Z%ed%Z&ed&Z'ed'dd(Z(ed)Z)ed*dd(Z*ed+dd(Z+ed,Z,d-d. Z-d/d0 Z.d1d2 Z/e0e.e/Z1d3d4 Z2d5d6 Z3e0e2e3Z4d7d8 Z5d9d: Z6e0e5e6Z7d;d< Z8d=d> Z9d?d@ Z:dAdB Z;dCS )DDeviceFilesystem
filesystem)
_type_prop
accessmodefmodedmodemounttemplatefileblockrammappedsquashloopnbdz./@typez./@accessmodez./@modelz./@multidevsz./@fmodez./@dmodez
./readonlyT)is_boolz./space_hard_limitz./space_soft_limitz./driver/@wrpolicyz./driver/@typez./driver/@formatz./driver/@queuez./driver/@namez./target/@dirz./source/@dirz./source/@namez./source/@filez./source/@devz./source/@usagez./source/@unitsz./source/@poolz./source/@volumez./source/socketz./binary/@pathz./binary/@xattr)is_onoffz./binary/cache/@modez./binary/lock/@posixz./binary/lock/@flockz./binary/sandbox/@modec                 C   sD   | j tjkrdS | j tjkrdS | j tjkrdS | j tjkr dS dS )Nsource_namesource_file
source_devsource_usage
source_dir)typer   TYPE_TEMPLATE	TYPE_FILE
TYPE_BLOCKTYPE_RAMself r#   6/usr/share/virt-manager/virtinst/devices/filesystem.py_type_to_source_propA   s   z%DeviceFilesystem._type_to_source_propc                 C   s   t | |  S N)getattrr%   r!   r#   r#   r$   _get_sourceM   s   zDeviceFilesystem._get_sourcec                 C   s   t | |  |S r&   )setattrr%   r"   valr#   r#   r$   _set_sourceO   s   zDeviceFilesystem._set_sourcec                 C   s   | j S r&   
target_dirr!   r#   r#   r$   _get_targetS   s   zDeviceFilesystem._get_targetc                 C   s
   || _ d S r&   r-   r*   r#   r#   r$   _set_targetU      
zDeviceFilesystem._set_targetc                 C   s
   t | dS Nr   )r'   r!   r#   r#   r$   	_get_typeY   r1   zDeviceFilesystem._get_typec                 C   s0   |   }| j}t| d|}||   kr|| _|S r2   )r%   sourcer)   )r"   r+   old_source_typeold_source_valuenew_typer#   r#   r$   	_set_type[   s   zDeviceFilesystem._set_typec                 C   sN   | j  s
| j  r| jd u s| j| jkrd S tj|s%tt	d| d S )Nz/Filesystem target '%s' must be an absolute path)
connis_qemuis_testr   
TYPE_MOUNTospathisabs
ValueError_)r"   targetr#   r#   r$   validate_targetq   s   
z DeviceFilesystem.validate_targetc                 C   s   | j r| | j  d S d S r&   )rB   rC   r!   r#   r#   r$   validate~   s   zDeviceFilesystem.validatec                 C   s   | j dkrd S | jS )Nvirtiofs)driver_typeMODE_MAPPEDr!   r#   r#   r$   default_accessmode   s   
z#DeviceFilesystem.default_accessmodec                 C   sT   |}| j  s| j  s| j  sd S | jd u r| j| _| jd u r(|  | _d S d S r&   )r9   r:   is_lxcr;   r   r<   r	   rH   )r"   guestignorer#   r#   r$   set_defaults   s   


zDeviceFilesystem.set_defaultsN)<__name__
__module____qualname__XML_NAME_XML_PROP_ORDERr<   r   r   r   r    rG   MODE_SQUASHDRIVER_LOOP
DRIVER_NBDr   r   r	   model	multidevsr
   r   readonlyspace_hard_limitspace_soft_limitdriver_wrpolicyrF   driver_formatdriver_queuedriver_namer.   r   r   r   r   r   source_unitssource_poolsource_volumesource_socketbinary_pathbinary_xattrbinary_cache_modebinary_lock_posixbinary_lock_flockbinary_sandbox_moder%   r(   r,   propertyr4   r/   r0   rB   r3   r8   r   rC   rD   rH   rL   r#   r#   r#   r$   r      sp    


r   )r=   devicer   
xmlbuilderr   r   r#   r#   r#   r$   <module>   s   