package INF; use INF::APC; use INF::DSRx020; use INF::ILO2; use INF::ILO4; use INF::ILO5; use INF::SuperMicro; use INF::ASRock; use INF::Cyclades; #$infs = [ # { # host => 'ms2.foo.com', # nice_name => 'ms2', # community => 'write_cty_name', # inf_type => 'apc' # }, # { # host => 'kvm2.foo.com', # nice_name => 'kvm2', # user => 'Admin', # password => 'password', # inf_type => 'dsr' # }, #]; require 'INF/INF.pm'; sub new ($;$) { my ( $class, $inf ) = @_; if ( $inf->{inf_type} eq 'dsr' ) { return INF::DSRx020->new($inf); } elsif ( $inf->{inf_type} eq 'apc' ) { return INF::APC->new($inf); } elsif ( $inf->{inf_type} eq 'supermicro' ) { return INF::SuperMicro->new($inf); } elsif ( $inf->{inf_type} eq 'asrock' ) { return INF::ASRock->new($inf); } elsif ( $inf->{inf_type} eq 'ilo2' ) { return INF::ILO2->new($inf); } elsif ( $inf->{inf_type} eq 'ilo' ) { return INF::ILO4->new($inf); } elsif ( $inf->{inf_type} eq 'ilo4' ) { return INF::ILO4->new($inf); } elsif ( $inf->{inf_type} eq 'ilo5' ) { return INF::ILO5->new($inf); } elsif ( $inf->{inf_type} eq 'cyclades' ) { return INF::Cyclades->new($inf); } else { return undef; } } 1;