]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
5 years agoMerge pull request #32419 from rhcs-dashboard/fix-43419-master
Lenz Grimmer [Thu, 12 Mar 2020 09:17:56 +0000 (10:17 +0100)]
Merge pull request #32419 from rhcs-dashboard/fix-43419-master

mgr/dashboard: add feature toggle for NFS and fix feature toggles regression

Reviewed-by: Alfonso Martínez <almartin@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 PR #33817 into octopus
Sage Weil [Thu, 12 Mar 2020 03:39:32 +0000 (22:39 -0500)]
Merge PR #33817 into octopus

* refs/pull/33817/head:
mgr/dashboard: Adapt tests to new DriveGroupSpec
fixup mgr/test_orchestrator: validate drive group matches anything.
mgr/orch: CLI: No Tracebacks for ServiceSpecValidationError
mgr/test_orchestrator: validate drive group matches anything.
python-common: don't run flake8 on tests.
python-common: Add support for legacy serialization format for Drive Groups
doc: Move Move ServiceSpec to python-common
python-common: Add `host_pattern` to `PlacementSpec.from_string()`
cephadm: add host_pattern to supported scheduling
python-common: Joined ServiceSpec and DriveGroupSpec from_json()
python-common: Make DriveGroupSpec a sub type of ServiceSpec
pybind/mgr: Move ServiceSpec to python-common: Fix imports
python-common, orch: Move ServiceSpec to python-common: Fix imports
python-common, orch: Move ServiceSpec tests to python-common
python-common: Move ServiceSpec to python-common: fix linting
python-common, orch: Move ServiceSpec (+deps) to python-common

Reviewed-by: Joshua Schmid <jschmid@suse.de>
5 years agoMerge PR #33895 into octopus
Sage Weil [Thu, 12 Mar 2020 03:39:15 +0000 (22:39 -0500)]
Merge PR #33895 into octopus

* refs/pull/33895/head:
cephadm: update unit.* atomically

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agocephadm: update unit.* atomically 33895/head
Sage Weil [Fri, 6 Mar 2020 23:43:33 +0000 (17:43 -0600)]
cephadm: update unit.* atomically

Some of these are run as bash scripts, which means that updating them
can lead to the running bash picking up at a weird position mid-script
when it goes to the next command.  This produces weird errors like

bash[9321]: /var/lib/ceph/f1758250-639e-11ea-9a42-001a4aab830c/mon.c/unit.run: line 2: -to-stderr=true: command not found

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge pull request #33848 from mchangir/octopus-tests-remove-suprious-whitespace 33885/head
Gregory Farnum [Wed, 11 Mar 2020 18:03:49 +0000 (11:03 -0700)]
Merge pull request #33848 from mchangir/octopus-tests-remove-suprious-whitespace

tests: remove spurious whitespace

5 years agoMerge PR #33746 into octopus
Sage Weil [Wed, 11 Mar 2020 14:41:28 +0000 (09:41 -0500)]
Merge PR #33746 into octopus

* refs/pull/33746/head:
cephadm: add grafana adopt

Reviewed-by: Sage Weil <sage@redhat.com>
5 years agomgr/dashboard: add feature toggle for NFS 32419/head
Ernesto Puerta [Wed, 4 Mar 2020 20:31:50 +0000 (21:31 +0100)]
mgr/dashboard: add feature toggle for NFS

