mirror of
https://github.com/ceph/go-ceph
synced 2024-12-25 15:42:30 +00:00
rados: add SetPoolFullTry() and UnsetPoolFullTry()
SetPoolFullTry() implements rados_set_pool_full_try() and UnsetPoolFullTry() implements rados_unset_pool_full_try() octopus onwards. Signed-off-by: Mudit Agarwal <muagarwa@redhat.com>
This commit is contained in:
parent
4955746fb2
commit
444050570c
37
rados/ioctx_octopus.go
Normal file
37
rados/ioctx_octopus.go
Normal file
@ -0,0 +1,37 @@
|
||||
// +build !nautilus
|
||||
|
||||
package rados
|
||||
|
||||
// #cgo LDFLAGS: -lrados
|
||||
// #include <rados/librados.h>
|
||||
//
|
||||
import "C"
|
||||
|
||||
// Ceph octopus deprecates rados_set_osdmap_full_try() and implements rados_set_pool_full_try()
|
||||
// Ceph octopus deprecates rados_unset_osdmap_full_try() and implements rados_unset_pool_full_try()
|
||||
|
||||
// SetPoolFullTry makes sure to send requests to the cluster despite
|
||||
// the cluster or pool being marked full; ops will either succeed(e.g., delete)
|
||||
// or return EDQUOT or ENOSPC.
|
||||
//
|
||||
// Implements:
|
||||
// void rados_set_pool_full_try(rados_ioctx_t io);
|
||||
func (ioctx *IOContext) SetPoolFullTry() error {
|
||||
if err := ioctx.validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
C.rados_set_pool_full_try(ioctx.ioctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
// UnsetPoolFullTry unsets the flag set by SetPoolFullTry()
|
||||
//
|
||||
// Implements:
|
||||
// void rados_unset_pool_full_try(rados_ioctx_t io);
|
||||
func (ioctx *IOContext) UnsetPoolFullTry() error {
|
||||
if err := ioctx.validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
C.rados_unset_pool_full_try(ioctx.ioctx)
|
||||
return nil
|
||||
}
|
30
rados/ioctx_octopus_test.go
Normal file
30
rados/ioctx_octopus_test.go
Normal file
@ -0,0 +1,30 @@
|
||||
// +build !nautilus
|
||||
|
||||
package rados
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func (suite *RadosTestSuite) TestSetUnsetPoolFullTry() {
|
||||
suite.SetupConnection()
|
||||
suite.T().Run("invalidIOContext", func(t *testing.T) {
|
||||
ioctx := &IOContext{}
|
||||
err := ioctx.SetPoolFullTry()
|
||||
assert.Error(t, err)
|
||||
err = ioctx.UnsetPoolFullTry()
|
||||
assert.Error(t, err)
|
||||
})
|
||||
|
||||
suite.T().Run("validIOContext", func(t *testing.T) {
|
||||
ioctx, err := suite.conn.OpenIOContext(suite.pool)
|
||||
require.NoError(suite.T(), err)
|
||||
err = ioctx.SetPoolFullTry()
|
||||
assert.NoError(t, err)
|
||||
err = ioctx.UnsetPoolFullTry()
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue
Block a user