]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
5 years agoMerge pull request #33775 from tchaikov/wip-44454
Ramana Raja [Fri, 6 Mar 2020 07:01:12 +0000 (12:31 +0530)]
Merge pull request #33775 from tchaikov/wip-44454

qa/tasks/ceph.py: quote "<kind>" in command line

Reviewed-by: Ramana Raja <rraja@redhat.com>
5 years agoMerge PR #33674 into master
Patrick Donnelly [Fri, 6 Mar 2020 04:52:46 +0000 (20:52 -0800)]
Merge PR #33674 into master

* refs/pull/33674/head:
mgr/volumes: OpSmException.error -> OpSmException.errno
mgr/volumes: remove unneeded assignment to `NoneType`
mgr/volumes: add missing OpSmException import
mgr/volumes: add missing error code
mgr/volumes: remove stray return
mgr/volumes: fixup format string args
mgr/volumes: add missing `mgr` param
mgr/volumes: assert self.fs
mgr/volumes: skip type checking on RTimer class
mgr/volumes: fixup threading.Timer import
mgr/volumes: fix positional str formatting
mgr/volumes: place getters and setters next to each other
mgr/volumes: reverse params passed to `isinstace()`
mgr/volumes: fix arg typo '.' -> ','
mgr/volumes: add `deque` type
mgr/volumes: `threading.Event.isSet` no longer exists in py3
mgr/volumes: assert JobThread class
mgr/volumes: import VolumeException
mgr/volumes: use `SafeConfigParser` with py2
mgr/volumes: use python version during configparser import
mgr/volumes: add `Dict` type
mgr/volumes: import errno
mgr/volumes: add `mgr/volumes` to the mypy checks

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Ramana Raja <rraja@redhat.com>
5 years agoqa/tasks/ceph.py: quote "<kind>" in command line 33775/head
Kefu Chai [Fri, 6 Mar 2020 04:17:40 +0000 (12:17 +0800)]
qa/tasks/ceph.py: quote "<kind>" in command line

