diff options
author | Petr Viktorin <pviktori@redhat.com> | 2012-07-19 09:07:23 -0400 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-08-03 12:09:56 +0200 |
commit | c8abd24ebe612a3a0d415cece508b94a57c636fe (patch) | |
tree | 9aaf37c460e45857e96f19195552729def521816 /ipapython/platform | |
parent | 1be46b322f1fe469cf3cc5e5a77a96b29f8beb7f (diff) | |
download | freeipa.git-c8abd24ebe612a3a0d415cece508b94a57c636fe.tar.gz freeipa.git-c8abd24ebe612a3a0d415cece508b94a57c636fe.tar.xz freeipa.git-c8abd24ebe612a3a0d415cece508b94a57c636fe.zip |
Create /etc/sysconfig/network if it doesn't exist
When the --hostname option is given to ipa-client-install, we
write HOSTNAME to /etc/sysconfig/network. When that file didn't exist,
the installer crashed.
Create the file if it doesn't exist and we need to write to it.
https://fedorahosted.org/freeipa/ticket/2840
Diffstat (limited to 'ipapython/platform')
-rw-r--r-- | ipapython/platform/redhat.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/ipapython/platform/redhat.py b/ipapython/platform/redhat.py index d3c23ab0..3f35cfcc 100644 --- a/ipapython/platform/redhat.py +++ b/ipapython/platform/redhat.py @@ -24,6 +24,8 @@ import os import stat import sys import socket +import stat + from ipapython import ipautil from ipapython.platform import base from ipalib import api @@ -187,10 +189,18 @@ def backup_and_replace_hostname(fstore, statestore, hostname): except ipautil.CalledProcessError, e: print >>sys.stderr, "Failed to set this machine hostname to %s (%s)." % (hostname, str(e)) replacevars = {'HOSTNAME':hostname} - old_values = ipautil.backup_config_and_replace_variables(fstore, - "/etc/sysconfig/network", - replacevars=replacevars) + + filepath = '/etc/sysconfig/network' + if not os.path.exists(filepath): + # file doesn't exist; create it with correct ownership & mode + open(filepath, 'a').close() + os.chmod(filepath, + stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH) + os.chown(filepath, 0, 0) + old_values = ipautil.backup_config_and_replace_variables( + fstore, filepath, replacevars=replacevars) restore_context("/etc/sysconfig/network") + if 'HOSTNAME' in old_values: statestore.backup_state('network', 'hostname', old_values['HOSTNAME']) else: |