Cisco-UCS

 view release on metacpan or  search on metacpan

lib/Cisco/UCS/ServiceProfile.pm  view on Meta::CPAN

package Cisco::UCS::ServiceProfile;

use warnings;
use strict;

use Carp 		qw(croak);
use Scalar::Util 	qw(weaken);

our $VERSION = '0.51';

our @ATTRIBUTES	= qw(dn name owner pnDn type uuid);

our %ATTRIBUTES = (
	 agent_policy_name              => 'agentPolicyName',
	 assign_state                   => 'assignState',
	 assoc_state                    => 'assocState',
	 bios_profile_name              => 'biosProfileName',
	 boot_policy_name               => 'bootPolicyName',
	 config_state                   => 'configState',
	 desc                           => 'descr',
	 dynamic_conn_policy_name       => 'dynamicConPolicyName',
	 ext_ip_state                   => 'extIPState',
	 fsm_remote_inv_err_code        => 'fsmRmtInvErrCode',
	 fsm_timestamp                  => 'fsmStamp',
	 fsm_desc                       => 'fsmDescr',
	 fsm_flags                      => 'fsmFlags',
	 fsm_previous_state             => 'fsmPrev',
	 fsm_progress                   => 'fsmProgr',
	 fsm_remote_inv_err_desc	=> 'fsmRmtInvErrDescr',
	 fsm_stage_desc                 => 'fsmStageDescr',
	 fsm_status                     => 'fsmStatus',
	 fsm_try                        => 'fsmTry',
	 host_fw_policy_name            => 'hostFwPolicyName',
	 ident_pool_name                => 'identPoolName',
	 local_disk_policy_name         => 'localDiskPolicyName',
	 maint_policy_name              => 'maintPolicyName',
	 mgmt_access_policy_name        => 'mgmtAccessPolicyName',
	 mgmt_firmware_policy_name      => 'mgmtFwPolicyName',
	 oper_bios_profile_name         => 'operBiosProfileName',
	 oper_boot_policy_name          => 'operBootPolicyName',
	 oper_dynamic_conn_policy_name  => 'operDynamicConPolicyName',
	 oper_host_fw_policy_name       => 'operHostFwPolicyName',
	 oper_ident_pool_name           => 'operIdentPoolName',
	 oper_local_disk_policy_name    => 'operLocalDiskPolicyName',
	 oper_maint_policy_name         => 'operMaintPolicyName',
	 oper_mgmt_access_policy_name   => 'operMgmtAccessPolicyName',
	 oper_mgmt_fw_policy_name       => 'operMgmtFwPolicyName',
	 oper_power_policy_name         => 'operPowerPolicyName',
	 oper_scrub_policy_name         => 'operScrubPolicyName',
	 oper_sol_policy_name           => 'operSolPolicyName',
	 oper_src_template_name         => 'operSrcTemplName',
	 oper_state                     => 'operState',
	 oper_stats_policy_name         => 'operStatsPolicyName',
	 oper_vcon_profile_name         => 'operVconProfileName',
	 power_policy_name              => 'powerPolicyName',
	 scrub_policy_name              => 'scrubPolicyName',
	 sol_policy_name                => 'solPolicyName',
	 source_template_name           => 'srcTemplName',
	 stats_policy_name              => 'statsPolicyName',
	 user_label                     => 'usrLbl',
	 uuid_suffix                    => 'uuidSuffix',
	 vcon_profile_name              => 'vconProfileName'
);

sub new {
	my ( $class, %args ) = @_;

	my $self = {};
	bless $self, $class;

	defined $args{dn}
		? $self->{dn} = $args{dn}
		: croak 'dn not defined';

	defined $args{ucs}
		? weaken( $self->{ucs} = $args{ucs} )
		: croak 'dn not defined';

	my %attr = %{ $self->{ucs}->resolve_dn(
				dn => $self->{dn}
			)->{outConfig}->{lsServer} };
	
	while ( my ($k, $v) = each %attr ) { $self->{$k} = $v }

	return $self
}

{
        no strict 'refs';

        while ( my ( $pseudo, $attribute ) = each %ATTRIBUTES ) { 
                *{ __PACKAGE__ . '::' . $pseudo } = sub {
                        my $self = shift;
                        return $self->{$attribute}
                }   
        }   

        foreach my $attribute ( @ATTRIBUTES ) {
                *{ __PACKAGE__ . '::' . $attribute } = sub {
                        my $self = shift;
                        return $self->{$attribute}
                }   
        }   
}

1;

__END__

=head1 NAME

Cisco::UCS::ServiceProfile - Class for operations with a Cisco UCS Service 
Profile.

=head1 SYNOPSIS

	my $profile = $ucs->service_profile('profile-1');
	print "Profile " . $profile->name 
		. " is bound to physical DN " . $profile->pnDn . "\n";

	print $ucs->service_profile('profile-2')->uuid;

=head1 DECRIPTION

Cisco::UCS::ServiceProfile is a class providing operations with a Cisco UCS 
Service Profile.

Note that you are not supposed to call the constructor yourself, rather a 
Cisco::UCS::ServiceProfile object is created automatically by method calls via 
methods in Cisco::UCS.

=head1 METHODS

=head3 agent_policy_name

Returns the agent policy name.



( run in 2.968 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )