]> git.proxmox.com Git - pve-firewall.git/blobdiff - src/PVE/API2/Firewall/Groups.pm
implement rules API for <vmid>.fw
[pve-firewall.git] / src / PVE / API2 / Firewall / Groups.pm
index d7f33b87a85ec6b1fef1ffda47936f0ff7f205fc..a929236357c25201e85b5df5ab7eb6af32a2bf92 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use PVE::JSONSchema qw(get_standard_option);
 
 use PVE::Firewall;
-
+use PVE::API2::Firewall::Rules;
 
 use Data::Dumper; # fixme: remove
 
@@ -16,12 +16,8 @@ __PACKAGE__->register_method({
     path => '',
     method => 'GET',
     description => "List security groups.",
-    proxyto => 'node',
     parameters => {
        additionalProperties => 0,
-       properties => {
-           node => get_standard_option('pve-node'),
-       },
     },
     returns => {
        type => 'array',
@@ -39,57 +35,19 @@ __PACKAGE__->register_method({
     code => sub {
        my ($param) = @_;
 
-       my $groups_conf = PVE::Firewall::load_security_groups();
+       my $cluster_conf = PVE::Firewall::load_clusterfw_conf();
 
        my $res = [];
-       foreach my $group (keys %{$groups_conf->{rules}}) {
-           push @$res, { name => $group, count => scalar(@{$groups_conf->{rules}->{$group}}) };
+       foreach my $group (keys %{$cluster_conf->{groups}}) {
+           push @$res, { name => $group, count => scalar(@{$cluster_conf->{groups}->{$group}}) };
        }
 
        return $res;
     }});
 
-__PACKAGE__->register_method({
-    name => 'get_rules',
+__PACKAGE__->register_method ({
+    subclass => "PVE::API2::Firewall::GroupRules",  
     path => '{group}',
-    method => 'GET',
-    description => "List security groups rules.",
-    proxyto => 'node',
-    parameters => {
-       additionalProperties => 0,
-       properties => {
-           node => get_standard_option('pve-node'),
-           group => {
-               description => "Security group name.",
-               type => 'string',
-           },
-       },
-    },
-    returns => {
-       type => 'array',
-       items => {
-           type => "object",
-           properties => {},
-       },
-    },
-    code => sub {
-       my ($param) = @_;
-
-       my $groups_conf = PVE::Firewall::load_security_groups();
-
-       my $rules = $groups_conf->{rules}->{$param->{group}};
-       die "no such security group\n" if !defined($rules);
-
-       my $digest = $groups_conf->{digest};
-
-       my $res = [];
-
-       my $ind = 0;
-       foreach my $rule (@$rules) {
-           push @$res, PVE::Firewall::cleanup_fw_rule($rule, $digest, $ind++);
-       }
-
-       return $res;
-    }});
+});
 
 1;