Skip to content
This repository was archived by the owner on Jan 16, 2024. It is now read-only.

Commit 5cb9f3a

Browse files
committed
F #248: Restart syslog on hostname change
Closes #248
1 parent bc0743f commit 5cb9f3a

3 files changed

Lines changed: 39 additions & 15 deletions

File tree

src/etc/init.d/one-context##apk.one

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ name="OpenNebula contextualization"
2121
depend() {
2222
use one-context-local net
2323
before sshd
24-
use logger
24+
after logger
2525
keyword -stop -shutdown
2626
}
2727

src/etc/init.d/one-context-local##apk.one

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
# See the License for the specific language governing permissions and #
1616
# limitations under the License. #
1717
#--------------------------------------------------------------------------- #
18-
#
18+
1919
name="OpenNebula pre-networking contextualization"
2020

2121
depend() {
2222
need localmount udev udev-trigger udev-settle
2323
before net
24-
use logger
24+
after logger
2525
keyword -stop -shutdown
2626
}
2727

src/etc/one-context.d/net-15-hostname

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,53 @@ else
2323
SED_I="sed -i''"
2424
fi
2525

26+
# Detects suitable running syslog service and restarts it
27+
# to propagate the changed hostname into the logs
28+
# (otherwise old or default value remains until reboot)
29+
function restart_syslog() {
30+
for _name in syslog syslogd rsyslog; do
31+
if LANG=C systemctl is-active "${_name}" >/dev/null 2>&1; then
32+
systemctl restart "${_name}" && return
33+
elif service "${_name}" status >/dev/null 2>&1; then
34+
service "${_name}" restart && return
35+
fi
36+
done
37+
}
38+
2639
function set_hostname() {
27-
local hostname=$1
40+
local _hostname=$1
41+
42+
# remember currently set hostname to detect a change
43+
local _old_hostname
44+
_old_hostname=$(hostname)
2845

2946
if [ -d /run/systemd/system/ ] && hostnamectl status >/dev/null 2>/dev/null; then
30-
hostnamectl set-hostname --static "${hostname}"
47+
hostnamectl set-hostname --static "${_hostname}"
3148
else
3249
if [ -f /etc/sysconfig/network ]; then
3350
eval "${SED_I} '/^HOSTNAME=.*$/d' /etc/sysconfig/network"
34-
echo "HOSTNAME=${hostname}" >>/etc/sysconfig/network
51+
echo "HOSTNAME=${_hostname}" >>/etc/sysconfig/network
3552
elif [ "${_kernel}" = 'FreeBSD' ]; then
36-
sysrc hostname="${hostname}"
53+
sysrc hostname="${_hostname}"
3754
else
38-
echo "${hostname}" >/etc/hostname
55+
echo "${_hostname}" >/etc/hostname
3956
fi
4057

41-
hostname "${hostname}"
58+
hostname "${_hostname}"
59+
fi
60+
61+
# restart syslog if actual hostname changed
62+
if [ "${_old_hostname}" != "$(hostname)" ]; then
63+
restart_syslog
4264
fi
4365
}
4466

4567
function set_domainname() {
46-
domain=$1
68+
local _domain=$1
69+
70+
touch /etc/resolv.conf
4771
eval "${SED_I} -e '/^domain .*/d' /etc/resolv.conf"
48-
echo "domain ${domain}" >>/etc/resolv.conf
72+
echo "domain ${_domain}" >>/etc/resolv.conf
4973
}
5074

5175
function get_first_ip() {
@@ -131,17 +155,17 @@ if [ -n "${name}" ]; then
131155
domain=''
132156
fi
133157

158+
if [ -n "${domain}" ]; then
159+
set_domainname "${domain}"
160+
fi
161+
134162
# FreeBSD
135163
if [ "${_kernel}" = 'FreeBSD' ]; then
136164
set_hostname "${name}"
137165
else
138166
set_hostname "${hostname}"
139167
fi
140168

141-
if [ -n "${domain}" ]; then
142-
set_domainname "${domain}"
143-
fi
144-
145169
if [ -n "${DNS_HOSTNAME}" ]; then
146170
host_ip=$first_ip
147171
else

0 commit comments

Comments
 (0)