def add_all_deployment(): nodes = session.query(models.Node).all() for node in nodes: if node.deployment is None and node.node_roles > 0: deployment = models.Deployment(created_at=datetime.now(), updated_at=datetime.now(), finished_at=None, status="IN QUEUE", name="deployement " + str(node.management_ip)) node.deployment = deployment session.add(node) session.commit() session.close() return {"respone": "Done Add Deployment to Database"}, 202
def add_deployment_to_node(): nodes = session.query(models.Node).all() print("lamtv10") print(len(nodes)) for node in nodes: print(node) deployment = models.Deployment(created_at=datetime.now(), updated_at=datetime.now(), finished_at=None, status='Init', name='deployment_' + str(node.node_display_name), progress='Init') node.deployment = deployment session.add(node) session.commit()
def createDatabase(self): """Create the Required Database Objects""" session = models.meta.Session() arSession = self.Session() #log.setLevel(logging.WARNING) deploymentName = "archRock" houseName = self.houseAddress theDep = session.query(models.Deployment).filter_by(name=deploymentName).first() log.debug("Checking for existing deployment {0}".format(theDep)) if theDep is None: #Create a new deployment theDep = models.Deployment(name=deploymentName) session.add(theDep) session.flush() log.debug("Adding Deployment to database {0}".format(theDep)) #And check for Houses theHouse = session.query(models.House).filter_by(address=houseName).first() log.debug("Checking for house {0}".format(theHouse)) if theHouse is None: theHouse = models.House(address=houseName, deploymentId = theDep.id) session.add(theHouse) session.flush() log.debug("Adding New House {0}".format(theHouse)) self.theHouse = theHouse emptyRoom = session.query(models.RoomType).filter_by(name="Unocupied").first() nodeMap = {} #Temp storage for <ADDDR> <Node> addrMap = {} #We want to setup nodes / Rooms / Locations based on the node_dimension table log.info("Setting Up Nodes") nodeQry = arSession.query(Ar_Node) for item in nodeQry: #Dont bother with the router if item.name == "archrock-router": continue #Check / Create a node if required nodeId = int(item.addr[8:],16) log.debug("{0} {1} {2}".format(item,item.addr,nodeId)) #nodeId = BASE_NODE_ID + item.short_addr theNode = session.query(models.Node).filter_by(id = nodeId).first() if theNode is None: theNode = models.Node(id=nodeId) session.add(theNode) session.flush() log.debug("Creating New Node {0}".format(theNode)) #Next we create a room / Location roomName = item.name if not roomName == "": log.debug("Room Name is {0}".format(roomName)) theRoom = session.query(models.Room).filter_by(name=roomName).first() if theRoom is None: theRoom = models.Room(name=roomName, roomTypeId=emptyRoom.id) log.debug("Creating Room {0}".format(theRoom)) session.add(theRoom) session.flush() #And now we can turn this room into a Location theLocation = session.query(models.Location).filter_by(houseId=theHouse.id, roomId = theRoom.id).first() if theLocation is None: theLocation = models.Location(houseId = theHouse.id, roomId = theRoom.id) session.add(theLocation) log.debug("Creating Location {0}".format(theLocation)) session.flush() #Last thing we create a mapping between the node and the Location nodeMap[item.node_key] = [theNode,theLocation] addrMap[item.addr] = theNode #log.debug(nodeMap) self.nodeMap = nodeMap #We also need to do mapping for sensor types etc #theQry = arSession.query(Source) #Map the Types we are expecting to types from the database sensorTypeMap = {} log.info("Mapping Sensor Types") for sType in ALLOWED_TYPES: theType = session.query(models.SensorType).filter_by(name=sType[1]).first() log.debug("AR: {0} Local {1}".format(sType,theType)) sensorTypeMap[sType[0]] = theType #log.debug(sensorTypeMap) sensorMap = {} sQry = arSession.query(Source) for item in sQry: thisItem = sensorTypeMap.get(item.source,None) if thisItem: sensorMap[item.datasource_key] = sensorTypeMap[item.source] self.sensorMap = sensorMap log.setLevel(logging.DEBUG) log.info("Commtitting Changes") session.flush() session.commit()
def createDeployment(self): """ Create a new deployment and house etc on the Transfer Database """ deploymentName = "archRock" houseName = self.houseName session = models.meta.Session() #Check for deployment theDep = session.query(models.Deployment).filter_by(name=deploymentName).first() log.debug("Checking for existing deployment {0}".format(theDep)) if theDep is None: #Create a new deployment theDep = models.Deployment(name=deploymentName) session.add(theDep) session.flush() log.debug("Adding Deployment to database {0}".format(theDep)) #And check for Houses theHouse = session.query(models.House).filter_by(address=houseName).first() log.debug("Checking for house {0}".format(theHouse)) if theHouse is None: theHouse = models.House(address=houseName, deploymentId = theDep.id) session.add(theHouse) session.flush() log.debug("Adding New House {0}".format(theHouse)) self.theHouse = theHouse #Create a location for this particular node theRoom = session.query(models.Room).filter_by(name="External").first() if theRoom is None: theRoom = models.Room(name="External",roomTypeId=1) session.add(theRoom) session.flush() log.debug("External Room is {0}".format(theRoom)) #theLocation = models.Location(houseId = theHouse.id,roomId = theRoom.id) theLocation = session.query(models.Location).filter_by(houseId=theHouse.id, roomId = theRoom.id).first() log.debug("Checking for existing location {0}".format(theLocation)) if theLocation is None: theLocation = models.Location(houseId = theHouse.id, roomId = theRoom.id) session.add(theLocation) session.flush() self.theLocation = theLocation #Node / Node Type theNode = session.query(models.Node).filter_by(id=118118).first() if theNode is None: theNode = models.Node(id=118118) session.add(theNode) session.flush() log.debug("Node is {0}".format(theNode)) self.theNode = theNode sensorType = session.query(models.SensorType).filter_by(name="Power").first() self.avgType = sensorType log.debug("Sensor is {0}".format(sensorType)) sensorType = session.query(models.SensorType).filter_by(name="Power Min").first() self.minType = sensorType sensorType = session.query(models.SensorType).filter_by(name="Power Max").first() self.maxType = sensorType session.commit()