]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/ceph/Monitor.js
Rename 'create' to 'isCreate' in pveWindowEdit and subclasses
[pve-manager.git] / www / manager6 / ceph / Monitor.js
CommitLineData
1a70cd63
DM
1Ext.define('PVE.CephCreateMon', {
2 extend: 'PVE.window.Edit',
3 alias: ['widget.pveCephCreateMon'],
4
5 subject: 'Ceph Monitor',
6
7 showProgress: true,
c474314e 8
1a70cd63
DM
9 setNode: function(nodename) {
10 var me = this;
11
12 me.nodename = nodename;
13 me.url = "/nodes/" + nodename + "/ceph/mon";
14 },
15
16 initComponent : function() {
d5e771ce 17
1a70cd63
DM
18 var me = this;
19
20 if (!me.nodename) {
21 throw "no node name specified";
22 }
23
24 me.setNode(me.nodename);
25
d5e771ce 26 me.isCreate = true;
1a70cd63
DM
27
28 Ext.applyIf(me, {
29 method: 'POST',
30 items: [
31 {
5e0fd1b9 32 xtype: 'pveNodeSelector',
1a70cd63
DM
33 submitValue: false,
34 fieldLabel: gettext('Host'),
35 selectCurNode: true,
36 allowBlank: false,
37 listeners: {
38 change: function(f, value) {
39 me.setNode(value);
40 }
41 }
42 }
43 ]
44 });
45
46 me.callParent();
47 }
48});
49
50Ext.define('PVE.node.CephMonList', {
51 extend: 'Ext.grid.GridPanel',
52 alias: ['widget.pveNodeCephMonList'],
53
ba93a9c6
DC
54 onlineHelp: 'chapter_pveceph',
55
361aafd0
DC
56 stateful: true,
57 stateId: 'grid-ceph-monitor',
58
1a70cd63
DM
59 initComponent: function() {
60 var me = this;
61
62 var nodename = me.pveSelNode.data.node;
63 if (!nodename) {
64 throw "no node name specified";
65 }
66
67 var sm = Ext.create('Ext.selection.RowModel', {});
68
69 var rstore = Ext.create('PVE.data.UpdateStore', {
70 interval: 3000,
d5066d84 71 storeid: 'ceph-mon-list' + nodename,
1a70cd63
DM
72 model: 'ceph-mon-list',
73 proxy: {
74 type: 'pve',
75 url: "/api2/json/nodes/" + nodename + "/ceph/mon"
76 }
77 });
78
fe651e6f
TL
79 var store = Ext.create('PVE.data.DiffStore', {
80 rstore: rstore,
81 sorters: [{ property: 'name'}]
82 });
1a70cd63
DM
83
84 PVE.Utils.monStoreErrors(me, rstore);
85
86 var service_cmd = function(cmd) {
87 var rec = sm.getSelection()[0];
88 if (!rec.data.host) {
89 Ext.Msg.alert(gettext('Error'), "entry has no host");
90 return;
91 }
92 PVE.Utils.API2Request({
93 url: "/nodes/" + rec.data.host + "/ceph/" + cmd,
94 method: 'POST',
95 params: { service: "mon." + rec.data.name },
96 success: function(response, options) {
97 var upid = response.result.data;
98 var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
99 win.show();
100 },
101 failure: function(response, opts) {
102 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
103 }
104 });
105 };
106
107 var start_btn = new PVE.button.Button({
108 text: gettext('Start'),
109 selModel: sm,
110 disabled: true,
111 handler: function(){
112 service_cmd("start");
113 }
114 });
115
116 var stop_btn = new PVE.button.Button({
117 text: gettext('Stop'),
118 selModel: sm,
119 disabled: true,
120 handler: function(){
121 service_cmd("stop");
122 }
123 });
124
125 var create_btn = new Ext.Button({
126 text: gettext('Create'),
127 handler: function(){
128 var win = Ext.create('PVE.CephCreateMon', {
129 nodename: nodename
130 });
131 win.show();
132 }
133 });
134
135 var remove_btn = new PVE.button.Button({
136 text: gettext('Remove'),
137 selModel: sm,
138 disabled: true,
139 handler: function() {
140 var rec = sm.getSelection()[0];
141
142 if (!rec.data.host) {
143 Ext.Msg.alert(gettext('Error'), "entry has no host");
144 return;
145 }
146
147 PVE.Utils.API2Request({
c474314e 148 url: "/nodes/" + rec.data.host + "/ceph/mon/" +
1a70cd63
DM
149 rec.data.name,
150 method: 'DELETE',
151 success: function(response, options) {
152 var upid = response.result.data;
153 var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
154 win.show();
155 },
156 failure: function(response, opts) {
157 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
158 }
159 });
160 }
161 });
162
163 Ext.apply(me, {
164 store: store,
165 selModel: sm,
1a70cd63
DM
166 tbar: [ start_btn, stop_btn, create_btn, remove_btn ],
167 columns: [
168 {
169 header: gettext('Name'),
4769a80d 170 width: 100,
1a70cd63
DM
171 sortable: true,
172 renderer: function(v) { return "mon." + v; },
173 dataIndex: 'name'
174 },
175 {
176 header: gettext('Host'),
177 width: 100,
178 sortable: true,
179 renderer: function(v) {
180 return v || 'unknown';
181 },
182 dataIndex: 'host'
183 },
184 {
185 header: gettext('Quorum'),
5e0fd1b9 186 width: 70,
1a70cd63
DM
187 sortable: false,
188 renderer: PVE.Utils.format_boolean,
189 dataIndex: 'quorum'
190 },
191 {
192 header: gettext('Address'),
193 flex: 1,
194 sortable: true,
195 dataIndex: 'addr'
196 }
197 ],
198 listeners: {
5e0fd1b9 199 activate: rstore.startUpdate,
1a70cd63
DM
200 destroy: rstore.stopUpdate
201 }
202 });
203
204 me.callParent();
205 }
206}, function() {
207
208 Ext.define('ceph-mon-list', {
209 extend: 'Ext.data.Model',
210 fields: [ 'addr', 'name', 'rank', 'host', 'quorum' ],
211 idProperty: 'name'
212 });
213});