- New NFS feature toggle added.
- Fixed regression which broke FeatureToggles in the main menu.
- Added extensive unit testing to NavigationComponent
- Added ng-mocks to improve test isolation and performance (~7x, 139s to
20s)
- Added ng-bullet package to improve unit testing performance (2x, 20s
to 9s)
- Added Rxjs Schedulers to implement NgZone.runOutsideAngular in a Rxjs
friendly way (based on
    https://stackoverflow.com/questions/43121400/run-ngrx-effect-outside-of-angulars-zone-to-prevent-timeout-in-protractor)

Minor issues found from exhaustive unit testing:
- Missing permissions in Cluster menu:
  - `permissions.log.read` and `permissions.prometheus.read`
- Missing classes:
  - Block -> Images: `tc_submenuitem_block_images`
  - Block -> iSCSI: `tc_submenuitem_block_iscsi`
- Typos:
  - class `tc_submenuitem_hosts` assigned to OSD menu (instead of
      `tc_submenuitem_osd`)
  - `tc_menuitem_cephs` -> `tc_menuitem_cephfs`

Minor changes:
- Previously, Cluster Map -> CRUSH Map required both OSD and Host
permissions. Now it only requires OSD permissions (there are no
references to hosts in CRUSH Map page). Nevertheless, all system roles
setting OSD permission also set Host's, so no impact expected.
- Previously, Cluster -> Monitoring menu was hidden when both Prometheus
or Alertmanager weren't configured. Now it's displayed and when clicked
on it shows the helper banner indicating that further configuration is
required. This change removes the dependency on the PrometheusService.

Fixes: https://tracker.ceph.com/issues/43419
Fixes: https://tracker.ceph.com/issues/43715
Signed-off-by: Ernesto Puerta <epuertat@redhat.com>
5 years agoMerge PR #33830 into octopus
Sage Weil [Wed, 11 Mar 2020 13:55:51 +0000 (08:55 -0500)]
Merge PR #33830 into octopus

* refs/pull/33830/head:
qa/tasks/cephadm: no default mon|mgr|crash service specs
qa/suites/rados/cephadm/upgrade: upgrade start point that supports the no-spec option
cephadm: create initial mon and mgr service specs too
cephadm: no need to pregenerate a crash key for the bootstrap host
mgr/cephadm: do not complain when we don't have enough hosts
mgr/cephadm: remove orphan daemons
mgr/cephadm: report size=0 for fabricated ServiceDescription
mgr/cephadm: safety check to prevent removing all mon|mgr daemons
mgr/cephadm: prevent scaling mon|mgr below count=1
mgr/cephadm: do not remove daemons from remove_service

Reviewed-by: Sebastian Wagner <swagner@suse.com>
5 years agoMerge PR #33732 into octopus
Sage Weil [Wed, 11 Mar 2020 12:17:40 +0000 (07:17 -0500)]
Merge PR #33732 into octopus

* refs/pull/33732/head:
mon/MonClient: send logs to mon on separate schedule than pings
mon/MonClient: send logs to mon even if we have no keelalive2

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge PR #33620 into octopus
Sage Weil [Wed, 11 Mar 2020 12:12:11 +0000 (07:12 -0500)]
Merge PR #33620 into octopus

* refs/pull/33620/head:
mgr/dashboard: Crush rule modal
mgr/dashboard: Preserve rule selection on pool type change
mgr/dashboard: Crush rule is only send during replicated pool creation
mgr/dashboard: Explicit returns in pool form
mgr/dashboard: Removes fork join in pool form
mgr/dashboard: Hide ECP actions during ec pool edit
mgr/dashboard: Pool form erasure/replicated boolean
mgr/dashboard: Change pool info API endpoint
mgr/dashboard: Moves ECP info endpoint to UI-API

Reviewed-by: Tiago Melo <tmelo@suse.com>
5 years agoMerge pull request #33876 from tchaikov/octopus-cephadm-mypy
Kefu Chai [Wed, 11 Mar 2020 11:17:25 +0000 (19:17 +0800)]
Merge pull request #33876 from tchaikov/octopus-cephadm-mypy

cephadm: add "assert foo is not None" for mypy check

Reviewed-by: Sebastian Wagner <swagner@suse.com>
5 years agocephadm: add "assert foo is not None" for mypy check 33876/head
Kefu Chai [Wed, 11 Mar 2020 08:08:51 +0000 (16:08 +0800)]
cephadm: add "assert foo is not None" for mypy check

it's legit to pass file objects to fcntl(), but `Popen.stdout` and
`Popen.stderr` properies are not necessarily file objects -- they could be None.
this cannot be deduced at compile-time. even we can ensure this,
as we do pass `subprocess.PIPE` to the constructor. so mypy just
complains at seeing this:

```
cephadm:429: error: Argument 1 to "fcntl" has incompatible type "Optional[IO[Any]]"; expected "Union[int, HasFileno]"
cephadm:430: error: Argument 1 to "fcntl" has incompatible type "Optional[IO[Any]]"; expected "Union[int, HasFileno]"
cephadm:431: error: Argument 1 to "fcntl" has incompatible type "Optional[IO[Any]]"; expected "Union[int, HasFileno]"
cephadm:432: error: Argument 1 to "fcntl" has incompatible type "Optional[IO[Any]]"; expected "Union[int, HasFileno]"
cephadm:455: error: Item "None" of "Optional[IO[Any]]" has no attribute "fileno"
cephadm:465: error: Item "None" of "Optional[IO[Any]]" has no attribute "fileno"
cephadm:475: error: Item "None" of "Optional[IO[Any]]" has no attribute "fileno"
```

to silence this warning, insert `assert process.stdout is not None`
before accessing `process.stdout` to appease the strict optional
checking of mypy.

this is a follow-up fix of ee3fe37158422902162257c123ea234da999c961

Fixes: https://tracker.ceph.com/issues/44557
Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge pull request #33067 from tspmelo/wip-rbd-delete-with-snapshot
Lenz Grimmer [Wed, 11 Mar 2020 09:56:01 +0000 (10:56 +0100)]
Merge pull request #33067 from tspmelo/wip-rbd-delete-with-snapshot

mgr/dashboard: Allow deletion of RBD with snapshots

Reviewed-by: Laura Paduano <lpaduano@suse.com>
Reviewed-by: Stephan Müller <smueller@suse.com>
Reviewed-by: Tatjana Dehler <tdehler@suse.com>
5 years agocephadm: add grafana adopt 33746/head
Eric Jackson [Wed, 4 Mar 2020 22:39:28 +0000 (17:39 -0500)]
cephadm: add grafana adopt

Handle grafana.ini, provisioning config and cert.

Signed-off-by: Eric Jackson <swiftgist@gmail.com>
5 years agoMerge PR #33771 into octopus
Sage Weil [Tue, 10 Mar 2020 22:20:48 +0000 (17:20 -0500)]
Merge PR #33771 into octopus

* refs/pull/33771/head:
common/ceph_timer: Pass reference to waited time on stack
common/ceph_timer: Add test
common/ceph_timer: Use unique_function, allowing noncopyable events
common/ceph_timer: Couple cleanups
common/ceph_timer: Fix namespaces
common/ceph_timer: Add missing includes
common/ceph_timer.h: Don't indent contents of a namespace

Reviewed-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33850 into octopus
Sage Weil [Tue, 10 Mar 2020 22:20:11 +0000 (17:20 -0500)]
Merge PR #33850 into octopus

* refs/pull/33850/head:
spec: Podman (temporarily) requires apparmor-abstractions on suse

Reviewed-by: Sascha Grunert <sgrunert@suse.com>
Reviewed-by: Nathan Cutler <ncutler@suse.com>
Reviewed-by: Patrick Seidensal <pseidensal@suse.com>
5 years agoMerge PR #33853 into octopus
Sage Weil [Tue, 10 Mar 2020 22:19:20 +0000 (17:19 -0500)]
Merge PR #33853 into octopus

* refs/pull/33853/head:
mgr/cephadm: Make sure we don't co-locate the same daemon

Reviewed-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33857 into octopus
Sage Weil [Tue, 10 Mar 2020 22:18:47 +0000 (17:18 -0500)]
Merge PR #33857 into octopus

* refs/pull/33857/head:
cephadm: bootstrap: wait for mgr to restart after enabling a module
mgr: add 'mgr_status' tell command

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoMerge PR #32990 into octopus
Sage Weil [Tue, 10 Mar 2020 21:28:02 +0000 (16:28 -0500)]
Merge PR #32990 into octopus

* refs/pull/32990/head:
cephadm: flag dashboard user to change password

Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
5 years agoMerge PR #33713 into octopus
Sage Weil [Tue, 10 Mar 2020 21:27:48 +0000 (16:27 -0500)]
Merge PR #33713 into octopus

* refs/pull/33713/head:
mgr/cephadm: add _remove_osds_bg back to main loop
mgr/cephadm/osd: update removal report immediately

Reviewed-by: Joshua Schmid <jschmid@suse.de>
5 years agoMerge PR #33838 into octopus
Sage Weil [Tue, 10 Mar 2020 21:26:57 +0000 (16:26 -0500)]
Merge PR #33838 into octopus

* refs/pull/33838/head:
mgr/cephadm: fix service list filtering

Reviewed-by: Sebastian Wagner <swagner@suse.com>
Reviewed-by: Sage Weil <sage@redhat.com>
5 years agoqa/tasks/cephadm: no default mon|mgr|crash service specs 33830/head
Sage Weil [Mon, 9 Mar 2020 18:45:10 +0000 (13:45 -0500)]
qa/tasks/cephadm: no default mon|mgr|crash service specs

The service wants to create daemons manually and explicitly.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoqa/suites/rados/cephadm/upgrade: upgrade start point that supports the no-spec option
Sage Weil [Mon, 9 Mar 2020 21:22:28 +0000 (16:22 -0500)]
qa/suites/rados/cephadm/upgrade: upgrade start point that supports the no-spec option

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33832 into octopus
Sage Weil [Tue, 10 Mar 2020 16:07:36 +0000 (11:07 -0500)]
Merge PR #33832 into octopus

* refs/pull/33832/head:
Revert "Merge pull request #33673 from cbodley/wip-denc-enum"

Reviewed-by: Casey Bodley <cbodley@redhat.com>
Reviewed-by: Jason Dillaman <dillaman@redhat.com>
5 years agocephadm: bootstrap: wait for mgr to restart after enabling a module 33857/head
Sage Weil [Tue, 10 Mar 2020 14:28:57 +0000 (09:28 -0500)]
cephadm: bootstrap: wait for mgr to restart after enabling a module

It was possible to enable a module (mon updates mgrmap) and then
do a mgr command and have that command reach the mgr before it got the
latest mgrmap and restarted.

Fixes: https://tracker.ceph.com/issues/44531
Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr: add 'mgr_status' tell command
Sage Weil [Tue, 10 Mar 2020 14:26:22 +0000 (09:26 -0500)]
mgr: add 'mgr_status' tell command

For now just dump the mgrmap_epoch

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge pull request #33839 from rhcs-dashboard/44538-fix-rgw-grafana-get-put-latencies
Lenz Grimmer [Tue, 10 Mar 2020 14:29:58 +0000 (15:29 +0100)]
Merge pull request #33839 from rhcs-dashboard/44538-fix-rgw-grafana-get-put-latencies

monitoring: fix RGW grafana chart 'Average GET/PUT Latencies'

Reviewed-by: Jan Fajerski <jfajerski@suse.com>
Reviewed-by: Laura Paduano <lpaduano@suse.com>
Reviewed-by: Patrick Seidensal <pnawracay@suse.com>
5 years agoMerge pull request #33743 from votdev/issue_43869_fix_qa_test
Lenz Grimmer [Tue, 10 Mar 2020 14:25:50 +0000 (15:25 +0100)]
Merge pull request #33743 from votdev/issue_43869_fix_qa_test

mgr/dashboard: Refactor and cleanup tasks.mgr.dashboard.test_user

Reviewed-by: Laura Paduano <lpaduano@suse.com>
Reviewed-by: Stephan Müller <smueller@suse.com>
5 years agocephadm: create initial mon and mgr service specs too
Sage Weil [Mon, 9 Mar 2020 18:41:56 +0000 (13:41 -0500)]
cephadm: create initial mon and mgr service specs too

These will get the default placement.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agocephadm: no need to pregenerate a crash key for the bootstrap host
Sage Weil [Mon, 9 Mar 2020 18:40:22 +0000 (13:40 -0500)]
cephadm: no need to pregenerate a crash key for the bootstrap host

mgr/cephadm can do this later when it deploys the crash daemon(s).

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: do not complain when we don't have enough hosts
Sage Weil [Mon, 9 Mar 2020 18:39:04 +0000 (13:39 -0500)]
mgr/cephadm: do not complain when we don't have enough hosts

This gets rid of INFO level log events like

2020-03-09T13:37:20.980993-0500 mgr.x [WRN] Failed to apply mds.foo spec ServiceSpec({'placement': PlacementSpec(count:2), 'service_type': 'mds', 'service_id': 'foo'}): List of host candidates is empty

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: remove orphan daemons
Sage Weil [Mon, 9 Mar 2020 18:36:59 +0000 (13:36 -0500)]
mgr/cephadm: remove orphan daemons

...as long as they're not mon|mgr|osd.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: report size=0 for fabricated ServiceDescription
Sage Weil [Mon, 9 Mar 2020 18:36:42 +0000 (13:36 -0500)]
mgr/cephadm: report size=0 for fabricated ServiceDescription

When we fabricate a ServiceDescription for an orphan daemon, set the
size == 0.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: safety check to prevent removing all mon|mgr daemons
Sage Weil [Mon, 9 Mar 2020 18:21:20 +0000 (13:21 -0500)]
mgr/cephadm: safety check to prevent removing all mon|mgr daemons

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: prevent scaling mon|mgr below count=1
Sage Weil [Mon, 9 Mar 2020 18:18:19 +0000 (13:18 -0500)]
mgr/cephadm: prevent scaling mon|mgr below count=1

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: do not remove daemons from remove_service
Sage Weil [Mon, 9 Mar 2020 18:15:49 +0000 (13:15 -0500)]
mgr/cephadm: do not remove daemons from remove_service

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge pull request #33805 from tchaikov/wip-44500
Kefu Chai [Tue, 10 Mar 2020 13:26:29 +0000 (21:26 +0800)]
Merge pull request #33805 from tchaikov/wip-44500

qa/tasks/ceph_manager: capture stderr for COT

Reviewed-by: Kyr Shatskyy <kyrylo.shatskyy@suse.com>
5 years agomgr/dashboard: Adapt tests to new DriveGroupSpec 33817/head
Sebastian Wagner [Tue, 10 Mar 2020 12:38:36 +0000 (13:38 +0100)]
mgr/dashboard: Adapt tests to new DriveGroupSpec

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agospec: Podman (temporarily) requires apparmor-abstractions on suse 33850/head
Sebastian Wagner [Tue, 10 Mar 2020 11:51:25 +0000 (12:51 +0100)]
spec: Podman (temporarily) requires apparmor-abstractions on suse

`apparmor-abstractions` contains a profile that is required to run podman containers.

Fixes: https://tracker.ceph.com/issues/44272
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agomgr/cephadm: Make sure we don't co-locate the same daemon 33853/head
Sebastian Wagner [Tue, 10 Mar 2020 12:54:08 +0000 (13:54 +0100)]
mgr/cephadm: Make sure we don't co-locate the same daemon

Fixes: https://tracker.ceph.com/issues/44397
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agofixup mgr/test_orchestrator: validate drive group matches anything.
Sebastian Wagner [Tue, 10 Mar 2020 11:21:09 +0000 (12:21 +0100)]
fixup mgr/test_orchestrator: validate drive group matches anything.

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agomgr/orch: CLI: No Tracebacks for ServiceSpecValidationError
Sebastian Wagner [Tue, 10 Mar 2020 09:57:45 +0000 (10:57 +0100)]
mgr/orch: CLI: No Tracebacks for ServiceSpecValidationError

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agomgr/test_orchestrator: validate drive group matches anything.
Sebastian Wagner [Tue, 10 Mar 2020 09:54:20 +0000 (10:54 +0100)]
mgr/test_orchestrator: validate drive group matches anything.

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common: don't run flake8 on tests.
Sebastian Wagner [Tue, 10 Mar 2020 09:38:04 +0000 (10:38 +0100)]
python-common: don't run flake8 on tests.

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common: Add support for legacy serialization format for Drive Groups
Sebastian Wagner [Mon, 9 Mar 2020 16:39:38 +0000 (17:39 +0100)]
python-common: Add support for legacy serialization format for Drive Groups

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agodoc: Move Move ServiceSpec to python-common
Sebastian Wagner [Mon, 9 Mar 2020 16:15:21 +0000 (17:15 +0100)]
doc: Move Move ServiceSpec to python-common

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common: Add `host_pattern` to `PlacementSpec.from_string()`
Sebastian Wagner [Mon, 9 Mar 2020 16:08:57 +0000 (17:08 +0100)]
python-common: Add `host_pattern` to `PlacementSpec.from_string()`

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agocephadm: add host_pattern to supported scheduling
Sebastian Wagner [Mon, 9 Mar 2020 14:26:31 +0000 (15:26 +0100)]
cephadm: add host_pattern to supported scheduling

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common: Joined ServiceSpec and DriveGroupSpec from_json()
Sebastian Wagner [Mon, 9 Mar 2020 13:51:09 +0000 (14:51 +0100)]
python-common: Joined ServiceSpec and DriveGroupSpec from_json()

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common: Make DriveGroupSpec a sub type of ServiceSpec
Sebastian Wagner [Mon, 9 Mar 2020 12:40:06 +0000 (13:40 +0100)]
python-common: Make DriveGroupSpec a sub type of ServiceSpec

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopybind/mgr: Move ServiceSpec to python-common: Fix imports
Sebastian Wagner [Mon, 9 Mar 2020 12:07:12 +0000 (13:07 +0100)]
pybind/mgr: Move ServiceSpec to python-common: Fix imports

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common, orch: Move ServiceSpec to python-common: Fix imports
Sebastian Wagner [Mon, 9 Mar 2020 11:58:52 +0000 (12:58 +0100)]
python-common, orch: Move ServiceSpec to python-common: Fix imports

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common, orch: Move ServiceSpec tests to python-common
Sebastian Wagner [Mon, 9 Mar 2020 11:46:01 +0000 (12:46 +0100)]
python-common, orch: Move ServiceSpec tests to python-common

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common: Move ServiceSpec to python-common: fix linting
Sebastian Wagner [Tue, 10 Mar 2020 09:33:14 +0000 (10:33 +0100)]
python-common: Move ServiceSpec to python-common: fix linting

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agopython-common, orch: Move ServiceSpec (+deps) to python-common
Sebastian Wagner [Mon, 9 Mar 2020 11:41:34 +0000 (12:41 +0100)]
python-common, orch: Move ServiceSpec (+deps) to python-common

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
5 years agomonitoring: fix RGW grafana chart 'Average GET/PUT Latencies' 33839/head
Alfonso Martínez [Tue, 10 Mar 2020 11:05:26 +0000 (12:05 +0100)]
monitoring: fix RGW grafana chart 'Average GET/PUT Latencies'

Fixes: https://tracker.ceph.com/issues/44538
Signed-off-by: Alfonso Martínez <almartin@redhat.com>
5 years agotests: remove spurious whitespace 33846/head 33848/head
Milind Changire [Tue, 10 Mar 2020 10:41:07 +0000 (16:11 +0530)]
tests: remove spurious whitespace

remove spurious whitespace from test_snapshot.py

Fixes: https://tracker.ceph.com/issues/44528
Signed-off-by: Milind Changire <mchangir@redhat.com>
5 years agomgr/cephadm: fix service list filtering 33838/head
Kiefer Chang [Tue, 10 Mar 2020 07:22:40 +0000 (15:22 +0800)]
mgr/cephadm: fix service list filtering

We should apply filters on ServiceSpecs in store too, or services are
returned even filters are applied during collecting daemons.

Fixes: https://tracker.ceph.com/issues/44512
Signed-off-by: Kiefer Chang <kiefer.chang@suse.com>
5 years agoMerge PR #33825 into octopus
Sage Weil [Tue, 10 Mar 2020 03:42:05 +0000 (22:42 -0500)]
Merge PR #33825 into octopus

* refs/pull/33825/head:
cephadm: bootstrap: tolerate error return from -h
ceph.in: only shut down rados on clean exit

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge PR #33811 into octopus
Sage Weil [Tue, 10 Mar 2020 03:26:41 +0000 (22:26 -0500)]
Merge PR #33811 into octopus

* refs/pull/33811/head:
mgr/cephadm: fix upgrade order

Reviewed-by: Michael Fritch <mfritch@suse.com>
5 years agoRevert "Merge pull request #33673 from cbodley/wip-denc-enum" 33832/head
Sage Weil [Tue, 10 Mar 2020 03:23:47 +0000 (22:23 -0500)]
Revert "Merge pull request #33673 from cbodley/wip-denc-enum"

This reverts commit 1041092696c2e3c9ee4e32b764ead06f5bc1f694, reversing
changes made to c2f584f32a9619b39d53178c2327dc26b3a2a27c.

This changed the encoding for certain types.

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agomgr/cephadm: fix upgrade order 33811/head
Sage Weil [Mon, 9 Mar 2020 01:38:59 +0000 (20:38 -0500)]
mgr/cephadm: fix upgrade order

Create two variables, CEPH_TYPES and CEPH_UPGRADE_ORDER.  In reality they
are both the same, but this way the meaning is clear, and they lists
won't get out of sync (they should always have the same elements).

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33801 into octopus
Sage Weil [Mon, 9 Mar 2020 21:25:57 +0000 (16:25 -0500)]
Merge PR #33801 into octopus

* refs/pull/33801/head:
qa/suites/rados/ceph: drop opensuse for now

Reviewed-by: Nathan Cutler <ncutler@suse.com>
5 years agoMerge PR #33822 into octopus
Sage Weil [Mon, 9 Mar 2020 20:46:57 +0000 (15:46 -0500)]
Merge PR #33822 into octopus

* refs/pull/33822/head:
cephadm: use `sh` instead of `bash` during enter

Reviewed-by: Sage Weil <sage@redhat.com>
5 years agocephadm: bootstrap: tolerate error return from -h 33825/head
Sage Weil [Mon, 9 Mar 2020 20:45:36 +0000 (15:45 -0500)]
cephadm: bootstrap: tolerate error return from -h

Sometimes we time out connecting to the mon to get commands and return
an error code.

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

Signed-off-by: Sage Weil <sage@redhat.com>
5 years agoMerge PR #33809 into octopus
Sage Weil [Mon, 9 Mar 2020 20:28:19 +0000 (15:28 -0500)]
Merge PR #33809 into octopus

* refs/pull/33809/head:
qa/standalone/scrub/osd-scrub-repair: force osdmap prop to osds
qa/standalone/scrub/osd-scrub-test: wait longer for update

Reviewed-by: David Zafman <dzafman@redhat.com>
5 years agoMerge PR #32678 into octopus
Sage Weil [Mon, 9 Mar 2020 19:09:00 +0000 (14:09 -0500)]
Merge PR #32678 into octopus

* refs/pull/32678/head:
mgr/dashboard: support multiple DriveGroups when creating OSDs

Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
5 years agocephadm: use `sh` instead of `bash` during enter 33822/head
Michael Fritch [Mon, 9 Mar 2020 16:00:07 +0000 (10:00 -0600)]
cephadm: use `sh` instead of `bash` during enter

not all container images use bash (e.g. node-exporter etc)

Signed-off-by: Michael Fritch <mfritch@suse.com>
5 years agoceph.in: only shut down rados on clean exit
Sage Weil [Mon, 9 Mar 2020 17:26:06 +0000 (12:26 -0500)]
ceph.in: only shut down rados on clean exit

If we exit due to a timeout, then calling rados shutdown can lead to all
sorts of problems, because we may still have another thread that is
trying to call rados_connect and/or do some work, and rados_connect
and rados_shutdown don't (and can't!) really behave well when racing
against each other.

