3 \me? @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm Z m Z mZmZ ej eZdZdZdgZG dd de jZG dd d eZG d d deZG dd d Zdd Zdd ZdddZdddZdd ZeZee jffgZ dd Z!dS ) N) atomic_helpernetsourcessubputilziid-dsopennebulaZnobodyz context.shc @ sF e Zd ZdZdd Zdd Zdd Zdd Zed d Z dd dZ dS )DataSourceOpenNebulaZ OpenNebulac C s. t jj| ||| d | _tjj|jd| _d S )NZ opennebula)r DataSource__init__seedospathjoinseed_dir)selfZsys_cfgdistropaths r */usr/lib/python3.6/DataSourceOpenNebula.pyr $ s zDataSourceOpenNebula.__init__c C s t jj| }d|| j| jf S )Nz%s [seed=%s][dsmode=%s])r r __str__r dsmode)r rootr r r r ) s zDataSourceOpenNebula.__str__c C s dt i}d }d }t}d| jkr*| jjd}| jg}|jt x|D ]}yLtjj | jrjt || j|d}n(|jdrt jt || jd}tj||}W nZ tk r wDY nF tk r } z |W Y d d }~X n" tjk r tjd| Y nX |rD|}tjd| P qDW |sdS |d } tj| |g} | j|jd | jjdg| _| jtjkrZdS || _|jd| _| | _|jd | _dS )Nzinstance-id parseuser)asuserz/dev)r r z%s was not mountablezfound datasource in %sFmetadataZDSMODEr znetwork-interfacesuserdataT) DEFAULT_IIDDEFAULT_PARSEUSERZds_cfggetr extendfind_candidate_devsr r isdirread_context_disk_dirr startswith functoolspartialr Zmount_cbNonContextDiskDirBrokenContextDiskDirZMountFailedErrorLOGwarningdebugZ mergemanydictZ_determine_dsmoder r ZDSMODE_DISABLEDr networkr Zuserdata_raw) r Zdefaultsresultsr r Z candidatesZcdevZpartially_applied_funcexcZmdr r r _get_data- sT zDataSourceOpenNebula._get_datac C s$ | j | jkrd}nd}d|| jf S )z/Return the subplatform metadata source details.zseed-dirzconfig-diskz%s (%s))r r )r Zsubplatform_typer r r _get_subplatformj s z%DataSourceOpenNebula._get_subplatformc C s | j d k r| j S d S d S )N)r* )r r r r network_configr s z#DataSourceOpenNebula.network_configFc C s. |d kr| j tjkrd}nd}tjj| ||S )NTF)r r ZDSMODE_NETWORKr get_hostname)r ZfqdnZ resolve_ipZ metadata_onlyr r r r0 y s z!DataSourceOpenNebula.get_hostnameN)FFF)__name__ __module____qualname__Zdsnamer r r- r. propertyr/ r0 r r r r r s =r c @ s e Zd ZdS )r% N)r1 r2 r3 r r r r r% s r% c @ s e Zd ZdS )r&