ó oBú]c@sUdZddlZddlmZddlmZdefd„ƒYZd„ZdS(s  Set Hostname ------------ **Summary:** set hostname and fqdn This module handles setting the system hostname and fqdn. If ``preserve_hostname`` is set, then the hostname will not be altered. A hostname and fqdn can be provided by specifying a full domain name under the ``fqdn`` key. Alternatively, a hostname can be specified using the ``hostname`` key, and the fqdn of the cloud wil be used. If a fqdn specified with the ``hostname`` key, it will be handled properly, although it is better to use the ``fqdn`` config key. If both ``fqdn`` and ``hostname`` are set, ``fqdn`` will be used. **Internal name:** ``cc_set_hostname`` **Module frequency:** per instance **Supported distros:** all **Config keys**:: preserve_hostname: fqdn: hostname: iÿÿÿÿN(t write_json(tutiltSetHostnameErrorcBseZdZRS(sÛRaised when the distro runs into an exception when setting hostname. This may happen if we attempt to set the hostname early in cloud-init's init-local timeframe as certain services may not be running yet. (t__name__t __module__t__doc__(((sD/usr/lib/python2.7/site-packages/cloudinit/config/cc_set_hostname.pyR,sc Cshtj|dtƒr)|jd|ƒdStj||ƒ\}}tjj|jdƒdƒ}i}tjj |ƒr’tj tj |ƒƒ}n||j dƒkp¹||j dƒk} | sÓ|jdƒdS|jd||ƒy|j j||ƒWnItk rH} d ||f} tj|| ƒtd | | fƒ‚nXt|i|d6|d6ƒdS( Ntpreserve_hostnamesVConfiguration option 'preserve_hostname' is set, not setting the hostname in module %stdatas set-hostnamethostnametfqdns*No hostname changes. Skipping set-hostnamesSetting the hostname to %s (%s)s%Failed to set the hostname to %s (%s)s%s: %s(Rtget_cfg_option_booltFalsetdebugtget_hostname_fqdntostpathtjoint get_cpathtexistst load_jsont load_filetgettdistrot set_hostnamet ExceptiontlogexcRR( tnametcfgtcloudtlogt_argsRR tprev_fnt prev_hostnamethostname_changedtetmsg((sD/usr/lib/python2.7/site-packages/cloudinit/config/cc_set_hostname.pythandle5s,  ( RRtcloudinit.atomic_helperRt cloudinitRRRR$(((sD/usr/lib/python2.7/site-packages/cloudinit/config/cc_set_hostname.pyt#s