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) MonCommandTarget(name string, args [][]byte) ([]byte, string, error)
- func (c *Conn) MonCommandTargetWithInputBuffer(name string, args [][]byte, inputBuffer []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) OsdCommand(osd int, args [][]byte) ([]byte, string, error)
- func (c *Conn) OsdCommandWithInputBuffer(osd int, args [][]byte, inputBuffer []byte) ([]byte, string, 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) ParseConfigArgv(argv []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) CreateSnap(snapName string) 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) GetLastVersion() (uint64, error)
- func (ioctx *IOContext) GetOmapValues(oid string, startAfter string, filterPrefix string, maxReturn int64) (map[string][]byte, error)
- func (ioctx *IOContext) GetPoolID() int64
- func (ioctx *IOContext) GetPoolName() (name string, err error)
- func (ioctx *IOContext) GetPoolStats() (stat PoolStat, err error)
- func (ioctx *IOContext) GetSnapName(snapID SnapID) (string, error)
- func (ioctx *IOContext) GetSnapStamp(snapID SnapID) (time.Time, 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) ListSnaps() ([]SnapID, 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) LookupSnap(snapName string) (SnapID, error)
- func (ioctx *IOContext) Pointer() unsafe.Pointer
- func (ioctx *IOContext) Read(oid string, data []byte, offset uint64) (int, error)
- func (ioctx *IOContext) RemoveSnap(snapName string) error
- func (ioctx *IOContext) RmOmapKeys(oid string, keys []string) error
- func (ioctx *IOContext) RmXattr(oid string, name string) error
- func (ioctx *IOContext) RollbackSnap(oid, snapName string) error
- func (ioctx *IOContext) SetNamespace(namespace string)
- func (ioctx *IOContext) SetOmap(oid string, pairs map[string][]byte) error
- func (ioctx *IOContext) SetReadSnap(snapID SnapID) error
- func (ioctx *IOContext) SetXattr(object string, name string, data []byte) 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 SnapID
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 = SnapID(C.LIBRADOS_SNAP_HEAD)
SnapHead is the representation of LIBRADOS_SNAP_HEAD from librados. SnapHead can be used to reset the IOContext to stop reading from a snapshot.
Variables ¶
var ( // ErrNotConnected is returned when functions are called // without a RADOS connection. ErrNotConnected = errors.New("RADOS not connected") // ErrEmptyArgument may be returned if a function argument is passed // a zero-length slice or map. ErrEmptyArgument = errors.New("Argument must contain at least one item") // ErrInvalidIOContext may be returned if an api call requires an IOContext // but IOContext is not ready for use. ErrInvalidIOContext = errors.New("IOContext is not ready for use") )
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 ¶ added in v0.4.0
MgrCommand sends a command to a ceph-mgr.
func (*Conn) MgrCommandWithInputBuffer ¶ added in v0.4.0
MgrCommandWithInputBuffer sends a command, with an input buffer, to a ceph-mgr.
Implements:
int rados_mgr_command(rados_t cluster, const char **cmd, size_t cmdlen, const char *inbuf, size_t inbuflen, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen);
func (*Conn) MonCommand ¶
MonCommand sends a command to one of the monitors
func (*Conn) MonCommandTarget ¶ added in v0.4.0
MonCommandTarget sends a command to a specified monitor.
func (*Conn) MonCommandTargetWithInputBuffer ¶ added in v0.4.0
func (c *Conn) MonCommandTargetWithInputBuffer( name string, args [][]byte, inputBuffer []byte) ([]byte, string, error)
MonCommandTargetWithInputBuffer sends a command, with an input buffer, to a specified monitor.
Implements:
int rados_mon_command_target(rados_t cluster, const char *name, const char **cmd, size_t cmdlen, const char *inbuf, size_t inbuflen, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen);
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) OsdCommand ¶ added in v0.4.0
OsdCommand sends a command to the specified ceph OSD.
func (*Conn) OsdCommandWithInputBuffer ¶ added in v0.4.0
func (c *Conn) OsdCommandWithInputBuffer( osd int, args [][]byte, inputBuffer []byte) ([]byte, string, error)
OsdCommandWithInputBuffer sends a command, with an input buffer, to the specified ceph OSD.
Implements:
int rados_osd_command(rados_t cluster, int osdid, const char **cmd, size_t cmdlen, const char *inbuf, size_t inbuflen, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen);
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.
This function passes a placeholder value to Ceph as argv[0], see ParseConfigArgv for a version of this function that allows the caller to specify argv[0].
func (*Conn) ParseConfigArgv ¶ added in v0.5.0
ParseConfigArgv configures the connection using a unix style command line argument vector.
Implements:
int rados_conf_parse_argv(rados_t cluster, int argc, const char **argv);
func (*Conn) ParseDefaultConfigEnv ¶
ParseDefaultConfigEnv configures the connection from the default Ceph environment variable CEPH_ARGS.
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) CreateSnap ¶ added in v0.5.0
CreateSnap creates a pool-wide snapshot.
Implements: int rados_ioctx_snap_create(rados_ioctx_t io, const char *snapname)
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) GetLastVersion ¶ added in v0.5.0
GetLastVersion will return the version number of the last object read or written to.
Implements:
uint64_t rados_get_last_version(rados_ioctx_t io);
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) GetPoolID ¶ added in v0.5.0
GetPoolID returns the pool ID associated with the I/O context.
Implements:
int64_t rados_ioctx_get_id(rados_ioctx_t io)
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) GetSnapName ¶ added in v0.5.0
GetSnapName returns the name of a pool snapshot with the given snapshot ID.
Implements:
int rados_ioctx_snap_get_name(rados_ioctx_t io, rados_snap_t id, char *name, int maxlen)
func (*IOContext) GetSnapStamp ¶ added in v0.5.0
GetSnapStamp returns the time of the pool snapshot creation.
Implements:
int rados_ioctx_snap_get_stamp(rados_ioctx_t io, rados_snap_t id, time_t *t)
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) ListSnaps ¶ added in v0.5.0
ListSnaps returns a slice containing the SnapIDs of existing pool snapshots.
Implements:
int rados_ioctx_snap_list(rados_ioctx_t io, rados_snap_t *snaps, int maxlen)
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) LookupSnap ¶ added in v0.5.0
LookupSnap returns the ID of a pool snapshot.
Implements:
int rados_ioctx_snap_lookup(rados_ioctx_t io, const char *name, rados_snap_t *id)
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) RemoveSnap ¶ added in v0.5.0
RemoveSnap deletes the pool snapshot.
Implements:
int rados_ioctx_snap_remove(rados_ioctx_t io, const char *snapname)
func (*IOContext) RmOmapKeys ¶
RmOmapKeys removes the specified `keys` from the omap `oid`
func (*IOContext) RollbackSnap ¶ added in v0.5.0
RollbackSnap rollbacks the object with key oID to the pool snapshot. The contents of the object will be the same as when the snapshot was taken.
Implements:
int rados_ioctx_snap_rollback(rados_ioctx_t io, const char *oid, const char *snapname);
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) SetReadSnap ¶ added in v0.5.0
SetReadSnap sets the snapshot from which reads are performed. Subsequent reads will return data as it was at the time of that snapshot. Pass SnapHead for no snapshot (i.e. normal operation).
Implements:
void rados_ioctx_snap_set_read(rados_ioctx_t io, rados_snap_t snap);
func (*IOContext) SetXattr ¶
SetXattr sets an xattr for an object with key `name` with value as `data`
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 SnapID ¶ added in v0.5.0
type SnapID C.rados_snap_t
SnapID represents the ID of a rados snapshot.