Note that shutdown here isn't that important--the process is about to
exit anyway.  It's only useful to exercise the shutdown code path more
often.

Fixes: https://tracker.ceph.com/issues/44526
Signed-off-by: Sage Weil <sage@redhat.com>
5 years agocommon/ceph_timer: Pass reference to waited time on stack 33771/head
Adam C. Emerson [Fri, 6 Mar 2020 03:14:47 +0000 (22:14 -0500)]
common/ceph_timer: Pass reference to waited time on stack

std::condition_variable::wait_until takes a const reference to a
time_point. It may access this reference after relinquishing the
mutex, creating a potential use-after-free error if the first event is
shut down.

So, just copy the time onto the stack, so we have a reference that
won't disappear.

https://tracker.ceph.com/issues/44373

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agocommon/ceph_timer: Add test
Adam C. Emerson [Fri, 6 Mar 2020 02:45:11 +0000 (21:45 -0500)]
common/ceph_timer: Add test

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agocommon/ceph_timer: Use unique_function, allowing noncopyable events
Adam C. Emerson [Fri, 6 Mar 2020 02:15:25 +0000 (21:15 -0500)]
common/ceph_timer: Use unique_function, allowing noncopyable events

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agocommon/ceph_timer: Couple cleanups
Adam C. Emerson [Thu, 5 Mar 2020 22:57:41 +0000 (17:57 -0500)]
common/ceph_timer: Couple cleanups

