Edit File: ve_config.cpython-37.opt-1.pyc
B 5/9eS � @ s� d dl mZ d dlZd dlmZ d dlmZ d dlm Z ddl mZmZ ej �ed�Zed Zd aG dd� de�Zddd�Zdd� Zdd� ZdS )� )�absolute_importN)�minidom)� ExpatError)�etree� )� CONFIG_DIR�acquire_lockzve.cfgz.tmp)NNc s e Zd Zd� fdd� Z� ZS )�BadVeConfigException�Nothingc s t t| ��d| � d S )Nz8Unable to parse /etc/container/ve.cfg file, message: %s )�superr �__init__)�self�message)� __class__� �py/clveconfig/ve_config.pyr s zBadVeConfigException.__init__)r )�__name__� __module__�__qualname__r � __classcell__r r )r r r s r Tc C s| t dkr| rt S t� �\ yt�t�}|�d�d }W n$ tttt fk rX t d��Y nX | rf||fa ||fS W dQ R X dS )z� Load xml config from ve.cfg 1. setup lock on file 2. read info 3. remove lock :type use_cache: bool :rtype: tuple[xml.Document, xml.Element] :raises: BadVeConfigException, LockFailedException )NN� lveconfigr zbad ve.cfg fileN)�PARSED_XML_CACHEr �xml�parse�VE_CFG_PATH�getElementsByTagName�OSError�IOErrorr � IndexErrorr )Z use_cacheZ_ve_cfg� _ve_lveconfigr r r �get_xml_config s r c C sZ t � �J yt�t�} | �� S tjk rJ } ztt|���W dd}~X Y nX W dQ R X dS )z� This method works same as get_xml_config, but returns etree object :rtype: etree.ElementTree :raises: BadVeConfigException, LockFailedException N)r r r r ZgetrootZ ParseErrorr �str)Ztree�er r r �get_xml_config_etree; s r# c C s� | � d�d }| |fa| jdddd�}|�dd��dd�}t�|�}|jdd �}|s`td t ��tt d��&}|� |� |�� t� |�� � W d Q R X t�t t� d S )Nr r zutf-8� )�encoding�indentZnewl� � � )r% z"Rejected attempt to write empty %s�wb)r r Ztoprettyxml�replacer ZparseString� Exceptionr �open�VE_CFG_PATH_TMP�write�flush�os�fsync�fileno�rename)Zxml_documentr Z xml_stringZnew_xmlZbuf�fr r r �save_xmlK s r6 )T)Z __future__r r1 Zxml.domr r Zxml.parsers.expatr Zlxmlr Zve_lockr r �path�joinr r. r r, r r r# r6 r r r r �<module> s