]> git.proxmox.com Git - pmg-api.git/blobdiff - PMG/CLI/pmgdb.pm
PMG/CLI/pmgdb.pm: generate default locale
[pmg-api.git] / PMG / CLI / pmgdb.pm
index f7760f4c243f3e5529c776c6fcc61294942e24b6..6017826acad8be3dbccb15a914b0ad17558f8a11 100644 (file)
@@ -7,12 +7,64 @@ use Data::Dumper;
 use PVE::SafeSyslog;
 use PVE::Tools qw(extract_param);
 use PVE::INotify;
+use PVE::CLIHandler;
 
+use PMG::Utils;
+use PMG::RESTEnvironment;
 use PMG::DBTools;
+use PMG::RuleDB;
+use PMG::Cluster;
+use PMG::ClusterConfig;
+use PMG::Statistic;
+
+use PMG::API2::RuleDB;
 
 use base qw(PVE::CLIHandler);
 
-my $nodename = PVE::INotify::nodename();
+sub setup_environment {
+    PMG::RESTEnvironment->setup_default_cli_env();
+}
+
+sub print_objects {
+    my ($ruledb, $og) = @_;
+
+    my $objects = $ruledb->load_group_objects ($og->{id});
+
+    foreach my $obj (@$objects) {
+       my $desc = $obj->short_desc ();
+       print "    OBJECT $obj->{id}: $desc\n";
+    }
+}
+
+sub print_rule {
+    my ($ruledb, $rule) = @_;
+
+    print "Found RULE $rule->{id}: $rule->{name}\n";
+
+    my ($from, $to, $when, $what, $action) =
+       $ruledb->load_groups($rule);
+
+    foreach my $og (@$from) {
+       print "  FOUND FROM GROUP $og->{id}: $og->{name}\n";
+       print_objects($ruledb, $og);
+    }
+    foreach my $og (@$to) {
+       print "  FOUND TO GROUP $og->{id}: $og->{name}\n";
+       print_objects($ruledb, $og);
+    }
+    foreach my $og (@$when) {
+       print "  FOUND WHEN GROUP $og->{id}: $og->{name}\n";
+       print_objects($ruledb, $og);
+    }
+    foreach my $og (@$what) {
+       print "  FOUND WHAT GROUP $og->{id}: $og->{name}\n";
+       print_objects($ruledb, $og);
+    }
+    foreach my $og (@$action) {
+       print "  FOUND ACTION GROUP $og->{id}: $og->{name}\n";
+       print_objects($ruledb, $og);
+    }
+}
 
 __PACKAGE__->register_method ({
     name => 'dump',
@@ -26,7 +78,16 @@ __PACKAGE__->register_method ({
     code => sub {
        my ($param) = @_;
 
-       print "DUMP\n";
+       my $dbh = PMG::DBTools::open_ruledb("Proxmox_ruledb");
+       my $ruledb = PMG::RuleDB->new($dbh);
+
+       my $rules = $ruledb->load_rules();
+
+       foreach my $rule (@$rules) {
+           print_rule($ruledb, $rule);
+       }
+
+       $ruledb->close();
 
        return undef;
     }});
@@ -57,12 +118,11 @@ __PACKAGE__->register_method ({
        return undef;
     }});
 
-
 __PACKAGE__->register_method ({
-    name => 'update',
-    path => 'update',
+    name => 'init',
+    path => 'init',
     method => 'POST',
-    description => "Update or initialize PMG rule database.",
+    description => "Initialize/Upgrade the PMG rule database.",
     parameters => {
        additionalProperties => 0,
        properties => {
@@ -74,9 +134,9 @@ __PACKAGE__->register_method ({
            },
            statistics => {
                type => 'boolean',
-               description => "Update/initialize statistic database (this is done by default).",
+               description => "Reset and update statistic database.",
                optional => 1,
-               default => 1,
+               default => 0,
            },
        }
     },
@@ -84,6 +144,8 @@ __PACKAGE__->register_method ({
     code => sub {
        my ($param) = @_;
 
+       PMG::Utils::cond_add_default_locale();
+
        my $list = PMG::DBTools::database_list();
 
        my $dbname = "Proxmox_ruledb";
@@ -98,7 +160,7 @@ __PACKAGE__->register_method ({
            print "Initialize rule database\n";
 
            my $dbh = PMG::DBTools::create_ruledb ($dbname);
-           $ruledb = PMG::RuleDB->new($dbh);
+           my $ruledb = PMG::RuleDB->new($dbh);
            PMG::DBTools::init_ruledb($ruledb);
 
            $dbh->disconnect();
@@ -106,17 +168,18 @@ __PACKAGE__->register_method ({
        } else {
 
            my $dbh = PMG::DBTools::open_ruledb("Proxmox_ruledb");
-           $ruledb = Proxmox::RuleDB->new($dbh);
+           my $ruledb = PMG::RuleDB->new($dbh);
 
            print "Analyzing/Upgrading existing Databases...";
-           #Proxmox::Utils::upgradedb ($ruledb);
+           PMG::DBTools::upgradedb ($ruledb);
            print "done\n";
 
            # reset and update statistic databases
            if ($param->{statistics}) {
                print "Generating Proxmox Statistic Databases... ";
-               #Proxmox::Statistic::clear_stats($dbh);
-               #Proxmox::Statistic::update_stats($dbh, $cinfo);
+               PMG::Statistic::clear_stats($dbh);
+               my $cinfo = PVE::INotify::read_file("cluster.conf");
+               PMG::Statistic::update_stats($dbh, $cinfo);
                print "done\n";
            }
 
@@ -127,9 +190,33 @@ __PACKAGE__->register_method ({
     }});
 
 
+__PACKAGE__->register_method ({
+    name => 'update',
+    path => 'update',
+    method => 'POST',
+    description => "Update the PMG statistic database.",
+    parameters => {
+       additionalProperties => 0,
+    },
+    returns => { type => 'null'},
+    code => sub {
+       my ($param) = @_;
+
+       my $dbh = PMG::DBTools::open_ruledb("Proxmox_ruledb");
+       print "Updateing Proxmox Statistic Databases... ";
+       my $cinfo = PVE::INotify::read_file("cluster.conf");
+       PMG::Statistic::update_stats($dbh, $cinfo);
+       print "done\n";
+       $dbh->disconnect();
+
+       return undef;
+    }});
+
 our $cmddef = {
     'dump' => [ __PACKAGE__, 'dump', []],
     delete => [ __PACKAGE__, 'delete', []],
+    init => [ __PACKAGE__, 'init', []],
+    reset => [ 'PMG::API2::RuleDB', 'reset_ruledb', []],
     update => [ __PACKAGE__, 'update', []],
 };