Пример #1
0
def s3_set_config(node, auth, user_addon, node_addon, **kwargs):
    """Saves selected bucket to node settings."""
    # Fail if user settings not authorized
    if not user_addon.has_auth:
        raise HTTPError(httplib.UNAUTHORIZED)

    # If authorized, only owner can change settings
    if node_addon.has_auth and node_addon.user_settings.owner != auth.user:
        raise HTTPError(httplib.FORBIDDEN)

    # Claiming the node settings
    if not node_addon.user_settings:
        node_addon.user_settings = user_addon

    bucket = request.json.get('s3_bucket', '')

    if not utils.bucket_exists(node_addon.external_account.oauth_key,
                               node_addon.external_account.oauth_secret,
                               bucket):
        error_message = ('We are having trouble connecting to that bucket. '
                         'Try a different one.')
        return {'message': error_message}, httplib.BAD_REQUEST

    if bucket != node_addon.bucket:

        # Update node settings and log
        node_addon.set_folder(bucket, auth)

    return S3Serializer().serialize_settings(node_addon, auth.user)
Пример #2
0
def s3_set_config(node, auth, user_addon, node_addon, **kwargs):
    """Saves selected bucket to node settings."""
    # Fail if user settings not authorized
    if not user_addon.has_auth:
        raise HTTPError(httplib.UNAUTHORIZED)

    # If authorized, only owner can change settings
    if node_addon.has_auth and node_addon.user_settings.owner != auth.user:
        raise HTTPError(httplib.FORBIDDEN)

    # Claiming the node settings
    if not node_addon.user_settings:
        node_addon.user_settings = user_addon

    bucket = request.json.get('s3_bucket', '')

    if not utils.bucket_exists(node_addon.external_account.oauth_key, node_addon.external_account.oauth_secret, bucket):
        error_message = ('We are having trouble connecting to that bucket. '
                         'Try a different one.')
        return {'message': error_message}, httplib.BAD_REQUEST

    if bucket != node_addon.bucket:

        # Update node settings and log
        node_addon.set_folder(bucket, auth)

    return S3Serializer().serialize_settings(node_addon, auth.user)
Пример #3
0
def s3_post_node_settings(node, auth, user_addon, node_addon, **kwargs):
    # Fail if user settings not authorized
    if not user_addon.has_auth:
        raise HTTPError(httplib.BAD_REQUEST)

    # If authorized, only owner can change settings
    if node_addon.has_auth and node_addon.user_settings.owner != auth.user:
        raise HTTPError(httplib.BAD_REQUEST)

    # Claiming the node settings
    if not node_addon.user_settings:
        node_addon.user_settings = user_addon

    bucket = request.json.get("s3_bucket", "")

    if not utils.bucket_exists(user_addon.access_key, user_addon.secret_key, bucket):
        error_message = "We are having trouble connecting to that bucket. " "Try a different one."
        return {"message": error_message}, httplib.BAD_REQUEST

    if bucket != node_addon.bucket:

        # Update node settings
        node_addon.bucket = bucket
        node_addon.save()

        node.add_log(
            action="s3_bucket_linked",
            params={"node": node._id, "project": node.parent_id, "bucket": node_addon.bucket},
            auth=auth,
        )

    return node_addon.to_json(auth.user)
Пример #4
0
def s3_post_node_settings(node, auth, user_addon, node_addon, **kwargs):
    # Fail if user settings not authorized
    if not user_addon.has_auth:
        raise HTTPError(httplib.BAD_REQUEST)

    # If authorized, only owner can change settings
    if node_addon.has_auth and node_addon.user_settings.owner != auth.user:
        raise HTTPError(httplib.BAD_REQUEST)

    # Claiming the node settings
    if not node_addon.user_settings:
        node_addon.user_settings = user_addon

    bucket = request.json.get('s3_bucket', '')

    if not utils.bucket_exists(user_addon.access_key, user_addon.secret_key,
                               bucket):
        error_message = ('We are having trouble connecting to that bucket. '
                         'Try a different one.')
        return {'message': error_message}, httplib.BAD_REQUEST

    if bucket != node_addon.bucket:

        # Update node settings
        node_addon.bucket = bucket
        node_addon.save()

        node.add_log(
            action='s3_bucket_linked',
            params={
                'node': node._id,
                'project': node.parent_id,
                'bucket': node_addon.bucket,
            },
            auth=auth,
        )

    return node_addon.to_json(auth.user)
Пример #5
0
    def set_folder(self, folder_id, auth):
        if not bucket_exists(self.external_account.oauth_key, self.external_account.oauth_secret, folder_id):
            error_message = ('We are having trouble connecting to that bucket. '
                             'Try a different one.')
            raise exceptions.InvalidFolderError(error_message)

        self.folder_id = str(folder_id)

        bucket_location = get_bucket_location_or_error(
            self.external_account.oauth_key,
            self.external_account.oauth_secret,
            folder_id
        )
        try:
            bucket_location = BUCKET_LOCATIONS[bucket_location]
        except KeyError:
            # Unlisted location, S3 may have added it recently.
            # Default to the key. When hit, add mapping to settings
            pass

        self.folder_name = '{} ({})'.format(folder_id, bucket_location)
        self.save()

        self.nodelogger.log(action='bucket_linked', extra={'bucket': str(folder_id)}, save=True)