![]() Server : Apache/2.4.52 (Ubuntu) System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 User : www-data ( 33) PHP Version : 8.1.2-1ubuntu2.21 Disable Function : NONE Directory : /lib/python3/dist-packages/cloudinit/sources/__pycache__/ |
o }��f�, � @ 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 e �e�ZG d d� d�ZG dd � d ej�Zdd� Zdd� Zdd� ZeejejffgZ dd� Z!dS )� N)�suppress)�gaierror�getaddrinfo� inet_ntoa)�pack)�sources�subp)� url_helper)�util)�dhcp)�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 �H/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceCloudStack.py�__init__+ � z'CloudStackPasswordServerClient.__init__c C s: t � ddddddddd d �|�d�| j�g�\}}|�� S )N�wgetz--quietz--tries�3z --timeout�20z--output-document�-z--headerzDomU_Request: {0}z{0}:8080)r �formatr �strip)r �domu_request�output�_r r r �_do_request. s ��z*CloudStackPasswordServerClient._do_requestc C s4 | � d�}|dv rd S |dkrtd��| � d� |S )N�send_my_password)� �saved_password�bad_requestz-Error when attempting to fetch root password.r! )r �RuntimeError)r �passwordr r r �get_passwordC s z+CloudStackPasswordServerClient.get_passwordN)�__name__� __module__�__qualname__�__doc__r r r% r r r r r s r c sl e Zd ZdZdZdZdd� Zdd� Z d� fd d � Zdd� Z d d� Z dd� Zdd� Ze dd� �Z� ZS )�DataSourceCloudStack� CloudStack�x �2 c C sd t j�| |||� tj�|jd�| _d| _|| _t | j�| _ | j s%td��d| j � d�| _i | _ d S )N�cs�latestzNo virtual router found!zhttp://�/)r � DataSourcer �os�path�join�seed_dir�api_ver�distro�get_vr_address�vr_addrr# �metadata_address�cfg)r �sys_cfgr7 �pathsr r r r U s zDataSourceCloudStack.__init__c C s� t �d� t�d�}|r|S t �d� ttj�� t�� �| jd�}|r-|W d � S W d � n1 s7w Y t �d| jj j � tt�� | jj �| jj �}|�d�pYd}|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)�LOG�debugr �networkd_get_option_from_leasesr �NoDHCPLeaseMissingDhclientError�IscDhclient�get_key_from_latest_leaser7 �dhcp_client�client_name�FileNotFoundError�get_newest_lease�fallback_interface�get)r � domainname�domain_name�latest_leaser r r �_get_domainnamec s: ����� � � z$DataSourceCloudStack._get_domainnameFc sn t � �|||�}|r5d|jvr5t�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�hostnamer? r@ rN r �DataSourceHostname� is_default)r �fqdn� resolve_ip� metadata_onlyrR rK �� __class__r r rQ � s �z!DataSourceCloudStack.get_hostnamec C s� | � � }|jdkrdS t�| jd�g}t�� }tj||j|jt j d�\}}|r1t �d|� t|�S t �d|t t�� | �� t|�S )Nr Fzlatest/meta-data/instance-id)�urls�max_wait�timeout� status_cbzUsing metadata source: '%s'z>Giving up on waiting for the metadata from %s after %s seconds)�get_url_params�max_wait_seconds�uhelp�combine_urlr: �time� monotonic�wait_for_url�timeout_secondsr? �warningr@ �critical�int�bool)r � url_paramsrZ � start_time�url� _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_objc C s i }t j|| jd d�r|d | _|d | _t�d| j� dS zV| �� s'W dS t� � }t �| j| j �| _t �| j| j �| _t�dtt� � | �� t| j�}z|�� }W n tyg t �td | j� Y W dS w |rsd|d did�| _W dS ty� t �td| j � Y dS w ) Nr0 )�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 %s�expire)� ssh_pwauthr$ �chpasswdz(Failed fetching from metadata service %s)r �read_optional_seedr5 �userdata_raw�metadatar? r@ rn rb rc r �get_instance_userdatar6 r: �get_instance_metadatarh r r9 r% � Exception�logexcr; )r �seed_retrk �password_client�set_passwordr r r � _get_data� s\ ��� ������zDataSourceCloudStack._get_datac C � | j d S )Nzinstance-id�rw ro r r r �get_instance_id� r z$DataSourceCloudStack.get_instance_idc C r� )Nzavailability-zoner� ro r r r �availability_zone� s z&DataSourceCloudStack.availability_zone)FFF)r&