获取一个与curve集群交互的CBDClient对象
初始化CBDClient
cbd = curvefs.CBDClient()
# 参数:curve-client配置文件的绝对路径
# 返回值:返回0表示初始化成功,-1表示初始化失败
cbd.Init("/etc/curve/client.conf")
创建文件
import curvefs
cbd = curvefs.CBDClient()
cbd.Init("/etc/curve/client.conf") # 后续示例省略初始化过程
# 参数:三个参数分别为
# 文件全路径
# 文件所属用户信息
# 文件大小
# 返回值:返回0表示创建成功,否则返回错误码
# 首先初始化user信息(curvefs的控制面接口都有用户信息验证,都需要传入用户信息)
user = curvefs.UserInfo_t()
user.owner = "curve"
user.password = "" # 密码为空时,可以省略
# 调用Create接口创建文件
cbd.Create("/curve", user, 10*1024*1024*1024)
# UserInfo定义如下
typedef struct UserInfo {
char owner[256]; # 用户名
char password[256]; # 用户密码
} UserInfo_t;
查看文件信息
# 参数:三个参数分别为
# 文件名
# 用户信息
# 文件信息[出参]
# 返回值:返回0表示获取成功,否则返回错误码
# 构造user信息
user = curvefs.UserInfo_t()
user.owner = "curve"
# 构造file信息
finfo = curvefs.FileInfo_t()
cbd.StatFile("/curve", user, finfo)
print finfo.filetype
print finfo.length
print finfo.ctime
# FileInfo定义如下
typedef struct FileInfo {
uint64_t id;
uint64_t parentid;
uint64_t length; # 卷大小
uint64_t ctime; # 卷创建时间
char filename[256]; # 卷名
char owner[256]; # 卷所属用户
int fileStatus; # 卷状态
} FileInfo_t;
# 文件状态
#define CURVE_FILE_CREATED 0
#define CURVE_FILE_DELETING 1
#define CURVE_FILE_CLONING 2
#define CURVE_FILE_CLONEMETAINSTALLED 3
#define CURVE_FILE_CLONED 4
#define CURVE_FILE_BEINGCLONED 5
扩容文件
打开/关闭文件
# 打开文件
# 参数:两个参数分别为
# 文件名
# 用户信息
# 返回值:打开成功返回文件fd,否则返回错误码
# 构造user信息
user = curvefs.UserInfo_t()
user.owner = "user1"
# 打开文件,返回fd
fd = cbd.Open("/tmp1", user)
# 关闭文件
# 参数:打开文件时返回的fd
# 返回值:关闭成功返回0,否则返回错误码
cbd.Close(fd)
读写文件
# 写文件
# 参数:四个参数分别为
# 文件fd
# 待写入数据
# 偏移量
# 写入数据长度
# 返回值:写入成功返回写入字节数,否则返回错误码
# 构造user信息
user = curvefs.UserInfo_t()
user.owner = "user1"
# 打开文件,返回fd
fd = cbd.Open("/tmp1", user)
cbd.Write(fd, "aaaaaaaa"*512, 0, 4096)
cbd.Write(fd, "bbbbbbbb"*512, 4096, 4096)
# 读文件
# 文件fd
# 空字符串
# 偏移量
# 读取数据长度
# 返回值:读取成功返回读取数据,否则返回错误码
# 读取的内容通过返回值返回,buf在此没有意义,可以传入一个空串
cbd.Read(fd,"", 0, 4096)
# 关闭文件
cbd.Close(fd)
删除文件
# 参数:两个参数分别为
# 文件名
# 用户信息
# 返回值:删除成功返回0,否则返回错误码
# 构造user信息
user = curvefs.UserInfo_t()
user.owner = "curve"
# 删除文件
cbd.Unlink("/curve", user)
重命名文件
创建目录
# 参数:两个参数分别为
# 目录路径
# 用户信息
# 返回值:成功返回0,否则返回错误码
# 构造user信息
user = curvefs.UserInfo_t()
user.owner = "curve"
# 创建目录
cbd.Mkdir("/curvedir", user)
删除目录
# 参数:两个参数分别为
# 目录路径
# 用户信息
# 返回值:成功返回0,否则返回错误码
# 构造user信息
user = curvefs.UserInfo_t()
user.owner = "curve"
# 删除目录
cbd.Rmdir("/curvedir", user)
获取目录下的文件
# 参数:两个参数分别为
# 目录路径
# 用户信息
# 返回值:当前目录下的文件列表(只包括文件名)
files = cbd.Listdir("/test", user)
for f in files:
print f
获取集群ID
清理CBDClient对象
cbd.UnInit()