install: Call hostnamectl set-hostname only if --hostname option is used

This commit also splits hostname backup and configuration into two separate
functions. This allows us to backup hostname without setting it at the
same time.

https://fedorahosted.org/freeipa/ticket/6071

Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
Petr Spacek
2016-07-28 16:13:55 +02:00
committed by Jan Cholasta
parent a83523e37e
commit 80e544e7a9
5 changed files with 16 additions and 27 deletions

View File

@@ -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()

View File

@@ -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):