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;