| Server IP : 162.241.219.206 / Your IP : 216.73.216.30 Web Server : Apache System : Linux box5669.bluehost.com 5.14.0-687.15.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jun 11 08:51:45 EDT 2026 x86_64 User : signavd5 ( 2863) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3.9/site-packages/cloudinit/sources/__pycache__/ |
Upload File : |
a
-@=j4- � @ s� d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl m
Z
d dlmZm
Z
d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZ e �e�ZG dd� d�ZG d
d� dej�Zdd� Zdd� Zdd� Zeej ej!ffgZ"dd� Z#dS )� N)�suppress)�gaierror�getaddrinfo� inet_ntoa)�pack)�sources�subp)�
url_helper)�util)�dhcp)�NoDHCPLeaseError)�ec2c @ s( e Zd ZdZdd� Zdd� Zdd� 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 �J/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceCloudStack.py�__init__, s z'CloudStackPasswordServerClient.__init__c C s: t � ddddddddd d
�|�d�| j�g�\}}|�� S )NZwgetz--quietz--tries�3z --timeoutZ20z--output-document�-z--headerzDomU_Request: {0}z{0}:8080)r �formatr �strip)r Zdomu_request�output�_r r r �_do_request/ s
��z*CloudStackPasswordServerClient._do_requestc C s4 | � d�}|dv rd S |dkr&td��| � d� |S )NZsend_my_password)� �saved_passwordZbad_requestz-Error when attempting to fetch root password.r )r �RuntimeError)r �passwordr r r �get_passwordD s
z+CloudStackPasswordServerClient.get_passwordN)�__name__�
__module__�__qualname__�__doc__r r r r r r r r s r c sf e Zd ZdZdZdZdd� Zdd� Zd� fd d
� Zdd� Z d
d� Z
dd� Zdd� Ze
dd� �Z� ZS )�DataSourceCloudStackZ
CloudStack�x �2 c C sd t j�| |||� tj�|jd�| _d| _|| _t | j�| _
| j
sJtd��d| j
� d�| _i | _
d S )N�csZlatestzNo virtual router found!zhttp://�/)r �
DataSourcer �os�path�join�seed_dir�api_ver�distro�get_vr_address�vr_addrr �metadata_address�cfg)r Zsys_cfgr0 �pathsr r r r V s zDataSourceCloudStack.__init__c
C s� t �d� dD ]}t�|�}|r|�� S qt �d� ttj��< t�� �| j d�}|rp|�� W d � S W d � n1 s�0 Y t �d| j j
j� z.| j j
�| j j
�}|�d�}|r�|�� W S W n tttfy� Y n0 t �d� dS ) z�Try obtaining a "domain-name" DHCP lease parameter:
- From systemd-networkd lease (case-insensitive)
- From ISC dhclient
- From dhcpcd (ephemeral)
- Return empty string if not found (non-fatal)
z.Try obtaining domain name from networkd leases)Z
DOMAINNAMEZDomain�domain-namezHCould not obtain FQDN from networkd leases. Falling back to ISC dhclientr6 NzBCould not obtain FQDN from ISC dhclient leases. Falling back to %sz7No domain name found in any DHCP lease; returning emptyr )�LOG�debugr �networkd_get_option_from_leasesr r �NoDHCPLeaseMissingDhclientError�IscDhclient�get_key_from_latest_leaser0 �dhcp_client�client_name�get_newest_lease�fallback_interface�getr �FileNotFoundError�AttributeError)r �key�
domainnameZdomain_name�latest_leaser r r �_get_domainnamed s:
��4��
z$DataSourceCloudStack._get_domainnameFc sn t � �|||�}|rjd|jvrjt�d� | �� }|r^|j� d|� �}t�d|� t�||j�S t�d|� |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) �super�get_hostname�hostnamer7 r8 rG r ZDataSourceHostnameZ
is_default)r ZfqdnZ
resolve_ipZ
metadata_onlyrK rE �� __class__r r rJ � s
�z!DataSourceCloudStack.get_hostnamec C s~ | � � }|jdkrdS t�| jd�g}t�� }tj||j|jt j
d�\}}|r\t �d|� nt �d|t
t�� | �� t|�S )Nr Fzlatest/meta-data/instance-id)�urlsZmax_wait�timeoutZ status_cbzUsing metadata source: '%s'z>Giving up on waiting for the metadata from %s after %s seconds)Zget_url_paramsZmax_wait_seconds�uhelpZcombine_urlr3 �time� monotonicZwait_for_urlZtimeout_secondsr7 Zwarningr8 Zcritical�int�bool)r Z
url_paramsrN �
start_time�urlZ _responser r r �wait_for_metadata_service� s,
���
�z.DataSourceCloudStack.wait_for_metadata_servicec C s | j S r )r4 �r r r r �get_config_obj� s z#DataSourceCloudStack.get_config_objc C s i }t j|| jd d�r>|d | _|d | _t�d| j� dS z�| �� sNW dS t� � }t
�| j| j
�| _t
�| j| j
�| _t�dtt� � | �� t| j�}z|�� }W n" ty� t �td | j� Y n0 |r�d|d
did�| _W dS t�y t �td| j
� Y dS 0 d S )
Nr) )�basez user-dataz meta-dataz%Using seeded cloudstack data from: %sTFz)Crawl of metadata service took %s secondsz/Failed to fetch password from virtual router %sZexpire)Z
ssh_pwauthr Zchpasswdz(Failed fetching from metadata service %s)r
Zread_optional_seedr. Zuserdata_raw�metadatar7 r8 rW rQ rR r
Zget_instance_userdatar/ r3 Zget_instance_metadatarS r r2 r � ExceptionZlogexcr4 )r Zseed_retrU Zpassword_clientZset_passwordr r r � _get_data� sV
���
�
���zDataSourceCloudStack._get_datac C s
| j d S )Nzinstance-id�r[ rX r r r �get_instance_id� s z$DataSourceCloudStack.get_instance_idc C s
| j d S )Nzavailability-zoner^ rX r r r �availability_zone s z&DataSourceCloudStack.availability_zone)FFF)r! r"