您的位置:首页 > 移动开发 > Swift

OPENSTACK SWIFT API(中文版本)

2016-03-11 11:23 393 查看

1.    代码引入

<dependency>

              <groupId>org.pacesys</groupId>

              <artifactId>openstack4j</artifactId>

              <version>2.0.9</version>

              <classifier>withdeps</classifier>

</dependency>

2.    授权

Eg:

 

              OSClient os =OSFactory.builder()

                            .endpoint("http://192.168.137.140:5000/v2.0")

                            .credentials("username","userpassword").tenantName("tenantName")

                            .authenticate();

3.    Account账户

一个账户也被称为一个project工程或者一个tenant租户。一个账户给出了容器和对象存在的安全范围。由于账户角色的愿意,与它相关的管理任务并不多。

3.1          获取账户详情

eg:

SwiftAccount account =os.objectStorage().account().get();

3.2          元数据metadata

3.2.1     创建或者更新一个账户的元数据:

boolean successful =os.objectStorage().account().updateMetadata(myMetadataMap);

3.2.2     删除一个账户的元数据:

boolean successful =os.objectStorage().account().deleteMetadata(myMetadataMap);

 

4.    Containers容器

一个容器本章上就是一个存放对象的桶。

Containers can have access security assigned tothem, published against a CDN or be shared publicly.

4.1          容器的查询

列出当前账户的所有容器

List<? extendsSwiftContainer> containers = os.objectStorage().containers().list();

使用更进一步的条件查询

List<? extendsSwiftContainer> containers = os.objectStorage()

                                             .containers()

                                             .list(ContainerListOptions.create()

                                                      .startsWith("J")

                                                     .limit(100)

                                                     // ...

                                              );

4.2          创建容器

// Simple

os.objectStorage().containers().create("myContainerName");

      

// Full control

os.objectStorage().containers().create("myContainer",CreateUpdateContainerOptions.create()

                                                        .accessAnybodyRead()

                                                        .accessWrite(acl)

                                                        .metadata(myMeta)

                                                         //...

                                                      ); #### Updating a Container

更新容器信息与fullcontrol创建容器十分类似。唯一的不同就在于调用方法名称。简短示例:

os.objectStorage().containers().update("myContainer",CreateUpdateContainerOptions);

 

4.3          删除容器

注意:为了成功删除容器,必须在删除之前将他清空。这不是本代码的策略,而是openstack的限制就是如此。

os.objectStorage().containers().delete("myContainer");

 

4.4          创建伪目录

此功能可能由于你部署方式的配置不同而导致不支持。像Rackspace这样的供应商是开箱即支持的。

os.objectStorage().containers().createPath(containerName,"/my/nested/path");

 

4.5          元数据

读取

Map<String,String> md = os.objectStorage().containers().getMetadata(containerName);

创建及更新

boolean successful =os.objectStorage().containers().updateMetadata(containerName, myMetadataMap);

删除元数据

boolean successful =os.objectStorage().containers().deleteMetadata(containerName, myMetadataMap);

 

 

5.    Objects对象

对象就是被上传的文件,证明或者伪目录。对象是与容器相关联的。

5.1          查询

列出一个容器的所有对象

List<? extendsSwiftObject> objs = os.objectStorage().objects().list(containerName);

使用更进一步的条件查询

List<? extendsSwiftObject> objs =os.objectStorage().objects().list(ObjectListOptions.create()

                                       .startsWith("J")

                                       .path("/art/digital")

                                        // ...

                                     );

5.2          创建对象

简单的

String etag =os.objectStorage().objects().put(containerName, objectName,Payloads.create(someFile));

高级的

String etag =os.objectStorage().objects().put(containerName, objectName,

                                              Payloads.create(someFile),

                                              ObjectPutOptions.create()

                                                  .path("/some/path")

                                                 .metadata(md)

                                                 // ...

                                              );

5.3          删除对象

os.objectStorage().objects().delete(containerName,objectName);

5.4          复制对象

String etag =os.objectStorage().objects().copy(ObjectLocation.create(srcContainer,srcObject)

                                               ObjectLocation.create(destContainer, destObject)

                                               );

5.5          元数据

 

获取

Map<String,String> md = os.objectStorage().objects().getMetadata(containerName,objectName);

创建和更新

boolean successful =os.objectStorage().objects().updateMetadata(ObjectLocation.create(containerName,objectName), myMetadataMap);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openstack swift api