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 )