Take advantage of a couple things in Boost.Intrusive that make the
code less obfuscated.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agocommon/ceph_timer: Fix namespaces
Adam C. Emerson [Thu, 5 Mar 2020 21:16:15 +0000 (16:16 -0500)]
common/ceph_timer: Fix namespaces

Stuffing things into 'detail' and using them just makes backtraces and
valgrind illegible.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agocommon/ceph_timer: Add missing includes
Adam C. Emerson [Thu, 5 Mar 2020 21:08:12 +0000 (16:08 -0500)]
common/ceph_timer: Add missing includes

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agocommon/ceph_timer.h: Don't indent contents of a namespace
Adam C. Emerson [Thu, 5 Mar 2020 21:03:37 +0000 (16:03 -0500)]
common/ceph_timer.h: Don't indent contents of a namespace

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
5 years agoMerge PR #33793 into master
Sage Weil [Mon, 9 Mar 2020 13:28:57 +0000 (08:28 -0500)]
Merge PR #33793 into master

* refs/pull/33793/head:
qa/suites/rados/cephadm/upgrade: new start point
qa/tasks/cephadm: put bootstrap config etc directly in /etc/ceph
cephadm: shell: default to config and keyring in /etc/ceph, if present

Reviewed-by: Ricardo Marques <rimarques@suse.com>
5 years agoMerge PR #33808 into master
Sage Weil [Mon, 9 Mar 2020 13:28:37 +0000 (08:28 -0500)]
Merge PR #33808 into master

