
INTRODUCTION

This package provides a suite of modules for managing NetApp's NAS
devices, commonly referred to as "filers".

This is the first public release of my NetApp Perl API, and although I
consider the code to be very stable, the API should be considered
experimental.  The convention I will be following regarding
non-compatible API changes is as follows.  I'm using a
major.minor.subminor release naming convention, and I will promise to
NOT make non-backwards compatible changes between subminor releases.

However, in order to allow the API to evolve, it is entirely possible
that non-backwards compatible changes will be made between minor
releases.  IOW, the major.minor release numbers can be considered an
API version.  Any changes to 1.1.0, 1.1.2, etc. must be backwards
compatible with the previous 1.1.* releases.

There is no guarantee that 1.2.0 will be 100% backwards compatible,
although such changes will be made only when justified.  The author
does not believe in infinite backwards compatibility.

INSTALLATION

To install this module, run the following commands:

    perl Build.PL
    ./Build
    ./Build test
    ./Build install

SSH vs TELNET

This module is designed to be used with a password-free ssh
configuration, which means you must have configured your filers with
an ssh key such that you can run remote commands using:

   ssh [ ssh options ] $hostname $command

without entering a password.  In order to configure this, you need to
install the public half of your ssh key on the filers directly.

You can use this module with telnet, but this is less secure, since
you have to find a way to access the plain text password from your
code, and that usually means either embedding the password in the
source code (the worst idea) or embedding it into a file somewhere.
In addition, the error checking with telnet is far less robust, and
there can only be one concurrent telnet session to a filer, so we
recommend against using telnet for anything other than installing the
ssh key.

In a future release, the author hopes to provide a utility to automate
the installation of the ssh key, using the telnet protocol, as both an
example of using the API, and a means of helping others wean
themselves from the use of telnet.

TESTING

The test suite is broken down into two separate sections: 10_passive
and 20_active.  The passive tests will change absolutely nothing on
the filers.  The goal of the passive tests is to run the query methods
and the parsing code through as much input as possible, and these
tests will walk through every aggregate, volume and qtree, among other
object types, on each filer that has been configured for testing.  As
a result, they can be somewhat time consuming, depending on the number
of filers, and the size of their configuration.

The active tests, which are not yet implemented, will be destructive,
and will test creating, modifying and destroying objects such as
aggregates, volumes, qtrees, etc.  The author expects to start adding
active tests in one of the upcoming releases of this API.

The tests are configured by specifying one or more filers to query in
the file:

    ./t/lib/NetApp/Test.pm

Please see that file for examples and documentation on how to
customize the configuration.  To summarize, you can either hack that
file, or you can export a number of environment variables to control
the test externally (this is what the author does, for example).

DEPENDENCIES

A bunch...  See Build.PL, which will tell you about them anyway when
it doesn't find them.

Note that if you want to use the caching feature of the NetApp::Filer
objects, this requires a patched version of Memoize::Expire.  I have
tried to get the owner of that code to accept a patch, but have been
unable to get a response from him.  Email me directly, and I'll be
happy to provide the code.

COPYRIGHT AND LICENCE

Copyright (C) 2008, Phillip Moore <pmoore6448@gmail.com>
All rights reserved.

This code is released under the same license as perl itself.

CREDITS

The following people helped to make this release happen:

Baldwin Sung <baldwinsung@me.com>
Chibo Qian <c_qian@ml.com>
Ugur Tigli <ugur_tigli@ml.com>
Ed Dabagian-Paul <Ed_Dabagian@ml.com>
Robert Benoit <Robert.Benoit@netapp.com>

