Skip to content
Snippets Groups Projects
__main__.py 2.39 KiB
Newer Older
Jan Müller's avatar
Jan Müller committed
#!/usr/bin/env python3

import connexion

from access_node import encoder
Simon Oehrl's avatar
Simon Oehrl committed
from flask_cors import CORS
Jan Müller's avatar
Jan Müller committed

from access_node.models.nodes import nodes
Jan Müller's avatar
Jan Müller committed
import psycopg2


def SetupNestDB(postgres_username, postgres_password, port):
Jan Müller's avatar
Jan Müller committed
	con = psycopg2.connect(database="postgres", user=postgres_username,
                       password=postgres_password, host="database", port=str(port))
	print("Database connection opened successfully!")

	cur = con.cursor()
	cur.execute("DROP TABLE IF EXISTS SIMULATION_NODES CASCADE")
	cur.execute("DROP TABLE IF EXISTS MULTIMETERS CASCADE")
	cur.execute("DROP TABLE IF EXISTS GIDS CASCADE")
	cur.execute("DROP TABLE IF EXISTS MULT_PER_GID CASCADE")


	cur.execute('''CREATE TABLE SIMULATION_NODES (
Jan Müller's avatar
Jan Müller committed
      NODE_ID           INT       PRIMARY KEY NOT NULL UNIQUE,
      ADDRESS           VARCHAR(25),
      CURRENT_SIM_TIME  FLOAT);''')

Jan Müller's avatar
Jan Müller committed
      MULTIMETER_ID   INT PRIMARY KEY NOT NULL UNIQUE,
      ATTRIBUTE       CHAR(50) );''')

Jan Müller's avatar
Jan Müller committed
      GID             INT PRIMARY KEY NOT NULL UNIQUE,
      NODE_ID         INT,  
      POPULATION_ID   INT,
      FOREIGN KEY (NODE_ID) REFERENCES SIMULATION_NODES (NODE_ID));''')

Jan Müller's avatar
Jan Müller committed
      GID             INT NOT NULL,
      MULTIMETER_ID   INT NOT NULL,
      PRIMARY KEY (GID,MULTIMETER_ID),
      FOREIGN KEY (GID) REFERENCES GIDS (GID),
      FOREIGN KEY (MULTIMETER_ID) REFERENCES MULTIMETERS (MULTIMETER_ID));''')

	con.commit()
	print("Tables created successfully!\n")

	con.close()
Jan Müller's avatar
Jan Müller committed

def main():
Jan Müller's avatar
Jan Müller committed
	# Connect to the Database and initalize basic Table structure
	SetupNestDB('postgres', 'docker', 5432)
Jan Müller's avatar
Jan Müller committed

	# get info node
	with open('access_node//info_node.json', 'r') as f:
		info = json.load(f)
	nodes.info_node = info['address']

	# get simulation nodes
	node_type = 'nest_simulation'
	nodes.nest_simulation_nodes = requests.get(
		nodes.info_node+'/nodes', params={"node_type": node_type}).json()
	node_type = 'arbor_simulation'
	nodes.arbor_simulation_nodes = requests.get(
		nodes.info_node+'/nodes', params={"node_type": node_type}).json()

	# run acces_node
	app = connexion.App(__name__, specification_dir='./swagger/')
	app.app.json_encoder = encoder.JSONEncoder
	app.add_api('swagger.yaml', arguments={
				'title': 'In-Situ Pipeline REST API'})
	CORS(app.app)
	app.run(port=8080)
Jan Müller's avatar
Jan Müller committed


if __name__ == '__main__':
    main()