]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - src/node/ServiceView.js
351ab0987e9bbae8a1947e50817f9e257d6703a7
1 Ext
.define('proxmox-services', {
2 extend
: 'Ext.data.Model',
3 fields
: ['service', 'name', 'desc', 'state'],
7 Ext
.define('Proxmox.node.ServiceView', {
8 extend
: 'Ext.grid.GridPanel',
10 alias
: ['widget.proxmoxNodeServiceView'],
12 startOnlyServices
: {},
14 restartCommand
: "restart", // TODO: default to reload once everywhere supported
16 initComponent: function() {
20 throw "no node name specified";
23 let rstore
= Ext
.create('Proxmox.data.UpdateStore', {
25 storeid
: 'proxmox-services' + me
.nodename
,
26 model
: 'proxmox-services',
29 url
: "/api2/json/nodes/" + me
.nodename
+ "/services",
33 let store
= Ext
.create('Proxmox.data.DiffStore', {
35 sortAfterUpdate
: true,
44 let view_service_log = function() {
45 let sm
= me
.getSelectionModel();
46 let rec
= sm
.getSelection()[0];
47 let win
= Ext
.create('Ext.window.Window', {
48 title
: gettext('Syslog') + ': ' + rec
.data
.service
,
54 xtype
: 'proxmoxLogView',
55 url
: "/api2/extjs/nodes/" + me
.nodename
+ "/syslog?service=" +
57 log_select_timespan
: 1,
63 let service_cmd = function(cmd
) {
64 let rec
= me
.getSelectionModel().getSelection()[0];
65 let service
= rec
.data
.service
;
66 Proxmox
.Utils
.API2Request({
67 url
: `/nodes/${me.nodename}/services/${service}/${cmd}`,
69 failure: function(response
, opts
) {
70 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
73 success: function(response
, opts
) {
75 let upid
= response
.result
.data
;
77 let win
= Ext
.create('Proxmox.window.TaskProgress', {
85 let start_btn
= new Ext
.Button({
86 text
: gettext('Start'),
93 let stop_btn
= new Ext
.Button({
94 text
: gettext('Stop'),
101 let restart_btn
= new Ext
.Button({
102 text
: gettext('Restart'),
104 handler: function() {
105 service_cmd(me
.restartCommand
|| "restart");
109 let syslog_btn
= new Ext
.Button({
110 text
: gettext('Syslog'),
112 handler
: view_service_log
,
115 let set_button_status = function() {
116 let sm
= me
.getSelectionModel();
117 let rec
= sm
.getSelection()[0];
122 restart_btn
.disable();
123 syslog_btn
.disable();
126 let service
= rec
.data
.service
;
127 let state
= rec
.data
.state
;
131 if (state
=== 'running') {
133 restart_btn
.enable();
136 restart_btn
.disable();
138 if (!me
.startOnlyServices
[service
]) {
139 if (state
=== 'running') {
147 me
.mon(store
, 'refresh', set_button_status
);
149 Proxmox
.Utils
.monStoreErrors(me
, rstore
);
154 tbar
: [start_btn
, stop_btn
, restart_btn
, syslog_btn
],
157 header
: gettext('Name'),
163 header
: gettext('Status'),
169 header
: gettext('Description'),
170 renderer
: Ext
.String
.htmlEncode
,
176 selectionchange
: set_button_status
,
177 itemdblclick
: view_service_log
,
178 activate
: rstore
.startUpdate
,
179 destroy
: rstore
.stopUpdate
,