Replace static-routes with udev rules

When host is restarted, static-routes won't be able add route rules
because HIMN isn't brought up. Thus we need to use udev to add
those route rules back. As tested there is time gap between udev is
triggered and HIMN is ready, a 5-sec sleep is added just in case.

Change-Id: Ifa3260107265f400bde2a33640d4da2fc9f32ddf
This commit is contained in:
John Hua 2016-06-02 15:11:45 +08:00
parent e6e2adfd27
commit a28e0bbdc3
2 changed files with 14 additions and 4 deletions

View File

@ -271,6 +271,8 @@ def route_to_compute(endpoints, himn_xs, himn_local, username):
mask
), out)
ssh(himn_xs, username,
'printf "#!/bin/bash\nsleep 5\n" > /etc/udev/scripts/reroute.sh')
endpoint_names = ['storage', 'mgmt']
for endpoint_name in endpoint_names:
endpoint = endpoints.get(endpoint_name)
@ -281,11 +283,19 @@ def route_to_compute(endpoints, himn_xs, himn_local, username):
params = ['route', 'add', '-net', net, 'netmask',
mask, 'gw', himn_local]
ssh(himn_xs, username, *params)
sh = 'echo \'%s\' >> /etc/sysconfig/static-routes' \
% ' '.join(params)
ssh(himn_xs, username, sh)
cmd = (
"printf 'if !(/sbin/route -n | /bin/grep -q {net}); then\n"
"/sbin/route add -net {net} netmask {mask} gw {himn_local};\n"
"fi\n' >> /etc/udev/scripts/reroute.sh"
)
cmd = cmd.format(net=net, mask=mask, himn_local=himn_local)
ssh(himn_xs, username, cmd)
else:
logging.info('%s network ip is missing' % endpoint_name)
ssh(himn_xs, username, 'chmod +x /etc/udev/scripts/reroute.sh')
ssh(himn_xs, username, ('echo \'SUBSYSTEM=="net" ACTION=="add" '
'KERNEL=="xenapi" RUN+="/etc/udev/scripts/reroute.sh"\' '
'> /etc/udev/rules.d/90-reroute.rules'))
def install_suppack(himn, username):

View File

@ -3,7 +3,7 @@ name: fuel-plugin-xenserver
# Human-readable name for your plugin
title: XenServer Plugin
# Plugin version
version: '3.1.0'
version: '3.1.1'
# Description
description: Enable Mirantis OpenStack to integrate with Xenserver
# Required fuel version