Пример #1
0
 def _add_node(self, data):
     LOG.info('Adding device {0} to DB'.format(data['name']))
     device = Device()
     device.name = data['name']
     device.publicIpAddr = data['addr']
     # TODO: kill this field, make things use publicIpAddr instead
     device.floatingIpAddr = data['addr']
     device.az = data['az']
     device.type = data['type']
     device.pingCount = 0
     device.status = 'OFFLINE'
     device.created = None
     with db_session() as session:
         session.add(device)
         session.commit()
Пример #2
0
    def post(self, body=None):
        """ Creates a new device entry in devices table.
        :param None
        Url:
            POST /devices
        JSON Request Body
        {
            "name":"device name",
            "publicIpAddr":"15.x.x.x",
            "floatingIpAddr":"15.x.x.x",
            "az":2,
            "type":"type descr"
        }

        Returns: dict
        {
            "status": "OFFLINE",
            "updated": "2013-06-06T10:17:19",
            "name": "device name",
            "created": "2013-06-06T10:17:19",
            "loadBalancers": [],
            "floatingIpAddr": "192.1678.98.99",
            "publicIpAddr": "192.1678.98.99",
            "az": 2,
            "type": "type descr",
            "id": 67
        }
        """

        #  Get a new device object
        device = Device()
        device.name = body.name
        device.publicIpAddr = body.publicIpAddr
        device.floatingIpAddr = body.floatingIpAddr
        device.az = body.az
        device.type = body.type
        device.pingCount = 0
        device.status = 'OFFLINE'
        device.created = None

        with db_session() as session:
            # write to database
            session.add(device)
            session.flush()

            #refresh the device record so we get the id back
            session.refresh(device)

            try:
                return_data = DeviceResp()
                return_data.id = device.id
                return_data.name = device.name
                return_data.floatingIpAddr = device.floatingIpAddr
                return_data.publicIpAddr = device.publicIpAddr
                return_data.az = device.az
                return_data.type = device.type
                return_data.created = device.created
                return_data.updated = device.updated
                return_data.status = device.status
                return_data.loadBalancers = []
                session.commit()
                return return_data
            except:
                LOG.exception('Error communicating with load balancer pool')
                errstr = 'Error communicating with load balancer pool'
                session.rollback()
                raise ClientSideError(errstr)