Exemplo n.º 1
0
    def test_set_object_local_id(self):
        """
            Test the method _set_object_local_id(self, obj, local_id)
            Test scenario:
            Set the local_id of the specified object when the pvc_id is none
        """

        obj_id = self.powerVCMapping.id
        self.powerVCMapping.pvc_id = None
        self.powerVCMapping.local_id = None
        self.powerVCMapping.status = None

        self.aMox.StubOutWithMock(session, 'query')
        session.query(model.PowerVCMapping).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'filter_by')
        query.filter_by(id=obj_id).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'one')
        query.one().AndReturn(self.powerVCMapping)

        self.aMox.StubOutWithMock(session, 'merge')
        session.merge(self.powerVCMapping).AndReturn("")

        self.aMox.ReplayAll()
        self.powervcagentdb._set_object_local_id(self.powerVCMapping, 'test')
        self.aMox.VerifyAll()
        self.assertEqual(self.powerVCMapping.status, 'Creating')
        self.assertEqual(self.powerVCMapping.local_id, 'test')
        self.aMox.UnsetStubs()
Exemplo n.º 2
0
    def test_delete_existing_object(self):
        """
            Test the method _delete_object(self, obj) when the object exists
            Test scenario:
            When the data is in the database, the delete operation should
            complete successfully
        """

        self.aMox.StubOutWithMock(session, 'query')
        session.query(model.PowerVCMapping).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'filter_by')
        query.filter_by(id=self.powerVCMapping['id']).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'one')
        query.one().AndReturn(self.powerVCMapping)

        self.aMox.StubOutWithMock(session, 'begin')
        session.begin(subtransactions=True).AndReturn(transaction(None, None))

        self.aMox.StubOutWithMock(session, 'delete')
        returnValue = session.delete(self.powerVCMapping).AndReturn(True)

        self.aMox.ReplayAll()

        self.powervcagentdb._delete_object(self.powerVCMapping)

        self.aMox.VerifyAll()

        self.assertEqual(returnValue, True)

        self.aMox.UnsetStubs()
Exemplo n.º 3
0
    def test_set_object_local_id(self):
        """
            Test the method _set_object_local_id(self, obj, local_id)
            Test scenario:
            Set the local_id of the specified object when the pvc_id is none
        """

        obj_id = self.powerVCMapping.id
        self.powerVCMapping.pvc_id = None
        self.powerVCMapping.local_id = None
        self.powerVCMapping.status = None

        self.aMox.StubOutWithMock(session, 'query')
        session.query(model.PowerVCMapping).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'filter_by')
        query.filter_by(id=obj_id).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'one')
        query.one().AndReturn(self.powerVCMapping)

        self.aMox.StubOutWithMock(session, 'merge')
        session.merge(self.powerVCMapping).AndReturn("")

        self.aMox.ReplayAll()
        self.powervcagentdb._set_object_local_id(self.powerVCMapping, 'test')
        self.aMox.VerifyAll()
        self.assertEqual(self.powerVCMapping.status, 'Creating')
        self.assertEqual(self.powerVCMapping.local_id, 'test')
        self.aMox.UnsetStubs()
Exemplo n.º 4
0
    def test_get_object(self):
        """
            Test the method _get_object() using a sync key
            Test scenario:
            Get the object with sync_key
        """

        obj_type = self.powerVCMapping.obj_type
        sync_key = self.powerVCMapping.sync_key

        self.aMox.StubOutWithMock(session, 'query')
        session.query(model.PowerVCMapping).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'filter_by')
        query.filter_by(obj_type=obj_type, sync_key=sync_key).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'one')
        query.one().AndReturn(self.powerVCMapping)

        self.aMox.ReplayAll()
        returnValue = self.powervcagentdb._get_object(obj_type=obj_type,
                                                      sync_key=sync_key)
        self.aMox.VerifyAll()
        self.assertEqual(returnValue, self.powerVCMapping)
        self.aMox.UnsetStubs()
Exemplo n.º 5
0
    def test_delete_existing_object(self):
        """
            Test the method _delete_object(self, obj) when the object exists
            Test scenario:
            When the data is in the database, the delete operation should
            complete successfully
        """

        self.aMox.StubOutWithMock(session, 'query')
        session.query(model.PowerVCMapping).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'filter_by')
        query.filter_by(id=self.powerVCMapping['id']).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'one')
        query.one().AndReturn(self.powerVCMapping)

        self.aMox.StubOutWithMock(session, 'begin')
        session.begin(subtransactions=True).AndReturn(transaction(None, None))

        self.aMox.StubOutWithMock(session, 'delete')
        returnValue = session.delete(self.powerVCMapping).AndReturn(True)

        self.aMox.ReplayAll()

        self.powervcagentdb._delete_object(self.powerVCMapping)

        self.aMox.VerifyAll()

        self.assertEqual(returnValue, True)

        self.aMox.UnsetStubs()
