]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/Monitor.js
1 Ext
.define('PVE.CephCreateMon', {
2 extend
: 'Proxmox.window.Edit',
3 alias
: ['widget.pveCephCreateMon'],
5 subject
: 'Ceph Monitor/Manager',
6 onlineHelp
: 'pve_ceph_monitors',
10 setNode: function(nodename
) {
13 me
.nodename
= nodename
;
14 me
.url
= "/nodes/" + nodename
+ "/ceph/mon";
17 initComponent : function() {
22 throw "no node name specified";
25 me
.setNode(me
.nodename
);
33 xtype
: 'pveNodeSelector',
35 fieldLabel
: gettext('Host'),
39 change: function(f
, value
) {
51 Ext
.define('PVE.node.CephMonList', {
52 extend
: 'Ext.grid.GridPanel',
53 alias
: ['widget.pveNodeCephMonList'],
55 onlineHelp
: 'chapter_pveceph',
58 stateId
: 'grid-ceph-monitor',
60 initComponent: function() {
63 var nodename
= me
.pveSelNode
.data
.node
;
65 throw "no node name specified";
68 var sm
= Ext
.create('Ext.selection.RowModel', {});
70 var rstore
= Ext
.create('Proxmox.data.UpdateStore', {
72 storeid
: 'ceph-mon-list' + nodename
,
73 model
: 'ceph-mon-list',
76 url
: "/api2/json/nodes/" + nodename
+ "/ceph/mon"
80 var store
= Ext
.create('Proxmox.data.DiffStore', {
82 sorters
: [{ property
: 'name'}]
86 var service_cmd = function(cmd
) {
87 var rec
= sm
.getSelection()[0];
89 Ext
.Msg
.alert(gettext('Error'), "entry has no host");
92 Proxmox
.Utils
.API2Request({
93 url
: "/nodes/" + rec
.data
.host
+ "/ceph/" + cmd
,
95 params
: { service
: "mon." + rec
.data
.name
},
96 success: function(response
, options
) {
97 var upid
= response
.result
.data
;
98 var win
= Ext
.create('Proxmox.window.TaskProgress', { upid
: upid
});
101 failure: function(response
, opts
) {
102 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
107 var start_btn
= new Proxmox
.button
.Button({
108 text
: gettext('Start'),
112 service_cmd("start");
116 var stop_btn
= new Proxmox
.button
.Button({
117 text
: gettext('Stop'),
125 var restart_btn
= new Proxmox
.button
.Button({
126 text
: gettext('Restart'),
130 service_cmd("restart");
134 var create_btn
= new Ext
.Button({
135 text
: gettext('Create'),
137 var win
= Ext
.create('PVE.CephCreateMon', {
144 var remove_btn
= new Proxmox
.button
.Button({
145 text
: gettext('Remove'),
148 handler: function() {
149 var rec
= sm
.getSelection()[0];
151 if (!rec
.data
.host
) {
152 Ext
.Msg
.alert(gettext('Error'), "entry has no host");
156 Proxmox
.Utils
.API2Request({
157 url
: "/nodes/" + rec
.data
.host
+ "/ceph/mon/" +
160 success: function(response
, options
) {
161 var upid
= response
.result
.data
;
162 var win
= Ext
.create('Proxmox.window.TaskProgress', { upid
: upid
});
165 failure: function(response
, opts
) {
166 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
175 tbar
: [ start_btn
, stop_btn
, restart_btn
, '-', create_btn
, remove_btn
],
178 header
: gettext('Name'),
181 renderer: function(v
) { return "mon." + v
; },
185 header
: gettext('Host'),
188 renderer: function(v
) {
189 return v
|| 'unknown';
194 header
: gettext('Quorum'),
197 renderer
: Proxmox
.Utils
.format_boolean
,
201 header
: gettext('Address'),
208 activate
: rstore
.startUpdate
,
209 destroy
: rstore
.stopUpdate
213 var regex
= new RegExp("not (installed|initialized)", "i");
214 PVE
.Utils
.handleStoreErrorOrMask(me
, rstore
, regex
, function(me
, error
){
215 me
.store
.rstore
.stopUpdate();
216 PVE
.Utils
.showCephInstallOrMask(me
, error
.statusText
, nodename
,
218 me
.mon(win
, 'cephInstallWindowClosed', function(){
219 me
.store
.rstore
.startUpdate();
229 Ext
.define('ceph-mon-list', {
230 extend
: 'Ext.data.Model',
231 fields
: [ 'addr', 'name', 'rank', 'host', 'quorum' ],