Example #1
0
    def sign(self, payload):
        if isinstance(payload, str):  # pragma: nocover
            payload = payload.encode("utf-8")

        b64_payload = base64.b64encode(payload)
        url = urljoin(self.server_url, "/sign/data")
        resp = requests.post(url,
                             auth=self.auth,
                             json=[{
                                 "input": b64_payload.decode("utf-8")
                             }])
        resp.raise_for_status()
        signature_bundle = resp.json()[0]

        # Critical fields must be present, will raise if missing.
        infos = {field: signature_bundle[field] for field in SIGNATURE_FIELDS}
        # Other fields are returned and will be stored as part of the signature.
        # but client won't break if they are missing, so don't raise.
        infos.update(
            **{
                field: signature_bundle[field]
                for field in EXTRA_SIGNATURE_FIELDS
                if field in signature_bundle
            })
        logger.info("Obtained %s response from Autograph %s" %
                    (resp.status_code, signature_bundle["ref"]))
        return infos
Example #2
0
def render_template(template, destination, **kwargs):
    template = os.path.join(HERE, template)
    folder = os.path.dirname(destination)

    if folder and not os.path.exists(folder):
        os.makedirs(folder)

    logger.info("Created config {}".format(os.path.abspath(destination)))

    with codecs.open(template, 'r', encoding='utf-8') as f:
        raw_template = f.read()
        rendered = raw_template.format(**kwargs)
        with codecs.open(destination, 'w+', encoding='utf-8') as output:
            output.write(rendered)
Example #3
0
def delete_collection(env, bucket_id, collection_id):
    registry = env['registry']
    settings = registry.settings
    readonly_mode = asbool(settings.get('readonly', False))

    if readonly_mode:
        message = ('Cannot delete the collection while in readonly mode.')
        logger.error(message)
        return 31

    bucket = '/buckets/{}'.format(bucket_id)
    collection = '/buckets/{}/collections/{}'.format(bucket_id, collection_id)

    try:
        registry.storage.get(collection_id='bucket',
                             parent_id='',
                             object_id=bucket_id)
    except storage_exceptions.RecordNotFoundError:
        logger.error("Bucket '{}' does not exist.".format(bucket))
        return 32

    try:
        registry.storage.get(collection_id='collection',
                             parent_id=bucket,
                             object_id=collection_id)
    except storage_exceptions.RecordNotFoundError:
        logger.error("Collection '{}' does not exist.".format(collection))
        return 33

    deleted = registry.storage.delete_all(collection_id='record',
                                          parent_id=collection,
                                          with_deleted=False)
    if len(deleted) == 0:
        logger.info("No records found for '{}'.".format(collection))
    else:
        logger.info('{} record(s) were deleted.'.format(len(deleted)))

    registry.storage.delete(collection_id='collection',
                            parent_id=bucket,
                            object_id=collection_id,
                            with_deleted=False)
    logger.info("'{}' collection object was deleted.".format(collection))

    record = ('/buckets/{bucket_id}'
              '/collections/{collection_id}'
              '/records/{record_id}')

    registry.permission.delete_object_permissions(
        collection, *[
            record.format(bucket_id=bucket_id,
                          collection_id=collection_id,
                          record_id=r['id']) for r in deleted
        ])
    logger.info('Related permissions were deleted.')

    current_transaction.commit()

    return 0
Example #4
0
def delete_collection(env, bucket_id, collection_id):
    registry = env['registry']
    settings = registry.settings
    readonly_mode = asbool(settings.get('readonly', False))

    if readonly_mode:
        message = ('Cannot delete the collection while in readonly mode.')
        logger.error(message)
        return 31

    bucket = '/buckets/%s' % bucket_id
    collection = '/buckets/%s/collections/%s' % (bucket_id, collection_id)

    try:
        registry.storage.get(collection_id='bucket',
                             parent_id='',
                             object_id=bucket_id)
    except storage_exceptions.RecordNotFoundError:
        logger.error("Bucket %r does not exist." % bucket)
        return 32

    try:
        registry.storage.get(collection_id='collection',
                             parent_id=bucket,
                             object_id=collection_id)
    except storage_exceptions.RecordNotFoundError:
        logger.error("Collection %r does not exist." % collection)
        return 33

    deleted = registry.storage.delete_all(collection_id='record',
                                          parent_id=collection,
                                          with_deleted=False)
    if len(deleted) == 0:
        logger.info('No records found for %r.' % collection)
    else:
        logger.info('%d record(s) were deleted.' % len(deleted))

    registry.storage.delete(collection_id='collection',
                            parent_id=bucket,
                            object_id=collection_id,
                            with_deleted=False)
    logger.info("%r collection object was deleted." % collection)

    record = ('/buckets/{bucket_id}'
              '/collections/{collection_id}'
              '/records/{record_id}')

    registry.permission.delete_object_permissions(
        collection,
        *[record.format(bucket_id=bucket_id,
                        collection_id=collection_id,
                        record_id=r['id']) for r in deleted])
    logger.info('Related permissions were deleted.')

    current_transaction.commit()

    return 0