/* * Copyright (c) 2009 Zmanda, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Contact information: Zmanda Inc., 465 S. Mathilda Ave., Suite 300 * Sunnyvale, CA 94085, USA, or: http://www.zmanda.com */ %perlcode %{ =head1 NAME Amanda::Tapelist - manipulate the Amanda tapelist =head1 SYNOPSIS use Amanda::Tapelist; # to get a read only copy of the tapelist file: my $tl = Amanda::Tapelist->new("/path/to/tapefile"); # to read/update/write the tapelist file # read and take lock my $tl = Amanda::Tapelist->new("/path/to/tapefile", 1); # modify the memory copy $tl->add_tapelabel($datestamp, $label); $tl->add_tapelabel($datestamp2, $label2, $comment, 1); # write it and unlock $tl->write(); # If you already have a read only copy and want to modify it # take a read only copy my $tl = Amanda::Tapelist->new("/path/to/tapefile"); # reload and take lock $tl->reload(1); # modify the memory copy tl->add_tapelabel($datestamp, $label); $tl->add_tapelabel($datestamp2, $label2, $comment, 1); # write it and unlock $tl->write(); =head1 OBJECT-ORIENTED INTERFACE C returns a hash with no C set if the tapelist does not exist. C is an empty array if the tapelist is empty. Invalid entries are silently ignored. =head2 tapelist object A tapelist object is a hash with the following keys: =over =item C The filename of the tapelist file. =item C The filename of the lock file. =item C A Amanda::Util::file_lock is the file is locked. =item C A sequence of tapelist elements (referred to as TLEs in this document), sorted by datestamp from newest to oldest. =back =head2 tapelist element A tapelist elementas a hash with the following keys: =over =item C the one-based position of the TLE in the tapelist =item C the datestamp on which this was written, or "0" for an unused tape =item C true if this tape can be reused when it is no longer active =item C