3 \�me{ � @ s� U d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl m Z ddlmZm Z ddlmZ d Zd gZddd eeed�ed�ed�ed�ed�geg d�Zee e�Z eje�Zee eedd�dd�ZdS )z)Update Hostname: Update hostname and fqdn� N)�dedent)�util)�Cloud)�Config)� MetaSchema�get_meta_doc)� PER_ALWAYSz�This module will update the system hostname and fqdn. If ``preserve_hostname`` is set ``true``, then the hostname will not be altered. .. note:: for instructions on specifying hostname and fqdn, see documentation for ``cc_set_hostname`` �allZcc_update_hostnamezUpdate HostnamezUpdate hostname and fqdna� # By default: when ``preserve_hostname`` is not specified cloud-init # updates ``/etc/hostname`` per-boot based on the cloud provided # ``local-hostname`` setting. If you manually change ``/etc/hostname`` # after boot cloud-init will no longer modify it. # # This default cloud-init behavior is equivalent to this cloud-config: preserve_hostname: false zh # Prevent cloud-init from updating the system hostname. preserve_hostname: true ze # Prevent cloud-init from updating ``/etc/hostname`` preserve_hostname: true z� # Set hostname to "external.fqdn.me" instead of "myhost" fqdn: external.fqdn.me hostname: myhost prefer_fqdn_over_hostname: true z� # Set hostname to "external" instead of "external.fqdn.me" when # cloud metadata provides the ``local-hostname``: "external.fqdn.me". prefer_fqdn_over_hostname: false )�id�name�title�description�distrosZexamplesZ frequencyZactivate_by_schema_keys)r �cfg�cloud�args�returnc C s� t j|dd�rtjd| � d S t j|dd �}|d k rB|jjd|� t j|dd �}|d k rf|jjd|� t j||�\}}}|r�|dkr�tjd� d S y6tjj |j d�d �} tjd ||� |jj||| � W n& tk r� t j td||� � Y nX d S )NZpreserve_hostnameFzWConfiguration option 'preserve_hostname' is set, not updating the hostname in module %sZprefer_fqdn_over_hostname�create_hostname_fileZ localhostz6Hostname is localhost. Let other services handle this.�datazprevious-hostnamezUpdating hostname to %s (%s)z(Failed to update the hostname to %s (%s))r Zget_cfg_option_bool�LOG�debugZdistroZ set_optionZget_hostname_fqdn�os�path�joinZ get_cpathZupdate_hostname� ExceptionZlogexc) r r r r Z hostname_fqdnr ZhostnameZfqdnZ is_defaultZprev_fn� r �(/usr/lib/python3.6/cc_update_hostname.py�handleV s2 r )�__doc__Zloggingr �textwrapr Z cloudinitr Zcloudinit.cloudr Zcloudinit.configr Zcloudinit.config.schemar r Zcloudinit.settingsr ZMODULE_DESCRIPTIONr �metaZ getLogger�__name__r �str�listr r r r r �<module> s<