3 \me2 @ s d Z ddlZddlZddlZddlZddlmZ ddlmZm Z m Z mZ eje ZG dd de jZG dd deZd#d dZdd Zdd Zd$ddZdd Zdd Zdd Zdd Zdd ZG dd deZee jffee je jfffZdd Z d!d" Z!dS )%zZCloud-Init DataSource for OVF This module provides a cloud-init datasource for OVF data. N)minidom)safeyamlsourcessubputilc @ sL e Zd ZdZdd Zdd Zdd Zdd Zd d Zdd Z e dd ZdS ) DataSourceOVFZOVFc C sF t jj| ||| d | _tjj|jd| _d | _i | _ d| _ d | _d S )NZovf/file://)r r )r DataSource__init__seedospathjoinseed_direnvironmentcfgsupported_seed_starts_network_config)selfsys_cfgdistropaths r #/usr/lib/python3.6/DataSourceOVF.pyr s zDataSourceOVF.__init__c C s t jj| }d|| jf S )Nz%s [seed=%s])r r __str__r )r rootr r r r ' s zDataSourceOVF.__str__c C s g }i }d}d}ddi}t | jj\}}|r^tjj| jj|}t|\}}} || _|j| npdt fdt fg} d }x| D ]\}}| }|rxP qxW |rt|d\}}} || _d|kr|d r|d | _|j| t|dkrd S d |ko|d rp|d } d }x"| j D ]}| j|r|}P qW |s8tjd| | d S tj| d d\}}}tjd | tj||g}|j| tj||g}dj|| _|| _|| _|| _| | _dS )N zinstance-idz iid-dsovfzcom.vmware.guestInfoZisoTznetwork-configr Fseedfromz Seed from %s not supported by %s)ZtimeoutzUsing seeded cache data from %s,)get_ovf_envr r r r r read_ovf_environmentr appendtransport_vmware_guestinfotransport_iso9660r lenr startswithLOGdebugr Zread_seededZ mergemanydictr metadataZuserdata_rawZvendordata_rawr )r foundmdudZvdZdefaultsZseedfilecontentsr r ZnpnameZ transfuncr Z seedfoundprotoZmd_seedr r r _get_data+ s^ zDataSourceOVF._get_datac C s d| j S )Nzovf (%s))r )r r r r _get_subplatformm s zDataSourceOVF._get_subplatformc C s0 d| j krg S | j d }t|tr&|S |gS d S )Nzpublic-keys)r) isinstancelist)r Zpksr r r get_public_ssh_keysp s z!DataSourceOVF.get_public_ssh_keysc C s | j S )N)r )r r r r get_config_obj| s zDataSourceOVF.get_config_objc C s | j S )N)r )r r r r network_config s zDataSourceOVF.network_configN)__name__ __module____qualname__Zdsnamer r r0 r1 r4 r5 propertyr6 r r r r r s Br c @ s e Zd Zdd ZdS )DataSourceOVFNetc C s, t j| ||| tjj|jd| _d| _d S )Nzovf-nethttp://https://)r<