/usr/lib/python3/dist-packages/cloudinit/sources/__pycache__
Edit: /usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceCloudStack.cpython-310.pyc (10302B)
o
th3 @ s4 d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl m
Z
d dlmZm
Z
mZmZmZ d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZ d dlmZ e eZdZG d
d dZ G dd dej!Z"G dd de"Z#dd Z$dd Z%dd Z&de'fddZ(e#ej)ffe"ej)ej*ffgZ+dd Z,dS ) N)suppress)gaierrorgetaddrinfo inet_ntoa)pack)dminetperformancesourcessubp)
url_helper)util)dhcp)NoDHCPLeaseError)EphemeralIPNetwork)ec2
CloudStackc @ s6 e Zd ZdZdd Zdd Zejdddd d
ZdS )CloudStackPasswordServerClienta
Implements password fetching from the CloudStack password server.
http://cloudstack-administration.readthedocs.org/
en/latest/templates.html#adding-password-management-to-your-templates
has documentation about the system. This implementation is following that
found at
https://github.com/shankerbalan/cloudstack-scripts/
blob/master/cloud-set-guest-password-debian
c C s
|| _ d S N)virtual_router_address)selfr r H/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceCloudStack.py__init__/
z'CloudStackPasswordServerClient.__init__c C s: t ddddddddd d
|d| jg\}}| S )Nwgetz--quietz--tries3z --timeout20z--output-document-z--headerzDomU_Request: {0}z{0}:8080)r formatr strip)r domu_requestoutput_r r r _do_request2 s
z*CloudStackPasswordServerClient._do_requestzGetting passwordalwayslog_modec C s4 | d}|dv rd S |dkrtd| d |S )Nsend_my_password) saved_passwordbad_requestz-Error when attempting to fetch root password.r* )r$ RuntimeError)r passwordr r r get_passwordG s
z+CloudStackPasswordServerClient.get_passwordN) __name__
__module____qualname____doc__r r$ r timedr. r r r r r # s r c s e Zd ZdZdZdZdZ fddZdd Z d fd d
Z dd Z
d
d Zede
fddZdd Zejddddd Zdd Zedd Z ZS )DataSourceCloudStackFr x 2 c s8 t ||| tj|jd| _d| _i | _d | _d S )Ncslatest) superr ospathjoinseed_dirapi_vercfgvr_addr)r sys_cfgdistropaths __class__r r r Z s
zDataSourceCloudStack.__init__c C s t d td}|r|S t d ttj t | jd}|r-|W d S W d n1 s7w Y t d| jj j
tt | jj | jj
}|dpYd}|W d S 1 sfw Y t d dS )z
Try obtaining a "domain-name" DHCP lease parameter:
- From systemd-networkd lease
- From dhclient lease
z.Try obtaining domain name from networkd leases
DOMAINNAMEzHCould not obtain FQDN from networkd leases. Falling back to ISC dhclientzdomain-nameNzBCould not obtain FQDN from ISC dhclient leases. Falling back to %szNo dhcp leases found)LOGdebugr networkd_get_option_from_leasesr NoDHCPLeaseMissingDhclientErrorIscDhclientget_key_from_latest_leaserB dhcp_clientclient_nameFileNotFoundErrorget_newest_leasefallback_interfaceget)r
domainnamedomain_namelatest_leaser r r _get_domainnamec s:
z$DataSourceCloudStack._get_domainnamec sn t |||}|r5d|jvr5td | }|r/|j d| }td| t||jS td| |S )z
Returns instance's hostname / fqdn
First probes the parent class method.
If fqdn is requested, and the parent method didn't return it,
then attach the domain-name from DHCP response.
.zFQDN requestedzObtained the following FQDN: %szNCould not determine domain name for FQDN. Fall back to hostname as an FQDN: %s) r9 get_hostnamehostnamerG rH rV r
DataSourceHostname
is_default)r fqdn
resolve_ip
metadata_onlyrY rS rD r r rX s
z!DataSourceCloudStack.get_hostnamec C s | }|jdkrdS t| jdg}t }tj||j|jt j
d\}}|r1t d| t|S t d|t
t | t|S )Nr Fzlatest/meta-data/instance-id)urlsmax_waittimeout status_cbzUsing metadata source: '%s'z>Giving up on waiting for the metadata from %s after %s seconds)get_url_paramsmax_wait_secondsuhelpcombine_urlmetadata_addresstime monotonicwait_for_urltimeout_secondsrG warningrH criticalintbool)r
url_paramsr_
start_timeurl _responser r r wait_for_metadata_service s.
z.DataSourceCloudStack.wait_for_metadata_servicec C s | j S r )r? r r r r get_config_obj s z#DataSourceCloudStack.get_config_objreturnc C s t S )z#Check if running on this datasource)is_platform_viabler r r r ds_detect s zDataSourceCloudStack.ds_detectc
C sV i }t j|| jd dr|d | _|d | _td| j dS | jr3t }td| t
| j|}nt }zI|< t
| j}t|trJ|dn|| _| jsTtd d
| j d| _| sj W d W dS | W d W S 1 syw Y W d S ty td| Y dS ty } ztd
t| W Y d }~dS d }~ww )N/)basez user-dataz meta-dataz%Using seeded cloudstack data from: %sTzAttempting DHCP on: %sdhcp-server-identifierzNo virtual router found!zhttp://Fz#Unable to obtain a DHCP lease on %sz$Failed fetching metadata service: %s)r
read_optional_seedr= userdata_rawmetadatarG rH perform_dhcp_setupr find_fallback_nicr rB nullcontextget_vr_address
isinstancedictrR r@ r, rg rt _crawl_metadatar rl Exceptionstr)r seed_retprimary_nicnetwork_contextr@ er r r _get_data sD
(zDataSourceCloudStack._get_datazCrawling metadatar% r&