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:
Mudit Agarwal 2021-06-01 15:28:28 +05:30 committed by mergify[bot]
parent 4955746fb2
commit 444050570c
2 changed files with 67 additions and 0 deletions

37
rados/ioctx_octopus.go Normal file
View 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
}

View 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)
})
}