* refs/pull/33808/head:
mgr/cephadm: apply: fill in default placement if none is provided
mgr/cephadm: make placement truly optional (default to count=1)
mgr/cephadm: allow count == 0
mgr/cephadm: remove magic labels

Reviewed-by: Sebastian Wagner <swagner@suse.com>
5 years agomgr/dashboard: Crush rule modal 33620/head
Stephan Müller [Wed, 15 Jan 2020 13:39:13 +0000 (14:39 +0100)]
mgr/dashboard: Crush rule modal

Now a crush rule can be created and deleted through the pool form,
similar to the ECP profile.

The creation form is somewhat more intelligent as it checks the crush
map to help create a usable rule, with only a few clicks
through preselections.

Fixes: https://tracker.ceph.com/issues/43260
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Preserve rule selection on pool type change
Stephan Müller [Tue, 3 Mar 2020 14:39:32 +0000 (15:39 +0100)]
mgr/dashboard: Preserve rule selection on pool type change

Now if the pool type is changed from replicated to erasure in the pool
form and you have multiple rules, your selection is preserved and not
overwritten by null, which caused an error message to be shown
(crush rule is required).

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Crush rule is only send during replicated pool creation
Stephan Müller [Mon, 2 Mar 2020 11:26:48 +0000 (12:26 +0100)]
mgr/dashboard: Crush rule is only send during replicated pool creation

