Skip to content

Releases: ceph/go-ceph

Release v0.21.0

11 Apr 11:51
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.21.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Special thanks to our new contributors:

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

rbd

  • rbd: add functions to parse json in mirroring status description field by @phlogistonjohn in #842
    • Adds UnmarshalDescriptionJSON method to SiteMirrorImageStatus
    • Adds DescriptionReplayStatus method to SiteMirrorImageStatus
  • rbd: Add mirror peer site API components by @Nikhil-Ladha in #850
    • Adds AddMirrorPeerSite implementing rbd_mirror_peer_site_add
    • Adds RemoveMirrorPeerSite implementing rbd_mirror_peer_site_remove
    • Adds GetAttributesMirrorPeerSite implementing rbd_mirror_peer_site_get_attributes
    • Adds SetAttributesMirrorPeerSite implementing rbd_mirror_peer_site_set_attributes
    • Adds ListMirrorPeerSite implementing rbd_mirror_peer_site_list
    • Adds SetMirrorPeerSiteClientName implementing rbd_mirror_peer_site_set_client_name
    • Adds SetMirrorPeerSiteDirection implementing rbd_mirror_peer_site_set_direction
    • Adds SetMirrorPeerSiteName implementing rbd_mirror_peer_site_set_name
  • rbd: Add rbd_sparsify_with_progress rbd API by @Nikhil-Ladha in #851
    • Adds SparsifyWithProgress implementing rbd_sparsify_with_progress

cephfs

  • cephfs: implementation of mkdirs by @maitredede in #832
    • Adds MakeDirs implementing ceph_mkdirs

cephfs/admin

  • cephfs/admin: Add Subvolume{Group} pinning API by @anoopcs9 in #844
    • Adds PinSubVolume similar to ceph fs subvolume pin
    • Adds PinSubVolumeGroup similar to ceph fs subvolumegroup pin
  • cephfs/admin: Add API to fetch volume info by @anoopcs9 in #846
    • Adds FetchVolumeInfo similar to ceph fs volume info

Deprecations & Removals

cephfs/admin

Other Changes

rados

rgw/admin

Internal

Full Changelog: v0.20.0...v0.21.0

Release v0.20.0

14 Feb 15:58
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.20.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Special thanks to our new contributors:

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

rbd

  • rbd: implement live migration functions by @omidyoosefi in #797
    • Adds MigrationPrepare implementing rbd_migration_prepare
    • Adds MigrationPrepareImport implementing rbd_migration_prepare_import
    • Adds MigrationExecute implementing rbd_migration_execute
    • Adds MigrationCommit implementing rbd_migration_commit
    • Adds MigrationAbort implementing rbd_migration_abort
    • Adds MigrationStatus implementing rbd_migration_status

rgw/admin

  • rgw: add "ListBucketsWithStat" function by @TheMoti in #801
    • Adds the API.ListBucketsWithStat method.

cephfs

  • cephfs: add SelectFilesystem, a 2nd fs to micro-osd.sh etc, and tests by @phlogistonjohn in #827
    • Adds the MountInfo.SelectFilesystem method.
    • Special thanks to @aep for initiating this work!

general

Other Changes

common/admin/nfs

  • nfs admin: fix handling of non-existing psuedo_paths for export info by @phlogistonjohn in #821

cephfs/admin

  • Add untracked Subvolume and Snapshot metadata APIs in api-status by @anoopcs9 in #811

internal

  • Remove left over ceph_preview tags from test related files by @anoopcs9 in #799
  • go-ceph: bump actions/stale from 6 to 7 by @dependabot in #804
  • go-ceph: bump github.com/aws/aws-sdk-go from 1.44.151 to 1.44.172 by @dependabot in #805
  • go-ceph: bump golang.org/x/sys from 0.2.0 to 0.4.0 by @dependabot in #806
  • contrib: better warning for apiage by @phlogistonjohn in #808
  • github: update PR template with new checklist item and helpful links by @phlogistonjohn in #809
  • docs: fix version values for new rdb migration APIs by @phlogistonjohn in #813
  • go-ceph: bump github.com/aws/aws-sdk-go from 1.44.172 to 1.44.192 by @dependabot in #823
  • go-ceph: bump github.com/gofrs/uuid from 4.3.1+incompatible to 4.4.0+incompatible by @dependabot in #824
  • github: fix linebreaks in pr template by @phlogistonjohn in #828
  • github: remove deprecated and failing rebase_fallback attribute by @phlogistonjohn in #833
  • docs: fix api versions for new ListBucketWithStat API by @anoopcs9 in #836

