TiledViz
Loading...
Searching...
No Matches
create_HPC.py
1#!/bin/env python3
2
3import docker
4
5import sys,os
6import argparse
7import json
8import datetime
9#import glob
10import traceback
11
12errors=sys.stderr
13
14sys.path.append(os.path.abspath('./TVDatabase'))
15from TVDb import tvdb
16
17# from app import models
18from TVDb import models
19
20client = docker.from_env()
21
22projectNAME='VMD'
23sessionNAME='testSESSION'
24jsoninputFile='OutputTestfile.json'
25
26def 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
47if __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)