| Net-LDAP-Batch documentation | Contained in the Net-LDAP-Batch distribution. |
Net::LDAP::Batch::Action::Add - add entry to LDAP server
use Net::LDAP::Batch::Action::Add;
my $action = Net::LDAP::Batch::Action->new(
{
ldap => $net_ldap_object,
dn => 'name=foo,dc=company,dc=com',
attr => [
name => 'foo',
mail => 'foo@company.com'
],
});
$action->execute or $action->rollback;
This is a base class for batch actions.
NOTE: Net::LDAP::Batch::Action objects will croak() if anything unusual happens. This approach assumes that Catastrophic Failure is a Good Thing. So use eval() if you need to catch exceptions.
Overrides base method to confirm that dn() and attr() are set.
Creates a Net::LDAP::Entry object, adds the dn() and attr() values to it, then adds to the LDAP server.
Deletes the entry added in execute().
Peter Karman, <karman at cpan.org>
Please report any bugs or feature requests to
bug-net-ldap-batch at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-LDAP-Batch.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Net::LDAP::Batch
You can also look for information at:
The Minnesota Supercomputing Institute http://www.msi.umn.edu/
sponsored the development of this software.
Copyright 2008 by the Regents of the University of Minnesota. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Net::LDAP
| Net-LDAP-Batch documentation | Contained in the Net-LDAP-Batch distribution. |
package Net::LDAP::Batch::Action::Add; use strict; use warnings; use Carp; use base qw( Net::LDAP::Batch::Action ); our $VERSION = '0.02'; __PACKAGE__->mk_accessors(qw( dn attr ));
sub init { my $self = shift; $self->SUPER::init(@_); if ( !$self->dn ) { croak "dn required"; } if ( !$self->attr or !ref( $self->attr ) or ref( $self->attr ) ne 'ARRAY' ) { croak "attr array ref required"; } return $self; }
sub execute { my $self = shift; if ( $self->complete ) { croak "action already flagged as complete"; } my $dn = $self->dn or croak "dn required"; my $attr = $self->attr or croak "attr required"; carp "adding $dn: " . Data::Dump::dump($attr) if $self->debug; my $entry = Net::LDAP::Entry->new; $entry->dn($dn); $entry->add(@$attr); my $msg = $self->ldap->add($entry); if ( $msg->code ) { croak "failed to add $dn: " . $self->get_ldap_err($msg); } $self->entry($entry); $self->complete(1); return 1; }
sub rollback { my $self = shift; return 0 unless $self->complete; my $dn = $self->dn or croak "dn required to rollback"; carp "rolling back $dn" if $self->debug; my $msg = $self->ldap->delete($dn); if ( $msg->code ) { croak "failed to rollback $dn: " . $self->get_ldap_err($msg); } $self->complete(0); return 1; } 1; __END__