Cisco-UCS
view release on metacpan or search on metacpan
lib/Cisco/UCS.pm view on Meta::CPAN
my ( $class, %args ) = @_;
my $self = {};
bless $self, $class;
defined $args{cluster}
? $self->{cluster} = $args{cluster}
: croak 'cluster not defined';
defined $args{username}
? $self->{username} = $args{username}
: croak 'username not defined';
defined $args{passwd}
? $self->{passwd} = $args{passwd}
: croak 'passwd not defined';
defined $args{verify_hostname}
? $self->{verify_hostname} = $args{verify_hostname}
: 0;
$self->{port} = ( $args{port} or 443 );
$self->{proto} = ( $args{proto} or 'https' );
$self->{dn} = ( $args{dn} or 'sys' );
return $self;
}
{
no strict 'refs';
while ( my ($pseudo, $attribute) = each %ATTRIBUTES ) {
*{ __PACKAGE__ . '::' . $pseudo } = sub {
my $self = shift;
return $self->{$attribute}
}
}
foreach my $attribute (@ATTRIBUTES) {
*{ __PACKAGE__ . '::' . $attribute } = sub {
my $self = shift;
return $self->{$attribute}
}
}
}
sub login {
my $self = shift;
undef $self->{error};
$self->{ua} = LWP::UserAgent->new(
ssl_opts => {
verify_hostname => $self->{verify_hostname}
}
);
$self->{uri} = $self->{proto}. '://' .$self->{cluster}
. ':' .$self->{port}. '/nuova';
$self->{req} = HTTP::Request->new(
POST => $self->{uri}
);
$self->{req}->content_type( 'application/x-www-form-urlencoded' );
$self->{req}->content( '<aaaLogin inName="'. $self->{username}
.'" inPassword="'. $self->{passwd} .'"/>' );
my $res = $self->{ua}->request( $self->{req} );
unless ( $res->is_success ) {
$self->{error} = 'Login failure: '.$res->status_line;
return 0
}
$self->{parser} = XML::Simple->new;
my $xml = $self->{parser}->XMLin( $res->content );
if ( defined $xml->{'errorCode'} ) {
$self->{error} = 'Login failure: '
. ( defined $xml->{'errorDescr'}
? $xml->{'errorDescr'}
: 'Unspecified error'
);
return 0
}
$self->{cookie} = $xml->{'outCookie'};
return 1
}
sub refresh {
my $self = shift;
undef $self->{error};
$self->{req}->content( '<aaaRefresh inName="'. $self->{username}
.'" inPassword="'. $self->{passwd}
.'" inCookie="' . $self->{cookie} . '"/>'
);
my $res = $self->{ua}->request( $self->{req} );
unless ( $res->is_success ) {
$self->{error} = 'Refresh failed: '. $res->status_line;
return 0
}
my $xml = $self->{parser}->XMLin( $res->content() );
if ( defined $xml->{'errorCode'} ) {
$self->{error} = 'Refresh failure: '
. ( defined $xml->{'errorDescr'}
? $xml->{'errorDescr'}
: 'Unspecified error'
);
return 0
}
$self->{cookie} = $xml->{'outCookie'};
( run in 0.702 second using v1.01-cache-2.11-cpan-d8267643d1d )