1 Ext
.define('PVE.window.Snapshot', {
2 extend
: 'Proxmox.window.Edit',
9 guestAgentEnabled
: false,
12 runningWithoutGuestAgent
: (get) => get('type') === 'qemu' && get('running') && !get('guestAgentEnabled'),
13 shouldWarnAboutFS
: (get) => get('isCreate') && get('runningWithoutGuestAgent') && get('!vmstate.checked'),
17 onGetValues: function(values
) {
20 if (me
.type
=== 'lxc') {
21 delete values
.vmstate
;
27 initComponent: function() {
29 var vm
= me
.getViewModel();
32 throw "no node name specified";
36 throw "no VM ID specified";
40 throw "no type specified";
43 vm
.set('type', me
.type
);
44 vm
.set('running', me
.running
);
45 vm
.set('isCreate', me
.isCreate
);
47 if (me
.type
=== 'qemu' && me
.isCreate
) {
48 Proxmox
.Utils
.API2Request({
49 url
: `/nodes/${me.nodename}/${me.type}/${me.vmid}/config`,
50 params
: { 'current': '1' },
52 success: function(response
, options
) {
53 let res
= response
.result
.data
;
54 let enabled
= PVE
.Parser
.parsePropertyString(res
.agent
, 'enabled');
55 vm
.set('guestAgentEnabled', !!PVE
.Parser
.parseBoolean(enabled
.enabled
));
62 xtype
: me
.isCreate
? 'textfield' : 'displayfield',
65 fieldLabel
: gettext('Name'),
70 xtype
: 'displayfield',
72 disabled
: me
.isCreate
,
74 renderer
: PVE
.Utils
.render_timestamp_human_readable
,
75 fieldLabel
: gettext('Timestamp'),
78 xtype
: 'proxmoxcheckbox',
79 hidden
: me
.type
!== 'qemu' || !me
.isCreate
|| !me
.running
,
80 disabled
: me
.type
!== 'qemu' || !me
.isCreate
|| !me
.running
,
86 fieldLabel
: gettext('Include RAM'),
89 xtype
: 'textareafield',
91 editable
: !me
.viewonly
,
93 fieldLabel
: gettext('Description'),
96 xtype
: 'displayfield',
100 value
: gettext('It is recommended to either include the RAM or use the QEMU Guest Agent when taking a snapshot of a running VM to avoid inconsistencies.'),
102 hidden
: '{!shouldWarnAboutFS}',
106 title
: gettext('Settings'),
123 header
: gettext('Key'),
128 header
: gettext('Value'),
136 me
.url
= `/nodes/${me.nodename}/${me.type}/${me.vmid}/snapshot`;
140 subject
= (me
.type
=== 'qemu' ? 'VM' : 'CT') + me
.vmid
+ ' ' + gettext('Snapshot');
142 me
.showTaskViewer
= true;
144 subject
= `${gettext('Snapshot')} ${me.snapname}`;
145 me
.url
+= `/${me.snapname}/config`;
150 width
: me
.isCreate
? 450 : 620,
151 height
: me
.isCreate
? undefined : 420,
161 success: function(response
) {
163 Ext
.Object
.each(response
.result
.data
, function(key
, value
) {
164 if (key
=== 'description' || key
=== 'snaptime') {
167 kvarray
.push({ key
: key
, value
: value
});
170 let summarystore
= me
.down('#summary').getStore();
171 summarystore
.suspendEvents();
172 summarystore
.add(kvarray
);
174 summarystore
.resumeEvents();
175 summarystore
.fireEvent('refresh', summarystore
);
177 me
.setValues(response
.result
.data
);