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 创建容器
// Simpleos.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);
相关文章推荐
- Android Manifest 用法
- 什么是 GraphQL?
- Spark RDD API详解(一) Map和Reduce
- lwn拾遗:[sn3218 led drivers]-api解释-1
- 一个小型js框架myJSFrame附API使用帮助
- 详细分析交换机、路由器、集线器的区别和联系
- PowerShell打开或关闭光驱
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- C#中设计、使用Fluent API
- Google官方支持的NodeJS访问API,提供后台登录授权
- PQ分区出错! 巧用Ghost急速补救的绝妙办法
- 深入C++中API的问题详解
- 使用WindowsAPI实现播放PCM音频的方法
- 40余种刻录盘片详细对照分析介绍第1/2页
- fullCalendar中文API官方文档