VMware-API-LabManager
view release on metacpan or search on metacpan
lib/VMware/API/LabManager.pm view on Meta::CPAN
my $self = shift @_;
while ( my $debug = shift @_ ) {
chomp $debug;
print STDERR "DEBUG: $debug\n";
}
}
sub _fault {
my $self = shift @_;
my $data = shift @_;
my $soapobj;
my $text;
if ( ref $data ) {
$soapobj = $data;
$data = $soapobj->fault;
}
if ( ref $data and defined $data->{faultstring} ) {
$text = $data->{faultstring};
} elsif ( ref $data and ref $data->{detail} and defined $data->{detail}->{message}->{format} ) {
$text = $data->{detail}->{message}->{format};
} else {
$text = $data;
$data = '';
}
my $xml;
$xml = $soapobj->{_context}->{_transport}->{_proxy}->{_http_response}->{_request}->{_content}
if ref $soapobj;
warn "\n\nERROR DETAILS:\n" . Dumper($data) if $self->{debug};
warn "\n\nSUBMITTED XML:\n" . $xml if $xml; #if $self->{debug} and $xml;
if ( $self->{die_on_fault} ) {
die "\n\nERROR: $text\n";
} else {
$self->{LASTERROR}->{data} = $data;
$self->{LASTERROR}->{text} = $text;
$self->{LASTERROR}->{xml} = $xml;
warn "\n\nERROR: $text\n";
}
}
sub _regenerate {
my $self = shift @_;
$self->{soap} = SOAP::Lite
-> on_action(sub { return "http://vmware.com/labmanager/" . $_[1]; } )
-> default_ns('http://vmware.com/labmanager')
-> proxy('https://' . $self->{hostname} . '/LabManager/SOAP/LabManager.asmx', timeout => $self->{ssl_timeout} );
$self->{soap_priv} = SOAP::Lite
-> on_action(sub { return "http://vmware.com/labmanager/" . $_[1]; } )
-> default_ns('http://vmware.com/labmanager')
-> proxy('https://' . $self->{hostname} . '/LabManager/SOAP/LabManagerInternal.asmx', timeout => $self->{ssl_timeout} );
$self->{soap}->readable(1);
$self->{soap_priv}->readable(1);
$self->{auth_header} = SOAP::Header->new(
name => 'AuthenticationHeader',
attr => { xmlns => "http://vmware.com/labmanager" },
value => { username => $self->{username}, password => $self->{password}, organizationname => $self->{orgname}, workspacename => $self->{workspace} },
);
}
### Public API methods
sub ConfigurationCapture {
my $self = shift @_;
my $configID = shift @_;
my $newLibName = shift @_;
$self->{ConfigurationCapture} =
$self->{soap}->ConfigurationCapture(
$self->{auth_header},
SOAP::Data->name('configurationId' => $configID )->type('s:int'),
SOAP::Data->name('newLibraryName' => $newLibName )->type('s:string')
);
if ( $self->{ConfigurationCapture}->fault ) {
$self->_fault( $self->{ConfigurationCapture} );
return $self->{ConfigurationCapture}->fault;
} else {
return $self->{ConfigurationCapture}->result;
}
}
sub ConfigurationCheckout {
my $self = shift @_;
my $configID = shift @_;
my $configName = shift @_;
$self->{ConfigurationCheckout} =
$self->{soap}->ConfigurationCheckout(
$self->{auth_header},
SOAP::Data->name('configurationId' => $configID )->type('s:int'), # Config to check out
SOAP::Data->name('workspaceName' => $configName )->type('s:string') # New name it shall be
);
if ( $self->{ConfigurationCheckout}->fault ) {
$self->_fault( $self->{ConfigurationCheckout} );
return $self->{ConfigurationCheckout}->fault;
} else {
return $self->{ConfigurationCheckout}->result;
}
}
sub ConfigurationClone {
my $self = shift @_;
my $configID = shift @_;
my $newWSName = shift @_;
$self->{ConfigurationClone} =
$self->{soap}->ConfigurationClone($self->{auth_header},
SOAP::Data->name('configurationId' => $configID )->type('s:int'),
SOAP::Data->name('newWorkspaceName' => $newWSName )->type('s:string') );
if ( $self->{ConfigurationClone}->fault ) {
$self->_fault( $self->{ConfigurationClone} );
( run in 2.192 seconds using v1.01-cache-2.11-cpan-5735350b133 )