mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 02:33:34 +00:00
rebase: Make use of latest go ceph library
The go-ceph version 0.4.0 is available now which got some important library changes required for ceph csi project. Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
This commit is contained in:
committed by
mergify[bot]
parent
306d5b1da0
commit
58bf45a13e
111
vendor/github.com/ceph/go-ceph/rbd/namespace_nautilus.go
generated
vendored
Normal file
111
vendor/github.com/ceph/go-ceph/rbd/namespace_nautilus.go
generated
vendored
Normal file
@ -0,0 +1,111 @@
|
||||
// +build !luminous,!mimic
|
||||
//
|
||||
// Ceph Nautilus is the first release that includes rbd_namespace_create(),
|
||||
// rbd_namespace_remove(), rbd_namespace_exists() and rbd_namespace_list().
|
||||
|
||||
package rbd
|
||||
|
||||
// #cgo LDFLAGS: -lrbd
|
||||
// #include <rados/librados.h>
|
||||
// #include <rbd/librbd.h>
|
||||
// #include <stdlib.h>
|
||||
// #include <errno.h>
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"unsafe"
|
||||
|
||||
"github.com/ceph/go-ceph/internal/retry"
|
||||
"github.com/ceph/go-ceph/rados"
|
||||
)
|
||||
|
||||
// NamespaceCreate creates the namespace for a given Rados IOContext.
|
||||
//
|
||||
// Implements:
|
||||
// int rbd_namespace_create(rados_ioctx_t io, const char *namespace_name);
|
||||
func NamespaceCreate(ioctx *rados.IOContext, namespaceName string) error {
|
||||
if ioctx == nil {
|
||||
return ErrNoIOContext
|
||||
}
|
||||
if namespaceName == "" {
|
||||
return ErrNoNamespaceName
|
||||
}
|
||||
cNamespaceName := C.CString(namespaceName)
|
||||
defer C.free(unsafe.Pointer(cNamespaceName))
|
||||
|
||||
ret := C.rbd_namespace_create(cephIoctx(ioctx), cNamespaceName)
|
||||
return getError(ret)
|
||||
}
|
||||
|
||||
// NamespaceRemove removes a given namespace.
|
||||
//
|
||||
// Implements:
|
||||
// int rbd_namespace_remove(rados_ioctx_t io, const char *namespace_name);
|
||||
func NamespaceRemove(ioctx *rados.IOContext, namespaceName string) error {
|
||||
if ioctx == nil {
|
||||
return ErrNoIOContext
|
||||
}
|
||||
if namespaceName == "" {
|
||||
return ErrNoNamespaceName
|
||||
}
|
||||
cNamespaceName := C.CString(namespaceName)
|
||||
defer C.free(unsafe.Pointer(cNamespaceName))
|
||||
|
||||
ret := C.rbd_namespace_remove(cephIoctx(ioctx), cNamespaceName)
|
||||
return getError(ret)
|
||||
}
|
||||
|
||||
// NamespaceExists checks whether a given namespace exists or not.
|
||||
//
|
||||
// Implements:
|
||||
// int rbd_namespace_exists(rados_ioctx_t io, const char *namespace_name, bool *exists);
|
||||
func NamespaceExists(ioctx *rados.IOContext, namespaceName string) (bool, error) {
|
||||
if ioctx == nil {
|
||||
return false, ErrNoIOContext
|
||||
}
|
||||
if namespaceName == "" {
|
||||
return false, ErrNoNamespaceName
|
||||
}
|
||||
cNamespaceName := C.CString(namespaceName)
|
||||
defer C.free(unsafe.Pointer(cNamespaceName))
|
||||
|
||||
var exists C.bool
|
||||
ret := C.rbd_namespace_exists(cephIoctx(ioctx), cNamespaceName, &exists)
|
||||
return bool(exists), getErrorIfNegative(ret)
|
||||
}
|
||||
|
||||
// NamespaceList returns a slice containing the names of existing rbd namespaces.
|
||||
//
|
||||
// Implements:
|
||||
// int rbd_namespace_list(rados_ioctx_t io, char *namespace_names, size_t *size);
|
||||
func NamespaceList(ioctx *rados.IOContext) (names []string, err error) {
|
||||
if ioctx == nil {
|
||||
return nil, ErrNoIOContext
|
||||
}
|
||||
var (
|
||||
buf []byte
|
||||
cSize C.size_t
|
||||
)
|
||||
retry.WithSizes(4096, 262144, func(size int) retry.Hint {
|
||||
cSize = C.size_t(size)
|
||||
buf = make([]byte, cSize)
|
||||
ret := C.rbd_namespace_list(cephIoctx(ioctx),
|
||||
(*C.char)(unsafe.Pointer(&buf[0])),
|
||||
&cSize)
|
||||
err = getErrorIfNegative(ret)
|
||||
return retry.Size(int(cSize)).If(err == errRange)
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tmpList := bytes.Split(buf[:cSize-1], []byte{0})
|
||||
for _, s := range tmpList {
|
||||
if len(s) > 0 {
|
||||
name := C.GoString((*C.char)(unsafe.Pointer(&s[0])))
|
||||
names = append(names, name)
|
||||
}
|
||||
}
|
||||
return names, nil
|
||||
}
|
Reference in New Issue
Block a user