The problem was that the crush rule setting was send during the creation
of a pool - the type didn't matter, but the setting is only used if a
replicated pool is created. This hasn't created any problems yet, but to
prevent that it's now omitted for erasure code pool creations.

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Explicit returns in pool form
Stephan Müller [Mon, 2 Mar 2020 11:16:32 +0000 (12:16 +0100)]
mgr/dashboard: Explicit returns in pool form

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Removes fork join in pool form
Stephan Müller [Mon, 2 Mar 2020 11:01:19 +0000 (12:01 +0100)]
mgr/dashboard: Removes fork join in pool form

Uses only the new info endpoint instead of three separate calls.

Had to change a lot of unit tests through this change, as more data
was reaching the submit tests now.

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Hide ECP actions during ec pool edit
Stephan Müller [Mon, 2 Mar 2020 10:48:17 +0000 (11:48 +0100)]
mgr/dashboard: Hide ECP actions during ec pool edit

Hides erasure profile actions during erasure pool edit, as all
actions are disabled anyway as they can't be used in edit mode.

This commit makes also sure that the used crush rule will be shown
during edit of an erasure pool and no crush rule selection is shown
during creation of an erasure code pool, as in most cases a new crush
rule will be created for the ec pool.

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Pool form erasure/replicated boolean
Stephan Müller [Mon, 2 Mar 2020 10:39:48 +0000 (11:39 +0100)]
mgr/dashboard: Pool form erasure/replicated boolean

