summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xclient/ipa-client-install3
-rw-r--r--doc/guide/guide.org10
-rw-r--r--ipaplatform/base/tasks.py7
-rw-r--r--ipaplatform/redhat/tasks.py13
-rw-r--r--ipaserver/install/server/install.py10
5 files changed, 16 insertions, 27 deletions
diff --git a/client/ipa-client-install b/client/ipa-client-install
index 05b6b6e0d..4a263b3d0 100755
--- a/client/ipa-client-install
+++ b/client/ipa-client-install
@@ -2525,7 +2525,8 @@ def install(options, env, fstore, statestore):
if options.hostname and not options.on_master:
# skip this step when run by ipa-server-install as it always configures
# hostname
- tasks.backup_and_replace_hostname(fstore, statestore, options.hostname)
+ tasks.backup_hostname(fstore, statestore)
+ tasks.set_hostname(options.hostname)
ntp_srv_servers = []
if not options.on_master and options.conf_ntp:
diff --git a/doc/guide/guide.org b/doc/guide/guide.org
index 6d181559f..2e852a964 100644
--- a/doc/guide/guide.org
+++ b/doc/guide/guide.org
@@ -1039,14 +1039,14 @@ def restore_context_default(filepath):
# version in platform services
restore_context = restore_context_default
-# Default implementation of backup and replace hostname that does nothing
-def backup_and_replace_hostname_default(fstore, statestore, hostname):
+# Default implementation of backup hostname that does nothing
+def backup_hostname_default(fstore, statestore):
return
-# Backup and replace system's hostname
-# Since many platforms have their own way how to store system's hostname, this method must be
+# Backup system's hostname
+# Since many platforms have their own way of handling system's hostname, this method must be
# implemented in platform services
-backup_and_replace_hostname = backup_and_replace_hostname_default
+backup_hostname = backup_hostname_default
from ipapython.platform.SUPPORTED_PLATFORM import *
#+END_SRC
diff --git a/ipaplatform/base/tasks.py b/ipaplatform/base/tasks.py
index c6860ce47..1e687b618 100644
--- a/ipaplatform/base/tasks.py
+++ b/ipaplatform/base/tasks.py
@@ -45,14 +45,11 @@ class BaseTaskNamespace(object):
raise NotImplementedError()
- def backup_and_replace_hostname(self, fstore, statestore, hostname):
+ def backup_hostname(self, fstore, statestore):
"""
Backs up the current hostname in the statestore (so that it can be
restored by the restore_hostname platform task).
- Makes sure that new hostname (passed via hostname argument) is set
- as a new pemanent hostname for this host.
-
No return value expected.
"""
@@ -109,7 +106,7 @@ class BaseTaskNamespace(object):
def restore_hostname(self, fstore, statestore):
"""
Restores the original hostname as backed up in the
- backup_and_replace_hostname platform task.
+ backup_hostname platform task.
"""
raise NotImplementedError()
diff --git a/ipaplatform/redhat/tasks.py b/ipaplatform/redhat/tasks.py
index 8ac88511e..dbe005abb 100644
--- a/ipaplatform/redhat/tasks.py
+++ b/ipaplatform/redhat/tasks.py
@@ -332,22 +332,13 @@ class RedHatTaskNamespace(BaseTaskNamespace):
return result
- def backup_and_replace_hostname(self, fstore, statestore, hostname):
- old_hostname = socket.gethostname()
- try:
- self.set_hostname(hostname)
- except ipautil.CalledProcessError as e:
- root_logger.debug(traceback.format_exc())
- root_logger.error(
- "Failed to set this machine hostname to %s (%s).",
- old_hostname, e
- )
-
+ def backup_hostname(self, fstore, statestore):
filepath = paths.ETC_HOSTNAME
if os.path.exists(filepath):
fstore.backup_file(filepath)
# store old hostname
+ old_hostname = socket.gethostname()
statestore.backup_state('network', 'hostname', old_hostname)
def restore_hostname(self, fstore, statestore):
diff --git a/ipaserver/install/server/install.py b/ipaserver/install/server/install.py
index 1e925595b..946988989 100644
--- a/ipaserver/install/server/install.py
+++ b/ipaserver/install/server/install.py
@@ -651,6 +651,7 @@ def install_check(installer):
options.dm_password = dm_password
options.master_password = master_password
options.admin_password = admin_password
+ options._host_name_overridden = bool(options.host_name)
options.host_name = host_name
options.ip_addresses = ip_addresses
@@ -702,11 +703,10 @@ def install(installer):
print("Please wait until the prompt is returned.")
print("")
- # configure /etc/sysconfig/network to contain the custom hostname
- tasks.backup_and_replace_hostname(fstore, sstore, host_name)
-
- # set hostname (we need both transient and static)
- tasks.set_hostname(host_name)
+ # set hostname (transient and static) if user instructed us to do so
+ if options._host_name_overridden:
+ tasks.backup_hostname(fstore, sstore)
+ tasks.set_hostname(host_name)
if installer._update_hosts_file:
update_hosts_file(ip_addresses, host_name, fstore)