]>
Commit | Line | Data |
---|---|---|
48295db4 DM |
1 | Ext.define('PVE.ClusterInfo', { |
2 | extend: 'Ext.Component', | |
3 | alias: 'widget.pveClusterInfo', | |
4 | ||
5 | config: { | |
6 | style: 'background-color: white;', | |
7 | styleHtmlContent: true, | |
8 | tpl: [ | |
9 | '<table style="margin-bottom:0px;">', | |
10 | '<tr><td>Node:</td><td><b>{local_node}</large></b></tr>', | |
11 | '<tpl if="cluster_name">', | |
12 | '<tr><td>Cluster:</td><td>{cluster_name}</td></tr>', | |
13 | '<tr><td>Members:</td><td>{nodes}</td></tr>', | |
14 | '<tr><td>Quorate:</td><td>{quorate}</td></tr>', | |
15 | '</tpl>', | |
16 | '<tr><td>Version:</td><td>{version}</td></tr>', | |
17 | '</table>', | |
18 | ] | |
19 | }, | |
20 | }); | |
21 | ||
22 | Ext.define('PVE.Datacenter', { | |
23 | extend: 'PVE.Page', | |
24 | alias: 'widget.pveDatacenter', | |
25 | ||
26 | statics: { | |
27 | pathMatch: function(loc) { | |
28 | if (loc === '') { | |
29 | return ['']; | |
30 | } | |
31 | } | |
32 | }, | |
33 | ||
34 | config: { | |
35 | appUrl: '', | |
36 | items: [ | |
7853a5ff TL |
37 | { |
38 | xtype: 'pveTitleBar', | |
48295db4 | 39 | title: gettext('Datacenter'), |
7853a5ff | 40 | pveBackButton: false |
48295db4 DM |
41 | }, |
42 | { | |
43 | xtype: 'pveClusterInfo' | |
44 | }, | |
45 | { | |
46 | xtype: 'component', | |
47 | cls: 'dark', | |
48 | padding: 5, | |
49 | html: gettext('Nodes') | |
50 | }, | |
51 | { | |
52 | xtype: 'list', | |
53 | flex: 1, | |
54 | disableSelection: true, | |
db3f0058 | 55 | sorters: 'name', |
48295db4 DM |
56 | listeners: { |
57 | itemsingletap: function(list, index, target, record) { | |
58 | PVE.Workspace.gotoPage('nodes/' + record.get('name')); | |
59 | } | |
60 | }, | |
61 | itemTpl: '{name}' + | |
db3f0058 | 62 | '<br><small>Online: {[PVE.Utils.format_boolean(values.online)]}</small>' + |
48295db4 DM |
63 | '<br><small>Support: {[PVE.Utils.render_support_level(values.level)]}</small>' |
64 | } | |
65 | ] | |
66 | }, | |
67 | ||
68 | reload: function() { | |
69 | var me = this; | |
70 | ||
71 | var ci = me.down('pveClusterInfo'); | |
72 | ||
3e308242 DM |
73 | me.setMasked(false); |
74 | ||
48295db4 DM |
75 | me.summary = {}; |
76 | ||
77 | PVE.Utils.API2Request({ | |
78 | url: '/version', | |
79 | method: 'GET', | |
80 | success: function(response) { | |
81 | var d = response.result.data; | |
82 | me.summary.version = d.version + '-' + d.release + '/' + d.repoid; | |
83 | ci.setData(me.summary); | |
84 | } | |
85 | }); | |
86 | ||
87 | var list = me.down('list'); | |
88 | ||
89 | PVE.Utils.API2Request({ | |
90 | url: '/cluster/status', | |
91 | method: 'GET', | |
92 | success: function(response) { | |
93 | var d = response.result.data; | |
94 | list.setData(d.filter(function(el) { return (el.type === "node"); })); | |
95 | ||
48295db4 DM |
96 | d.forEach(function(el) { |
97 | if (el.type === "node") { | |
48295db4 DM |
98 | if (el.local) { |
99 | me.summary.local_node = el.name; | |
100 | } | |
101 | } else if (el.type === "cluster") { | |
db3f0058 TL |
102 | me.summary.nodes = el.nodes; |
103 | me.summary.quorate = PVE.Utils.format_boolean(el.quorate); | |
48295db4 | 104 | me.summary.cluster_name = el.name; |
48295db4 DM |
105 | } |
106 | }); | |
107 | ||
48295db4 | 108 | ci.setData(me.summary); |
3e308242 DM |
109 | }, |
110 | failure: function(response) { | |
111 | me.setMasked({ xtype: 'loadmask', message: response.htmlStatus} ); | |
48295db4 DM |
112 | } |
113 | }); | |
114 | }, | |
115 | ||
116 | initialize: function() { | |
117 | var me = this; | |
118 | ||
7853a5ff TL |
119 | me.down('pveMenuButton').setMenuItems([ |
120 | { | |
121 | text: gettext('Tasks'), | |
122 | handler: function() { | |
123 | PVE.Workspace.gotoPage('tasks'); | |
124 | } | |
125 | } | |
126 | ]); | |
127 | ||
48295db4 DM |
128 | me.reload(); |
129 | } | |
130 | ||
131 | }); | |
132 |