-
Notifications
You must be signed in to change notification settings - Fork 7
/
workload-distributor.py
58 lines (48 loc) · 1.78 KB
/
workload-distributor.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
# Copyright 2012 Anton Beloglazov
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
logging.basicConfig(
filename='workload-distributor.log',
format='%(asctime)s %(levelname)-8s %(message)s',
level=logging.DEBUG)
import sys
import os
import bottle
def is_distribution_enabled():
enabled = False
with open('workload-distributor.conf', 'r') as f:
enabled = bool(int(f.read()))
logging.info('Workload distribution enabled: ' +
str(enabled))
return enabled
@bottle.get('/')
def poll():
logging.info('Received a request from %s', bottle.request.remote_addr)
try:
if is_distribution_enabled():
command = 'python2 /home/ubuntu/cpu-load-generator/cpu-load-generator.py -n 1 300 ' + \
'/home/ubuntu/spe-2012-experiments/{0}/{1}'.format(dir, files.pop())
logging.info('Returning: %s', command)
return command
except:
logging.exception('Exception during request processing:')
raise
if len(sys.argv) < 2:
print 'You must specify an argument: a directory containing workload trace files'
sys.exit(1)
dir = sys.argv[1]
files = os.listdir(dir)
logging.info('Starting listening on localhost:8081')
bottle.debug(True)
bottle.run(host='controller', port=8081)