]>
git.proxmox.com Git - pmg-api.git/blob - PMG/CLI/pmgdb.pm
1 package PMG
::CLI
::pmgdb
;
8 use PVE
::Tools
qw(extract_param);
13 use PMG
::RESTEnvironment
;
17 use PMG
::ClusterConfig
;
20 use PMG
::API2
::RuleDB
;
22 use base
qw(PVE::CLIHandler);
24 sub setup_environment
{
25 PMG
::RESTEnvironment-
>setup_default_cli_env();
29 my ($ruledb, $og) = @_;
31 my $objects = $ruledb->load_group_objects ($og->{id
});
33 foreach my $obj (@$objects) {
34 my $desc = $obj->short_desc ();
35 print " OBJECT $obj->{id}: $desc\n";
40 my ($ruledb, $rule) = @_;
47 my $active = $rule->{active
} ?
'active' : 'inactive';
48 my $dir = $direction->{$rule->{direction
}};
50 print "Found RULE $rule->{id} (prio: $rule->{priority}, $dir, $active): $rule->{name}\n";
52 my ($from, $to, $when, $what, $action) =
53 $ruledb->load_groups($rule);
55 foreach my $og (@$from) {
56 print " FOUND FROM GROUP $og->{id}: $og->{name}\n";
57 print_objects
($ruledb, $og);
59 foreach my $og (@$to) {
60 print " FOUND TO GROUP $og->{id}: $og->{name}\n";
61 print_objects
($ruledb, $og);
63 foreach my $og (@$when) {
64 print " FOUND WHEN GROUP $og->{id}: $og->{name}\n";
65 print_objects
($ruledb, $og);
67 foreach my $og (@$what) {
68 print " FOUND WHAT GROUP $og->{id}: $og->{name}\n";
69 print_objects
($ruledb, $og);
71 foreach my $og (@$action) {
72 print " FOUND ACTION GROUP $og->{id}: $og->{name}\n";
73 print_objects
($ruledb, $og);
77 __PACKAGE__-
>register_method ({
81 description
=> "Print the PMG rule database.",
83 additionalProperties
=> 0,
86 returns
=> { type
=> 'null'},
90 my $dbh = PMG
::DBTools
::open_ruledb
("Proxmox_ruledb");
91 my $ruledb = PMG
::RuleDB-
>new($dbh);
93 my $rules = $ruledb->load_rules();
95 foreach my $rule (@$rules) {
96 print_rule
($ruledb, $rule);
105 __PACKAGE__-
>register_method ({
109 description
=> "Delete PMG rule database.",
111 additionalProperties
=> 0,
114 returns
=> { type
=> 'null'},
118 my $list = PMG
::DBTools
::database_list
();
120 my $dbname = "Proxmox_ruledb";
122 die "Database '$dbname' does not exist\n" if !$list->{$dbname};
124 syslog
('info', "delete rule database");
126 PMG
::DBTools
::delete_ruledb
($dbname);
131 __PACKAGE__-
>register_method ({
135 description
=> "Initialize/Upgrade the PMG rule database.",
137 additionalProperties
=> 0,
141 description
=> "Delete existing database.",
147 description
=> "Reset and update statistic database.",
153 returns
=> { type
=> 'null'},
157 PMG
::Utils
::cond_add_default_locale
();
159 my $list = PMG
::DBTools
::database_list
();
161 my $dbname = "Proxmox_ruledb";
163 if (!$list->{$dbname} || $param->{force
}) {
165 if ($list->{$dbname}) {
166 print "Destroy existing rule database\n";
167 PMG
::DBTools
::delete_ruledb
($dbname);
170 print "Initialize rule database\n";
172 my $dbh = PMG
::DBTools
::create_ruledb
($dbname);
173 my $ruledb = PMG
::RuleDB-
>new($dbh);
174 PMG
::DBTools
::init_ruledb
($ruledb);
180 my $dbh = PMG
::DBTools
::open_ruledb
("Proxmox_ruledb");
181 my $ruledb = PMG
::RuleDB-
>new($dbh);
183 print "Analyzing/Upgrading existing Databases...";
184 PMG
::DBTools
::upgradedb
($ruledb);
187 # reset and update statistic databases
188 if ($param->{statistics
}) {
189 print "Generating Proxmox Statistic Databases... ";
190 PMG
::Statistic
::clear_stats
($dbh);
191 my $cinfo = PVE
::INotify
::read_file
("cluster.conf");
192 PMG
::Statistic
::update_stats
($dbh, $cinfo);
203 __PACKAGE__-
>register_method ({
207 description
=> "Update the PMG statistic database.",
209 additionalProperties
=> 0,
212 returns
=> { type
=> 'null'},
216 my $dbh = PMG
::DBTools
::open_ruledb
("Proxmox_ruledb");
217 print "Updateing Proxmox Statistic Databases... ";
218 my $cinfo = PVE
::INotify
::read_file
("cluster.conf");
219 PMG
::Statistic
::update_stats
($dbh, $cinfo);
227 'dump' => [ __PACKAGE__
, 'dump', []],
228 delete => [ __PACKAGE__
, 'delete', []],
229 init
=> [ __PACKAGE__
, 'init', []],
230 reset => [ 'PMG::API2::RuleDB', 'reset_ruledb', []],
231 update
=> [ __PACKAGE__
, 'update', []],