Now a boolean will be set if the pool type is changed. The question
which type is currently set is raised a lot of times inside the pool
form therefor there is a speed advance if it's just a boolean instead of
getting the form control from the form in the first place and than
compare two strings.

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Change pool info API endpoint
Stephan Müller [Mon, 2 Mar 2020 10:08:23 +0000 (11:08 +0100)]
mgr/dashboard: Change pool info API endpoint

Moves the "_info" endpoint of pool into an equivalent
UI-API call with the name "info".

Added three more attributes to the info dict which enables the dashboard
to only call info to get all the needed data, currently three calls will
be used to do that.

Removed pool_name parameter as the outcome was not used.

Updated the tests and related angular files accordingly.

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agomgr/dashboard: Moves ECP info endpoint to UI-API
Stephan Müller [Mon, 2 Mar 2020 09:57:16 +0000 (10:57 +0100)]
mgr/dashboard: Moves ECP info endpoint to UI-API

Moves the "_info" endpoint of erasure code profile into an equivalent
UI-API call with the name "info".

The serialization of the profile was outsourced into "ceph-service" as
it's used somewhere else (follow up commit).

Removed unused methods in angular service and REST controller.

Fixed path in angular service.

Fixes: https://tracker.ceph.com/issues/44371
Signed-off-by: Stephan Müller <smueller@suse.com>
5 years agoMerge pull request #33756 from tspmelo/wip-remove-ngx-store
Lenz Grimmer [Mon, 9 Mar 2020 11:30:50 +0000 (12:30 +0100)]
Merge pull request #33756 from tspmelo/wip-remove-ngx-store

mgr/dashboard: Remove ngx-store

Reviewed-by: Alfonso Martínez <almartin@redhat.com>
Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
Reviewed-by: Stephan Müller <smueller@suse.com>
5 years agoMerge pull request #33691 from rhcs-dashboard/vstart-enable-nfs-ganesa-mgmt-dashboard
Kefu Chai [Mon, 9 Mar 2020 11:25:05 +0000 (19:25 +0800)]
Merge pull request #33691 from rhcs-dashboard/vstart-enable-nfs-ganesa-mgmt-dashboard

vstart.sh: enable nfs-ganesha mgmt. in dashboard.

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Varsha Rao <varao@redhat.com>
Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge pull request #33797 from tchaikov/wip-crimson-cleanups
Kefu Chai [Mon, 9 Mar 2020 10:22:29 +0000 (18:22 +0800)]
Merge pull request #33797 from tchaikov/wip-crimson-cleanups

crimson: cleanups

Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
5 years agomgr/cephadm: add _remove_osds_bg back to main loop 33713/head
Kiefer Chang [Mon, 9 Mar 2020 06:30:48 +0000 (14:30 +0800)]
mgr/cephadm: add _remove_osds_bg back to main loop

The call was accidentally removed in
https://github.com/ceph/ceph/pull/33602.

Signed-off-by: Kiefer Chang <kiefer.chang@suse.com>
5 years agomgr/cephadm/osd: update removal report immediately
Kiefer Chang [Tue, 3 Mar 2020 08:58:40 +0000 (16:58 +0800)]
mgr/cephadm/osd: update removal report immediately