otherwise bash will intepret "kind" as a file when handling command like
```
sudo zgrep <kind> /var/log/ceph/valgrind/* /dev/null | sort | uniq
```
and try to feed its content to zgrep, and write the output of zgrep
to /var/log/ceph/valgrind/*. this is not the intended behavior. what we
what to do is to pass "<kind>" as an argument to zgrep, along with
the globbed files names which matches "/var/log/ceph/valgrind/*".

in this change, "<kind>" is quoted as in the command line. it's also
what `pipes.quote()` does before the change of
35cf5131e7152ce20d916aa99c124751d6a97f5c.

this addresses the regression introduced by
35cf5131e7152ce20d916aa99c124751d6a97f5c.

Fixes: https://tracker.ceph.com/issues/44454
Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge PR #33766 into master
Sage Weil [Fri, 6 Mar 2020 00:58:00 +0000 (18:58 -0600)]
Merge PR #33766 into master

* refs/pull/33766/head:
mgr/cephadm: fix placement when existing + specified don't overlap

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge PR #33744 into master
Sage Weil [Thu, 5 Mar 2020 22:41:48 +0000 (16:41 -0600)]
Merge PR #33744 into master

* refs/pull/33744/head:
qa/tasks/radosbench: fix usage of -O

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agomgr/cephadm: fix placement when existing + specified don't overlap 33766/head
Sage Weil [Thu, 5 Mar 2020 20:51:31 +0000 (14:51 -0600)]
mgr/cephadm: fix placement when existing + specified don't overlap

If we have a daemon on A, and our spec is (count=2, hosts=[B]), we should
always return [A,B], but we sometimes were returning [B,B].

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/volumes: OpSmException.error -> OpSmException.errno 33674/head
Michael Fritch [Tue, 3 Mar 2020 15:22:57 +0000 (08:22 -0700)]
mgr/volumes: OpSmException.error -> OpSmException.errno

fixes mypy errors:

volumes/fs/async_cloner.py: note: In function "handle_clone_pending":
volumes/fs/async_cloner.py:71: error: "OpSmException" has no attribute "error"; maybe "errno"?

volumes/fs/async_cloner.py: note: In function "handle_clone_in_progress":
volumes/fs/async_cloner.py:139: error: "OpSmException" has no attribute "error"; maybe "errno"?

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: remove unneeded assignment to `NoneType`
Michael Fritch [Tue, 3 Mar 2020 15:22:48 +0000 (08:22 -0700)]
mgr/volumes: remove unneeded assignment to `NoneType`

fixes mypy error:

volumes/fs/operations/versions/__init__.py: note: In member "get_subvolume_object" of class "SubvolumeLoader":
volumes/fs/operations/versions/__init__.py:70: error: Incompatible types in assignment (expression has type "None", variable has type "SubvolumeBase")

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: add missing OpSmException import
Michael Fritch [Tue, 3 Mar 2020 15:21:59 +0000 (08:21 -0700)]
mgr/volumes: add missing OpSmException import

fixes mypy error:

volumes/fs/operations/versions/__init__.py: note: In member "upgrade_legacy_subvolume" of class "SubvolumeLoader":
volumes/fs/operations/versions/__init__.py:56: error: Name 'OpSmException' is not defined

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: add missing error code
Michael Fritch [Tue, 3 Mar 2020 15:21:54 +0000 (08:21 -0700)]
mgr/volumes: add missing error code

fixes mypy error:

volumes/fs/operations/versions/__init__.py: note: In member "_load_supported_versions" of class "SubvolumeLoader":
volumes/fs/operations/versions/__init__.py:35: error: Too few arguments for "VolumeException"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: remove stray return
Michael Fritch [Tue, 3 Mar 2020 15:21:49 +0000 (08:21 -0700)]
mgr/volumes: remove stray return

fixes mypy errors:

volumes/fs/purge_queue.py: note: In function "get_trash_entry_for_volume":
volumes/fs/purge_queue.py:28: error: Name 'ret' is not defined

volumes/fs/async_cloner.py: note: In function "get_next_clone_entry":
volumes/fs/async_cloner.py:39: error: Name 'ret' is not defined

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: fixup format string args
Michael Fritch [Tue, 3 Mar 2020 15:21:36 +0000 (08:21 -0700)]
mgr/volumes: fixup format string args

fixes mypy errors:

volumes/fs/purge_queue.py:26: error: Cannot find replacement for positional format specifier 1
volumes/fs/async_cloner.py:37: error: Cannot find replacement for positional format specifier 1

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: add missing `mgr` param
Michael Fritch [Tue, 3 Mar 2020 15:21:30 +0000 (08:21 -0700)]
mgr/volumes: add missing `mgr` param

fixes mypy errors:

volumes/fs/operations/volume.py: note: In function "create_volume":
volumes/fs/operations/volume.py:216: error: Too few arguments for "remove_pool"
volumes/fs/operations/volume.py:223: error: Too few arguments for "remove_pool"
volumes/fs/operations/volume.py:224: error: Too few arguments for "remove_pool"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: assert self.fs
Michael Fritch [Tue, 3 Mar 2020 15:21:25 +0000 (08:21 -0700)]
mgr/volumes: assert self.fs

fixes mypy errors:

volumes/fs/operations/volume.py: note: In member "disconnect" of class "Connection":
volumes/fs/operations/volume.py:94: error: Item "None" of "Optional[Any]" has no attribute "get_addrs"
volumes/fs/operations/volume.py:95: error: Item "None" of "Optional[Any]" has no attribute "shutdown"

volumes/fs/operations/volume.py: note: In member "abort" of class "Connection":
volumes/fs/operations/volume.py:105: error: Item "None" of "Optional[Any]" has no attribute "abort_conn"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: skip type checking on RTimer class
Michael Fritch [Tue, 3 Mar 2020 15:21:18 +0000 (08:21 -0700)]
mgr/volumes: skip type checking on RTimer class

Unclear why mypy does not like this:

volumes/fs/operations/volume.py: note: In member "run" of class "RTimer":
volumes/fs/operations/volume.py:118: error: "RTimer" has no attribute "finished"
volumes/fs/operations/volume.py:119: error: "RTimer" has no attribute "finished"
volumes/fs/operations/volume.py:119: error: "RTimer" has no attribute "interval"
volumes/fs/operations/volume.py:120: error: "RTimer" has no attribute "function"
volumes/fs/operations/volume.py:120: error: "RTimer" has no attribute "args"
volumes/fs/operations/volume.py:120: error: "RTimer" has no attribute "kwargs"
volumes/fs/operations/volume.py:121: error: "RTimer" has no attribute "finished"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: fixup threading.Timer import
Michael Fritch [Tue, 3 Mar 2020 15:20:09 +0000 (08:20 -0700)]
mgr/volumes: fixup threading.Timer import

Python 3.3 changed `Timer` from a factory function to a class
https://docs.python.org/3.8/library/threading.html#timer-objects

fixes mypy error:

volumes/fs/operations/volume.py:9: error: Module 'threading' has no attribute '_Timer'; maybe "Timer"?

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: fix positional str formatting
Michael Fritch [Tue, 3 Mar 2020 15:20:01 +0000 (08:20 -0700)]
mgr/volumes: fix positional str formatting

fixes mypy error:

volumes/fs/operations/group.py: note: In function "create_group":
volumes/fs/operations/group.py:135: error: Not all arguments converted during string formatting

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: place getters and setters next to each other
Michael Fritch [Tue, 3 Mar 2020 15:19:53 +0000 (08:19 -0700)]
mgr/volumes: place getters and setters next to each other

workaround for mypy issue:
https://github.com/python/mypy/issues/1465

fixes mypy errors:

volumes/fs/operations/group.py: note: In class "Group":
volumes/fs/operations/group.py:44: error: Name 'uid' already defined on line 36
volumes/fs/operations/group.py:44: error: "Callable[[Group], Any]" has no attribute "setter"
volumes/fs/operations/group.py:48: error: Name 'gid' already defined on line 40
volumes/fs/operations/group.py:48: error: "Callable[[Group], Any]" has no attribute "setter"

volumes/fs/operations/group.py: note: In function "open_group":
volumes/fs/operations/group.py:170: error: Property "uid" defined in "Group" is read-only
volumes/fs/operations/group.py:171: error: Property "gid" defined in "Group" is read-only

volumes/fs/operations/versions/subvolume_base.py: note: In class "SubvolumeBase":
volumes/fs/operations/versions/subvolume_base.py:45: error: Name 'uid' already defined on line 33
volumes/fs/operations/versions/subvolume_base.py:45: error: "Callable[[SubvolumeBase], Any]" has no attribute "setter"
volumes/fs/operations/versions/subvolume_base.py:49: error: Name 'gid' already defined on line 37
volumes/fs/operations/versions/subvolume_base.py:49: error: "Callable[[SubvolumeBase], Any]" has no attribute "setter"
volumes/fs/operations/versions/subvolume_base.py:53: error: Name 'mode' already defined on line 41
volumes/fs/operations/versions/subvolume_base.py:53: error: "Callable[[SubvolumeBase], Any]" has no attribute "setter"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: reverse params passed to `isinstace()`
Michael Fritch [Tue, 3 Mar 2020 15:18:43 +0000 (08:18 -0700)]
mgr/volumes: reverse params passed to `isinstace()`

fixes mypy error:

volumes/fs/operations/clone_index.py: note: In member "track" of class "CloneIndex":
volumes/fs/operations/clone_index.py:38: error: Argument 2 to "isinstance" has incompatible type "Union[VolumeException, Any]"; expected "Union[type, Tuple[Union[type, Tuple[Any, ...]], ...]]"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: fix arg typo '.' -> ','
Michael Fritch [Tue, 3 Mar 2020 15:18:36 +0000 (08:18 -0700)]
mgr/volumes: fix arg typo '.' -> ','

fixes mypy error:

volumes/fs/fs_util.py: note: In function "get_ancestor_xattr":
volumes/fs/fs_util.py:129: error: Too few arguments for "VolumeException"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: add `deque` type
Michael Fritch [Tue, 3 Mar 2020 15:18:19 +0000 (08:18 -0700)]
mgr/volumes: add `deque` type

fixes mypy error:

volumes/fs/async_job.py: note: In member "__init__" of class "AsyncJobs":
volumes/fs/async_job.py:97: error: Need type annotation for 'q'

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: `threading.Event.isSet` no longer exists in py3
Michael Fritch [Tue, 3 Mar 2020 15:18:11 +0000 (08:18 -0700)]
mgr/volumes: `threading.Event.isSet` no longer exists in py3

fixes mypy errors:

volumes/fs/async_job.py: note: In member "should_cancel" of class "JobThread":
volumes/fs/async_job.py:70: error: "Event" has no attribute "isSet"

volumes/fs/volume.py: note: In member "is_stopping" of class "VolumeClient":
volumes/fs/volume.py:59: error: "Event" has no attribute "isSet"

volumes/fs/volume.py: note: In member "list_fs_volumes" of class "VolumeClient":
volumes/fs/volume.py:106: error: "Event" has no attribute "isSet"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: assert JobThread class
Michael Fritch [Tue, 3 Mar 2020 15:16:11 +0000 (08:16 -0700)]
mgr/volumes: assert JobThread class

fixes mypy error:

volumes/fs/async_job.py: note: In member "run" of class "JobThread":
volumes/fs/async_job.py:43: error: "Thread" has no attribute "should_cancel"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: import VolumeException
Michael Fritch [Tue, 3 Mar 2020 15:16:03 +0000 (08:16 -0700)]
mgr/volumes: import VolumeException

fixes mypy errors:

volumes/fs/operations/index.py: note: In member "track" of class "Index":
volumes/fs/operations/index.py:19: error: Name 'VolumeException' is not defined

volumes/fs/operations/index.py: note: In member "untrack" of class "Index":
volumes/fs/operations/index.py:22: error: Name 'VolumeException' is not defined

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: use `SafeConfigParser` with py2
Michael Fritch [Tue, 3 Mar 2020 15:15:57 +0000 (08:15 -0700)]
mgr/volumes: use `SafeConfigParser` with py2

Python3.2 renamed `SafeConfigParser` -> `ConfigParser`

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: use python version during configparser import
Michael Fritch [Tue, 3 Mar 2020 15:15:50 +0000 (08:15 -0700)]
mgr/volumes: use python version during configparser import

fixes mypy error:

volumes/fs/operations/versions/metadata_manager.py:8: error: Name 'configparser' already defined (by an import)

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: add `Dict` type
Michael Fritch [Tue, 3 Mar 2020 15:15:43 +0000 (08:15 -0700)]
mgr/volumes: add `Dict` type

fixes mypy errors:

volumes/fs/operations/op_sm.py:39: error: "object" has no attribute "get"
volumes/fs/operations/op_sm.py:49: error: "object" has no attribute "get"

volumes/fs/operations/lock.py: note: In member "__init__" of class "GlobalLock":
volumes/fs/operations/lock.py:27: error: "object" has no attribute "__enter__"
volumes/fs/operations/lock.py:27: error: "object" has no attribute "__exit__"

volumes/fs/operations/lock.py: note: In member "lock_op" of class "GlobalLock":
volumes/fs/operations/lock.py:35: error: "object" has no attribute "__enter__"
volumes/fs/operations/lock.py:35: error: "object" has no attribute "__exit__"

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: import errno
Michael Fritch [Tue, 3 Mar 2020 15:15:37 +0000 (08:15 -0700)]
mgr/volumes: import errno

fixes mypy errors:

volumes/fs/operations/op_sm.py:36: error: Name 'errno' is not defined
volumes/fs/operations/op_sm.py:39: error: Name 'errno' is not defined
volumes/fs/operations/op_sm.py:46: error: Name 'errno' is not defined
volumes/fs/operations/op_sm.py:49: error: Name 'errno' is not defined
volumes/fs/operations/template.py:5: error: Name 'errno' is not defined
volumes/fs/operations/template.py:14: error: Name 'errno' is not defined
volumes/fs/operations/template.py:23: error: Name 'errno' is not defined
volumes/fs/operations/template.py:32: error: Name 'errno' is not defined
volumes/fs/operations/template.py:42: error: Name 'errno' is not defined
volumes/fs/operations/template.py:45: error: Name 'errno' is not defined
volumes/fs/operations/template.py:62: error: Name 'errno' is not defined
volumes/fs/operations/template.py:74: error: Name 'errno' is not defined
volumes/fs/operations/template.py:85: error: Name 'errno' is not defined
volumes/fs/operations/template.py:94: error: Name 'errno' is not defined
volumes/fs/operations/template.py:103: error: Name 'errno' is not defined
volumes/fs/operations/template.py:112: error: Name 'errno' is not defined
volumes/fs/operations/template.py:121: error: Name 'errno' is not defined
volumes/fs/operations/template.py:130: error: Name 'errno' is not defined
volumes/fs/operations/template.py:139: error: Name 'errno' is not defined
volumes/fs/operations/template.py:148: error: Name 'errno' is not defined
volumes/fs/operations/template.py:158: error: Name 'errno' is not defined
volumes/fs/operations/template.py:169: error: Name 'errno' is not defined
volumes/fs/operations/template.py:180: error: Name 'errno' is not defined
volumes/fs/operations/index.py:18: error: Name 'errno' is not defined
volumes/fs/operations/index.py:21: error: Name 'errno' is not defined

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agomgr/volumes: add `mgr/volumes` to the mypy checks
Michael Fritch [Tue, 3 Mar 2020 15:11:39 +0000 (08:11 -0700)]
mgr/volumes: add `mgr/volumes` to the mypy checks

Fixes: https://tracker.ceph.com/issues/44393
Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge PR #33531 into master
Sage Weil [Thu, 5 Mar 2020 19:20:21 +0000 (13:20 -0600)]
Merge PR #33531 into master

* refs/pull/33531/head:
qa/tasks/mgr/test_orchestrator_cli: fix test_ps* tests
mgr/test_orchestrator: refactor listing services/daemons
mgr/dashboard: list services and daemons

Reviewed-by: Tiago Melo <tmelo@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
5 years agoMerge PR #33718 into master
Sage Weil [Thu, 5 Mar 2020 19:20:10 +0000 (13:20 -0600)]
Merge PR #33718 into master

* refs/pull/33718/head:
mgr/dashboard: fix tasks.mgr.dashboard.test_rgw suite

Reviewed-by: Lenz Grimmer <lgrimmer@suse.com>
5 years agoMerge PR #33745 into master
Sage Weil [Thu, 5 Mar 2020 19:18:34 +0000 (13:18 -0600)]
Merge PR #33745 into master

* refs/pull/33745/head:
mgr/cephadm: upgrade: fix daemons missing image_id

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge pull request #33702 from ivancich/wip-bucket-listing-clear-results
J. Eric Ivancich [Thu, 5 Mar 2020 17:37:51 +0000 (12:37 -0500)]
Merge pull request #33702 from ivancich/wip-bucket-listing-clear-results

rgw: cls_bucket_list_(un)ordered should clear results collection

Reviewed-by: Casey Bodley <cbodley@redhat.com>
Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
Reviewed-By: Abhishek Lekshmanan <abhishek@suse.com>
5 years agorgw: cls_bucket_list_(un)ordered should clear results collection 33702/head
J. Eric Ivancich [Tue, 3 Mar 2020 16:18:11 +0000 (11:18 -0500)]
rgw: cls_bucket_list_(un)ordered should clear results collection

Each call to cls_bucket_list_(un)ordered should have an empty
collection to populate with results. Rather than rely on the caller to
insure this, it's more reliable to have these functions do the clear.

Additionally in some cases, a reserve call was added to the collection
to pre-allocate the space needed for the expected number of
results. This will potentially result in fewer re-allocations plus
copies.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
5 years agoMerge pull request #33693 from yaozongyou/fix-rgw-check-bucket-empty-bug
J. Eric Ivancich [Thu, 5 Mar 2020 16:32:21 +0000 (11:32 -0500)]
Merge pull request #33693 from yaozongyou/fix-rgw-check-bucket-empty-bug

rgw: clear ent_list for each loop of bucket list

Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
5 years agoMerge pull request #33398 from clwluvw/subuser-policy
J. Eric Ivancich [Thu, 5 Mar 2020 15:55:24 +0000 (10:55 -0500)]
Merge pull request #33398 from clwluvw/subuser-policy

rgw: Fix bug on subuser policy identity checker

Reviewed-by: Adam Emerson <aemerson@redhat.com>
5 years agomgr/dashboard: fix tasks.mgr.dashboard.test_rgw suite 33718/head
Alfonso Martínez [Thu, 5 Mar 2020 15:22:43 +0000 (16:22 +0100)]
mgr/dashboard: fix tasks.mgr.dashboard.test_rgw suite

Fixes: https://tracker.ceph.com/issues/44405
Signed-off-by: Alfonso Martínez <almartin@redhat.com>
5 years agoMerge PR #33687 into master
Patrick Donnelly [Thu, 5 Mar 2020 14:27:51 +0000 (06:27 -0800)]
Merge PR #33687 into master

* refs/pull/33687/head:
mgr/volume: adapt arg passing to ServiceSpec

Reviewed-by: Michael Fritch <mfritch@suse.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Ramana Raja <rraja@redhat.com>
5 years agoMerge PR #33728 into master
Sage Weil [Thu, 5 Mar 2020 14:05:49 +0000 (08:05 -0600)]
Merge PR #33728 into master

* refs/pull/33728/head:
mgr/orch: factor out nice_delta
mgr/orch: show spec age in 'orch ls'
mgr/cephadm: store timestamp with specs
mgr/orch: add created timestamp to ServiceDescription
mgr/orch: include uptime in 'orch ps'
mgr/orch: include AGE column in 'orch ps'
mgr/cephadm: populate new DaemonDescription timestamps
mgr/orch: add new timestamps in DaemonDescription
cephadm: include timestamps for configured, created
cephadm: include timestamps for started, deploy

Reviewed-by: Joshua Schmid <jschmid@suse.de>
Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge PR #33708 into master
Sage Weil [Thu, 5 Mar 2020 14:02:21 +0000 (08:02 -0600)]
Merge PR #33708 into master

* refs/pull/33708/head:
ceph_test_cls_hello: set RETURNVEC on the expected EINVAL request

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
5 years agoqa/tasks/mgr/test_orchestrator_cli: fix test_ps* tests 33531/head
Sage Weil [Thu, 5 Mar 2020 14:00:42 +0000 (08:00 -0600)]
qa/tasks/mgr/test_orchestrator_cli: fix test_ps* tests

The ps output names daemons like 'type.foo', e.g., 'mgr.x'.  Now that
the test_orchestrator impl is less bonkers this needs to be adjusted to
match reality.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: upgrade: fix daemons missing image_id 33745/head
Sage Weil [Thu, 5 Mar 2020 13:52:41 +0000 (07:52 -0600)]
mgr/cephadm: upgrade: fix daemons missing image_id

If a daemon isn't running, we don't know the image_id (hash), so we skip.
But it's also possible to have a running daemon that doesn't report an
image_id... like right after we deploy it when the container hasn't
started up yet.  Skip those too.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33729 into master
Sage Weil [Thu, 5 Mar 2020 13:31:23 +0000 (07:31 -0600)]
Merge PR #33729 into master

* refs/pull/33729/head:
doc/releases: Octopus is not stable yet

Reviewed-by: Sage Weil <sage@redhat.com>
5 years agoqa/tasks/radosbench: fix usage of -O 33744/head
Sage Weil [Thu, 5 Mar 2020 13:27:24 +0000 (07:27 -0600)]
qa/tasks/radosbench: fix usage of -O

I tried to fix this in fb991fa5f62c4aaa6c564a6d15aeee4bfaa33b39 but
was comparing an array to an int.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orch: factor out nice_delta 33728/head
Sage Weil [Thu, 5 Mar 2020 12:42:15 +0000 (06:42 -0600)]
mgr/orch: factor out nice_delta

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orch: show spec age in 'orch ls'
Sage Weil [Wed, 4 Mar 2020 17:28:55 +0000 (11:28 -0600)]
mgr/orch: show spec age in 'orch ls'

Also rearrange the columns a bit.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: store timestamp with specs
Sage Weil [Wed, 4 Mar 2020 17:21:38 +0000 (11:21 -0600)]
mgr/cephadm: store timestamp with specs

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orch: add created timestamp to ServiceDescription
Sage Weil [Wed, 4 Mar 2020 17:05:43 +0000 (11:05 -0600)]
mgr/orch: add created timestamp to ServiceDescription

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orch: include uptime in 'orch ps'
Sage Weil [Wed, 4 Mar 2020 16:49:19 +0000 (10:49 -0600)]
mgr/orch: include uptime in 'orch ps'

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orch: include AGE column in 'orch ps'
Sage Weil [Wed, 4 Mar 2020 16:46:52 +0000 (10:46 -0600)]
mgr/orch: include AGE column in 'orch ps'

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: populate new DaemonDescription timestamps
Sage Weil [Wed, 4 Mar 2020 16:38:23 +0000 (10:38 -0600)]
mgr/cephadm: populate new DaemonDescription timestamps

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orch: add new timestamps in DaemonDescription
Sage Weil [Wed, 4 Mar 2020 16:18:47 +0000 (10:18 -0600)]
mgr/orch: add new timestamps in DaemonDescription

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agocephadm: include timestamps for configured, created
Sage Weil [Wed, 4 Mar 2020 14:51:50 +0000 (08:51 -0600)]
cephadm: include timestamps for configured, created

created = when daemon was first created
configured = when the daemonw as last (re)configured

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agocephadm: include timestamps for started, deploy
Sage Weil [Wed, 4 Mar 2020 14:48:58 +0000 (08:48 -0600)]
cephadm: include timestamps for started, deploy

started == when the container started
deployed == when the container was (most recently) (re)deployed

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33733 into master
Sage Weil [Thu, 5 Mar 2020 12:34:48 +0000 (06:34 -0600)]
Merge PR #33733 into master

* refs/pull/33733/head:
mgr/cephadm: if we had no record of deps, and deps are [], do not reconfig

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge PR #33734 into master
Sage Weil [Thu, 5 Mar 2020 12:34:38 +0000 (06:34 -0600)]
Merge PR #33734 into master

* refs/pull/33734/head:
mgr/cephadm: do not refresh daemon and device inventory as often

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge PR #33736 into master
Sage Weil [Thu, 5 Mar 2020 12:34:18 +0000 (06:34 -0600)]
Merge PR #33736 into master

* refs/pull/33736/head:
mgr/cephadm: upgrade crash collectors too
mgr/cephadm: fix service rm when there are no daemons

Reviewed-by: Joshua Schmid <jschmid@suse.de>
5 years agoMerge pull request #33549 from rhcs-dashboard/44307-e2e-custom-credentials
Lenz Grimmer [Thu, 5 Mar 2020 09:55:51 +0000 (10:55 +0100)]
Merge pull request #33549 from rhcs-dashboard/44307-e2e-custom-credentials

mgr/dashboard: ability to provide custom credentials for E2E tests.

Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
Reviewed-by: Laura Paduano <lpaduano@suse.com>
Reviewed-by: Stephan Müller <smueller@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
5 years agoMerge pull request #30224 from chardan/jfw-wip-random-deduction-guide
Kefu Chai [Thu, 5 Mar 2020 09:17:54 +0000 (17:17 +0800)]
Merge pull request #30224 from chardan/jfw-wip-random-deduction-guide

common: random: added a deduction guide to make using the function ob…

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge pull request #32495 from toabctl/qa-mypy
Kefu Chai [Thu, 5 Mar 2020 07:44:12 +0000 (15:44 +0800)]
Merge pull request #32495 from toabctl/qa-mypy

qa: Add basic mypy support for the qa directory

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Sebastian Wagner <swagner@suse.com>
5 years agoqa: Enable basic mypy support for qa/ directory 32495/head
Thomas Bechtold [Thu, 9 Jan 2020 07:28:22 +0000 (08:28 +0100)]
qa: Enable basic mypy support for qa/ directory

A first step to do more automatic code checks on the qa/
directory. This is useful while transitioning to python3.

Also use log_exc to top-level to not run into:

error: Argument 1 to "log_exc" has incompatible type
  "Callable[[OSDThrasher], Any]"; expected "OSDThrasher"

Signed-off-by: Thomas Bechtold <tbechtold@suse.com>
5 years agoqa: Fix problems detected by mypy
Thomas Bechtold [Thu, 9 Jan 2020 07:27:37 +0000 (08:27 +0100)]
qa: Fix problems detected by mypy

This is a first step to enable mypy on the qa/ directory.

Signed-off-by: Thomas Bechtold <tbechtold@suse.com>
5 years agoMerge pull request #33657 from tchaikov/wip-clang
Kefu Chai [Thu, 5 Mar 2020 05:26:20 +0000 (13:26 +0800)]
Merge pull request #33657 from tchaikov/wip-clang

client,common,mgr,rbd: clang related cleanups

Reviewed-by: Willem Jan Withagen <wjw@digiware.nl>
Reviewed-by: Jason Dillaman <dillaman@redhat.com>
Reviewed-By: Neha Ojha <nojha@redhat.com>
Reviewed-By: Patrick Donelly <pdonell@redhat.com>
5 years agoMerge PR #33662 into master
Patrick Donnelly [Thu, 5 Mar 2020 04:01:39 +0000 (20:01 -0800)]
Merge PR #33662 into master

* refs/pull/33662/head:
mds: handle ceph_assert on blacklisting

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Greg Farnum <gfarnum@redhat.com>
5 years agomgr/cephadm: upgrade crash collectors too 33736/head
Sage Weil [Thu, 5 Mar 2020 03:58:58 +0000 (21:58 -0600)]
mgr/cephadm: upgrade crash collectors too

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: fix service rm when there are no daemons
Sage Weil [Thu, 5 Mar 2020 03:57:36 +0000 (21:57 -0600)]
mgr/cephadm: fix service rm when there are no daemons

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge pull request #33707 from guits/guits-quick_fix_doc
Kefu Chai [Thu, 5 Mar 2020 01:42:03 +0000 (09:42 +0800)]
Merge pull request #33707 from guits/guits-quick_fix_doc

doc: update erasure-code-profile.rst

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge PR #33730 into master
Sage Weil [Thu, 5 Mar 2020 01:20:27 +0000 (19:20 -0600)]
Merge PR #33730 into master

* refs/pull/33730/head:
cephadm/vstart-smoke.sh: a smoke test to run against vstart
mgr/cephadm: fix prom reconfig loop when dashboard is disabled
mgr/cephadm: clean up log messages a bit
mgr/cephadm: force remove daemons when removing service
mgr/cephadm: do not error out on service rm|action if no daemons
mgr/orchestrator: allow 'orch rm mon|mgr --force'

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge pull request #33731 from wjwithagen/wjw-fix-test-compressor-gtest
Kefu Chai [Wed, 4 Mar 2020 23:50:41 +0000 (07:50 +0800)]
Merge pull request #33731 from wjwithagen/wjw-fix-test-compressor-gtest

src/test/compressor: Add missing gtest

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agomgr/cephadm: do not refresh daemon and device inventory as often 33734/head
Sage Weil [Wed, 4 Mar 2020 23:46:20 +0000 (17:46 -0600)]
mgr/cephadm: do not refresh daemon and device inventory as often

The device inventory rarely changes.

A daemon inventory of 60s may trigger every time around the loop when
doing upgrades, which is pretty slow (esp since it's currently done
synchronously).  We're doing a good job (I think?) of queueing refreshes,
so the only reason to time this data out is to catch daemon stops that
are caused by external factors.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: if we had no record of deps, and deps are [], do not reconfig 33733/head
Sage Weil [Wed, 4 Mar 2020 23:17:08 +0000 (17:17 -0600)]
mgr/cephadm: if we had no record of deps, and deps are [], do not reconfig

None != []

This avoids a reconfig of every daemon on upgrade, among other things.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agodoc: update erasure-code-profile.rst 33707/head
Guillaume Abrioux [Tue, 3 Mar 2020 23:00:41 +0000 (00:00 +0100)]
doc: update erasure-code-profile.rst

Update this part of the documentation to reflect the change made by
3e86be7d50d485dbcce50d99d2f52891ca7bd399

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
5 years agoMerge PR #33663 into master
Sage Weil [Wed, 4 Mar 2020 22:54:10 +0000 (16:54 -0600)]
Merge PR #33663 into master

* refs/pull/33663/head:
mgr/cephadm: reduce boilerplate for unittests

Reviewed-by: Sage Weil <sage@redhat.com>
5 years agosrc/test/compressor: Add missing gtest 33731/head
Willem Jan Withagen [Wed, 4 Mar 2020 21:50:44 +0000 (22:50 +0100)]
src/test/compressor: Add missing gtest

Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
5 years agomgr/cephadm: reduce boilerplate for unittests 33663/head
Joshua Schmid [Mon, 2 Mar 2020 14:12:38 +0000 (15:12 +0100)]
mgr/cephadm: reduce boilerplate for unittests

Signed-off-by: Joshua Schmid <jschmid@suse.de>
5 years agocephadm/vstart-smoke.sh: a smoke test to run against vstart 33730/head
Sage Weil [Wed, 4 Mar 2020 20:24:38 +0000 (14:24 -0600)]
cephadm/vstart-smoke.sh: a smoke test to run against vstart

This provides decent coverage of cephadm in practice, and can run against
a vstart cluster without having to go build containers.

vstart-cleanup.sh will clean up an aborted test reasonably well without
requiring sudo.

Caveats:
- there is no coverage for osds at this point.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: fix prom reconfig loop when dashboard is disabled
Sage Weil [Wed, 4 Mar 2020 20:21:10 +0000 (14:21 -0600)]
mgr/cephadm: fix prom reconfig loop when dashboard is disabled

We need to consider the mgrs a dep even if the prometheus module isn't
enabled, so that we are consistent with _calc_daemon_deps() and don't
reconfig prom in a loop.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: clean up log messages a bit
Sage Weil [Wed, 4 Mar 2020 20:20:28 +0000 (14:20 -0600)]
mgr/cephadm: clean up log messages a bit

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: force remove daemons when removing service
Sage Weil [Wed, 4 Mar 2020 17:38:13 +0000 (11:38 -0600)]
mgr/cephadm: force remove daemons when removing service

The rm CLI checks for --force based on type, so it isn't passed down
through the implementations.  So, pass it through.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: do not error out on service rm|action if no daemons
Sage Weil [Wed, 4 Mar 2020 13:22:08 +0000 (07:22 -0600)]
mgr/cephadm: do not error out on service rm|action if no daemons

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/orchestrator: allow 'orch rm mon|mgr --force'
Sage Weil [Tue, 3 Mar 2020 21:41:24 +0000 (15:41 -0600)]
mgr/orchestrator: allow 'orch rm mon|mgr --force'

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33704 into master
Sage Weil [Wed, 4 Mar 2020 20:25:05 +0000 (14:25 -0600)]
Merge PR #33704 into master

* refs/pull/33704/head:
mgr/cephadm: avoid racing updates to spec dict
mgr/cephadm: make _do_upgrade work synchronously
mgr/cephadm/tests/test_cephadm: remove broken rgw_update_fail test
mgr/cephadm: make _apply_service move services
mgr/cephadm: log when we create, destroy daemons
mgr/cephadm: drop async_map_completion decorators from create funcs
mgr/cephadm: _create_osd -> _create_osds
mgr/cephadm: _remove_daemon -> _remove_daemons

Reviewed-by: Joshua Schmid <jschmid@suse.de>
Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agodoc/releases: Octopus is not stable yet 33729/head
Nathan Cutler [Wed, 4 Mar 2020 19:12:43 +0000 (20:12 +0100)]
doc/releases: Octopus is not stable yet

Remove Octopus from list of active stable releases (it's not stable yet)
and put the 15.1.0 link in the Development column.

Signed-off-by: Nathan Cutler <ncutler@suse.com>
5 years agomgr/cephadm: avoid racing updates to spec dict 33704/head
Sage Weil [Wed, 4 Mar 2020 17:47:01 +0000 (11:47 -0600)]
mgr/cephadm: avoid racing updates to spec dict

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: make _do_upgrade work synchronously
Sage Weil [Tue, 3 Mar 2020 18:27:51 +0000 (12:27 -0600)]
mgr/cephadm: make _do_upgrade work synchronously

It mostly was, but it was futzing with completions when it didn't need to.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm/tests/test_cephadm: remove broken rgw_update_fail test
Sage Weil [Tue, 3 Mar 2020 18:20:19 +0000 (12:20 -0600)]
mgr/cephadm/tests/test_cephadm: remove broken rgw_update_fail test

This was trying to show that we won't put 2 RGWs from different zones
on the same host.  In reality, the test was only passing because it was
specifying an invalid placement spec (count=3 in a 2-host cluster).

It's true that we shouldn't do that because they won't be able to bind,
but the HostAssignment code doesn't handle this case currently.

See https://tracker.ceph.com/issues/44397

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: make _apply_service move services
Sage Weil [Tue, 3 Mar 2020 18:14:07 +0000 (12:14 -0600)]
mgr/cephadm: make _apply_service move services

This transitions us to a synchronous mode of operation.

Fixes: https://tracker.ceph.com/issues/44167
Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: log when we create, destroy daemons
Sage Weil [Tue, 3 Mar 2020 18:13:36 +0000 (12:13 -0600)]
mgr/cephadm: log when we create, destroy daemons

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: drop async_map_completion decorators from create funcs
Sage Weil [Tue, 3 Mar 2020 18:13:14 +0000 (12:13 -0600)]
mgr/cephadm: drop async_map_completion decorators from create funcs

So we can call them synchronously, if we chose.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: _create_osd -> _create_osds
Sage Weil [Tue, 3 Mar 2020 18:12:01 +0000 (12:12 -0600)]
mgr/cephadm: _create_osd -> _create_osds

So we could do a single daemon synchronously, if we chose.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: _remove_daemon -> _remove_daemons
Sage Weil [Tue, 3 Mar 2020 18:11:25 +0000 (12:11 -0600)]
mgr/cephadm: _remove_daemon -> _remove_daemons

So we can remove a single daemon synchronously, if we choose.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33565 into master
Sage Weil [Wed, 4 Mar 2020 18:40:37 +0000 (12:40 -0600)]
Merge PR #33565 into master

* refs/pull/33565/head:
os/bluestore: log allocation stats on a daily basis.

Reviewed-by: Adam Kupczyk <akucpzyk@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
5 years agoMerge pull request #33539 from cbodley/wip-rgw-doc-reshard
Casey Bodley [Wed, 4 Mar 2020 16:51:57 +0000 (11:51 -0500)]
Merge pull request #33539 from cbodley/wip-rgw-doc-reshard

doc/rgw: add design doc for multisite resharding

Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
5 years agoMerge pull request #33698 from rhcs-dashboard/vstart-set-prometheus-port-for-each-mgr
Lenz Grimmer [Wed, 4 Mar 2020 16:21:38 +0000 (16:21 +0000)]
Merge pull request #33698 from rhcs-dashboard/vstart-set-prometheus-port-for-each-mgr

vstart.sh: set prometheus port for each mgr.

Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge PR #33047 into master
Sage Weil [Wed, 4 Mar 2020 15:58:45 +0000 (09:58 -0600)]
Merge PR #33047 into master

* refs/pull/33047/head:
qa/rgw: exercise DeleteRange in test_bucket_index_log_trim

Reviewed-by: Vikhyat Umrao <vikhyat@redhat.com>
5 years agoMerge PR #33287 into master
Sage Weil [Wed, 4 Mar 2020 15:57:36 +0000 (09:57 -0600)]
Merge PR #33287 into master

* refs/pull/33287/head:
rgw: move frontends initial init to after global_init()
rgw: ssl: don't try to init certificate if not needed
rgw: frontend: add rgw_frontend_defaults configurable
rgw: beast ssl: enable use of meta variable for cert config
rgw: beast ssl: improve output
rgw: beast frontend: handle default ssl configurables
rgw: update docs about ssl config through config-key
rgw: allow beast ssl frontend cert config via mon config-key
rgw: create config-key svc
rgw: svc/rados: new mon_command call

Reviewed-by: Casey Bodley <cbodley@redhat.com>
5 years agoceph_test_cls_hello: set RETURNVEC on the expected EINVAL request 33708/head
Sage Weil [Tue, 3 Mar 2020 13:11:41 +0000 (07:11 -0600)]
ceph_test_cls_hello: set RETURNVEC on the expected EINVAL request

We are sending a request that returns an error *and* a data payload.  In order
to reliably get the payload, we need to set the RETURNVEC flag so that it is
recorded in the pg log.  Otherwise, we might get unlucky and resend the request
and end up in the dup handler and get the error code but no payload.

Fixes: https://tracker.ceph.com/issues/44385
Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge pull request #33612 from votdev/issue_44322_rgw_user_max_buckets
Lenz Grimmer [Wed, 4 Mar 2020 15:38:58 +0000 (15:38 +0000)]
Merge pull request #33612 from votdev/issue_44322_rgw_user_max_buckets

mgr/dashboard: Not able to restrict bucket creation for new user

Reviewed-by: Tatjana Dehler <tdehler@suse.com>
Reviewed-by: Tiago Melo <tmelo@suse.com>
5 years agoMerge pull request #33721 from smithfarm/wip-nautilus_14_2_8
Abhishek L [Wed, 4 Mar 2020 15:29:54 +0000 (16:29 +0100)]
Merge pull request #33721 from smithfarm/wip-nautilus_14_2_8

doc/releases: add 14.2.8 to release timeline

Reviewed-By: Abhishek Lekshmanan <abhishek@suse.com>
5 years agodoc/rgw: add design doc for multisite resharding 33539/head
Casey Bodley [Tue, 25 Feb 2020 19:24:01 +0000 (14:24 -0500)]
doc/rgw: add design doc for multisite resharding

Signed-off-by: Casey Bodley <cbodley@redhat.com>