[pve-devel] [PATCH manager 4/5] gui: ceph: icons for versions in ServiceList
Dominik Csapak
d.csapak at proxmox.com
Mon Mar 16 14:06:14 CET 2020
On 3/16/20 1:56 PM, Dominik Csapak wrote:
> this makes it closer to the OSD list, using the new 'version-only'
> metadata api call
>
> this partially fixes #2468
>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> www/manager6/ceph/ServiceList.js | 58 +++++++++++++++++++++++++++++++-
> 1 file changed, 57 insertions(+), 1 deletion(-)
>
> diff --git a/www/manager6/ceph/ServiceList.js b/www/manager6/ceph/ServiceList.js
> index 9da42cd4..77254acf 100644
> --- a/www/manager6/ceph/ServiceList.js
> +++ b/www/manager6/ceph/ServiceList.js
> @@ -65,6 +65,48 @@ Ext.define('PVE.node.CephServiceList', {
> controller: {
> xclass: 'Ext.app.ViewController',
>
> + render_version: function(value, metadata, rec) {
> + let me = this.getView();
> + let host = rec.data.host;
> + let icon = "";
> + let v = value;
> + let nodev = [0];
> + if (me.nodeversions[host] !== undefined) {
> + nodev = me.nodeversions[host].version.parts;
> + }
> + let maxv = me.maxversion;
> +
> + if (PVE.Utils.compare_ceph_versions(maxv, nodev) > 0) {
> + icon = PVE.Utils.get_ceph_icon_html('HEALTH_UPGRADE');
> + } else if (PVE.Utils.compare_ceph_versions(nodev, v) > 0) {
> + icon = PVE.Utils.get_ceph_icon_html('HEALTH_OLD');
> + } else if (me.mixedversions) {
> + icon = PVE.Utils.get_ceph_icon_html('HEALTH_OK');
> + }
> +
> + return icon + v;
> + },
> +
> + getMaxVersions: function(store, records, success) {
> + if (!success || records.length < 1) {
> + return;
> + }
> + let me = this;
> + let view = me.getView();
> +
> + view.nodeversions = records[0].data.node;
> + view.maxversion = [];
> + view.mixedversions = false;
> + for (const [nodename, data] of Object.entries(view.nodeversions)) {
> + if (PVE.Utils.compare_ceph_versions(data.version.parts, view.maxversion) > 0) {
> + if (view.maxversion.length > 0) {
> + view.mixedversions = true;
> + }
> + view.maxversion = data.version.parts;
> + }
here is a small bug, (it only sets mixedversion if the maxversion is not
the first), will either send a v2 or a follow up pending review
> + }
> + },
> +
> init: function(view) {
> if (view.pveSelNode) {
> view.nodename = view.pveSelNode.data.node;
> @@ -77,6 +119,19 @@ Ext.define('PVE.node.CephServiceList', {
> throw "no type specified";
> }
>
> + view.versionsstore = Ext.create('Proxmox.data.UpdateStore', {
> + autoLoad: true,
> + autoStart: true,
> + interval: 10000,
> + storeid: 'ceph-versions-' + view.type + '-list' + view.nodename,
> + proxy: {
> + type: 'proxmox',
> + url: "/api2/json/cluster/ceph/metadata?scope=versions"
> + }
> + });
> +
> + view.versionsstore.on('load', this.getMaxVersions, this);
> +
> view.rstore = Ext.create('Proxmox.data.UpdateStore', {
> autoLoad: true,
> autoStart: true,
> @@ -296,7 +351,8 @@ Ext.define('PVE.node.CephServiceList', {
> header: gettext('Version'),
> flex: 3,
> sortable: true,
> - dataIndex: 'version'
> + dataIndex: 'version',
> + renderer: 'render_version',
> }
> ],
>
>
More information about the pve-devel
mailing list