コード例 #1
0
ファイル: injector.py プロジェクト: jcuna/green-crn
        def dynamo_table(name):
            table = Mock()
            table.name = name

            def query(**kwargs):
                if table.name in resources.dynamo:
                    if 'KeyConditionExpression' in kwargs:
                        return {
                            'Items':
                            filter_dynamo(kwargs['KeyConditionExpression'],
                                          resources.dynamo[table.name])
                        }
                return {'Items': []}

            def scan(**kwargs):
                if table.name in resources.dynamo:
                    if 'FilterExpression' in kwargs:
                        return {
                            'Items':
                            list(
                                filter(
                                    lambda x: x[kwargs['FilterExpression'].name
                                                ]['S'] == kwargs[
                                                    'FilterExpression'].value,
                                    resources.dynamo[table.name]))
                        }
                return {'Items': []}

            table.query = query
            table.scan = scan
            return table
コード例 #2
0
ファイル: injector.py プロジェクト: jcuna/green-crn
    def client(self,
               service_name,
               region_name=None,
               api_version=None,
               use_ssl=True,
               verify=None,
               endpoint_url=None,
               aws_access_key_id=None,
               aws_secret_access_key=None,
               aws_session_token=None,
               config=None):
        client = Mock()
        client.name = service_name
        setattr(resources, service_name, client)

        def s3list_objects_v2(Bucket, Prefix):
            parts = Prefix.split('/')
            log_type = parts[0]
            batch = parts[1]
            result = []
            if Bucket in resources.buckets and log_type in resources.buckets[Bucket] and \
                    batch in resources.buckets[Bucket][log_type]:
                for item in resources.buckets[Bucket][log_type][batch]:
                    for obj in list(item.keys()):
                        result.append(obj)
            return {'KeyCount': len(result), 'Data': result}

        def s3put_object(Body, Bucket, Key, ContentType=None):
            parts = Key.split('/')
            log_type = parts[0]
            batch = parts[1]
            update_dict(resources.buckets, Bucket, log_type, batch)
            resources.buckets[Bucket][log_type][batch].append({Key: Body})

        def dynamo_put_item(TableName, Item):
            if TableName not in resources.dynamo:
                resources.dynamo[TableName] = []
            if 'uid' in Item:
                for i in range(len(resources.dynamo[TableName])):
                    if resources.dynamo[TableName][i]['uid']['S'] == Item[
                            'uid']['S']:
                        del resources.dynamo[TableName][i]
            resources.dynamo[TableName].append(Item)

        if client.name == 's3':
            client.list_objects_v2 = s3list_objects_v2
            client.put_object = s3put_object

        if client.name == 'dynamodb':
            client.put_item = dynamo_put_item
            client.create_table = lambda *args, **kwargs: None

        return client