Ceph : Issueshttps://tracker.ceph.com/https://tracker.ceph.com/favicon.ico2020-03-25T14:10:42ZCeph
Redmine Dashboard - Bug #44753 (New): mgr/dashboard: Secure the Alertmanger receiver endpointhttps://tracker.ceph.com/issues/447532020-03-25T14:10:42ZStephan Müller
<p>Currently it is possible send push notification unauthenticated to the dashboard and the push notifications are not verified if they actually are coming from an Alertmanager instance.</p>
<p>To see whats configurable see <a class="external" href="https://prometheus.io/docs/alerting/configuration/#http_config">https://prometheus.io/docs/alerting/configuration/#http_config</a></p>
<p>Removing the endpoint is not a solution to be considered as ceph orchestrator is configuring every Alertmanager instance to talk to the receiver of the dashboard.</p>
<p>The receiver is at the moment the only part that can handle multiple Altermanger instances.</p> Dashboard - Bug #44224 (New): mgr/dashboard: Timeouts for rbd.py callshttps://tracker.ceph.com/issues/442242020-02-20T10:10:30ZStephan Müller
<p>As the corner cases are not implemented in many rbd.py methods, they can fail without a response on a specific pool (mostly bad pools).</p>
<p>If this is implemented remove the workaround that was implemented to fix <a class="issue tracker-1 status-3 priority-4 priority-default closed" title="Bug: mgr/dashboard: Dashboard breaks on the selection of a bad pool (Resolved)" href="https://tracker.ceph.com/issues/43765">#43765</a>.</p>
<p>For details what known issue exists see <a class="issue tracker-1 status-6 priority-4 priority-default closed" title="Bug: pybind/rbd: config_list hangs if given an pool with a bad pg state (Rejected)" href="https://tracker.ceph.com/issues/43771">#43771</a>.</p>
<p>For details about the discussion that was made look at the PR that fixed <a class="issue tracker-1 status-3 priority-4 priority-default closed" title="Bug: mgr/dashboard: Dashboard breaks on the selection of a bad pool (Resolved)" href="https://tracker.ceph.com/issues/43765">#43765</a>.</p>
<p>Make sure that <a class="issue tracker-1 status-6 priority-4 priority-default closed" title="Bug: pybind/rbd: config_list hangs if given an pool with a bad pg state (Rejected)" href="https://tracker.ceph.com/issues/43771">#43771</a> is still not addressed before starting with this issue.</p>
<p>For details how this was implemented in openATTIC look <a href="https://bitbucket.org/openattic/openattic/pull-requests/682/add-librados-command-name-to-external/diff" class="external">here</a></p> Dashboard - Bug #44223 (Duplicate): mgr/dashboard: Timeouts for rbd.py callshttps://tracker.ceph.com/issues/442232020-02-20T10:05:49ZStephan Müller
<p>As the corner cases are not implemented in many rbd methods, they can fail without a response on a specific pool (mostly bad pools).</p>
<p>If this is implemented remove the workaround that was implemented to fix <a class="issue tracker-1 status-3 priority-4 priority-default closed" title="Bug: mgr/dashboard: Dashboard breaks on the selection of a bad pool (Resolved)" href="https://tracker.ceph.com/issues/43765">#43765</a>.</p>
<p>For details what known issue exists see <a class="issue tracker-1 status-6 priority-4 priority-default closed" title="Bug: pybind/rbd: config_list hangs if given an pool with a bad pg state (Rejected)" href="https://tracker.ceph.com/issues/43771">#43771</a>.</p>
<p>For details about the discussion that was made look at the PR that fixed <a class="issue tracker-1 status-3 priority-4 priority-default closed" title="Bug: mgr/dashboard: Dashboard breaks on the selection of a bad pool (Resolved)" href="https://tracker.ceph.com/issues/43765">#43765</a>.</p>
<p>Make sure that <a class="issue tracker-1 status-6 priority-4 priority-default closed" title="Bug: pybind/rbd: config_list hangs if given an pool with a bad pg state (Rejected)" href="https://tracker.ceph.com/issues/43771">#43771</a> is still not addressed before starting with this issue.</p> rbd - Bug #43771 (Rejected): pybind/rbd: config_list hangs if given an pool with a bad pg statehttps://tracker.ceph.com/issues/437712020-01-23T16:53:11ZStephan Müller
<p>If the dashboard tries to get the configuration of RBDs on a pool basis with a pool in the pg state 'creating+incomplete', it will stop working waiting for a response of `config_list` in `rbd.pyx`.</p>
<p>The pg state 'creating+incomplete' is an edge case as it will only appear if one creates a pool that needs more buckets as the cluster can provide. The current workaround in the dashboard is to omit this call if a pool is in this state.</p>
<p>Here is the manual stack trace found by debugging:<br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/pybind/mgr/dashboard/controllers/pool.py#L206">https://github.com/ceph/ceph/blob/master/src/pybind/mgr/dashboard/controllers/pool.py#L206</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/pybind/mgr/dashboard/services/rbd.py#L104">https://github.com/ceph/ceph/blob/master/src/pybind/mgr/dashboard/services/rbd.py#L104</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/pybind/rbd/rbd.pyx#L2215">https://github.com/ceph/ceph/blob/master/src/pybind/rbd/rbd.pyx#L2215</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/pybind/rbd/rbd.pyx#L2935">https://github.com/ceph/ceph/blob/master/src/pybind/rbd/rbd.pyx#L2935</a></p> Dashboard - Bug #43384 (Duplicate): mgr/dashboard: Pool size is calculated with data with differe...https://tracker.ceph.com/issues/433842019-12-19T14:01:20ZStephan Müller
<p>Currently we use the following calculation in the dashboard to calculate the usage:</p>
<pre><code>const avail = stats.bytes_used.latest + stats.max_avail.latest;<br /> pool['usage'] = avail > 0 ? stats.bytes_used.latest / avail : avail;</code></pre>
<p>[pool-list.component.ts:253-4]</p>
<p>The problem is that "max_avail" is calculated somewhat strangely as it does not show the real available space as it divides the available space at least through the number of replications for a replicated and by "(m+k)/k" for an ec pool.</p>
<p>To look the calculation up go to the following locations:<br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/osd/OSDMap.cc#L6033">https://github.com/ceph/ceph/blob/master/src/osd/OSDMap.cc#L6033</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/osd/OSDMap.cc#L6040">https://github.com/ceph/ceph/blob/master/src/osd/OSDMap.cc#L6040</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/osd/OSDMap.cc#L6054">https://github.com/ceph/ceph/blob/master/src/osd/OSDMap.cc#L6054</a></p>
<p><a class="external" href="https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L909">https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L909</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L920">https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L920</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L924">https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L924</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L947">https://github.com/ceph/ceph/blob/master/src/mon/PGMap.cc#L947</a></p>
<p>This problem was found out by a user who notified us about the percentage mismatch, here is the link to the mail:<br /><a class="external" href="http://lists.ceph.com/pipermail/ceph-users-ceph.com/2019-December/037680.html">http://lists.ceph.com/pipermail/ceph-users-ceph.com/2019-December/037680.html</a></p>
<p>Also found this thread on the new mailing list regarding the used percentage and max_avail topic:<br /><a class="external" href="https://lists.ceph.io/hyperkitty/list/ceph-users@ceph.io/thread/NH2LMMX5KVRWCURI3BARRUAETKE2T2QN/#JDHXOQKWF6NZLQMOGEPAQCLI44KB54A3">https://lists.ceph.io/hyperkitty/list/ceph-users@ceph.io/thread/NH2LMMX5KVRWCURI3BARRUAETKE2T2QN/#JDHXOQKWF6NZLQMOGEPAQCLI44KB54A3</a></p> Dashboard - Feature #41789 (Closed): mgr/dashboard: Passwords have a minimum lengthhttps://tracker.ceph.com/issues/417892019-09-12T12:36:14ZStephan Müller
<p>Enforce a minimum length of 8 characters.</p> Dashboard - Bug #40328 (New): mgr/dashboard: Permanent notifications instead of repeated notifica...https://tracker.ceph.com/issues/403282019-06-13T12:25:30ZStephan Müller
<p>Need more "permanent" notifications for persisting issues instead of repeated popping up notifications (e.g. when the backend is unreachable)</p> Dashboard - Cleanup #39702 (Resolved): mgr/dashboard: OSD custom action button removalhttps://tracker.ceph.com/issues/397022019-05-10T14:17:22ZStephan Müller
<p>Currently the OSD page uses a custom action button dropdown, which is nearly a clone of the table actions button component, but it has a different behavior as it does not show the main action in the dropdown.</p> Dashboard - Bug #39298 (New): mgr/dashboard: Monitors API should provide times in UTC that will b...https://tracker.ceph.com/issues/392982019-04-15T15:41:34ZStephan Müller
<p>Monitors 'monmap modified' attribute will provide the local server time instead UTC time</p> Dashboard - Bug #39294 (New): mgr/dashboard: Time handlinghttps://tracker.ceph.com/issues/392942019-04-15T15:28:10ZStephan Müller
<p>As I searched for similar issues like <a class="issue tracker-8 status-3 priority-4 priority-default closed child" title="Subtask: mgr/dashboard: New RBD snapshot names should be prefix with a local time bound ISO timestamp not UTC (Resolved)" href="https://tracker.ceph.com/issues/23858">#23858</a>, I found a few.</p>
<a name="My-setup"></a>
<h2 >My setup<a href="#My-setup" class="wiki-anchor">¶</a></h2>
<p>As my local time is set to Germany (<ins>2h) and my docker container as default is set to UTC (</ins>/- 0h), I decided to move the timezone of it to Chicago (-5h), in order to determine if the backend correctly only gives out UTC times that can easily be converted into the local time in the frontend.</p>
<a name="How-to-change-the-timezone"></a>
<h2 >How to change the timezone<a href="#How-to-change-the-timezone" class="wiki-anchor">¶</a></h2>
<p>To change the timezone in openSUSE or most other Linux distributions do the following:<br /><pre>
cd /etc
ln -sf ../usr/share/zoneinfo/America/Chicago localtime
</pre></p>
<a name="Found-Issues"></a>
<h2 >Found Issues<a href="#Found-Issues" class="wiki-anchor">¶</a></h2>
<ul>
<li><a class="issue tracker-1 status-3 priority-5 priority-high3 closed child" title="Bug: mgr/dashboard: Can't login with a bigger time difference between user and server or make auth tok... (Resolved)" href="https://tracker.ceph.com/issues/39300">#39300</a><br /> With the time difference of -7h to the backend, I couldn't log in. The log throw the error `AMT: user info changed after token was issued, iat=%s lastUpdate=%s` which can be found in line 150 in `dashboard/services/auth.py`. I removed as a quick fix line 146 in the same document which said that `user.lastUpdate <= token['iat']` has to be true in order to login.</li>
<li><a class="issue tracker-1 status-1 priority-4 priority-default child" title="Bug: mgr/dashboard: Pools API should provide times in UTC that will be converted into local time by An... (New)" href="https://tracker.ceph.com/issues/39299">#39299</a><br /> Pool -> details -> 'create_time' attribute will provide the local server time instead UTC time</li>
<li><a class="issue tracker-1 status-1 priority-4 priority-default child" title="Bug: mgr/dashboard: Monitors API should provide times in UTC that will be converted into local time by... (New)" href="https://tracker.ceph.com/issues/39298">#39298</a><br /> Monitors 'monmap modified' attribute will provide the local server time instead UTC time</li>
<li><a class="issue tracker-1 status-3 priority-4 priority-default closed child" title="Bug: mgr/dashboard: Logs provided by the API should provide timestamps in UTC in ISO 8601 format that ... (Resolved)" href="https://tracker.ceph.com/issues/39297">#39297</a><br /> Log timestamps will provide the local server time instead UTC time</li>
<li><a class="issue tracker-1 status-3 priority-4 priority-default closed child" title="Bug: mgr/dashboard: Alert details UTC times should be converted into local time by Angular (Resolved)" href="https://tracker.ceph.com/issues/39296">#39296</a><br /> Alert -> details -> 'endsAt' and 'startsAt' attributes provide a UTC time but are not converted into local time in the frontend</li>
<li><a class="issue tracker-1 status-3 priority-4 priority-default closed child" title="Bug: mgr/dashboard: RGW Bucket API should provide times in UTC that will be converted into local time ... (Resolved)" href="https://tracker.ceph.com/issues/39295">#39295</a><br /> RGW -> Bucket -> details -> 'modification time' attribute will provide the local server time instead UTC time</li>
<li><a class="issue tracker-8 status-3 priority-4 priority-default closed child" title="Subtask: mgr/dashboard: New RBD snapshot names should be prefix with a local time bound ISO timestamp not UTC (Resolved)" href="https://tracker.ceph.com/issues/23858">#23858</a><br /> The RBD snapshot creation modal will append a UTC timestamp to the name - but it's more convenient to use a local timestamp with TZ prefix instead.</li>
</ul>
<a name="Working-Dates"></a>
<h2 >Working Dates<a href="#Working-Dates" class="wiki-anchor">¶</a></h2>
<ul>
<li>RBD snapshot creation time column provide a UTC timestamp which is converted to local time in the frontend</li>
<li>RBD detail view "Created" attribute provide a UTC timestamp which is converted to local time in the frontend</li>
</ul> Dashboard - Cleanup #38936 (New): mgr/dashboard: Unify polling behaviorhttps://tracker.ceph.com/issues/389362019-03-25T13:41:58ZStephan Müller
<p>Unify the polling behavior means that all API calls should be handled similar on failure.</p>
<p>The idea is that the dashboard can recover from connection issues automatically, but it should not send out notification on every failure after the initial or it should raise the polling time on each failure.</p>
<p>INHO muting notifications that would be triggered after the initial failure sounds like the best idea.</p> Dashboard - Tasks #38072 (New): mgr/dashboard: Reflect RBD QoS setting values in formshttps://tracker.ceph.com/issues/380722019-01-29T10:58:04ZStephan Müller
<p>It would be great to see the global or pool values reflected as default parameters in the forms, you could use a toggle icon to show the default and the user specific value. IMHO a `link` and `unlink` icon would suite it best.</p>
<p>As discussed in <a class="external" href="https://github.com/ceph/ceph/pull/25233/">https://github.com/ceph/ceph/pull/25233/</a></p> Dashboard - Tasks #37951 (Resolved): mgr/dashboard: Provide values with different style in KV-tablehttps://tracker.ceph.com/issues/379512019-01-17T11:59:08ZStephan Müller
<p>Provide a method to style values in a key value table by their value.</p> mgr - Tasks #25157 (New): Refine the details of the Ceph pools opticallyhttps://tracker.ceph.com/issues/251572018-07-30T14:04:23ZStephan Müller
<p>The details of the Ceph pools in the listing are relatively raw displayed. This should be enhanced and the details should be refined optically.</p>
<a name="Data-Table"></a>
<h2 >Data Table<a href="#Data-Table" class="wiki-anchor">¶</a></h2>
<ul>
<li>Replica size is only valid for replicated pools.</li>
<li>The "type" defines, which column is valid.</li>
<li>The minimum number of replicas is missing. Maybe even as an optional column.</li>
<li>Show the pool quota.</li>
</ul>
<a name="Details"></a>
<h2 >Details<a href="#Details" class="wiki-anchor">¶</a></h2>
<ul>
<li>Show Replica size only for replicated pools.</li>
<li>Only show erasure code profile on erasure coded pools.</li>
<li>Add a mouse over or hyper link for the properties.</li>
</ul> Dashboard - Cleanup #24134 (Resolved): Semi automatic Task creationhttps://tracker.ceph.com/issues/241342018-05-15T09:00:48ZStephan Müller
<p>I would like to have a service that wraps a task around a 'http' request and returns an observable like 'http' does.</p>
<p>This way it would be easy to use task without having to use the same code and mostly useless imports (only used for Task wrapping) over and over again.</p>