o
    b                     @   sh   d dl mZmZmZ G dd deZG dd deZG dd deZG dd	 d	eZG d
d deZdS )   )
XMLBuilderXMLPropertyXMLChildPropertyc                   @      e Zd ZdZedZdS )_InitArginitarg.N)__name__
__module____qualname__XML_NAMEr   val r   r   -/usr/share/virt-manager/virtinst/domain/os.pyr   
       r   c                   @   s    e Zd ZdZedZedZdS )_InitEnvinitenv./@namer   N)r	   r
   r   r   r   namevaluer   r   r   r   r      s    r   c                   @   r   )_BootDevicebootz./@devN)r	   r
   r   r   r   devr   r   r   r   r      r   r   c                   @   s,   e Zd ZdZddgZedddZedZdS )	_FirmwareFeaturefeatureenabledr   z
./@enabledTis_yesnor   N)r	   r
   r   r   _XML_PROP_ORDERr   r   r   r   r   r   r   r      s
    r   c                   @   s  e Zd ZdZdZdZdZdZeeeeg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"Zg 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 d-d. Z!d/d0 Z"e#e!e"Z$e%e&Z'ed1Z(e%e)d2d3Z*ed4d)d5Z+ed6Z,ed7d)d*Z-ed8d)d9Z.ed:d)d*Z/ed;d)d9Z0ed<Z1ed=d)d5Z2ed>d)d5Z3ed?Z4ed@d)d5Z5edAd)d5Z6edBZ7edCZ8e%e9Z:e%e;Z<edDZ=edEZ>edFZ?dGdH Z@dIdJ ZAdKS )LDomainOsz6
    Class for generating boot device related XML
    hdcdromfdnetworkc                 C   
   | j dkS )Nhvmos_typeselfr   r   r   is_hvm-      
zDomainOs.is_hvmc                 C   s
   | j dv S )N)xenlinuxr&   r(   r   r   r   is_xenpv/   r+   zDomainOs.is_xenpvc                 C   r$   )Nexer&   r(   r   r   r   is_container1   r+   zDomainOs.is_containerc                 C      | j dkp	| j dkS )Nx86_64i686archr(   r   r   r   is_x864      zDomainOs.is_x86c                 C   s   |   o| jod| jv S )Nq35)r6   machiner(   r   r   r   is_q356   s
   zDomainOs.is_q35c                 C   r$   )Narmv7lr4   r(   r   r   r   is_arm32;   r+   zDomainOs.is_arm32c                 C   r$   )Naarch64r4   r(   r   r   r   is_arm64=   r+   zDomainOs.is_arm64c                 C   s   |   p|  S N)r<   r>   r(   r   r   r   is_arm?      zDomainOs.is_armc                 C      |   ot| jdS Nvirt)r@   strr9   
startswithr(   r   r   r   is_arm_machvirtA      zDomainOs.is_arm_machvirtc                 C   r1   )Nppc64ppc64ler4   r(   r   r   r   is_ppc64D   r7   zDomainOs.is_ppc64c                 C   rB   )Npseries)rK   rE   r9   rF   r(   r   r   r   
is_pseriesF   rH   zDomainOs.is_pseriesc                 C   r$   )Ns390xr4   r(   r   r   r   is_s390xI   r+   zDomainOs.is_s390xc                 C   r1   )Nriscv64riscv32r4   r(   r   r   r   is_riscvL   r7   zDomainOs.is_riscvc                 C   rB   rC   )rR   rE   r9   rF   r(   r   r   r   is_riscv_virtN   rH   zDomainOs.is_riscv_virtos)firmwarer'   r5   r9   firmware_featuresloader	loader_roloader_secureloader_typenvramnvram_templateinitinitargsinitenvsinitdirinituser	initgroupkernelinitrdkernel_argsdtbacpi_tbacpi_tb_typebootdevsbootmenu_enablebootmenu_timeoutbios_useserialbios_rebootTimeoutsmbios_modez./typez./type/@archz./type/@machinez./loaderz./loader/@readonlyTr   z./loader/@typez./loader/@securec                 C   s   dd | j D S )Nc                 S   s   g | ]}|j qS r   )r   ).0r   r   r   r   
<listcomp>j   s    z+DomainOs._get_bootorder.<locals>.<listcomp>)ri   r(   r   r   r   _get_bootorderi   rA   zDomainOs._get_bootorderc                 C   s4   | j D ]}| | q|D ]
}| j  }||_qd S r?   )ri   remove_childadd_newr   )r)   newdevsr   dr   r   r   _set_bootorderk   s   

zDomainOs._set_bootorderz./@firmwarez
./firmware)relative_xpathz./nvram)
do_abspathz./nvram/@templatez./bootmenu/@enablez./bootmenu/@timeout)is_intz./bios/@useserialz./bios/@rebootTimeoutz./smbios/@modez./kernelz./initrdz	./cmdlinez./dtbz./acpi/tablez./acpi/table/@typez./initz	./initdirz
./inituserz./initgroupc                 C   sB   dd l }| jD ]}| | q||D ]
}| j }||_qd S )N    )shlexr^   rr   splitrs   r   )r)   	argstringr{   objr   r   r   r   set_initargs_string   s   

zDomainOs.set_initargs_stringc                 C   s2   |   r| js| rd| _d S d| _d S d S d S )Nz
/sbin/initz/bin/sh)r0   r]   is_full_os_container)r)   guestr   r   r   set_defaults   s
   

zDomainOs.set_defaultsN)Br	   r
   r   __doc__BOOT_DEVICE_HARDDISKBOOT_DEVICE_CDROMBOOT_DEVICE_FLOPPYBOOT_DEVICE_NETWORKBOOT_DEVICESr*   r.   r0   r6   r:   r<   r>   r@   rG   rK   rM   rO   rR   rS   r   r   r   r'   r5   r9   rW   rX   rZ   rY   rq   rv   property	bootorderr   r   ri   rU   r   rV   r[   r\   rj   rk   rl   rm   rn   rc   rd   re   rf   rg   rh   r]   r   r^   r   r_   r`   ra   rb   r   r   r   r   r   r   r   "   sv    

r   N)	
xmlbuilderr   r   r   r   r   r   r   r   r   r   r   r   <module>   s   