Documentation ¶
Overview ¶
Package rados contains a set of wrappers around Ceph's librados API.
Index ¶
- Constants
- Variables
- func Version() (int, int, int)
- type ClusterRef
- type ClusterStat
- type Conn
- func (c *Conn) Cluster() ClusterRef
- func (c *Conn) Connect() error
- func (c *Conn) DeletePool(name string) error
- func (c *Conn) GetClusterStats() (stat ClusterStat, err error)
- func (c *Conn) GetConfigOption(name string) (value string, err error)
- func (c *Conn) GetFSID() (fsid string, err error)
- func (c *Conn) GetInstanceID() uint64
- func (c *Conn) GetPoolByID(id int64) (string, error)
- func (c *Conn) GetPoolByName(name string) (int64, error)
- func (c *Conn) ListPools() (names []string, err error)
- func (c *Conn) MakePool(name string) error
- func (c *Conn) MgrCommand(args [][]byte) ([]byte, string, error)
- func (c *Conn) MgrCommandWithInputBuffer(args [][]byte, inputBuffer []byte) ([]byte, string, error)
- func (c *Conn) MonCommand(args []byte) ([]byte, string, error)
- func (c *Conn) MonCommandWithInputBuffer(args, inputBuffer []byte) ([]byte, string, error)
- func (c *Conn) OpenIOContext(pool string) (*IOContext, error)
- func (c *Conn) PGCommand(pgid []byte, args [][]byte) ([]byte, string, error)
- func (c *Conn) PGCommandWithInputBuffer(pgid []byte, args [][]byte, inputBuffer []byte) ([]byte, string, error)
- func (c *Conn) ParseCmdLineArgs(args []string) error
- func (c *Conn) ParseDefaultConfigEnv() error
- func (c *Conn) PingMonitor(id string) (string, error)
- func (c *Conn) ReadConfigFile(path string) error
- func (c *Conn) ReadDefaultConfigFile() error
- func (c *Conn) SetConfigOption(option, value string) error
- func (c *Conn) Shutdown()
- func (c *Conn) WaitForLatestOSDMap() error
- type CreateOption
- type IOContext
- func (ioctx *IOContext) Append(oid string, data []byte) error
- func (ioctx *IOContext) BreakLock(oid, name, client, cookie string) (int, error)
- func (ioctx *IOContext) CleanOmap(oid string) error
- func (ioctx *IOContext) Create(oid string, exclusive CreateOption) error
- func (ioctx *IOContext) Delete(oid string) error
- func (ioctx *IOContext) Destroy()
- func (ioctx *IOContext) GetAllOmapValues(oid string, startAfter string, filterPrefix string, iteratorSize int64) (map[string][]byte, error)
- func (ioctx *IOContext) GetOmapValues(oid string, startAfter string, filterPrefix string, maxReturn int64) (map[string][]byte, error)
- func (ioctx *IOContext) GetPoolName() (name string, err error)
- func (ioctx *IOContext) GetPoolStats() (stat PoolStat, err error)
- func (ioctx *IOContext) GetXattr(object string, name string, data []byte) (int, error)
- func (ioctx *IOContext) Iter() (*Iter, error)
- func (ioctx *IOContext) ListLockers(oid, name string) (*LockInfo, error)
- func (ioctx *IOContext) ListObjects(listFn ObjectListFunc) error
- func (ioctx *IOContext) ListOmapValues(oid string, startAfter string, filterPrefix string, maxReturn int64, ...) error
- func (ioctx *IOContext) ListXattrs(oid string) (map[string][]byte, error)
- func (ioctx *IOContext) LockExclusive(oid, name, cookie, desc string, duration time.Duration, flags *byte) (int, error)
- func (ioctx *IOContext) LockShared(oid, name, cookie, tag, desc string, duration time.Duration, flags *byte) (int, error)
- func (ioctx *IOContext) Pointer() unsafe.Pointer
- func (ioctx *IOContext) Read(oid string, data []byte, offset uint64) (int, error)
- func (ioctx *IOContext) RmOmapKeys(oid string, keys []string) error
- func (ioctx *IOContext) RmXattr(oid string, name string) error
- func (ioctx *IOContext) SetNamespace(namespace string)
- func (ioctx *IOContext) SetOmap(oid string, pairs map[string][]byte) error
- func (ioctx *IOContext) SetSnapRead(snap uint64)
- func (ioctx *IOContext) SetXattr(object string, name string, data []byte) error
- func (ioctx *IOContext) SnapCreate(snapname string) error
- func (ioctx *IOContext) SnapGetName(snap uint64) (string, error)
- func (ioctx *IOContext) SnapGetStamp(snap uint64) (time.Time, error)
- func (ioctx *IOContext) SnapList(maxlen int) ([]uint64, error)
- func (ioctx *IOContext) SnapLookup(snapname string) (uint64, error)
- func (ioctx *IOContext) SnapRemove(snapname string) error
- func (ioctx *IOContext) SnapRollback(oid, snapname string) error
- func (ioctx *IOContext) Stat(object string) (stat ObjectStat, err error)
- func (ioctx *IOContext) Truncate(oid string, size uint64) error
- func (ioctx *IOContext) Unlock(oid, name, cookie string) (int, error)
- func (ioctx *IOContext) Write(oid string, data []byte, offset uint64) error
- func (ioctx *IOContext) WriteFull(oid string, data []byte) error
- type Iter
- type IterToken
- type LockInfo
- type ObjectListFunc
- type ObjectStat
- type OmapListFunc
- type PoolStat
- type RadosError
Constants ¶
const ( // ErrNotFound indicates a missing resource. ErrNotFound = RadosError(-C.ENOENT) // ErrPermissionDenied indicates a permissions issue. ErrPermissionDenied = RadosError(-C.EPERM) // ErrObjectExists indicates that an exclusive object creation failed. ErrObjectExists = RadosError(-C.EEXIST) // RadosErrorNotFound indicates a missing resource. // // Deprecated: use ErrNotFound instead RadosErrorNotFound = ErrNotFound // RadosErrorPermissionDenied indicates a permissions issue. // // Deprecated: use ErrPermissionDenied instead RadosErrorPermissionDenied = ErrPermissionDenied )
const ( // CreateExclusive if used with IOContext.Create() and the object // already exists, the function will return an error. CreateExclusive = C.LIBRADOS_CREATE_EXCLUSIVE // CreateIdempotent if used with IOContext.Create() and the object // already exists, the function will not return an error. CreateIdempotent = C.LIBRADOS_CREATE_IDEMPOTENT )
const ( // AllNamespaces is used to reset a selected namespace to all // namespaces. See the IOContext SetNamespace function. AllNamespaces = C.LIBRADOS_ALL_NSPACES // RadosAllNamespaces is used to reset a selected namespace to all // namespaces. See the IOContext SetNamespace function. // // Deprecated: use AllNamespaces instead RadosAllNamespaces = AllNamespaces )
const SnapHead uint64 = uint64(C.LIBRADOS_SNAP_HEAD)
SnapHead represents the id of "no snapshot" used to resume normal operation when reading and writing from a snapshot ioctx.
Note: both the type declaration and the type cast of the C value are required to use SnapHead without type checking errors in SetSnapRead.
Variables ¶
var ( // ErrNotConnected is returned when functions are called without a RADOS connection ErrNotConnected = errors.New("RADOS not connected") )
Functions ¶
Types ¶
type ClusterRef ¶
ClusterRef represents a fundamental RADOS cluster connection.
type ClusterStat ¶
ClusterStat represents Ceph cluster statistics.
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is a connection handle to a Ceph cluster.
func NewConn ¶
NewConn creates a new connection object. It returns the connection and an error, if any.
func NewConnWithClusterAndUser ¶
NewConnWithClusterAndUser creates a new connection object for a specific cluster and username. It returns the connection and an error, if any.
func NewConnWithUser ¶
NewConnWithUser creates a new connection object with a custom username. It returns the connection and an error, if any.
func (*Conn) Cluster ¶
func (c *Conn) Cluster() ClusterRef
Cluster returns the underlying RADOS cluster reference for this Conn.
func (*Conn) Connect ¶
Connect establishes a connection to a RADOS cluster. It returns an error, if any.
func (*Conn) DeletePool ¶
DeletePool deletes a pool and all the data inside the pool.
func (*Conn) GetClusterStats ¶
func (c *Conn) GetClusterStats() (stat ClusterStat, err error)
GetClusterStats returns statistics about the cluster associated with the connection.
func (*Conn) GetConfigOption ¶
GetConfigOption returns the value of the Ceph configuration option identified by the given name.
func (*Conn) GetFSID ¶
GetFSID returns the fsid of the cluster as a hexadecimal string. The fsid is a unique identifier of an entire Ceph cluster.
func (*Conn) GetInstanceID ¶
GetInstanceID returns a globally unique identifier for the cluster connection instance.
func (*Conn) GetPoolByID ¶
GetPoolByID returns the name of a pool by a given ID.
func (*Conn) GetPoolByName ¶
GetPoolByName returns the ID of the pool with a given name.
func (*Conn) MgrCommand ¶
MgrCommand sends a command to a ceph-mgr.
func (*Conn) MgrCommandWithInputBuffer ¶
MgrCommandWithInputBuffer sends a command, with an input buffer, to a ceph-mgr.
func (*Conn) MonCommand ¶
MonCommand sends a command to one of the monitors
func (*Conn) MonCommandWithInputBuffer ¶
MonCommandWithInputBuffer sends a command to one of the monitors, with an input buffer
func (*Conn) OpenIOContext ¶
OpenIOContext creates and returns a new IOContext for the given pool.
Implements:
int rados_ioctx_create(rados_t cluster, const char *pool_name, rados_ioctx_t *ioctx);
func (*Conn) PGCommand ¶
PGCommand sends a command to one of the PGs
Implements:
int rados_pg_command(rados_t cluster, const char *pgstr, const char **cmd, size_t cmdlen, const char *inbuf, size_t inbuflen, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen);
func (*Conn) PGCommandWithInputBuffer ¶
func (c *Conn) PGCommandWithInputBuffer(pgid []byte, args [][]byte, inputBuffer []byte) ([]byte, string, error)
PGCommandWithInputBuffer sends a command to one of the PGs, with an input buffer
Implements:
int rados_pg_command(rados_t cluster, const char *pgstr, const char **cmd, size_t cmdlen, const char *inbuf, size_t inbuflen, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen);
func (*Conn) ParseCmdLineArgs ¶
ParseCmdLineArgs configures the connection from command line arguments.
func (*Conn) ParseDefaultConfigEnv ¶
ParseDefaultConfigEnv configures the connection from the default Ceph environment variable(s).
func (*Conn) PingMonitor ¶
PingMonitor sends a ping to a monitor and returns the reply.
func (*Conn) ReadConfigFile ¶
ReadConfigFile configures the connection using a Ceph configuration file.
func (*Conn) ReadDefaultConfigFile ¶
ReadDefaultConfigFile configures the connection using a Ceph configuration file located at default locations.
func (*Conn) SetConfigOption ¶
SetConfigOption sets the value of the configuration option identified by the given name.
func (*Conn) WaitForLatestOSDMap ¶
WaitForLatestOSDMap blocks the caller until the latest OSD map has been retrieved.
type CreateOption ¶
type CreateOption int
CreateOption is passed to IOContext.Create() and should be one of CreateExclusive or CreateIdempotent.
type IOContext ¶
type IOContext struct {
// contains filtered or unexported fields
}
IOContext represents a context for performing I/O within a pool.
func (*IOContext) Append ¶
Append appends len(data) bytes to the object with key oid. The object is appended with the provided data. If the object exists, it is atomically appended to. It returns an error, if any.
func (*IOContext) BreakLock ¶
BreakLock releases a shared or exclusive lock on an object, which was taken by the specified client.
func (*IOContext) Create ¶
func (ioctx *IOContext) Create(oid string, exclusive CreateOption) error
Create a new object with key oid.
Implements:
void rados_write_op_create(rados_write_op_t write_op, int exclusive, const char* category)
func (*IOContext) Destroy ¶
func (ioctx *IOContext) Destroy()
Destroy informs librados that the I/O context is no longer in use. Resources associated with the context may not be freed immediately, and the context should not be used again after calling this method.
func (*IOContext) GetAllOmapValues ¶
func (ioctx *IOContext) GetAllOmapValues(oid string, startAfter string, filterPrefix string, iteratorSize int64) (map[string][]byte, error)
GetAllOmapValues fetches all the keys and their values from an omap and returns then as a map `startAfter`: retrieve only the keys after this specified one `filterPrefix`: retrieve only the keys beginning with this prefix `iteratorSize`: internal number of keys to fetch during a read operation
func (*IOContext) GetOmapValues ¶
func (ioctx *IOContext) GetOmapValues(oid string, startAfter string, filterPrefix string, maxReturn int64) (map[string][]byte, error)
GetOmapValues fetches a set of keys and their values from an omap and returns then as a map `startAfter`: retrieve only the keys after this specified one `filterPrefix`: retrieve only the keys beginning with this prefix `maxReturn`: retrieve no more than `maxReturn` key/value pairs
func (*IOContext) GetPoolName ¶
GetPoolName returns the name of the pool associated with the I/O context.
func (*IOContext) GetPoolStats ¶
GetPoolStats returns a set of statistics about the pool associated with this I/O context.
Implements:
int rados_ioctx_pool_stat(rados_ioctx_t io, struct rados_pool_stat_t *stats);
func (*IOContext) GetXattr ¶
GetXattr gets an xattr with key `name`, it returns the length of the key read or an error if not successful
func (*IOContext) Iter ¶
Iter returns a Iterator object that can be used to list the object names in the current pool
func (*IOContext) ListLockers ¶
ListLockers lists clients that have locked the named object lock and information about the lock. The number of bytes required in each buffer is put in the corresponding size out parameter. If any of the provided buffers are too short, -ERANGE is returned after these sizes are filled in.
func (*IOContext) ListObjects ¶
func (ioctx *IOContext) ListObjects(listFn ObjectListFunc) error
ListObjects lists all of the objects in the pool associated with the I/O context, and called the provided listFn function for each object, passing to the function the name of the object. Call SetNamespace with RadosAllNamespaces before calling this function to return objects from all namespaces
func (*IOContext) ListOmapValues ¶
func (ioctx *IOContext) ListOmapValues(oid string, startAfter string, filterPrefix string, maxReturn int64, listFn OmapListFunc) error
ListOmapValues iterates over the keys and values in an omap by way of a callback function.
`startAfter`: iterate only on the keys after this specified one `filterPrefix`: iterate only on the keys beginning with this prefix `maxReturn`: iterate no more than `maxReturn` key/value pairs `listFn`: the function called at each iteration
func (*IOContext) ListXattrs ¶
ListXattrs lists all the xattrs for an object. The xattrs are returned as a mapping of string keys and byte-slice values.
func (*IOContext) LockExclusive ¶
func (ioctx *IOContext) LockExclusive(oid, name, cookie, desc string, duration time.Duration, flags *byte) (int, error)
LockExclusive takes an exclusive lock on an object.
func (*IOContext) LockShared ¶
func (ioctx *IOContext) LockShared(oid, name, cookie, tag, desc string, duration time.Duration, flags *byte) (int, error)
LockShared takes a shared lock on an object.
func (*IOContext) Pointer ¶
Pointer returns a pointer reference to an internal structure. This function should NOT be used outside of go-ceph itself.
func (*IOContext) Read ¶
Read reads up to len(data) bytes from the object with key oid starting at byte offset offset. It returns the number of bytes read and an error, if any.
func (*IOContext) RmOmapKeys ¶
RmOmapKeys removes the specified `keys` from the omap `oid`
func (*IOContext) SetNamespace ¶
SetNamespace sets the namespace for objects within this IO context (pool). Setting namespace to a empty or zero length string sets the pool to the default namespace.
func (*IOContext) SetSnapRead ¶
SetSnapRead sets the snapshot from which reads are performed. Subsequent reads will return data as it was at the time of that snapshot. Specify the id of the snapshot to set or use SnapHead for no snapshot in order to resume normal operation on the ioctx.
func (*IOContext) SetXattr ¶
SetXattr sets an xattr for an object with key `name` with value as `data`
func (*IOContext) SnapCreate ¶
SnapCreate creates a pool-wide snapshot
func (*IOContext) SnapGetName ¶
SnapGetName gets the name of a pool snapshot
func (*IOContext) SnapGetStamp ¶
SnapGetStamp finds when a pool snapshot occurred
func (*IOContext) SnapList ¶
SnapList returns the ids of pool snapshots. Specify the maximum length of the returned array (512 by default if zero or negative) If the number of snapshots is greater than this length then -ERANGE is returned and the user should retry with a larger maxlen.
func (*IOContext) SnapLookup ¶
SnapLookup gets the id of a pool snapshot
func (*IOContext) SnapRemove ¶
SnapRemove deletes a pool snapshot
func (*IOContext) SnapRollback ¶
SnapRollback an object to a pool snapshot The contents of the object will be the same as when the snapshot was taken.
func (*IOContext) Stat ¶
func (ioctx *IOContext) Stat(object string) (stat ObjectStat, err error)
Stat returns the size of the object and its last modification time
func (*IOContext) Truncate ¶
Truncate resizes the object with key oid to size size. If the operation enlarges the object, the new area is logically filled with zeroes. If the operation shrinks the object, the excess data is removed. It returns an error, if any.
type Iter ¶
type Iter struct {
// contains filtered or unexported fields
}
Iter supports iterating over objects in the ioctx.
func (*Iter) Close ¶
func (iter *Iter) Close()
Close the iterator cursor on the server. Be aware that iterators are not closed automatically at the end of iteration.
func (*Iter) Namespace ¶
Namespace returns the namespace associated with the current value of the iterator (object name), after a successful call to Next.
func (*Iter) Next ¶
Next retrieves the next object name in the pool/namespace iterator. Upon a successful invocation (return value of true), the Value method should be used to obtain the name of the retrieved object name. When the iterator is exhausted, Next returns false. The Err method should used to verify whether the end of the iterator was reached, or the iterator received an error.
Example:
iter := pool.Iter() defer iter.Close() for iter.Next() { fmt.Printf("%v\n", iter.Value()) } return iter.Err()
type IterToken ¶
type IterToken uint32
IterToken supports reporting on and seeking to different positions.
type LockInfo ¶
type LockInfo struct { NumLockers int Exclusive bool Tag string Clients []string Cookies []string Addrs []string }
LockInfo represents information on a current Ceph lock
type ObjectListFunc ¶
type ObjectListFunc func(oid string)
ObjectListFunc is the type of the function called for each object visited by ListObjects.
type ObjectStat ¶
type ObjectStat struct { // current length in bytes Size uint64 // last modification time ModTime time.Time }
ObjectStat represents an object stat information
type OmapListFunc ¶
OmapListFunc is the type of the function called for each omap key visited by ListOmapValues
type PoolStat ¶
type PoolStat struct { // space used in bytes Num_bytes uint64 // space used in KB Num_kb uint64 // number of objects in the pool Num_objects uint64 // number of clones of objects Num_object_clones uint64 // num_objects * num_replicas Num_object_copies uint64 Num_objects_missing_on_primary uint64 // number of objects found on no OSDs Num_objects_unfound uint64 // number of objects replicated fewer times than they should be // (but found on at least one OSD) Num_objects_degraded uint64 Num_rd uint64 Num_rd_kb uint64 Num_wr uint64 Num_wr_kb uint64 }
PoolStat represents Ceph pool statistics.
type RadosError ¶
type RadosError int
RadosError represents an error condition returned from the Ceph RADOS APIs.
func (RadosError) Error ¶
func (e RadosError) Error() string
Error returns the error string for the RadosError type.