Skip to content

Release v0.5.0

Compare
Choose a tag to compare
@phlogistonjohn phlogistonjohn released this 11 Aug 14:06
· 907 commits to master since this release

The maintainers and contributors to go-ceph are pleased to announce the v0.5.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 snapshot functions added to the rbd package. With these functions users of the rbd module can now perform more complete management of image snapshots.

We've also changed how errors produced by many of the calls work. Previously, each package exported its own error type. This is no longer the case (see Deprecations & Removals). Instead, we encourage users of the library to use Go's error.Is & error.As functions or sentinel error comparison on older versions of Go, where appropriate.

This release announces the deprecation of, and plan to remove, "luminous" and "mimic" support. See "Deprecations & Removals" section for 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.

New Features

  • In the rados package
    • Add ParseConfigArgv implementing rados_conf_parse_argv
    • Add GetLastVersion implementing rados_get_last_version
    • Add CreateSnap implementing rados_ioctx_snap_create
    • Add RemoveSnap implementing rados_ioctx_snap_remove
    • Add LookupSnap implementing rados_ioctx_snap_lookup
    • Add GetSnapName implementing rados_ioctx_snap_get_name
    • Add GetSnapStamp implementing rados_ioctx_snap_get_stamp
    • Add ListSnaps implementing rados_ioctx_snap_list
    • Add RollbackSnap implementing rados_ioctx_snap_rollback
    • Add SetReadSnap implementing rados_ioctx_snap_set_read
  • In the rbd package
    • Add GetCreateTimestamp implementing rbd_get_create_timestamp
    • Add GetAccessTimestamp implementing rbd_get_access_timestamp
    • Add GetModifyTimestamp implementing rbd_get_modify_timestamp
    • Add UpdateWatch implementing rbd_update_watch
    • Add Unwatch implementing rbd_update_unwatch
    • Add a Watch type for managing watches
    • Add GetSnapNamespaceType implementing rbd_snap_get_namespace_type
    • Add GetSnapTrashNamespace implementing rbd_snap_get_trash_namespace
    • Add PoolInit implementing rbd_pool_init
    • Add GetAllPoolStats implementing rbd_pool_stats_get and related accessor functions
    • Add GetPoolID implementing rados_ioctx_get_id
  • In the cephfs package
    • Add StatFS implementing ceph_statfs
    • Add ParseConfigArgv implementing ceph_conf_parse_argv
    • Add ParseDefaultConfigEnv implementing ceph_conf_parse_env
    • Add GetXattr implementing ceph_fgetxattr (file method)
    • Add SetXattr implementing ceph_fsetxattr (file method)
    • Add ListXattr implementing ceph_flistxattr (file method)
    • Add RemoveXattr implementing ceph_fremovexattr (file method)
    • Add GetXattr implementing ceph_getxattr (path based)
    • Add ListXattr implementing ceph_listxattr (path based)
    • Add RemoveXattr implementing ceph_removexattr (path based)
    • Add SetXattr implementing ceph_setxattr (path based)
    • Add LgetXattr implementing ceph_lgetxattr (path based)
    • Add LlistXattr implementing ceph_llistxattr (path based)
    • Add LremoveXattr implementing ceph_lremovexattr (path based)
    • Add LsetXattr implementing ceph_lsetxattr (path based)

Deprecations & Removals

  • The rados package no longer exports a RadosError type
  • The rbd package no longer exports an RBDError type
  • The cephfs package no longer exports a CephFSError type
  • The fields Parent_pool and Parent_name have been removed from the ImageInfo struct in the rbd package as these fields never contained data

As of this release (go-ceph v0.5.0) support for Ceph "luminous" and "mimic" are officially deprecated. We plan to remove support for "luminous" in go-ceph v0.6.0 and to remove support for "mimic" in go-ceph v0.7.0. If you are building go-ceph against either of these versions of Ceph, please plan accordingly. Do 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. These plans only change what versions of Ceph go-ceph expects to successfully compile with.

Other

  • It is now easier to execute the go-ceph test suite with multiple different ceph versions
  • Internal support for splitting C buffers into string slices has been improved
  • Improved documentation for ParseDefaultConfigEnv in the rados package
  • Error types that represent an error code value produced by a Ceph API function call now have an .ErrorCode() method that can be used as a feature of last resort when the raw error code value is needed
  • Various improvements to the test scripts and tooling
  • Many other fixes and improvements