]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
PVE::HA::Config: use import flag to load appropritate resources
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 26 Jan 2016 08:23:54 +0000 (09:23 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 26 Jan 2016 08:45:14 +0000 (09:45 +0100)
src/PVE/HA/Config.pm
src/PVE/HA/Sim/Hardware.pm
src/pve-ha-tester
src/test/test_failover1.pl

index 1190f6dd2c0283e3425e22852be60f8e7a842228..28fcf03a6732f9449903c9bf9cd32d677a9b1823 100644 (file)
@@ -8,17 +8,46 @@ use PVE::HA::Tools;
 use PVE::HA::Groups;
 use PVE::Cluster qw(cfs_register_file cfs_read_file cfs_write_file cfs_lock_file);
 
-# virtual resource classes
-use PVE::HA::Resources::PVEVM;
-use PVE::HA::Resources::PVECT;
-
 PVE::HA::Groups->register();
 
 PVE::HA::Groups->init();
 
-PVE::HA::Resources::PVEVM->register();
-PVE::HA::Resources::PVECT->register();
-#PVE::HA::Resources::IPAddr->register();
+my $class_env_type;
+
+sub import {
+    my ($class, $envtype) = @_;
+
+    if (!$envtype) {
+       $envtype = $class_env_type || 'pve';
+    }
+
+    if ($class_env_type) {
+       return if $class_env_type eq $envtype; # already initialized
+       die "got unexpected import type '$envtype' (expected '$class_env_type')";
+    }
+
+    if ($envtype eq 'testenv') {
+
+       use PVE::HA::Sim::Resources::VirtVM;
+       use PVE::HA::Sim::Resources::VirtCT;
+
+       PVE::HA::Sim::Resources::VirtVM->register();
+       PVE::HA::Sim::Resources::VirtCT->register();
+
+    } elsif ($envtype eq 'pve') {
+
+       use PVE::HA::Resources::PVEVM;
+       use PVE::HA::Resources::PVECT;
+
+       PVE::HA::Resources::PVEVM->register();
+       PVE::HA::Resources::PVECT->register();
+
+    } else {
+       die "unknown import argument (environment type '$envtype')";
+    }
+
+    $class_env_type = $envtype;
+}
 
 PVE::HA::Resources->init();
 
index 5b96e8a14f7d5b4b05cd3456bf2d32d609f969ce..2cbe64d38131ce5c31a7c89b121c2f5f815e8517 100644 (file)
@@ -15,16 +15,7 @@ use IO::File;
 use Fcntl qw(:DEFAULT :flock);
 use File::Copy;
 use File::Path qw(make_path remove_tree);
-use PVE::HA::Config;
-
-# virtual resource classes
-use PVE::HA::Sim::Resources::VirtVM;
-use PVE::HA::Sim::Resources::VirtCT;
-
-PVE::HA::Sim::Resources::VirtVM->register();
-PVE::HA::Sim::Resources::VirtCT->register();
-
-PVE::HA::Sim::Resources->init();
+use PVE::HA::Config 'testenv';
 
 my $watchdog_timeout = 60;
 
index 182928d8e2a5d61b07c2a86ef27f60d6bc0fd561..c1b990360306047dfb734c1c7fd3f77d70779a3e 100755 (executable)
@@ -6,6 +6,8 @@ use JSON;
 use lib '..';
 
 use PVE::Tools;
+use PVE::HA::Config 'testenv';
+
 use PVE::HA::Sim::TestHardware;
 
 sub show_usage {
@@ -13,7 +15,6 @@ sub show_usage {
     exit(-1);
 };
 
-
 my $testdir = shift || show_usage();
 my $hardware = PVE::HA::Sim::TestHardware->new($testdir);
 
index c6eb8d83efeea1b1270a3cd690f0e64fa65f3379..7f7aa82971eec6b923596bbabd33e73ab88ff68d 100755 (executable)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 use lib '..';
-use PVE::HA::Config;
+use PVE::HA::Config 'testenv';
 use PVE::HA::Manager;
 
 use Data::Dumper;