# $Id: //depot/prod/test/nacldev/lib/NACL/CS/NetworkOptionsIpv6.pm#20 $ # # Copyright (c) 2001-2012 NetApp, Inc., All Rights Reserved # Any use, modification, or distribution is prohibited # without prior written consent from NetApp, Inc. # ## @summary NetworkOptionsIpv6 ComponentState Module ## @author Sumit.Mittal@netapp.com, dl-nacl-dev@netapp.com ## @status shared ## @pod here =head1 NAME NACL::CS::NetworkOptionsIpv6 =head1 DESCRIPTION C is a derived class of L. It represents the state of a Routing Group. A related class is L, which represents access to ONTAP Routing Groups. =head1 ATTRIBUTES The individual pieces of data that are part of the state of the element are the attributes of the ComponentState. =over =item C<< enabled >> Filled in for CMode CLI/ZAPI. =item C<< skip_check >> Filled in for CMode CLI. =item C<< is_ra_processing_enabled >> Router Advertisement (RA) Processing Enabled possible value(s) are, true,false Filled in for CMode CLI/ZAPI. =item C<< switchless_cluster_info >> Switchless cluster enabled value possible value(s) are, true,false Filled in for CMode ZAPI. =back =cut package NACL::CS::NetworkOptionsIpv6; use strict; use warnings; use NATE::Log qw(log_global); my $Log = log_global(); my $may_enter = $Log->may_enter(); my $may_exit = $Log->may_exit(); use base 'NACL::CS::ComponentState::ONTAP'; use Params::Validate qw(validate); use Class::MethodMaker [ # These fields are from the C Mode "network routing-groups show" scalar => 'enabled', scalar => 'skip_check', scalar => 'is_ra_processing_enabled', ## this ZAPI field is from zapi cmode 'net-options-modify' scalar => 'switchless_cluster_info', ]; =head1 METHODS =head2 fetch =over =item Options =over =item C<< command_interface=>$command_interface >> (Required)See L =item C<< apiset_must=>$ruleset >> (Optional)See L =item C<< apiset_should=>$ruleset >> (Optional)See L =back =back Supports CMode CLI. =over =item Exceptions =over =item C When there are no elements matching the query specified or elements of that type doesn't exist, then this exception will be thrown. =back =back =cut sub fetch { $Log->enter() if $may_enter; my $pkg = shift; my @state_objs = $pkg->SUPER::fetch( @_, show_cmd => 'network options ipv6 show', choices => [ { method => '_fetch_cmode_cli', interface => 'CLI', set => 'CMode', }, { method => '_fetch_cmode_zapi', interface => 'ZAPI', set => 'CMode', check => '_check_non_iter', } ], exception_text => 'No matching network routing groups(s) found' ); $Log->exit() if $may_exit; return wantarray ? @state_objs : $state_objs[0]; } sub _fetch_cmode_cli { $Log->enter() if $may_enter; my $pkg = shift; my @state_objs = $pkg->SUPER::_fetch_cmode_cli(@_, api => 'network_options_ipv6_show'); $Log->exit() if $may_exit; return @state_objs; } ## end sub _fetch_cmode_cli sub _fetch_cmode_zapi { $Log->enter() if $may_enter; my ($pkg, @args) = @_; my %opts = validate @args, $pkg->_fetch_backend_validate_spec(); my $apiset = $opts{apiset}; my $net_response; my @state_objs; $net_response = $apiset->net_options_get(); my $net_output = $net_response->get_parsed_output(); foreach my $row (@{$net_output->[0]{'net-options'}}) { my %state_fields; $state_fields{'enabled'} = $row->{'ipv6-options-info'}[0]{'enabled'}; $state_fields{'is_ra_processing_enabled'} = $row->{'ipv6-options-info'}[0]{'is-ipv6-ra-processing-enabled'}; $state_fields{'switchless_cluster_info'} = $row->{'switchless-cluster-info'}[0]{'enabled'}; my $obj = $pkg->new(command_interface => $opts{command_interface},); $obj->_set_fields(row => \%state_fields); push @state_objs, $obj; } $Log->exit() if $may_exit; return @state_objs; } ## end sub _fetch_cmode_zapi sub _check_non_iter { $Log->enter() if $may_enter; my ($pkg, @opts) = @_; $pkg->_base_check_non_iter( @opts, _primary_keys => [ qw( ) ], _vs_context => 0 ); $Log->exit() if $may_exit; } 1;