-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVPHOP_NMSLoads.py
66 lines (58 loc) · 2.19 KB
/
VPHOP_NMSLoads.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
import os
import emissary
import soaplib
from soaplib.core.service import soap, rpc, DefinitionBase
from soaplib.core.model.primitive import String, Integer
from soaplib.core.model.clazz import ClassModel
from soaplib.core.server import wsgi
from time import strftime
import shutil
CMD_STR = "./myProcess.sh {input_folder} {output_file}"
class RegisterResponse(ClassModel):
"""Response object holds the commandline execution response"""
statuscode = Integer
command = String
stdout = String
stderr = String
cwd = String
output_file = String
def __init__(self, command=None):
self.command = command
self.cwd = '.'
self.statuscode = 0
self.stdout = ""
self.stderr = "Error: I'm sorry I cannot do that!"
def create_response(out):
if out:
r = RegisterResponse(' '.join(out.command))
r.statuscode = out.status_code
r.stdout = out.std_out
r.stderr = out.std_err
return r
class VPHOP_NMSLoads(DefinitionBase):
@soap(String, String, _returns=RegisterResponse)
def register(self, input_folder, output_path):
output_file = os.path.join(output_path, strftime("VPHOP_NMSLoads_%d_%m_%Y__%H_%M_%S")+'.txt')
command = CMD_STR.format(input_folder=input_folder, output_file=output_file)
shutil.copyfile('./MAT_ROT_ISB_GLOB.txt', os.path.join(output_path, 'MAT_ROT_ISB_GLOB.txt'))
shutil.copyfile('./KP_ISB.txt', os.path.join(output_path, 'KP_ISB.txt'))
try:
out = emissary.envoy.run(command)
r = create_response(out)
r.output_file = output_file
return r
except OSError, e:
pass
r = RegisterResponse(command)
r.statuscode = e.errno
return e.strerror
return r
soap_app = soaplib.core.Application([VPHOP_NMSLoads], 'vphop_nmsloads', name='VPHOP_NMSLoads')
application = wsgi.Application(soap_app)
if __name__=='__main__':
try:
from wsgiref.simple_server import make_server
server = make_server(host='0.0.0.0', port=8082, app=application)
server.serve_forever()
except ImportError:
print "Error: example server code requires Python >= 2.5"