Exemplo n.º 6
0
    def test_get_object(self):
        """
            Test the method _get_object() using a sync key
            Test scenario:
            Get the object with sync_key
        """

        obj_type = self.powerVCMapping.obj_type
        sync_key = self.powerVCMapping.sync_key

        self.aMox.StubOutWithMock(session, 'query')
        session.query(model.PowerVCMapping).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'filter_by')
        query.filter_by(
            obj_type=obj_type, sync_key=sync_key).AndReturn(query)

        self.aMox.StubOutWithMock(query, 'one')
        query.one().AndReturn(self.powerVCMapping)

        self.aMox.ReplayAll()
        returnValue = self.powervcagentdb._get_object(
            obj_type=obj_type, sync_key=sync_key)
        self.aMox.VerifyAll()
        self.assertEqual(returnValue, self.powerVCMapping)
        self.aMox.UnsetStubs()
Exemplo n.º 7
0
 def resource_info(self, resource):
     with session_scope() as session:
         query = Query(Resource)
         query = query.with_session(session)
         if resource.isnumeric():
             query = query.filter(Resource.id == resource)
         else:
             query = query.filter(Resource.name == resource)
         resource = query.one()
         print(json.dumps(resource.to_dict(), indent=4))
Exemplo n.º 8
0
def get_one_or_else(query: Query,
                    logger: 'Logger',
                    failure_method: 'Callable[[int], None]') -> db.Model:
    try:
        return query.one()
    except MultipleResultsFound as e:
        logger.error(
            "Found multiple while executing %s when one was expected: %s" %
            (query, e, ))
        failure_method(500)
    except NoResultFound as e:
        logger.error("Found none when one was expected: %s" % (e,))
        failure_method(404)
Exemplo n.º 9
0
Arquivo: db.py Projeto: pbehnke/doku
def get_or_404(query: Query, query_type: str = "one"):
    """

    .. todo :: use flask-sqlalchemy's get_or_404 instead

    :param query: The queryset that should be queried. E.g.
        ``session.db.query(Model).filter(something=='Foo')``
    :param query_type: String identifier for method. Either ``one`` or ``all``
    """
    try:
        if query_type == "one":
            return query.one()
        elif query_type == "all":
            return query.all()
        else:
            raise ValueError(f"Unexpected type {query_type}. Allowed types: one, all")
    except NoResultFound:
        raise NotFound()
Exemplo n.º 10
0
    def resource_logs(self, resources=None):
        hooks_dir = os.path.join(app.config["logdir"], "hooks")
        paths = []
        for resource in resources:
            # If the resource was specified by its name instead of its ID
            if not resource.isnumeric():
                with session_scope() as session:
                    query = Query(Resource)
                    query = query.with_session(session)
                    query = query.filter(Resource.name == resource)
                    resource = query.one().id

            # We can't wildcard everything because then `tail' wouldn't
            # discover newly created log files
            suffixes = ["_alloc", "_watch", "_terminate"]
            path = os.path.join(hooks_dir, str(resource).zfill(6))
            paths.extend([path + suffix for suffix in suffixes])

        cmd = ["tail", "-F", "-n+0"] + paths
        subprocess.call(cmd)
Exemplo n.º 11
0
      .params(value=10, name='hello'))

# other option
query.order_by(User.id)
query.distinct()
query.limit()
query.offset()


# emit query and get result #################################

# the select Query instance will not emit a query until the
# following method invoked
query.all()              # fetch all as list
query.first()            # fetch one or None
query.one()              # fetch one or NoResultFound or MultipleResultsFound
query.one_or_none()      # fetch one or None or MultipleResultsFound
query.scalar()           # invokes the one() method and return the first column
result = query[1:3]      # list with limit and offset


# batch operator #########################################
# batch update and delete will emit the query immediately,
# return the number of row that changed.
changed_number = (Query(User)
                  .filter_by(name='a')
                  .update({User.name: 'b'}, synchronize_session=False))

delete_number = Query(User).filter_by(ID=6).delete()

# sub-query ##############################################