TiledViz
Toggle main menu visibility
Loading...
Searching...
No Matches
create_HPC.py
1
#!/bin/env python3
2
3
import
docker
4
5
import
sys,os
6
import
argparse
7
import
json
8
import
datetime
9
#import glob
10
import
traceback
11
12
errors=sys.stderr
13
14
sys.path.append(os.path.abspath(
'./TVDatabase'
))
15
from
TVDb
import
tvdb
16
17
# from app import models
18
from
TVDb
import
models
19
20
client = docker.from_env()
21
22
projectNAME=
'VMD'
23
sessionNAME=
'testSESSION'
24
jsoninputFile=
'OutputTestfile.json'
25
26
def
parse_args(argv):
27
parser = argparse.ArgumentParser(
28
'From a (users,project,session) get tile_sets, tiles and connections tables and build a session json structure from TiledViz database.'
)
29
parser.add_argument(
'--host'
, default=
'localhost'
,
30
help=
'Database host (default: localhost)'
)
31
parser.add_argument(
'-l'
,
'--login'
, default=
'tiledviz'
,
32
help=
'Database login (default: tiledviz)'
)
33
parser.add_argument(
'-n'
,
'--databasename'
, default=
'TiledViz'
,
34
help=
'Database name (default: TiledViz)'
)
35
parser.add_argument(
'-p'
,
'--projectNAME'
, default=projectNAME,
36
help=
'Project for test (default: '
+projectNAME+
')'
)
37
parser.add_argument(
'-s'
,
'--sessionNAME'
, default=sessionNAME,
38
help=
'Session for test (default: '
+sessionNAME+
')'
)
39
parser.add_argument(
'-t'
,
'--tileset'
, default=
'testVMDcase'
,
40
help=
'TileSet name for test (default: testVMDcase)'
)
41
parser.add_argument(
'-f'
,
'--jsonfile'
, default=jsoninputFile,
42
help=
'Json input file (default: '
+jsoninputFile+
' )'
)
43
44
args = parser.parse_args(argv[1:])
45
return
args
46
47
if
__name__ ==
'__main__'
:
48
args = parse_args(sys.argv)
49
50
metadata, conn, engine, pool, session = tvdb.SQLconnector(args)
51
# for _t in metadata.tables:
52
# print("Table: ", _t)
53
try
:
54
g=open(args.jsonfile,
'r'
)
55
except
Exception:
56
print(
'unable to open '
+args.jsonfile+
' file for reading.'
)
57
errors.write(traceback.format_exc() +
'\n'
)
58
errors.write(
"\n\n"
)
59
exit(2)
60
JsonSession=json.load(g)
61
g.close()
62
63
ThisSession=session.query(models.Sessions).filter(models.Sessions.name == args.sessionNAME).first()
64
ListAllTileSet_ThisSession=ThisSession.tile_sets
65
66
tileset=[ thistileset
for
thistileset
in
ListAllTileSet_ThisSession ]
67
#connection=session.query(models.Connections).filter(id==tileset[0].id_connections)
68
connection=tileset[0].connection
69
user=session.query(models.Users).filter(models.Users.id==connection.id_users).first().name
70
print(
"Session : "
+ThisSession.name+
" \nTileSet : "
+tileset[0].name+
" \nConnection : "
+connection.host_address+
" \nUser : "
+str(user))
71
72
# Build proxy container
73
passproxy=tvdb.passrandom(8).decode(
"utf-8"
,
"ignore"
)
74
containerProxy=client.containers.run(
"alpine-ssh"
, name=
"myproxy"
, command=user+
" \""
+passproxy+
"\" 1002"
, detach=
True
)
75
print(
"We have built container for simulate ssh proxy machine with password '"
+passproxy+
"'."
)
76
77
# Build HPC container
78
passHPC=tvdb.passrandom(8).decode(
"utf-8"
,
"ignore"
)
79
containerHPC=client.containers.run(
"alpine-ssh"
, name=
"myHPC"
, command=user+
" \""
+passHPC+
"\" 1002"
, detach=
True
)
80
print(
"We have built container for simulate HPC machine with password '"
+passHPC+
"'."
)
81
82
# Create connection entry and build container for TiledViz connection to HPC machine
83
passUser=tvdb.passrandom(8).decode(
"utf-8"
,
"ignore"
)
84
containerUser=client.containers.run(
"teracy/ubuntu:16.04-dind-17.06.0-ce"
, name=
"my"
+user, command=
"sshd"
, detach=
True
)
85
print(
"We have built container for user "
+user+
" with password '"
+passUser+
"'."
)
86
print(
"User container name :"
,containerUser.name)
TVConnections
create_HPC.py
Documentation for
TiledViz
$tiledvizversion