blob: cf0e5d915b462eae9929470af46da7e625af59d8 [file] [log] [blame]
Jeremy Mordkoff6f07e6f2016-09-07 18:56:51 -04001"""
2#
3# Copyright 2016 RIFT.IO Inc
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17
18@file test_start_standby.py
19@brief This test starts the launchpad on a remote VM
20"""
21import argparse
22import sys
23import time
24import os
25import glob
26import subprocess
27import shlex
28import multiprocessing
29
30import rift.auto.session
31import rift.vcs.vcs
32
33def get_manifest_file():
34 artifacts_path = os.environ["RIFT_ARTIFACTS"]
35 manifest_files = glob.glob(artifacts_path + "/manifest*xml")
36 manifest_files.sort(key=lambda x: os.stat(x).st_mtime)
37 return manifest_files[0]
38
39def copy_manifest_to_remote(remote_ip, manifest_file):
40 print ("Copying manifest file {} to remote".format(manifest_file))
41 cmd = "scp {0} {1}:/tmp/manifest.xml".format(manifest_file, remote_ip)
42 print ("Running command: {}".format(cmd))
43 subprocess.check_call(cmd, shell=True)
44
45
46def test_start_lp_remote(remote_ip):
47 rift_root = os.environ.get('HOME_RIFT', os.environ.get('RIFT_ROOT'))
48 rift_install = os.environ.get('RIFT_INSTALL')
49
50 copy_manifest_to_remote(remote_ip, get_manifest_file())
51
52 cmd_template = ("ssh_root {remote_ip} -q -o BatchMode=yes -o "
53 " UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -- "
54 " \"rm -rf /tmp/corosync; cd {rift_install}; {rift_root}/rift-shell -e -- {rift_install}/usr/bin/rwmain -m /tmp/manifest.xml\"").format(
55 remote_ip=remote_ip,
56 rift_root=rift_root,
57 rift_install=rift_install)
58
59 def start_lp(cmd):
60 print ("Running cmd: {}".format(cmd))
61 subprocess.call(shlex.split(cmd))
62
63 print ("Starting launchpad on remote VM: {}".format(cmd_template))
64 p = multiprocessing.Process(target=start_lp, args=(cmd_template,))
65 p.daemon = True
66 p.start()
67 print ("Standby system started")
68 time.sleep(60)
69 pass
70
71
72if __name__ == "__main__":
73 parser = argparse.ArgumentParser(description='Start standby LP')
74 parser.add_argument("--remote-ip", action="store", dest="remote_ip")
75
76 args = parser.parse_args()
77
78 test_start_lp_remote(args.remote_ip)