Releases: ceph/go-ceph
Release v0.17.0
The maintainers and contributors to go-ceph are pleased to announce the v0.17.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
Many thanks to our new contributors:
- @anoopcs9 made their first contribution in #715
- @riya-singhal31 made their first contribution in #716
- @baergj made their first contribution in #713
- @Okhoshi made their first contribution in #710
- @oneto1 made their first contribution in #704
- @dmlambea made their first contribution in #740
- @maksim-kharitonov made their first contribution in #654
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section (if present) to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here. All newly introduced APIs in the following section are labeled as "preview" APIs first, and are only available if the ceph_preview
build tag is set. There is explicitly no backwards compatibility guaranteed for these until they are labeled as "stable" in a later release.
New Features
cephfs
- cephfs: add AtStatxDontSync and deprecate AtNoAttrSync by @ansiwen in #747
- Adds the
AtStatxDontSync
flag, that replaces the deprecatedAtNoAttrSync
.
- Adds the
rados
- rados: Implement rados_set_alloc_hint2 by @Okhoshi in #710
- Adds
IOContext.SetAllocationHint
andWriteOp.SetAllocationHint
methods.
- Adds
- rados: add support for retrieving the alignment (stripe) size by @dmlambea in #740
- Adds the
IOContext.Alignment
andIOContext.RequiresAlignment
methods.
- Adds the
rgw/admin
- Rgw/admin: add num_shards to bucket struct field by @oneto1 in #704
- Adds
NumShards
field to theBucket
struct.
- Adds
- Rgw admin more actions by @maksim-kharitonov in #654
- Adds the
API
methodsListUsersBuckets
,ListUsersBucketsWithStat
,CreateKey
,RemoveKey
andSetIndividualBucketQuota
- Adds the
API Stability Updates
rados
IOContext.SetLocator
method is stable
rgw/admin
API
methodsUnlinkBucket
,LinkBucket
,CreateSubuser
,RemoveSubuser
andModifySubuser
are stable.
common/log
SetWarnf
andSetDebugf
are stable.
cephfs
- The
AtNoAttrSync
is deprecated.
Other Changes
rados package
rbd package
- rbd: add mirroring support for nautilus by @Sanford137 in #714
cephfs/admin package
- cephfs/admin: Fix compile errors by @anoopcs9 in #721
- cephfs/admin: Replace 'untested' with pre-release tags by @anoopcs9 in #742
- cephfs admin: remove unnecessary import C lines by @phlogistonjohn in #751
Internal
- makefile: use
pacific
as our default ceph version by @anoopcs9 in #715 - fix: fixed few typos by @riya-singhal31 in #716
- Dockerfile: Remove an unused CEPH_TAG env variable by @anoopcs9 in #717
- CI: also disable TestCancelClone for pacific by @ansiwen in #724
- rebase: bump github.com/aws/aws-sdk-go from 1.44.28 to 1.44.43 by @dependabot in #719
- rebase: bump github.com/stretchr/testify from 1.7.2 to 1.8.0 by @dependabot in #726
- Add MacOS instructions to README by @ansiwen in #727
- CI: remove non-ptrguard tests by @ansiwen in #723
- Makefile: Use
?=
for initial variable definitions by @anoopcs9 in #725 - rebase: bump github.com/aws/aws-sdk-go from 1.44.43 to 1.44.47 by @dependabot in #730
- gitignore: Add vi/vim backup files by @anoopcs9 in #732
- entrypoint: Store bootstrap token in variable by @anoopcs9 in #733
- go-ceph: bump Go version of module to 1.17 by @ansiwen in #731
- CI: Add mechanism to test against pre-release Ceph images by @anoopcs9 in #729
- rebase: bump github.com/aws/aws-sdk-go from 1.44.47 to 1.44.52 by @dependabot in #735
- Run shellcheck on our shell scripts by @phlogistonjohn in #737
- go-ceph: add warn logs to finalizers. by @ansiwen in #736
- github: update dependabot configuration to better match go-ceph style by @phlogistonjohn in #746
- go-ceph: bump github.com/aws/aws-sdk-go from 1.44.52 to 1.44.64 by @dependabot in #748
- workflows: update archive action by @phlogistonjohn in #745
- workflows: Add pre-release targets to ceph version matrix by @anoopcs9 in #743
- go-ceph: bump github.com/aws/aws-sdk-go from 1.44.64 to 1.44.67 by @dependabot in #750
- contrib: add new fix-versions mode to apiage.py by @phlogistonjohn in #749
- Fix recent revive failures by @phlogistonjohn in #755
- apiage: Do not leave empty sections for packages in markdown by @anoopcs9 in #753
New Contributors
Full Changelog: v0.16.0...v0.17.0
Release v0.16.0
The maintainers and contributors to go-ceph are pleased to announce the v0.16.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
Many thanks to our new contributors:
- @nickjanus made their first contribution in #663
- @Sanford137 made their first contribution in #687
- @pkalever made their first contribution in #691
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section (if present) to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here. All newly introduced APIs in the following section are labeled as "preview" APIs first, and are only available if the ceph_preview build tag is set. There is explicitly no backwards compatibility guaranteed for these until they are labeled as "stable" in a later release.
New Features
cephfs/admin package:
- cephfs/admin: add CloneStatus.GetFailure() by @nixpanic in #696
- Add GetFailure method to fetch volume clone failure details
- This is a preview API. In order to use it in this release the
ceph_preview
build tag must be set.
- cephfs: add subvolume metadata APIs by @pkalever in #691
- Add SetMetadata, GetMetadata, RemoveMetadata, ForceRemoveMetadata, and ListMetadata methods for CephFS volume metadata management
- NOTE: this is a preliminary implementation. It is untested due to issues with CI dependencies. In order to use it in this release both the build tags
ceph_preview
andceph_ci_untested
must be set.
- cephfs: add subvolume snapshot metadata APIs by @pkalever in #698
- Add SetSnapshotMetadata, GetSnapshotMetadata, RemoveSnapshotMetadata, ForceRemoveSnapshotMetadata, and ListSnapshotMetadata methods for CephFS snapshot metadata management
- NOTE: this is a preliminary implementation. It is untested due to issues with CI dependencies. In order to use it in this release both the build tags
ceph_preview
andceph_ci_untested
must be set.
rbd package
- rbd: expose rbd_snap_rename to Go clients by @Sanford137 in #687
- Add Snapshot method Rename implementing rbd_snap_rename
- This is a preview API. In order to use it in this release the
ceph_preview
build tag must be set.
API Stability Updates
rados package:
- rados: stabilze some APIs by @phlogistonjohn in #706
- APIs for watchers and ReadOp and WriteOp methods are now stable
common/admin packge:
- nfs admin: remove untested build tag by @phlogistonjohn in #689
- the nfs admin API is now considered a preview API.
Deprecations and Removals
- cephfs admin: remove deprecated EnableModule, DisableModule funcs by @phlogistonjohn in #705
Other Changes
rados package
- List oids null by @nickjanus in #663
- OIDs with null characters in the name can now be listed using IOContext.ListObjects
rbd package
- rbd: don't cap the buffer size used in GetImageNames by @Sanford137 in #700
rgw/admin package
Internal
- CI: disable fail-fast in test-suite by @ansiwen in #669
- implements: analyze all but internal packages by @ansiwen in #665
- docs: document release processes in greater detail by @phlogistonjohn in #647
- go-ceph: require a newer version of testify by @phlogistonjohn in #671
- github: add Dependabot for managing versions in go.mod by @nixpanic in #667
- implements: a public function's type must be exported too by @phlogistonjohn in #674
- cutil: enable PtrGuard by default by @ansiwen in #677
- Add quincy support to our CI tests by @phlogistonjohn in #659
- containers: update the go version used in the CI container by @phlogistonjohn in #682
- implements: don't rely on PREVIEW comments but on
ceph_preview
tag by @ansiwen in #693 - rbd admin: enable TestMirrorSnapshotScheduleStatus on qunicy by @phlogistonjohn in #686
- readme: note v0.16.0 has preliminary quincy support by @phlogistonjohn in #707
- dependency updates by @dependabot
Full Changelog: v0.15.0...v0.16.0
Release v0.15.0
The maintainers and contributors to go-ceph are pleased to announce the v0.15.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
Many thanks to our new contributors:
- @Anthrazz made their first contribution in #651
- @elrondwong made their first contribution in #646
- @sebastianriese made their first contribution in #644
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section (if present) to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here. All newly introduced APIs in the following section are labeled as "preview" APIs first, and are only available if the ceph_preview
build tag is set. There is explicitly no backwards compatibility guaranteed for these until they are labeled as "stable" in a later release.
New Features
- rados package
- rgw package
- Adds support for the subuser calls in the rgw admin interface by @sebastianriese in #644
- Adds
API
methodsCreateSubuser
,RemoveSubuser
andModifySubuser
- Adds
- rgw/admin: add suport for link/unlink bucket by @elrondwong in #646
- Adds
API
methodsLinkBucket
andUnlinkBucket
- Adds
- Adds support for the subuser calls in the rgw admin interface by @sebastianriese in #644
- common package
- nfs: admin APIs for managing nfs exports by @phlogistonjohn in #655
- Adds function
NewFromConn
andAdmin
methodsCreateCephFSExport
RemoveExport
ListDetailedExports
ExportInfo
- NOTE: this is a preliminary implementation, that is untested due to issues with CI dependencies. In order to use it now already, both the build tags
ceph_preview
andceph_ci_untested
must be set.
- Adds function
- common: implement a common log package by @ansiwen in #638
- Adds functions
SetWarnf
andSetDebugf
- Adds functions
- nfs: admin APIs for managing nfs exports by @phlogistonjohn in #655
Other changes
- rados package
- internals
Full Changelog: v0.14.0...v0.15.0
Release v0.14.0
The maintainers and contributors to go-ceph are pleased to announce the v0.14.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
Another round of thanks to contributor Robert Vasek for adding more API calls to the rados module. Both ReadOp and WriteOp types have been extended with new function calls, including the ability to assert the rados version preventing
unexpected state changes. See the features list for an expanded list of the new function calls.
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement
breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
New Features
-
In the rados package (preview APIs):
- Add ReadOp method Read implementing rados_read_op_read
- Add WriteOp method Remove implementing rados_write_op_remove
- Add ReadOp method AssertVersion implementing rados_read_op_assert_version
- Add WriteOp method AssertVersion implementing rados_write_op_assert_version
- Add WriteOp method SetXattr implementing rados_write_op_setxattr
- Add ReadOp method GetOmapValuesByKeys implementing read_op_omap_get_vals_by_keys
- Add Watcher type
- Add NotifyEvent type
- Add WatchWithTimeout and Watch implementing rados_watch3
- Add Watcher method Check implementing rados_watch_check
- Add Watcher method Delete implementing rados_unwatch2
- Add NotifyWithTimeout and Notify implementing rados_notify2
- Add NotifyEvent method Ack implementing rados_notify_ack
- Add WatcherFlush implementing rados_watch_flush
-
In the common admin manager package:
- Create a new package for ceph mgr module functions
- Move EnableModule from cephfs admin
- Move DisableModule from cephfs admin
- Move ListModules from cephfs admin
Now Stable
- In the rados package:
- The WriteOp CmpExt function
Deprecations & Removals
The functions EnableModule and DisableModule present in cephfs admin are now deprecated. Use the same functions from the new "common/admin/manager" location instead.
Ceph "Nautilus" continues to be deprecated.
Other
- Improve reliability of cephfs mirroring tests
- Improve doc comments for rbd Read and Write functions
- Fix project workflow automation
- Document centos specific package dependency hints
- Improve api documentation workflow
- Fix issues building container images
- Fix running static checks on preview APIs
- Fix code style issue in cutil package
- Fix doc comments in the rados package
- Add internal library code for writing tests
- Other fixes and improvements
Release v0.13.0
The maintainers and contributors to go-ceph are pleased to announce the v0.13.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
Big thanks to contributor Robert Vasek for providing a new function to the WriteOp type. The CmpExt function supports comparing a byte sequence against one within a rados object allowing one to add an assertion of matching content as part of a single write operation.
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
New Features
-
In the rados package:
- Add WriteOp CmpExt implementing rados_write_op_cmpext (preview)
-
In the rbd package:
- Add GetName accessor function
Now Stable
-
In the rbd admin package:
- The ImageSpec type
- The TaskAdmin function AddFlatten
- The TaskAdmin function AddRemove
- The TaskAdmin function AddTrashRemove
- The TaskAdmin function Cancel
- The TaskAdmin function GetTaskByID
- The TaskAdmin function List
-
In the rgw admin package:
- The AddUserCap function
- The RemoveUserCap function
Deprecations & Removals
In go-ceph v0.12.0 support for Ceph "Nautilus" was deprecated. Support for nautilus will be removed in a future release.
Other
- Improve reliability of cephfs mirroring tests
- All remaining build tags for "luminous" and "mimic" were removed. Previous
releases had already removed support for those ceph versions - Add workflow automation for deprecated and preview apis
- Document processes around deprecated and preview apis
- Improve C memory allocations in rados
- Fix rgw admin example documentation
- Other fixes and improvements
Release v0.12.0
The maintainers and contributors to go-ceph are pleased to announce the v0.12.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
With this release go-ceph, via the rbd admin package, can now interact with RBD asynchronous tasks. These tasks perform actions like flattening or removing an image in the background. The tasks run within the Ceph cluster (the MGR) rather than synchronously from the (go-ceph) client. We'd like to extend our thanks to contribtor Rakshith R. for these changes!
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
Please note that with this release we have started using the ceph_preview
build tag to demarcate new APIs that we want tested and tried out but we do not commit to keeping the API stable. The details of this policy are available in the API Stability Document [1] and information about the status of deprecated and preview APIs can be found in the API Status Document [2].
New Features
-
In the rbd package:
- Add MirrorImageInstanceIDList and MirrorImageInstanceIDIter implementing rbd_mirror_image_instance_id_list
-
In the rbd admin package:
- Add ImageSpec type
- Add TaskAdmin function AddFlatten
- Add TaskAdmin function AddRemove
- Add TaskAdmin function AddTrashRemove
- Add TaskAdmin function Cancel
- Add TaskAdmin function GetTaskByID
- Add TaskAdmin function List
-
In the rgw admin package:
- Add AddUserCap function
- Add RemoveUserCap function
Deprecations & Removals
With go-ceph v0.12.0 support for Ceph "Nautilus" is offically deprecated.
Other
- Fixes for PtrGuard tests
- Standardization of many internal variable names
- Enable previously skipped cephfs tests
- Improvements to cephfs test cases
- Use ceph/ceph as the base image for test containers
- Add a mirror state option to the entrypoint script
- Reuse running ceph container(s) in makefile, when possible
- Run tests with the
ceph_preview
build tag - Improve
implements
the go-ceph API analysis tool - Add a tool to help track the status of APIs
- Improve documentation visibilty of some deprecated items
- Other fixes and improvements
[1] - https://github.com/ceph/go-ceph/blob/master/docs/api-stability.md
[2] - https://github.com/ceph/go-ceph/blob/master/docs/api-status.md
Release v0.11.0
The maintainers and contributors to go-ceph are pleased to announce the v0.11.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
This release sees the addition of new RBD APIs for managing encryption. The go-ceph rbd package can now configure LUKS encryption for an image as well as read & write to an image with LUKS-style encryption. A big thank you to contributor Effi Ofer for these additions.
We have also added intial support for CephFS mirroring to the cephfs admin package. Functions have been added that support enabling mirroring, basic management of site peers, and adding or removing directories to be mirrored. Please see the docs for the cephfs/admin package for full details.
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
Please note that for future releases we will start using a build tag to demarcate new APIs that we want tested and tried out but we do not commit to keeping the API stable yet. The exact details of this policy will be set out soon and provided in the following go-ceph release.
New Features
-
In the cephfs package
- Add ReadConfigFile implementing ceph_conf_read_file
-
In the cephfs admin:
- Add EnableMirroringModule function
- Add DisableMirroringModule function
- Add SnapshotMirrorAdmin type and many functions related to cephfs mirroring
-
In the rbd package
- Add EncryptionFormat implementing rbd_encryption_format
- Add EncryptionLoad implementing rbd_encryption_load
- Add MirrorImageInfoIter type implementing rbd_mirror_image_info_list
- Add MirrorImageInfoList implementing rbd_mirror_image_info_list
- Add MirrorImageGlobalStatusList implementing rbd_mirror_image_status_list
-
In the rgw admin package:
- Add support for HTTP client interface
- Add Stat & GenerateStat fields to the User struct
- Add UserCaps field to the User struct
Deprecations & Removals
- In the rgw admin package:
- Remove the Debug field from the API type.
- In the rbd package:
- Deprecate Close() method of MirrorImageGlobalStatusIter
It is planned that go-ceph v0.11 will be the last release to fully support ceph nautilus and that for the following go-ceph release ceph nautilus support will be deprecated.
Other
- Support enabling dependency caching for container rules in the Makefile
- Added a Makefile flag to run more go commands via a container
- Improved devcontainer support for VSCode
- Internal improvements to variable names
- Minor code improvements in the rgw/admin package
- Removed some code for non-supported ceph mimic & luminous versions
- Support for testing cephfs mirroring
- Other fixes and improvements
Release v0.10.0
The maintainers and contributors to go-ceph are pleased to announce the v0.10.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
For this release we'd like to highlight the new "rgw admin" package. This package can be used to access Ceph's RADOS Gateway (RGW) Operational Admin API. This is an HTTP-based API that supports bucket management, user management, and user quota management. We expect additional functions to be added in the future. This API requires the use of S3-style authentication credentials in contrast to the ceph.conf/ceph keyring/ceph keyfile authentication used by the other go-ceph sub-packages.
In addition, we've added a new "rbd admin" package. This library serves a similar role to our "cephfs admin" package - supporting administrative functions that are not a direct part of the Ceph librbd API. Currently, the package includes functions to manage mirror snapshot schedules.
We've added a number of new functions related to RBD mirroring to the rbd package.
This is the first release to officially support Ceph "pacific".
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
Because the rgw admin and rbd admin packages are brand new, we intend on being more lax with backwards compatibility, for these specific packages, for a release or two. While we'd prefer not to change anything, we will more readily make changes as needed because the package is still immature compared to the other sub-packages. Feedback, via our github issue tracker, about these packages are especially welcome.
New Features
-
In the cephfs package
- Add Lchown implementing ceph_lchown
-
In the rados package
- Add SetPoolFullTry implementing rados_set_osdmap_full_try (nautilus)
- Add UnsetPoolFullTry implementing rados_unset_osdmap_full_try (nautilus)
- Add SetPoolFullTry implementing rados_set_pool_full_try
- Add UnsetPoolFullTry implementing rados_unset_pool_full_try
-
In the rbd package
- Add MirrorImageStatusSummary implementing rbd_mirror_image_status_summary
- Add SetMirrorSiteName implementing rbd_mirror_site_name_set
- Add GetMirrorSiteName implementing rbd_mirror_site_name_get
- Add SetSnapshot Image method (re)implementing rbd_snap_set
- Add DeepCopy implementing rbd_deep_copy
- Add CreateMirrorPeerBootstrapToken implementing rbd_mirror_peer_bootstrap_create
- Add ImportMirrorPeerBootstrapToken implementing rbd_mirror_peer_bootstrap_import
- Add MirrorImageGlobalStatusIter implementing rbd_mirror_image_global_status_list
- Add GetMirrorUUID implementing rbd_mirror_uuid_get
-
Added new package rbd/admin
-
Added new package rgw/admin
Other
- Improve behavior when running multi-container tests with podman
- Support passing test-script entrypoint arguments to the makefile
- No longer require fuse when running the tests
- Add a devcontainer configuration for users of VSCode
- When running tests manually, default to "octopus"
- rbd: Replace complex pointer arithmetic
- rbd: Fix the argument type of the rbd_writesame call
- Add benchmarks for PtrGuard related types
- CI workflow improvements
- Other fixes and improvements
Release v0.9.0
The maintainers and contributors to go-ceph are pleased to announce the v0.9.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
This release improves the support and testing of rbd mirroring.
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
New Features
- In the rbd package
- Add GetGlobalMirrorStatus implementing rbd_mirror_image_get_global_status
- Add String method for MirrorMode
- Add String method for ImageMirrorMode
- Add String method for MirrorImageState
Deprecations & Removals
No changes since v0.8.0.
Other
- Remove the requirement for fuse mounts when testing cephfs
- Improve ptrguard tests
- Add new test/CI infrastructure for testing mirroring with two ceph clusters
- Refactoring utility functions for cephfs admin
- CI workflow improvements
- Other fixes and improvements
Release v0.8.0
The maintainers and contributors to go-ceph are pleased to announce the v0.8.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.
This release adds new types in the rados package that can be used to make "batch" read and write operations. In addition, these ReadOp and WriteOp types lay the base for future work exposing new ceph rados "op" functions. Existing functionality, such as the code to get and set OMaps, has been updated to use these new types.
Many new functions have been added to the rbd package. One set of functions adds support for interacting with rbd mirroring features. Another set of functions adds support for rbd groups and group snapshots.
Important new features have been added to the utility library to improve memory management between C and Go code. In particular, the new "PtrGuard" mechanism can be used to improve buffer sharing between C and Go. As PtrGuard is new, it is not currently enabled by default. To enable PtrGuard, and test it out, supply the build tag "ptrguard" to your go build command. This change, as well as related changes to go-ceph, means that go-ceph is now compliant with the checks enabled when "cgocheck=2" and go-ceph programs can now run with that parameter in all cases.
As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.
New Features
- In the rados package
- Add OperationFlags type and flag values
- Add a WriteOp type based on rados_write_op_t
- Add WriteOp method Create implementing rados_write_op_create
- Add WriteOp method SetOmap implementing rados_write_op_omap_set
- Add WriteOp method RmOmapKeys implementing rados_write_op_omap_rm_keys
- Add WriteOp method CleanOmap implementing rados_write_op_omap_clear
- Add WriteOp method AssertExists implementing rados_write_op_assert_exists
- Add WriteOp method Write implementing rados_write_op_write
- Add WriteOp method WriteFull implementing rados_write_op_write_full
- Add WriteOp method WriteSame implementing rados_write_op_writesame
- Add a ReadOp type based on rados_read_op_t
- Add ReadOp method GetOmapValues implementing rados_read_op_omap_get_vals2
- Add ReadOp method AssertExists implementing rados_read_op_assert_exists
- In the rbd package
- Add GroupCreate implementing rbd_group_create
- Add GroupRemove implementing rbd_group_remove
- Add GroupRename implementing rbd_group_rename
- Add GroupList implementing rbd_group_list
- Add GroupImageAdd implementing rbd_group_image_add
- Add GroupImageRemove implementing rbd_group_image_remove
- Add GroupImageRemoveByID implementing rbd_group_image_remove_by_id
- Add GroupImageList implementing rbd_group_image_list
- Add GetGroup implementing rbd_get_group
- Add GroupSnapCreate implementing rbd_group_snap_create
- Add GroupSnapRemove implementing rbd_group_snap_remove
- Add GroupSnapRename implementing rbd_group_snap_rename
- Add GroupSnapList implementing rbd_group_snap_list
- Add GroupSnapRollback implementing rbd_group_snap_rollback
- Add GroupSnapRollbackWithProgress implementing rbd_group_snap_rollback_with_progress
- Add SetMirrorMode implementing rbd_mirror_mode_set
- Add GetMirrorMode implementing rbd_mirror_mode_get
- Add MirrorEnable implementing rbd_mirror_image_enable2
- Add MirrorDisable implementing rbd_mirror_image_disable
- Add MirrorPromote implementing rbd_mirror_image_promote
- Add MirrorDemote implementing rbd_mirror_image_demote
- Add MirrorResync implementing rbd_mirror_image_resync
- Add MirrorInstanceId implementing rbd_mirror_image_get_instance_id
- Add GetMirrorImageInfo implementing rbd_mirror_image_get_info
- Add GetImageMirrorMode implementing rbd_mirror_image_get_mode
- In the cephfs admin package
- Add a State field to the SubVolumeInfo structure
Library Fixes
- In the cephfs admin package
- When the RetainSnapshots flag is set, send to correct JSON key
Deprecations & Removals
As a reminder we no longer support or test with Ceph "luminous" or "mimic" versions. Note that server-client version compatibility for go-ceph is the same as the native Ceph libraries, as these are what go-ceph builds upon. The versions of Ceph that go-ceph supports only applies to what versions are expected to successfully compile.
Other
- Fix "No such file or directory" error when executing Makefile
- CI workflow improvements
- Fix incorrect date based test assertion
- Enable test cases that were previously disabled, as the issues are fixed in ceph
- Add more general types for working with C code in Go
- Add a test case for WriteSame for zero-filling
- Add test cases for internal helper functions
- Add internal PtrGuard utility type
- Add SyncBuffer abstraction type
- Update internal Iovec type to use SyncBuffer
- Enable "GODEBUG=cgocheck=2" when running containerized tests
- Other fixes and improvements