Ext.define('Proxmox.node.APTRepositoriesGrid', {
extend: 'Ext.grid.GridPanel',
xtype: 'proxmoxNodeAPTRepositoriesGrid',
+ mixins: ['Proxmox.Mixin.CBind'],
title: gettext('APT Repositories'),
name: 'addRepo',
disabled: true,
repoInfo: undefined,
+ cbind: {
+ onlineHelp: '{onlineHelp}',
+ },
handler: function(button, event, record) {
Proxmox.Utils.checked_command(() => {
let me = this;
url: `/api2/extjs/nodes/${panel.nodename}/apt/repositories`,
method: 'PUT',
extraRequestParams: extraParams,
+ onlineHelp: me.onlineHelp,
listeners: {
destroy: function() {
panel.reload();
let cls = 'fa fa-fw fa-question-circle-o';
if (value.match(/^\s*Proxmox\s*$/i)) {
cls = 'pmx-itype-icon pmx-itype-icon-proxmox-x';
- } else if (value.match(/^\s*Debian\s*$/i)) {
+ } else if (value.match(/^\s*Debian\s*(:?Backports)?$/i)) {
cls = 'pmx-itype-icon pmx-itype-icon-debian-swirl';
}
return `<i class='${cls}'></i> ${value}`;
digest: undefined,
+ onlineHelp: undefined,
+
product: 'Proxmox VE', // default
controller: {
let status = 'good'; // start with best, the helper below will downgrade if needed
let text = gettext('All OK, you have production-ready repositories configured!');
- let errors = vm.get('errors');
- errors.forEach((error) => {
- status = 'critical';
- store.add({
- status: 'critical',
- message: `${error.path} - ${error.error}`,
- });
- });
-
let addGood = message => store.add({ status: 'good', message });
-
let addWarn = (message, important) => {
if (status !== 'critical') {
status = 'warning';
}
store.add({ status: 'warning', message });
};
+ let addCritical = (message, important) => {
+ status = 'critical';
+ text = important ? message : gettext('Error');
+ store.add({ status: 'critical', message });
+ };
+
+ let errors = vm.get('errors');
+ errors.forEach(error => addCritical(`${error.path} - ${error.error}`));
let activeSubscription = vm.get('subscriptionActive');
let enterprise = vm.get('enterpriseRepo');
let wrongSuites = vm.get('suitesWarning');
if (!enterprise && !nosubscription && !test) {
- status = 'critical';
- text = gettext('Error');
- store.add({
- status: 'critical',
- message: Ext.String.format(gettext('No {0} repository is enabled, you do not get any updates!'), vm.get('product')),
- });
+ addCritical(
+ Ext.String.format(gettext('No {0} repository is enabled, you do not get any updates!'), vm.get('product')),
+ );
+ } else if (errors.length > 0) {
+ // nothing extra, just avoid that we show "get updates"
} else if (enterprise && !nosubscription && !test && activeSubscription) {
addGood(Ext.String.format(gettext('You get supported updates for {0}'), vm.get('product')));
} else if (nosubscription || test) {
}
if (errors.length > 0) {
- text = gettext('Fatal error when parsing at least one repository');
+ text = gettext('Fatal parsing error for at least one repository');
}
let iconCls = Proxmox.Utils.get_health_icon(status, true);
flex: 1,
cbind: {
nodename: '{nodename}',
+ onlineHelp: '{onlineHelp}',
},
majorUpgradeAllowed: false, // TODO get release information from an API call?
listeners: {
(info.kind === 'ignore-pre-upgrade-warning' && !repoGrid.majorUpgradeAllowed)
) {
infos[path][idx].warnings.push(info);
- if (!suitesWarning && info.property === 'Suites') {
- suitesWarning = true;
- }
} else {
throw 'unknown info';
}
if (infos[file.path] && infos[file.path][n]) {
repo.Origin = infos[file.path][n].origin || Proxmox.Utils.UnknownText;
repo.warnings = infos[file.path][n].warnings || [];
+
+ if (repo.Enabled && repo.warnings.some(w => w.property === 'Suites')) {
+ suitesWarning = true;
+ }
}
gridData.push(repo);
}