summaryrefslogtreecommitdiff
path: root/cloudinit/distros
diff options
context:
space:
mode:
authorhamalq <81582959+hamalq@users.noreply.github.com>2021-04-15 16:45:12 -0700
committerGitHub <noreply@github.com>2021-04-15 18:45:12 -0500
commit45db197cfc7e3488baae7dc1053c45da070248f6 (patch)
tree91b0148c026c619e6f7f9f50064e6d07c1f47fac /cloudinit/distros
parent0d90596b56db5d306125ead08c571fc8d44d528e (diff)
downloadvyos-cloud-init-45db197cfc7e3488baae7dc1053c45da070248f6.tar.gz
vyos-cloud-init-45db197cfc7e3488baae7dc1053c45da070248f6.zip
add prefer_fqdn_over_hostname config option (#859)
the above option allows the user to control the behavior of a distro hostname selection if both short hostname and FQDN are supplied. If `prefer_fqdn_over_hostname` is true the FQDN will be selected as hostname; if false the hostname will be selected LP: #1921004
Diffstat (limited to 'cloudinit/distros')
-rwxr-xr-xcloudinit/distros/__init__.py7
-rw-r--r--cloudinit/distros/freebsd.py7
-rw-r--r--cloudinit/distros/rhel.py11
3 files changed, 12 insertions, 13 deletions
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 220bd11f..8b8a647d 100755
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -79,6 +79,7 @@ class Distro(persistence.CloudInitPickleMixin, metaclass=abc.ABCMeta):
shutdown_options_map = {'halt': '-H', 'poweroff': '-P', 'reboot': '-r'}
_ci_pkl_version = 1
+ prefer_fqdn = False
def __init__(self, name, cfg, paths):
self._paths = paths
@@ -131,6 +132,9 @@ class Distro(persistence.CloudInitPickleMixin, metaclass=abc.ABCMeta):
def get_option(self, opt_name, default=None):
return self._cfg.get(opt_name, default)
+ def set_option(self, opt_name, value=None):
+ self._cfg[opt_name] = value
+
def set_hostname(self, hostname, fqdn=None):
writeable_hostname = self._select_hostname(hostname, fqdn)
self._write_hostname(writeable_hostname, self.hostname_conf_fn)
@@ -259,6 +263,9 @@ class Distro(persistence.CloudInitPickleMixin, metaclass=abc.ABCMeta):
def _select_hostname(self, hostname, fqdn):
# Prefer the short hostname over the long
# fully qualified domain name
+ if util.get_cfg_option_bool(self._cfg, "prefer_fqdn_over_hostname",
+ self.prefer_fqdn) and fqdn:
+ return fqdn
if not hostname:
return fqdn
return hostname
diff --git a/cloudinit/distros/freebsd.py b/cloudinit/distros/freebsd.py
index dde34d41..9659843f 100644
--- a/cloudinit/distros/freebsd.py
+++ b/cloudinit/distros/freebsd.py
@@ -27,12 +27,7 @@ class Distro(cloudinit.distros.bsd.BSD):
pkg_cmd_remove_prefix = ["pkg", "remove"]
pkg_cmd_update_prefix = ["pkg", "update"]
pkg_cmd_upgrade_prefix = ["pkg", "upgrade"]
-
- def _select_hostname(self, hostname, fqdn):
- # Should be FQDN if available. See rc.conf(5) in FreeBSD
- if fqdn:
- return fqdn
- return hostname
+ prefer_fqdn = True # See rc.conf(5) in FreeBSD
def _get_add_member_to_group_cmd(self, member_name, group_name):
return ['pw', 'usermod', '-n', member_name, '-G', group_name]
diff --git a/cloudinit/distros/rhel.py b/cloudinit/distros/rhel.py
index c72f7c17..0c00a531 100644
--- a/cloudinit/distros/rhel.py
+++ b/cloudinit/distros/rhel.py
@@ -50,6 +50,10 @@ class Distro(distros.Distro):
}
}
+ # Should be fqdn if we can use it
+ # See: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/deployment_guide/ch-sysconfig # noqa: E501
+ prefer_fqdn = True
+
def __init__(self, name, cfg, paths):
distros.Distro.__init__(self, name, cfg, paths)
# This will be used to restrict certain
@@ -91,13 +95,6 @@ class Distro(distros.Distro):
}
rhel_util.update_sysconfig_file(out_fn, host_cfg)
- def _select_hostname(self, hostname, fqdn):
- # Should be fqdn if we can use it
- # See: https://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-sysconfig.html#s2-sysconfig-network # noqa
- if fqdn:
- return fqdn
- return hostname
-
def _read_system_hostname(self):
if self.uses_systemd():
host_fn = self.systemd_hostname_conf_fn