mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-09 12:42:33 +00:00
api: prepare api handler module for notification config
This commit adds a new Perl module, PVE::API2::Cluster::Notification. The module will contain all API handlers for the new notification subsystem. Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
This commit is contained in:
parent
2ab19e8351
commit
b6fa29f3f5
@ -29,6 +29,7 @@ use PVE::API2::Cluster::Ceph;
|
|||||||
use PVE::API2::Cluster::Mapping;
|
use PVE::API2::Cluster::Mapping;
|
||||||
use PVE::API2::Cluster::Jobs;
|
use PVE::API2::Cluster::Jobs;
|
||||||
use PVE::API2::Cluster::MetricServer;
|
use PVE::API2::Cluster::MetricServer;
|
||||||
|
use PVE::API2::Cluster::Notifications;
|
||||||
use PVE::API2::ClusterConfig;
|
use PVE::API2::ClusterConfig;
|
||||||
use PVE::API2::Firewall::Cluster;
|
use PVE::API2::Firewall::Cluster;
|
||||||
use PVE::API2::HAConfig;
|
use PVE::API2::HAConfig;
|
||||||
@ -52,6 +53,11 @@ __PACKAGE__->register_method ({
|
|||||||
path => 'metrics',
|
path => 'metrics',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
__PACKAGE__->register_method ({
|
||||||
|
subclass => "PVE::API2::Cluster::Notifications",
|
||||||
|
path => 'notifications',
|
||||||
|
});
|
||||||
|
|
||||||
__PACKAGE__->register_method ({
|
__PACKAGE__->register_method ({
|
||||||
subclass => "PVE::API2::ClusterConfig",
|
subclass => "PVE::API2::ClusterConfig",
|
||||||
path => 'config',
|
path => 'config',
|
||||||
@ -149,6 +155,7 @@ __PACKAGE__->register_method ({
|
|||||||
{ name => 'log' },
|
{ name => 'log' },
|
||||||
{ name => 'mapping' },
|
{ name => 'mapping' },
|
||||||
{ name => 'metrics' },
|
{ name => 'metrics' },
|
||||||
|
{ name => 'notifications' },
|
||||||
{ name => 'nextid' },
|
{ name => 'nextid' },
|
||||||
{ name => 'options' },
|
{ name => 'options' },
|
||||||
{ name => 'replication' },
|
{ name => 'replication' },
|
||||||
|
@ -8,6 +8,7 @@ PERLSOURCE= \
|
|||||||
BackupInfo.pm \
|
BackupInfo.pm \
|
||||||
MetricServer.pm \
|
MetricServer.pm \
|
||||||
Mapping.pm \
|
Mapping.pm \
|
||||||
|
Notifications.pm \
|
||||||
Jobs.pm \
|
Jobs.pm \
|
||||||
Ceph.pm
|
Ceph.pm
|
||||||
|
|
||||||
|
71
PVE/API2/Cluster/Notifications.pm
Normal file
71
PVE/API2/Cluster/Notifications.pm
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
package PVE::API2::Cluster::Notifications;
|
||||||
|
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use Storable qw(dclone);
|
||||||
|
use JSON;
|
||||||
|
|
||||||
|
use PVE::Tools qw(extract_param);
|
||||||
|
use PVE::JSONSchema qw(get_standard_option);
|
||||||
|
use PVE::RESTHandler;
|
||||||
|
use PVE::Notify;
|
||||||
|
|
||||||
|
use base qw(PVE::RESTHandler);
|
||||||
|
|
||||||
|
sub make_properties_optional {
|
||||||
|
my ($properties) = @_;
|
||||||
|
$properties = dclone($properties);
|
||||||
|
|
||||||
|
for my $key (keys %$properties) {
|
||||||
|
$properties->{$key}->{optional} = 1 if $key ne 'name';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub raise_api_error {
|
||||||
|
my ($api_error) = @_;
|
||||||
|
|
||||||
|
if (!(ref($api_error) eq 'HASH' && $api_error->{message} && $api_error->{code})) {
|
||||||
|
die $api_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $msg = "$api_error->{message}\n";
|
||||||
|
my $exc = PVE::Exception->new($msg, code => $api_error->{code});
|
||||||
|
|
||||||
|
my (undef, $filename, $line) = caller;
|
||||||
|
|
||||||
|
$exc->{filename} = $filename;
|
||||||
|
$exc->{line} = $line;
|
||||||
|
|
||||||
|
die $exc;
|
||||||
|
}
|
||||||
|
|
||||||
|
__PACKAGE__->register_method ({
|
||||||
|
name => 'index',
|
||||||
|
path => '',
|
||||||
|
method => 'GET',
|
||||||
|
description => 'Index for notification-related API endpoints.',
|
||||||
|
permissions => { user => 'all' },
|
||||||
|
parameters => {
|
||||||
|
additionalProperties => 0,
|
||||||
|
properties => {},
|
||||||
|
},
|
||||||
|
returns => {
|
||||||
|
type => 'array',
|
||||||
|
items => {
|
||||||
|
type => 'object',
|
||||||
|
properties => {},
|
||||||
|
},
|
||||||
|
links => [ { rel => 'child', href => '{name}' } ],
|
||||||
|
},
|
||||||
|
code => sub {
|
||||||
|
my $result = [
|
||||||
|
];
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
1;
|
Loading…
Reference in New Issue
Block a user