-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2-proteus-create
executable file
·80 lines (76 loc) · 4.25 KB
/
2-proteus-create
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/perl
# connect to Proteus
# # use "enableSSL" flag if using SSL
use API;
use List::MoreUtils qw(any);
use SOAP::Lite;
use LWP::Simple qw(get);
use Data::Dumper;
$ENV{HTTPS_CA_FILE} = "/usr/share/centrifydc/apache/certs/ca-certs.crt";
$service = Service->connect("address" => '135.107.21.203', "enableSSL" => 'true' );
$fqdn = `facter fqdn`;
@aliases = split(/,/, `facter alias`);
$ipaddr = `facter ipaddress`;
$domain = `facter domain`;
chomp ($fqdn, $ipaddr, $domain, @aliases);
## log in and establish a session
$service->login(
SOAP::Data->name( 'username' )->value( 'te0s0067' )->type('string')->attr({xmlns => ''}),
SOAP::Data->name( 'password' )->value( '/Thgq0*0wa' )->type('string')->attr({xmlns => ''}));
@host_record = $service->getHostRecordsByHint(SOAP::Data->type( 'int' )->name( 'start' )->value( 0 )->attr({xmlns => ''}),
SOAP::Data->type( 'int' )->name( 'count' )->value( 1 )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'options' )->value( "hint=$fqdn" )->attr({xmlns => ''}))->result;
$host_id=$host_record[0]{item}{id};
if(defined($host_id)){
@linkedRecords = $service->getLinkedEntities(SOAP::Data->type( 'long' )->name( 'entityId' )->value( $host_id )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'type' )->value( ObjectTypes::RecordWithLink )->attr({xmlns => ''}),
SOAP::Data->type( 'int' )->name( 'start' )->value( 0 )->attr({xmlns => ''}),
SOAP::Data->type( 'int' )->name( 'count' )->value( 15 )->attr({xmlns => ''}))->valueof( '//getLinkedEntitiesResponse/return/item' );
while (defined($linkedRecords[$n]{name})) {
$links=$linkedRecords[$n]{name};
if($links =~ /^(\w+)\d{3}$/) {
$seen{$1}++;
}
$n=$n+1;
}
for $rec (@aliases) {
unless ($rec ~~ %seen){
$service->addAliasRecord(SOAP::Data->type( 'long' )->name( 'viewId' )->value( '473968' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'absoluteName' )->value( "$rec#.$domain" )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'linkedRecordName' )->value( $fqdn )->attr({xmlns => ''}),
SOAP::Data->type( 'long' )->name( 'ttl' )->value( '180' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'properties' )->value( "" )->attr({xmlns => ''}))->result;
$service->quickDeploy(SOAP::Data->type( 'long' )->name( 'entityId' )->value( '473972' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'properties' )->value( 'DNS' )->attr({xmlns => ''}));
}
}
}
else {
$service->addHostRecord(SOAP::Data->type( 'long' )->name( 'viewId' )->value( '473968' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'absoluteName' )->value( $fqdn )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'addresses' )->value( $ipaddr )->attr({xmlns => ''}),
SOAP::Data->type( 'long' )->name( 'ttl' )->value( '180' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'properties' )->value("")->attr({xmlns => ''}))->result;
@linkedRecords = $service->getLinkedEntities(SOAP::Data->type( 'long' )->name( 'entityId' )->value( $host_id )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'type' )->value( ObjectTypes::RecordWithLink )->attr({xmlns => ''}),
SOAP::Data->type( 'int' )->name( 'start' )->value( 0 )->attr({xmlns => ''}),
SOAP::Data->type( 'int' )->name( 'count' )->value( 15 )->attr({xmlns => ''}))->valueof( '//getLinkedEntitiesResponse/return/item' );
while (defined($linkedRecords[$n]{name})) {
$links=$linkedRecords[$n]{name};
if($links =~ /^(\w+)\d{3}$/) {
$seen{$1}++;
}
$n=$n+1;
}
for $rec (@aliases) {
unless ($rec ~~ %seen){
$service->addAliasRecord(SOAP::Data->type( 'long' )->name( 'viewId' )->value( '473968' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'absoluteName' )->value( "$rec#.$domain" )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'linkedRecordName' )->value( $fqdn )->attr({xmlns => ''}),
SOAP::Data->type( 'long' )->name( 'ttl' )->value( '180' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'properties' )->value( "" )->attr({xmlns => ''}))->result;
}
}
$service->quickDeploy(SOAP::Data->type( 'long' )->name( 'entityId' )->value( '473972' )->attr({xmlns => ''}),
SOAP::Data->type( 'string' )->name( 'properties' )->value( 'DNS' )->attr({xmlns => ''}));
}