Package org.yamcs.protobuf
Class BucketsApiClient
- java.lang.Object
-
- org.yamcs.protobuf.AbstractBucketsApi<Void>
-
- org.yamcs.protobuf.BucketsApiClient
-
public class BucketsApiClient extends AbstractBucketsApi<Void>
Methods related to object storage. Buckets represent a simple mechanism for storing user objects (binary data chunks such as images, monitoring lists, displays...) together with some metadata. Buckets can be created globally or asociated with an instance. The metadata is represented by simple (key,value) pairs where both key and value are strings. By default each user has a bucket named ``user.username`` which can be used without extra privileges. Additional buckets may be created and used if the user has the required privileges. The user bucket will be created automatically when the user tries to access it. Buckets can be created at global level or at instance level. The following limitations are implemented in order to prevent disk over consumption and keep the service responsive: * The maximum size of an upload including data and metadata is 5MB. * The maximum number of objects in one bucket is 1000. * The maximum size of an bucket 100MB (counted as the sum of the size of the objects within the bucket). * The maximum size of the metadata is 16KB (counted as the sum of the length of the keys and values).
-
-
Constructor Summary
Constructors Constructor Description BucketsApiClient(MethodHandler handler)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
createBucket(Void ctx, CreateBucketRequest request, Observer<com.google.protobuf.Empty> observer)
Create a bucketvoid
deleteBucket(Void ctx, DeleteBucketRequest request, Observer<com.google.protobuf.Empty> observer)
Delete a bucket Deleting a bucket means also deleting all objects that are part of it.void
deleteObject(Void ctx, DeleteObjectRequest request, Observer<com.google.protobuf.Empty> observer)
Delete an objectvoid
getObject(Void ctx, GetObjectRequest request, Observer<HttpBody> observer)
Get an object The body of the response represents the object data.void
listBuckets(Void ctx, ListBucketsRequest request, Observer<ListBucketsResponse> observer)
List bucketsvoid
listObjects(Void ctx, ListObjectsRequest request, Observer<ListObjectsResponse> observer)
List objectsvoid
uploadObject(Void ctx, UploadObjectRequest request, Observer<com.google.protobuf.Empty> observer)
Upload an object .. rubric:: Simple upload In case of simple upload, the objectName has to be specified as part of the URL and the ``Content-Type header`` has to be set to the type of the object.-
Methods inherited from class org.yamcs.protobuf.AbstractBucketsApi
callMethod, callMethod, getDescriptorForType, getRequestPrototype, getResponsePrototype
-
-
-
-
Constructor Detail
-
BucketsApiClient
public BucketsApiClient(MethodHandler handler)
-
-
Method Detail
-
listBuckets
public final void listBuckets(Void ctx, ListBucketsRequest request, Observer<ListBucketsResponse> observer)
List buckets
- Specified by:
listBuckets
in classAbstractBucketsApi<Void>
-
createBucket
public final void createBucket(Void ctx, CreateBucketRequest request, Observer<com.google.protobuf.Empty> observer)
Create a bucket
- Specified by:
createBucket
in classAbstractBucketsApi<Void>
-
deleteBucket
public final void deleteBucket(Void ctx, DeleteBucketRequest request, Observer<com.google.protobuf.Empty> observer)
Delete a bucket Deleting a bucket means also deleting all objects that are part of it.
- Specified by:
deleteBucket
in classAbstractBucketsApi<Void>
-
getObject
public final void getObject(Void ctx, GetObjectRequest request, Observer<HttpBody> observer)
Get an object The body of the response represents the object data. The ``Content-Type`` header is set to the content type of the object specified when uploading the object. If no ``Content-Type`` was specified when creating the object, the ``Content-Type`` of the response is set to ``application/octet-stream``.
- Specified by:
getObject
in classAbstractBucketsApi<Void>
-
uploadObject
public final void uploadObject(Void ctx, UploadObjectRequest request, Observer<com.google.protobuf.Empty> observer)
Upload an object .. rubric:: Simple upload In case of simple upload, the objectName has to be specified as part of the URL and the ``Content-Type header`` has to be set to the type of the object. The body of the request is the object data. .. rubric:: Form upload The form based upload can be used to upload an object from an HTML form. In this case the Content-Type of the request is set to ``multipart/form-data``, and the body will contain at least one part which is the object data. This part includes a filename which is used as the object name as well as a ``Content-Type`` header. The name attribute for the file part is ignored. Additional parts (which do not specify a filename) will be used as metadata: the name is specified as part of the ``Content-Disposition`` and the value is the body of the part. This can be tested with curl using the ``-F`` option. .. rubric:: Example .. code-block:: http POST /api/buckets/_global/my_bucket HTTP/1.1 Host: localhost:8090 User-Agent: curl/7.58.0 Accept: */* Content-Length: 1090 Content-Type: multipart/form-data; boundary=------------------------7109c709802f7ae4 --------------------------7109c709802f7ae4 Content-Disposition: form-data; name="file"; filename="object/name" Content-Type: text/plain [object data] --------------------------7109c709802f7ae4 Content-Disposition: form-data; name="name1" value1 --------------------------7109c709802f7ae4 Content-Disposition: form-data; name="name2" value2 --------------------------7109c709802f7ae4-- This will create an object named ``object/name`` with two metadata properties: .. code-block:: json { "name1": "value1", "name2": "value2" }
- Specified by:
uploadObject
in classAbstractBucketsApi<Void>
-
listObjects
public final void listObjects(Void ctx, ListObjectsRequest request, Observer<ListObjectsResponse> observer)
List objects
- Specified by:
listObjects
in classAbstractBucketsApi<Void>
-
deleteObject
public final void deleteObject(Void ctx, DeleteObjectRequest request, Observer<com.google.protobuf.Empty> observer)
Delete an object
- Specified by:
deleteObject
in classAbstractBucketsApi<Void>
-
-