| Index: server/site_linux_server.py
|
| diff --git a/server/site_linux_server.py b/server/site_linux_server.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7e4c1bc1888512a3a123e198f9e14d538036ae5a
|
| --- /dev/null
|
| +++ b/server/site_linux_server.py
|
| @@ -0,0 +1,79 @@
|
| +# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import logging, re, time
|
| +from autotest_lib.client.common_lib import error
|
| +
|
| +class LinuxServer(object):
|
| + """
|
| + Linux Server: A machine which hosts network services.
|
| +
|
| + """
|
| +
|
| + def __init__(self, server, params):
|
| + self.server = server # Server host.
|
| + self.vpn_kind = None
|
| + self.conf = {}
|
| +
|
| + def vpn_server_config(self, params):
|
| + """ Configure & launch the server side of the VPN.
|
| +
|
| + Parameters, in 'params':
|
| +
|
| + kind : required
|
| +
|
| + The kind of VPN which should be configured and
|
| + launched.
|
| +
|
| + Valid values:
|
| +
|
| + openvpn
|
| +
|
| + config: required
|
| +
|
| + The configuration information associated with
|
| + the VPN server.
|
| +
|
| + This is a dict which contains key/value pairs
|
| + representing the VPN's configuration.
|
| +
|
| + The values stored in the 'config' param must all be
|
| + supported by the specified VPN kind.
|
| + """
|
| + self.vpn_server_kill({}) # Must be first. Relies on self.vpn_kind.
|
| +
|
| + self.vpn_kind = params.get('kind', None)
|
| +
|
| + # Read configuration information & create server configuration file.
|
| + #
|
| + # As VPN kinds other than 'openvpn' are supported, and
|
| + # since 'self.conf' is cummulative, perhaps there should be
|
| + # a method which will clear 'self.conf'; different types of
|
| + # VPN will likely not have the same configuration
|
| + # parameters. This is only really needed if a test is
|
| + # written to switch between two differents kinds of VPN.
|
| + for k, v in params.get('config', {}).iteritems():
|
| + self.conf[k] = v
|
| + self.server.run("cat <<EOF >%s\n%s\nEOF\n" %
|
| + ('/tmp/vpn-server.conf', '\n'.join(
|
| + "%s %s" % kv for kv in self.conf.iteritems())))
|
| +
|
| + # Launch specified VPN server.
|
| + if self.vpn_kind is None:
|
| + raise error.TestFail('No VPN kind specified for this test.');
|
| + elif self.vpn_kind == 'openvpn':
|
| + self.server.run("/usr/sbin/openvpn --config /tmp/vpn-server.conf &")
|
| + else:
|
| + raise error.TestFail('(internal error): No config case '
|
| + 'for VPN kind (%s)' % self.vpn_kind)
|
| +
|
| + def vpn_server_kill(self, params):
|
| + """ Kill the VPN server. """
|
| + if self.vpn_kind is not None:
|
| + if self.vpn_kind == 'openvpn':
|
| + self.server.run("pkill /usr/sbin/openvpn")
|
| + else:
|
| + raise error.TestFail('(internal error): No kill case '
|
| + 'for VPN kind (%s)' % self.vpn_kind)
|
| + self.vpn_kind = None;
|
|
|