public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH cluster 1/5 v2] Close #1295: Add notifications to datacenter schema
@ 2021-07-14 10:09 Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 2/5 v2] apt update: Inform users about missing subscriptions Dominic Jäger
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Dominic Jäger @ 2021-07-14 10:09 UTC (permalink / raw)
  To: pve-devel

Permits controlling email notifications about package updates.
Use property string for extensibility to more notification types.

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
---
v2: Use property string

 data/PVE/DataCenterConfig.pm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/data/PVE/DataCenterConfig.pm b/data/PVE/DataCenterConfig.pm
index 24ebf3f..336f68a 100644
--- a/data/PVE/DataCenterConfig.pm
+++ b/data/PVE/DataCenterConfig.pm
@@ -25,6 +25,15 @@ my $migration_format = {
     },
 };
 
+my $notify_format = {
+    package_updates => {
+	type => 'boolean',
+	description => 'Control notifications about available package updates',
+	format_description => 'boolean',
+	optional => 1,
+    },
+};
+
 my $ha_format = {
     shutdown_policy => {
 	type => 'string',
@@ -146,6 +155,12 @@ my $datacenter_schema = {
 	    format => 'email-opt',
 	    description => "Specify email address to send notification from (default is root@\$hostname)",
 	},
+	notify => {
+	    optional => 1,
+	    type => 'string',
+	    format => $notify_format,
+	    description => 'Control email notifications',
+	},
 	max_workers => {
 	    optional => 1,
 	    type => 'integer',
@@ -196,6 +211,10 @@ sub parse_datacenter_config {
 	$res->{migration} = PVE::JSONSchema::parse_property_string($migration_format, $migration);
     }
 
+    if (my $notify = $res->{notify}) {
+	$res->{notify} = PVE::JSONSchema::parse_property_string($notify_format, $notify);
+    }
+
     if (my $ha = $res->{ha}) {
 	$res->{ha} = PVE::JSONSchema::parse_property_string($ha_format, $ha);
     }
@@ -241,6 +260,11 @@ sub write_datacenter_config {
 	$cfg->{migration} = PVE::JSONSchema::print_property_string($migration, $migration_format);
     }
 
+    if (ref($cfg->{notify})) {
+	my $notify = $cfg->{notify};
+	$cfg->{notify} = PVE::JSONSchema::print_property_string($notify, $notify_format);
+    }
+
     if (ref($cfg->{ha})) {
 	my $ha = $cfg->{ha};
 	$cfg->{ha} = PVE::JSONSchema::print_property_string($ha, $ha_format);
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH manager 2/5 v2] apt update: Inform users about missing subscriptions
  2021-07-14 10:09 [pve-devel] [PATCH cluster 1/5 v2] Close #1295: Add notifications to datacenter schema Dominic Jäger
@ 2021-07-14 10:09 ` Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 3/5 v2] Close #1295: Make apt notifications configurable Dominic Jäger
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Dominic Jäger @ 2021-07-14 10:09 UTC (permalink / raw)
  To: pve-devel

We assume that users want update notifications for production systems.
Those systems should also have an active subscription.

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
---
v2: new

 PVE/API2/APT.pm | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/PVE/API2/APT.pm b/PVE/API2/APT.pm
index bd60db33..b6a86595 100644
--- a/PVE/API2/APT.pm
+++ b/PVE/API2/APT.pm
@@ -36,6 +36,15 @@ my $get_apt_cache = sub {
     return $apt_cache;
 };
 
+# avoid a wall of text in the code
+my $get_subscription_message = sub {
+    my $hostname = shift;
+    return "You do not have a valid subscription for the server '$hostname'.\n\n" .
+    "A subscription gives access to the Proxmox VE Enterprise Repository.\n" .
+    "This repository contains the most stable packages and is recommended for production use.\n" .
+    "Please visit www.proxmox.com to get a list of available options.\n\n\n"
+};
+
 use base qw(PVE::RESTHandler);
 
 __PACKAGE__->register_method({
@@ -345,7 +354,12 @@ __PACKAGE__->register_method({
 		    my $mailfrom = $dcconf->{email_from} || "root";
 		    my $subject = "New software packages available ($hostname)";
 
-		    my $data = "The following updates are available:\n\n";
+		    my $info = PVE::INotify::read_file('subscription');
+		    my $has_subscription = $info && $info->{status} eq 'Active';
+
+		    my $data = "";
+		    $data .= $get_subscription_message->($hostname) if !$has_subscription;
+		    $data .= "The following updates are available:\n\n";
 
 		    my $count = 0;
 		    foreach my $p (sort {$a->{Package} cmp $b->{Package} } @$pkglist) {
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH manager 3/5 v2] Close #1295: Make apt notifications configurable
  2021-07-14 10:09 [pve-devel] [PATCH cluster 1/5 v2] Close #1295: Add notifications to datacenter schema Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 2/5 v2] apt update: Inform users about missing subscriptions Dominic Jäger
@ 2021-07-14 10:09 ` Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 4/5 v2] dc options: Add apt notifications GUI checkbox Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 5/5 v2] dc options: Allow both package_update options Dominic Jäger
  3 siblings, 0 replies; 5+ messages in thread
From: Dominic Jäger @ 2021-07-14 10:09 UTC (permalink / raw)
  To: pve-devel

Users may want turn off update notifications.
Depends on pve-cluster patch.

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
---
v2: Keep defaults. I hope that I understood the idea correctly.

 bin/pveupdate | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/bin/pveupdate b/bin/pveupdate
index 99b52fe9..5981b82c 100755
--- a/bin/pveupdate
+++ b/bin/pveupdate
@@ -50,9 +50,14 @@ if (my $err = $@) {
 }
 
 my $info = PVE::INotify::read_file('subscription');
-# We assume that users with subscriptions want informations
-# about new packages.
-my $notify = ($info && $info->{status} eq 'Active') ? 1 : 0;
+my $has_subscription = $info && $info->{status} eq 'Active';
+
+my $notification_settings = $dccfg && $dccfg->{notify};
+my $notify_package_updates = $notification_settings->{package_updates}
+    if $notification_settings;
+
+# We assume that users with subscriptions want information about new packages
+my $notify = $notify_package_updates // $has_subscription;
 eval { PVE::API2::APT->update_database({ node => $nodename, notify => $notify, quiet => 1 }); };
 if (my $err = $@) {
     syslog ('err', "update apt database failed: $err");
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH manager 4/5 v2] dc options: Add apt notifications GUI checkbox
  2021-07-14 10:09 [pve-devel] [PATCH cluster 1/5 v2] Close #1295: Add notifications to datacenter schema Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 2/5 v2] apt update: Inform users about missing subscriptions Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 3/5 v2] Close #1295: Make apt notifications configurable Dominic Jäger
@ 2021-07-14 10:09 ` Dominic Jäger
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 5/5 v2] dc options: Allow both package_update options Dominic Jäger
  3 siblings, 0 replies; 5+ messages in thread
From: Dominic Jäger @ 2021-07-14 10:09 UTC (permalink / raw)
  To: pve-devel

Default value like pveupdate: Assume users with subscriptions want
notifications

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
---
v2: default depends on subscription status

 www/manager6/dc/OptionView.js | 37 +++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/www/manager6/dc/OptionView.js b/www/manager6/dc/OptionView.js
index edae97ea..ec6ff1a3 100644
--- a/www/manager6/dc/OptionView.js
+++ b/www/manager6/dc/OptionView.js
@@ -90,6 +90,43 @@ Ext.define('PVE.dc.OptionView', {
 	    vtype: 'proxmoxMail',
 	    defaultValue: 'root@$hostname',
 	});
+	me.add_inputpanel_row('notify', gettext('Notification settings'), {
+	    renderer: PVE.Utils.render_dc_ha_opts,
+	    labelWidth: 120,
+	    url: "/api2/extjs/cluster/options",
+	    items: [
+		{
+		    xtype: 'checkbox',
+		    name: 'package_updates',
+		    fieldLabel: gettext('Package updates'),
+		    inputValue: 1,
+		    uncheckedValue: 0, // behavior for undefined is different
+		    listeners: {
+			added: function(checkbox) {
+			    Proxmox.Utils.API2Request({
+				url: '/nodes/localhost/subscription',
+				method: 'GET',
+				failure: function(response) {
+				    console.warn('Unable to load subscription status: '
+					+ response.htmlStatus);
+				},
+				success: function(response) {
+				    const data = response.result.data;
+				    // This happens after the row is clicked and the edit window
+				    // opens but before the setValue from add_inputpanel_row sets
+				    // the value that is (potentially) saved in datacenter.cfg. If
+				    // no value is in datacenter.cfg then the setValue from
+				    // add_inputpanel_row does nothing. Then this setValue uses the
+				    // subscription status as default like pveupdate.
+				    checkbox.setValue(data.status ==='Active');
+				},
+			    });
+			},
+		    },
+		},
+	    ],
+	});
+
 	me.add_text_row('mac_prefix', gettext('MAC address prefix'), {
 	    deleteEmpty: true,
 	    vtype: 'MacPrefix',
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH manager 5/5 v2] dc options: Allow both package_update options
  2021-07-14 10:09 [pve-devel] [PATCH cluster 1/5 v2] Close #1295: Add notifications to datacenter schema Dominic Jäger
                   ` (2 preceding siblings ...)
  2021-07-14 10:09 ` [pve-devel] [PATCH manager 4/5 v2] dc options: Add apt notifications GUI checkbox Dominic Jäger
@ 2021-07-14 10:09 ` Dominic Jäger
  3 siblings, 0 replies; 5+ messages in thread
From: Dominic Jäger @ 2021-07-14 10:09 UTC (permalink / raw)
  To: pve-devel

When opened for the first time (undefined value in datacenter.cfg) we should
allow setting both options yes and no for the package_update checkbox.

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
---
v2: new

 www/manager6/dc/OptionView.js | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/www/manager6/dc/OptionView.js b/www/manager6/dc/OptionView.js
index ec6ff1a3..de7cbce9 100644
--- a/www/manager6/dc/OptionView.js
+++ b/www/manager6/dc/OptionView.js
@@ -35,6 +35,17 @@ Ext.define('PVE.dc.OptionView', {
 
 		    Ext.Array.each(this.query('inputpanel'), function(panel) {
 			panel.setValues(edit_value);
+
+			if (name === 'notify') {
+			    // Default depends on subscription status.
+			    // Therefore, when datacenter.cfg contains nothing
+			    // about package updates then allow setting both yes
+			    // and no for it.
+			    if (!edit_value || typeof edit_value.package_updates === 'undefined') {
+				const field = panel.down('field[name=package_updates]');
+				field.isDirty = () => true;
+			    }
+			}
 		    });
 		},
 		url: opts.url,
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-07-14 10:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-14 10:09 [pve-devel] [PATCH cluster 1/5 v2] Close #1295: Add notifications to datacenter schema Dominic Jäger
2021-07-14 10:09 ` [pve-devel] [PATCH manager 2/5 v2] apt update: Inform users about missing subscriptions Dominic Jäger
2021-07-14 10:09 ` [pve-devel] [PATCH manager 3/5 v2] Close #1295: Make apt notifications configurable Dominic Jäger
2021-07-14 10:09 ` [pve-devel] [PATCH manager 4/5 v2] dc options: Add apt notifications GUI checkbox Dominic Jäger
2021-07-14 10:09 ` [pve-devel] [PATCH manager 5/5 v2] dc options: Allow both package_update options Dominic Jäger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal