예제 #1
0
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()
예제 #3
0
    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()
예제 #4
0
    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()