如果你搭建好了Swift环境 ,你应该可以通过Swift 命令 来尝试去测试上传下载等功能,这是因为在安装Swift的时候,通常会安装一个python-swiftclient客户端,这个一个python的开源 项目 同样使用apache2.0许可,是Swift的client端,如果你使用java PHP 在github上同样有对应的client端,但是功能有局限性。
开源的好处就是,可以方便学习,第一次看python代码,整理出来流程,加上自己的环境,可以马上就开始应用起来。
Swift 基于HTTP协议,所以不论你用什么语言,只要通过HTTP发送消息给Swift,都可以获取相应的数据,或者进行相应的操作。当然对于定制的需求 你需要修改Swift源码。来实现响应的处理。Swift的API文档在官方网站上可以获取到。
http://docs.openstack.org/api/openstack-object-storage/1.0/content/
python-client的源码非常简单,可以在github上下载,仔细看一下就是一个简单的HTTP客户端,通过shell命令 输入鉴权url username password 和具体的参数 来调用swift service 。
自己写一个小程序 实现如下功能,下载swift服务器上的hello.txt文件,然后打印出来。
上代码
06 |
from urlparse import urlparse, urlunparse, urljoin |
07 |
from urllib import quote |
08 |
from eventlet.green.httplib import HTTPConnection |
10 |
def http_connection(url): |
14 |
parsed = urlparse(url) |
15 |
conn = HTTPConnection(parsed.netloc) |
18 |
def json_request(method, url, **kwargs): |
19 |
kwargs.setdefault('headers', {}) |
20 |
kwargs['headers']['Content-Type'] = 'application/json' |
21 |
kwargs['body'] = json.dumps(kwargs['body']) |
22 |
parsed, conn = http_connection(url) |
23 |
conn.request(method, parsed.path, **kwargs) |
24 |
resp = conn.getresponse() |
26 |
body = json.loads(body) |
30 |
url = 'http://192.168.4.87:5000/v2.0/' |
31 |
body = {'auth': {'passwordCredentials': {'password': 'zhoubing', |
32 |
'username':'swift'},'tenantName': 'service'}} |
33 |
token_url = urljoin(url, "tokens") |
34 |
resp, body = json_request("POST", token_url, body=body) |
38 |
catalogs = body['access']["serviceCatalog"] |
39 |
for service in catalogs: |
40 |
if service['type'] == 'object-store': |
41 |
url = service['endpoints'][0]['publicURL'] |
42 |
token_id = body['access']['token']['id'] |
43 |
except(KeyError,IndexError): |
48 |
url, token = get_auth() |
49 |
parsed, conn = http_connection(url) |
50 |
path = '%s/%s/%s' % (parsed.path, quote('myfile'), quote('asd.txt')) |
52 |
headers = {'X-Auth-Token': token} |
53 |
conn.request(method, path,'',headers) |
54 |
resp = conn.getresponse() |
58 |
if __name__ == '__main__': |
第一次写python代码 比较乱 主要是理清思路,熟悉代码的流程。
实用keystone作为swift的鉴权,首先通过get_auth() 获得鉴权的token 和proxy的url
通过get_connection获得连接 然后根据API文档,组成相应的http消息得到,相应的resp,然后通过read()方法读文件的能容
很简单,进行相应的封装,再加上UI就是一个云存储客户端的雏形了!
- openstack swift middleware开发
首先MiddleWare核心代码,这段代码卸载swift的源代码目录下,~/swift/swift/common/middleware下新建deletionpreventing.py: import ...
- 理解 OpenStack Swift (3):监控和一些影响性能的因素 [Monitoring and Performance]
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- OpenStack Swift集群部署流程与简单使用
之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...
- [转载] 对象存储(2):OpenStack Swift——概念、架构与规模部署
原文: http://www.testlab.com.cn/Index/article/id/1085.html#rd?sukey=fc78a68049a14bb228cb2742bdec2b9498 ...
- Openstack Swift中间件编写
关于openstack swift的资料可以看这里,这里还有这里. 准备环境 从零开始接触的同学可以先从swift的all in one部署开始学习,在本机搭建好swift环境就可以进行简单的测试了. ...
- 【转载】OpenStack Swift学习笔记
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:崔炳华 原文地址:http://blog.csdn.net/i_ch ...
- Openstack Swift 原理、架构与 API 介绍
OpenStack Swift 开源项目提供了弹性可伸缩.高可用的分布式对象存储服务,适合存储大规模非结构化数据.本文将深入介绍 Swift 的基本设计原理.对称式的系统架构和 RESTful API ...
- 理解 OpenStack Swift (2):架构、原理及功能 [Architecture, Implementation and Features]
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
随机推荐
- PAT-乙级-1022. D进制的A+B (20)
1022. D进制的A+B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 输入两个非负10进制整数A和 ...
- 转Spring+Hibernate+EHcache配置(二)
Spring AOP+EHCache简单缓存系统解决方案 需要使用Spring来实现一个Cache简单的解决方案,具体需求如下:使用任意一个现有开源Cache Framework,要求可以Cache系 ...
- Debugging with GDB 用GDB调试多线程程序
Debugging with GDB http://www.delorie.com/gnu/docs/gdb/gdb_25.html GDB调试多线程程序总结 一直对GDB多线程调试接触不多,最近因为 ...
- hdu 3544 Alice's Game 博弈论
博弈论+二分! 后一人会尽量选前一人切小的一块切!! 代码如下: #include<iostream> #include<stdio.h> #define I1(x) scan ...
- Mac OS X 启用 Web 服务器
转载: http://note.rpsh.net/posts/2013/11/26/osx-apache-server-php-mysql/
- NSString的常用方法
创建一个新字符串并将其设置为 path 指定的文件的内容,使用字符编码enc,在error上返回错误 + (id)stringWithContentsOfURL:(NSURL *)url encodi ...
- Qt之界面数据存储与获取(使用setUserData()和userData())
在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来配置文件.注册表.数据库.或者是server. 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例 ...
- Linux 下常用命令
linux 下常用命令: 1.删除文件命令为 rm 2.创建目录的命令是:mkdir 3.删除目录的命令是rmdir(空目录) 4.切换到root帐号:su 5.查看所有进程:ps -aux 6.杀死 ...
- HDFS的命令行操作
1.namenode –format:格式化DFS 文件系统 2.secondaryNameNode: 运行DFS的 SecondaryNameNode 进程 hadoop secondaryname ...
- Linux下安装Wine运行windows程序
资料 首页 https://www.winehq.org/ 安装 https://www.winehq.org/download/ 教程 https://www.winehq.org/document ...