Perl Establish Device Trust, Create Sync-Failover device-group, and add members
Problem this snippet solves:
This Perl reference application will establish a traditional HA pair on V11 software. It establishes device trust, creates a sync-failover device-group, and then populates the members of the pair in that group.
Be advised: This application has certain hard-coded options that you will need to either create a command line argument for or modify before attempting to use it. That is why I refer to it as a reference application. It is written to be run on the second member of a pair.
Code :
# The contents of this file are subject to the "END USER LICENSE AGREEMENT FOR F5
# Software Development Kit for iControl"; you may not use this file except in
# compliance with the License. The License is included in the iControl
# Software Development Kit.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is iControl Code and related documentation
# distributed by F5.
#
# The Initial Developer of the Original Code is F5 Networks,
# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2004 F5 Networks,
# Inc. All Rights Reserved. iControl (TM) is a registered trademark of F5 Networks, Inc.
#
# Alternatively, the contents of this file may be used under the terms
# of the GNU General Public License (the "GPL"), in which case the
# provisions of GPL are applicable instead of those above. If you wish
# to allow use of your version of this file only under the terms of the
# GPL and not to allow others to use your version of this file under the
# License, indicate your decision by deleting the provisions above and
# replace them with the notice and other provisions required by the GPL.
# If you do not delete the provisions above, a recipient may use your
# version of this file under either the License or the GPL.
#----------------------------------------------------------------------------
#use SOAP::Lite + trace => qw(method debug);
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;
use SOAP::Lite;
use MIME::Base64;
use iControlTypeCast;
my $sHost = $ARGV[0];
my $sUID = admin;
my $sPWD = $ARGV[1];
my $b1n = $ARGV[2];
my $b2n = $ARGV[3];
my $cadaddr = 10.255.255.1;
$dtrmgmt = SOAP::Lite
-> uri('urn:iControl:Management/Trust')
-> readable(1)
-> proxy("https://$sHost/iControl/iControlPortal.cgi");
eval {
$dtrmgmt->transport->http_request->header( 'Authorization' => 'Basic '
. MIME::Base64::encode("$sUID:$sPWD", ''));
};
$dgmgmt = SOAP::Lite
-> uri('urn:iControl:Management/DeviceGroup')
-> readable(1)
-> proxy("https://$sHost/iControl/iControlPortal.cgi");
eval {
$dgmgmt->transport->http_request->header( 'Authorization' => 'Basic '
. MIME::Base64::encode("$sUID:$sPWD", ''));
};
#----------------------------------------------------------------------------
# checkResponse makes sure the error isn't a SOAP error
#----------------------------------------------------------------------------
sub checkResponse() {
my ($soapResponse) = (@_);
if ( $soapResponse->fault )
{
print $soapResponse->faultcode, " ", $soapResponse->faultstring, "\n";
exit();
}
}
sub buildtrust {
$soapResponse =
$dtrmgmt->add_authority_device
(
SOAP::Data->name (address => "$cadaddr"),
SOAP::Data->name ( username => "$sUID" ),
SOAP::Data->name ( password => "$sPWD" ),
SOAP::Data->name ( device_object_name => "$b1n" ),
SOAP::Data->name ( browser_cert_serial_number => "" ),
SOAP::Data->name ( browser_cert_signature => "" ),
SOAP::Data->name ( browser_cert_sha1_fingerprint => "" ),
SOAP::Data->name ( browser_cert_md5_fingerprint => "" ),
);
&checkResponse($soapResponse);
}
sub builddg {
$soapResponse =
$dgmgmt->create
(
SOAP::Data->name (device_groups => ["ex-dv-grp"] ),
SOAP::Data->name ( types => [DGT_FAILOVER] ),
);
&checkResponse($soapResponse);
}
sub adddevices {
$soapResponse =
$dgmgmt->add_device
(
SOAP::Data->name (device_groups => ["ex-dv-grp"] ),
SOAP::Data->name ( devices => [["$b1n","$b2n"]] )
);
&checkResponse($soapResponse);
}
#Main Program Logic
&buildtrust;
&builddg;
&adddevices;Published Mar 08, 2015
Version 1.0Faintly_Lucky_2
Altocumulus
Joined August 31, 2009
Faintly_Lucky_2
Altocumulus
Joined August 31, 2009
No CommentsBe the first to comment