Currently, the removal report is updated after entering the main serve()
loop. This tiny window makes clients (like Dashboard) fail to poll the
result. Refresh the report data immediately after scheduling OSD for
removal.

The report structure is changed from Dict to Set because:
- The key is `OSDRemoval` instance, which make it hard to use.
- More consistent with orchestrator interfaces: most calls return a list.

Signed-off-by: Kiefer Chang <kiefer.chang@suse.com>
5 years agoMerge pull request #32440 from rosinL/wip-spdk
Kefu Chai [Mon, 9 Mar 2020 03:54:58 +0000 (11:54 +0800)]
Merge pull request #32440 from rosinL/wip-spdk

os/bluestore/spdk: Fix the overflow error of parsing spdk coremask

Reviewed-by: Kefu Chai <kchai@redhat.com>
5 years agocrimson/mgr: close() in background 33797/head
Kefu Chai [Mon, 9 Mar 2020 03:48:07 +0000 (11:48 +0800)]
crimson/mgr: close() in background

as per Yingxin,

application code is not required to wait for the `close()` future, it
would be safe to ignore it, because:
- `close()` will shutdown its socket synchronously;
- `close()` will create an internal `ConnectionRef` when it's closing;
- `Messenger` will wait for all connections closed during `shutdown()`;

Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agocommon/buffer.cc: silence ASan warning
Kefu Chai [Sat, 7 Mar 2020 11:36:52 +0000 (19:36 +0800)]
common/buffer.cc: silence ASan warning

silences following warning
```
../src/common/buffer.cc:472:9: runtime error: member access within null pointer of type 'struct raw'
```

Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agocrimson/osd: reorder includes
Kefu Chai [Sat, 7 Mar 2020 10:55:22 +0000 (18:55 +0800)]
crimson/osd: reorder includes

to follow
https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes

Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agocrimson/mgr: use periodical timer for report
Kefu Chai [Sat, 7 Mar 2020 10:53:07 +0000 (18:53 +0800)]
crimson/mgr: use periodical timer for report

* always rearm the timer when handling MMgrConfigure
* remove `mgr::Client::tick_period`

Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agoMerge PR #33776 into master
Sage Weil [Mon, 9 Mar 2020 03:05:52 +0000 (22:05 -0500)]
Merge PR #33776 into master

* refs/pull/33776/head:
test: Add flush_pg_stats to avoid race with getting num_shards_repaired

Reviewed-by: Neha Ojha <nojha@redhat.com>
5 years agoqa/tasks/ceph_manager: use StringIO for capturing COT output 33805/head
Kefu Chai [Sun, 8 Mar 2020 06:00:53 +0000 (14:00 +0800)]
qa/tasks/ceph_manager: use StringIO for capturing COT output

there are couple factors we should consider when choosing between
BytesIO and StringIO:

- if the producer is producing binary
- if we are expecting binary
- if the layers in between them are doing the decoding/encoding
  automatically.

in our case, the producer is either the ChannelFile instances returned
by paramiko.SSHClient or subprocess.CompletedProcess insances returned
by subprocess.run(). the former are file-like objects opened in "r" mode,
but their contents are decoded with utf-8 when reading if
ChannelFile.FLAG_BINARY is not specified. that's why we always try to
add this flag in orchestra/run.py when collecting the stdout and stderr
from paramiko.SSHClient after executing a command.

back in python2, this works just fine. as we don't differentiate bytes
from str by then.

but in python3, we have to make a decision. in the case of
ceph-objectstore-tool (COT for short), it does not produce binary and
we don't check its output with binary, so, if neither Remote.run() nor
LocalRemote.run() decodes/encodes for us, it's fine.

so it boils down to `copy_to_log()`:

i think we we should respect the consumer's expectation, and only decode
the output if a StringIO is passed in as stdout or stderr.

as we always log the output with logging we could either set
`ChannelFile.FLAG_BINARY` depending on the type of `capture` or not.
if it's not set, paramiko will return str (bytes) on python2, and str on
python3. if it's not set paramiko will return str (bytes) on python2,
and bytes on python3.

if there is non-ASCII in the output, logging will bail fail with
`UnicodeDecodeError` exception. and paramiko throws the same exception
when trying to decode for us if `ChannelFile.FLAG_BINARY` is not
specified.

so to ensure that we always have logging messages no matter if the
producer follows the rule of "use StringIO if you only emit text" or
not, we have to use `ChannelFile.FLAG_BINARY`, and force paramiko
to send us the bytes. but we still have the luxury to use StringIO
and do the decode when the caller asks for str explicitly. that'd save
the pain of using `str.decode()` or `six.ensure_str()` everywhere
even if we can assure that the program does not write binary.

Signed-off-by: Kefu Chai <kchai@redhat.com>
5 years agomgr/cephadm: apply: fill in default placement if none is provided 33808/head
Sage Weil [Mon, 9 Mar 2020 02:17:47 +0000 (21:17 -0500)]
mgr/cephadm: apply: fill in default placement if none is provided

Most stateless daemons get 2x (so there is a standby).  Monitoring items
get just 1x.

By default we do 5 monitors, which will gracefully degrade to one per host
if the cluster has <5 hosts.

Signed-off-by: Sage Weil <sage@redhat.com>