]> git.proxmox.com Git - pve-firewall.git/blob - src/PVE/API2/Firewall/Groups.pm
implement generic rule API class
[pve-firewall.git] / src / PVE / API2 / Firewall / Groups.pm
1 package PVE::API2::Firewall::Groups;
2
3 use strict;
4 use warnings;
5 use PVE::JSONSchema qw(get_standard_option);
6
7 use PVE::Firewall;
8 use PVE::API2::Firewall::Rules;
9
10 use Data::Dumper; # fixme: remove
11
12 use base qw(PVE::RESTHandler);
13
14 __PACKAGE__->register_method({
15 name => 'list',
16 path => '',
17 method => 'GET',
18 description => "List security groups.",
19 parameters => {
20 additionalProperties => 0,
21 },
22 returns => {
23 type => 'array',
24 items => {
25 type => "object",
26 properties => {
27 name => {
28 description => "Security group name.",
29 type => 'string',
30 },
31 },
32 },
33 links => [ { rel => 'child', href => "{name}" } ],
34 },
35 code => sub {
36 my ($param) = @_;
37
38 my $cluster_conf = PVE::Firewall::load_clusterfw_conf();
39
40 my $res = [];
41 foreach my $group (keys %{$cluster_conf->{groups}}) {
42 push @$res, { name => $group, count => scalar(@{$cluster_conf->{groups}->{$group}}) };
43 }
44
45 return $res;
46 }});
47
48 __PACKAGE__->register_method ({
49 subclass => "PVE::API2::Firewall::GroupRules",
50 path => '{group}',
51 });
52
53 1;