Full Changelog: v0.19.0...v0.20.0

Release v0.19.0

13 Dec 15:04
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.19.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

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(if any) 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.

API Stability Updates

rados

  • The IOContext.SetAllocationHint is now stable
  • The WriteOp.SetAllocationHint is now stable
  • The IOContext.Alignment is now stable
  • The IOContext.RequiresAlignment is now stable

rgw/admin

  • The API.ListUserBuckets is now stable
  • The API.ListUserBucketsWithStat is now stable
  • The API.CreateKey is now stable
  • The API.RemoveKey is now stable
  • The API.SetIndividualBucketQuota is now stable

Deprecations and Removals

With go-ceph v0.19.0 support for Ceph "Octopus" is offically deprecated.

Other changes

Internal

Bug fixes

Full Changelog: v0.18.0...v0.19.0

Release v0.18.0

18 Oct 14:06
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.18.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

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

common/admin/nfs package:

  • nfs admin: add SecType field by @phlogistonjohn in #767
    • This new field is an API extension and currently only functions on development versions of Ceph

API Stability Updates

cephfs/admin

  • The CloneStatus.GetFailure method is now stable

rbd

  • The Snapshot.Remove method is now stable

common/admin/nfs

  • All API methods in the package are now stable

Other Changes

Internal

Full Changelog: v0.17.0...v0.18.0

Release v0.17.0

16 Aug 13:26
Compare
Choose a tag to compare

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:

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 deprecated AtNoAttrSync.

rados

  • rados: Implement rados_set_alloc_hint2 by @Okhoshi in #710
    • Adds IOContext.SetAllocationHint and WriteOp.SetAllocationHint methods.
  • rados: add support for retrieving the alignment (stripe) size by @dmlambea in #740
    • Adds the IOContext.Alignment and IOContext.RequiresAlignment methods.

rgw/admin

  • Rgw/admin: add num_shards to bucket struct field by @oneto1 in #704
    • Adds NumShards field to the Bucket struct.
  • Rgw admin more actions by @maksim-kharitonov in #654
    • Adds the API methods ListUsersBuckets, ListUsersBucketsWithStat, CreateKey, RemoveKey and SetIndividualBucketQuota

API Stability Updates

rados

  • IOContext.SetLocator method is stable

rgw/admin

  • API methods UnlinkBucket, LinkBucket, CreateSubuser, RemoveSubuser and ModifySubuser are stable.

common/log

  • SetWarnf and SetDebugf are stable.

cephfs

  • The AtNoAttrSync is deprecated.

Other Changes

rados package

  • rados: Make sure Conn isn't GC'd while it has dependant IOContexts. by @baergj in #713

rbd package

cephfs/admin package

Internal

New Contributors

Full Changelog: v0.16.0...v0.17.0

Release v0.16.0

14 Jun 20:22
Compare
Choose a tag to compare

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:

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 and ceph_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 and ceph_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

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

Full Changelog: v0.15.0...v0.16.0

Release v0.15.0

12 Apr 13:27
Compare
Choose a tag to compare

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:

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
    • rados: add wrapper to set locator key on IOContext by @Anthrazz in #651
      • Adds IOContext method SetLocator implementing rados_ioctx_locator_set_key
  • rgw package
    • Adds support for the subuser calls in the rgw admin interface by @sebastianriese in #644
      • Adds API methods CreateSubuser, RemoveSubuser and ModifySubuser
    • rgw/admin: add suport for link/unlink bucket by @elrondwong in #646
      • Adds API methods LinkBucket and UnlinkBucket
  • common package
    • nfs: admin APIs for managing nfs exports by @phlogistonjohn in #655
      • Adds function NewFromConn and Admin methods CreateCephFSExport 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 and ceph_ci_untested must be set.
    • common: implement a common log package by @ansiwen in #638
      • Adds functions SetWarnf and SetDebugf

Other changes

  • rados package
    • rados: use omap v2 bindings by @gman0 in #643
    • rados: add warning logs to watcher callbacks by @ansiwen in #658
  • internals
    • contrib/implements: replace castxml with cc library by @ansiwen in #596

Full Changelog: v0.14.0...v0.15.0

Release v0.14.0

15 Feb 15:50
Compare
Choose a tag to compare

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

14 Dec 18:12
Compare
Choose a tag to compare

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

12 Oct 13:30
Compare
Choose a tag to compare

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