Some open source projects built on the SDK are listed in the README.
The node-manta project provides access to Manta
for JavaScript runtimes and offers a range of CLI commands like mget
and mput
which
make it easy to interact with Manta.
mvn test
will run unit tests while mvn verify
will include integration tests and benchmarks.
See the installation documentation for setting up your environment and the testing documentation for additional notes about running the test suite.
Some logging frameworks are affected by shading and your configuration will need to account for the modified package paths. See the usage notes on logging for more info.
If you are using subusers, be sure to specify the Manta account name as user/subuser
.
Also, a common problem is that you haven't granted the subuser access to the
path within Manta. Typically this is done via the
Manta CLI Tools
using the mchmod
command.
This can also be done by adding roles on the MantaHttpHeaders
object.
For example:
mchmod +subusername /user/stor/my_directory
Why does Maven report duplicate classes when combining java-manta-client-unshaded
with java-manta-client-kryo-serialization
?
In order to provide compatibility between the client module and java-manta-client-kryo-serialization
we've elected to structure our dependencies such that the serialization module depends on the shaded client
module. This results in duplicate classes being encountered when the shaded client module is used in combination
with the serialization module. This can be resolved by adding an <exclusion>
to the serialization module
dependency, e.g.:
<dependency>
<groupId>com.joyent.manta</groupId>
<artifactId>java-manta-client-unshaded</artifactId>
<version>x.y.z</version>
</dependency>
<dependency>
<groupId>com.joyent.manta</groupId>
<artifactId>java-manta-client-kryo-serialization</artifactId>
<version>x.y.z</version>
<exclusions>
<exclusion>
<groupId>com.joyent.manta</groupId>
<artifactId>java-manta-client</artifactId>
</exclusion>
</exclusions>
</dependency>
Newer versions of Manta support multipart upload for dividing large files into many smaller parts which are recombined server-side. The design for the server-side multipart upload is specified in RFD 65. The Java SDK implements an interface to make using server-side multipart uploading straightforward. The strategy to use for multipart upload is listed below.
- Create a
MantaClient
. - Create a
ServerSideMultipartManager
. - Initiate an upload to the full path where the final object should be stored.
- Upload each part using the
ServerSideMultipartUpload
object created in the previous step. The order that parts are uploaded does not matter, what does matter is that each part has the appropriate part number specified. - Execute
complete
to commit the parts to the object on the server. At this point the server will assemble the final object.
An example application is provided in the java-manta-examples module, named ServerMultipart, to help illustrate the workflow.
When using client-side encryption with multipart upload there are some additional restrictions imposed on the implementor of the SDK:
- Uploaded parts must be uploaded in sequential order (e.g. part 1, part 2, ...).
- Different parts can not be uploaded between different JVMs.
- At this time only the cipher mode AES/CTR is supported.
You will need to configure a MantaClient
using the
settings you would for client-side encryption, namely setting
manta.client_encryption
to true
and configuring the cipher and
encryption key. Additionally, you need to create a
EncryptedServerSideMultipartManager
, which should be reused, for
uploading the various file parts and assembling the final file.
An example application is provided in the java-manta-examples module, named ClientEncryptionServerMultipart, to help illustrate the workflow.
Joyent's SmartDataCenter Role-based Access Control (RBAC) implementation defines the following categories:
- Account: The group created for your company on Triton, managed by a user (the account owner) and zero or more subusers.
- User: Users are login credentials that allow different people in your organization to log in to your Joyent Cloud account. Generally, users are account owners, but this term may be used for account owners and in place of "subusers".
- Subuser: A subuser belongs to the account holder, who maintains control of the subusers. This may be people in your organizations who belong to the larger company account. Subusers have a unique username that is joined with the account holder's username. This is in the format of "user/subuser".
Within the Java Manta library, we refer to the identity used to login -
"owner" or "owner/subuser" - as user, e.g MANTA_USER
or manta.user
.