-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstart_mesos.py
70 lines (50 loc) · 1.76 KB
/
start_mesos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import argparse
import atexit
import subprocess
import os
import tempfile
# Environment variable names.
MESOS_BIN_PATH = 'MESOS_BIN_PATH'
TEST_NUM_AGENTS = 'TEST_NUM_AGENTS'
# Mesos binary names.
MESOS_MASTER_BIN = 'mesos-master.sh'
MESOS_AGENT_BIN = 'mesos-slave.sh'
def start_master(mesos_bin_path, work_dir):
print 'Starting Mesos master at %s' % work_dir
master = subprocess.Popen([
os.path.join(mesos_bin_path, MESOS_MASTER_BIN),
'--ip=127.0.0.1',
'--work_dir=%s' % work_dir])
assert master.returncode is None
atexit.register(lambda: master.kill())
def start_agent(mesos_bin_path, work_dir, num=1):
print 'Starting Mesos agent %d' % num
agent = subprocess.Popen([
os.path.join(mesos_bin_path, MESOS_AGENT_BIN),
'--master=127.0.0.1:5050',
'--work_dir=%s' % work_dir,
'--ip=127.0.0.%d' % num,
'--hostname=127.0.0.%d' % num])
assert agent.returncode is None
atexit.register(lambda: agent.kill())
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Starts a mock local cluster.')
parser.add_argument(
'-n', type=int, required=True,
help='Number of agents.')
parser.add_argument(
'mesos_bin_path', type=str,
help='Path to the mesos binaries.')
args = parser.parse_args()
if args.n >= 254:
print 'Cannot start more than 254 agents'
exit(1)
work_dir = tempfile.mkdtemp(prefix='inverse-offers')
start_master(args.mesos_bin_path, work_dir)
# You may need to run this beforehand:
# rm -rf /tmp/mesos/meta/slaves/latest
for i in range(args.n):
start_agent(args.mesos_bin_path, work_dir, num=i + 1)
print "Press enter to stop the mock cluster..."
raw_input()