Net-Cisco-FMC-v1
view release on metacpan or search on metacpan
lib/Net/Cisco/FMC/v1.pm view on Meta::CPAN
$updated_data->{destinationPorts} = {
objects => []
};
#say "old: " . Dumper($ports->{objects});
for my $portobj ($ports->{objects}->@*) {
#say Dumper($portobj);
my $name = $portobj->{name};
my $type = $portobj->{type};
if ( $name =~ /^DM_INLINE_/ ) {
# eliminate autogenerated PortObjectGroups
if ( $type eq 'ProtocolPortObject' ) {
push
$updated_data->{destinationPorts}->{objects}->@*,
$self->cleanup_protocolport({
%$portobj{qw( id type )} });
}
elsif ( $type eq 'ICMPV4Object' ) {
push
$updated_data->{destinationPorts}->{objects}->@*,
$self->cleanup_icmpv4object({
%$portobj{qw( id type )} });
}
elsif ( $type eq 'PortObjectGroup' ) {
say "\tmoving contents of group $name directly into rule";
#say Dumper($rule);
my $portobjectgroup = $self->get_portobjectgroup($portobj->{id});
for my $portobject ($portobjectgroup->{objects}->@*) {
#say Dumper($portobject);
my $object = $portobject->{type} eq
'ProtocolPortObject'
? $self->cleanup_protocolport(
{%$portobject{qw( id type )}}
)
: {%$portobject{qw( id type )}};
push $updated_data->{destinationPorts}->{objects}->@*,
$object;
}
}
else {
warn "unhandled object type $type, keeping unmodified\n";
push $updated_data->{destinationPorts}->{objects}->@*, $portobj;
}
#my $protocolportobject = $self->get_protocolportobject($portobj->{id});
#say Dumper($protocolportobject);
}
# keep non-autogenerated objects
else {
push $updated_data->{destinationPorts}->{objects}->@*, $portobj;
}
}
}
#say "new: " . Dumper($updated_data);
# always replace existing destinationPorts because one of
# them might have been replaced with an existing one
# FIXME: check if literals get lost
#$self->update_accessrule($accesspolicy->{id}, $rule, $updated_data)
# if $updated_data->%*;
#say Dumper($updated_data);
#use Test::Differences;
#eq_or_diff($updated_data, $rule_for_diff, 'rule');
$self->create_accessrule($new_accesspolicy->{id}, $updated_data);
#last RULE;
}
}
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Net::Cisco::FMC::v1 - Cisco Firepower Management Center (FMC) API version 1 client library
=head1 VERSION
version 0.011000
=head1 SYNOPSIS
use strict;
use warnings;
use Net::Cisco::FMC::v1;
use Data::Dumper::Concise;
my $fmc = Net::Cisco::FMC::v1->new(
server => 'https://fmcrestapisandbox.cisco.com',
user => 'admin',
passwd => '$password',
clientattrs => { timeout => 30 },
);
# login to populate domains
$fmc->login;
# list all domain uuids and names
print Dumper($fmc->domains);
# switch domain
$fmc->domain_uuid("e276abec-e0f2-11e3-8169-6d9ed49b625f");
=head1 DESCRIPTION
This module is a client library for the Cisco Firepower Management
Center (FMC) REST API version 1.
Currently it is developed and tested against FMC version 7.2.0.1.
=head1 ATTRIBUTES
=head2 domains
Returns a list of hashrefs containing name and uuid of all domains which gets
populated by L</login>.
=head2 domain_uuid
( run in 1.352 second using v1.01-cache-2.11-cpan-6aa56a78535 )