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.csa...@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',
        }
      ],


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to