GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  NETAPP::FILER::EXPORT (3)

.ds Aq ’

NAME

NetApp::Filer::Export -- OO Class for representing NFS exports

CONTENTS

SYNOPSIS



    use NetApp::Filer;

    my $filer                   = NetApp::Filer->new({ ... });

    # Filer methods for querying exports:
    my @exports                 = $filer->get_exports;
    my @temporary_exports       = $filer->get_temporary_exports;
    my @permanent_exports       = $filer->get_permanent_exports;
    my @active_exports          = $filer->get_active_exports;
    my @inactive_exports        = $filer->get_inactive_exports;

    # Methods for accessing export attributes
    foreach my $export ( @exports ) {
       
    }

    # Methods for changing export attributes



DESCRIPTION

This class encapsulates a single NFS export on a NetApp filer, and provides methods for managing them. There are related methods in the NetApp::Filer class for manging exports as a whole, but the methods in this class are specific to a single NFS export.

    API specific attributes

This API also attempts to bring some sanity to how exports are managed, and some consistency to the interface. Most of the attributes of an export are fairly obvious, and they map directly to the options supported by exportfs and the /etc/exports file. This API introduces two new attributes: ’type’ and ’active’;

The type attribute

In order to distinguish between exports which are temporary (i.e. NOT saved to /etc/exports) and those which are permanent (i.e. ARE saved to /etc/exports), this API support a type, which be either of:



    permanent
    temporary



A temporary export is one which was created using exportfs -io, and which was not saved to /etc/exports. These exports will not survive a reboot of the filer.

A permanent export is one which is found in /etc/exports.

The active attribute

Since you can change the export options for a filesystem temporarily (for example, by using the fencing option -b, or just manually specifying different options and re-exporting using -io), some permanent exports may not be in effect on the system.

The active attribute is used to track these. If the active attribute is true, then the export is currently in effect. Almost by definition, all temporary exports are always active. However, if a permanent export is not in effect because a temporary export for the same pathname has been created, then such an export is considerd inactive.

    Global vs. Limited ro/rw Attributes

The ro and rw export options really have two different modes of use. If either option is specified with no =a[:b[:c...]] list, then it means ALL hosts. Since this API provides methods for adding and removing entries from those lists, it treats the all cases special, by managing thenm as separate attributes.

To specify global readonly or readwrite access, use the following options:



    ro_all
    rw_all



These have boolean values. The rw and ro attributes/options are ARRAY references, each containing the list of entries for an rw= or ro= list for managing limited access.

    Change and Update Semantics

There are several methods for changing the attributes of an export object, but in ALL cases, these merely change the object in memory. In order for the attribute change to take effect, the update method must be called, which will generate and execute the appropriate exportfs command.

For example, suppose you wanted to remove root access for a specific hostname from all exports on a filer:



    my $untrusted       = unsafe.foo.com;

    my @exports         = $filer->get_exports;

    foreach my $export ( @exports ) {
        if ( $export->has_root( $untrusted ) ) {
            $export->remove_root( $untrusted );
            $export->update;
        }
    }



The remove_root method simply removes the entry from the object in memory. The update method re-exports that filesystem to make the change take effect on the filer.

METHODS

    get_filer

Returns the NetApp::Filer object for the filer on which this export exists.

    get_type

Returns a string with one of the following values:



    temporary
    permanent



indicating whether or not this particular export has been written to /etc/exports.

    get_active

Returns a boolean value, false only if the type is permanent, and the same export was not found in the list of currently active exports (i.e. not found in the output of exportfs). A temporary export is always active, by definition.

    get_path

Returns a string representing the path for the export. Note that this may not necessarily be the same as the actual pathname of the underlying volume or qtree.

    get_actual

Returns a string representing the actual path of the underlying volume or qtree for the export. If a volume or qtree as been exported using a different name, this is the actual path of the underlying object. If this export option was not used, this method will return an empty string.

    get_nosuid

Returns a boolean value, indicating whether or not the nosuid option is used by the export.

set_nosuid( CW$boolean )

This method takes a single argument, interpreted in boolean context, an sets the nosuid option for the export.

    get_anon

Returns the value of the anon option, if set. Since this option can have the value of 0, it returns undef when this option has not been set.

WARNING: be careful interpreting this in a simple boolean context. To test whether or not this option has been set use defined.

set_anon( CW$anon )

Takes a single argument, and sest the anon opton to that value. To unset this option, pass an undefined value:



    $export->set_anon( undef );



    get_sec

Returns a list of the sec option values.

set_sec( CW$arrayref )

Takes a single argument, an array reference of sec values, which can be any of: none, sec, krb5, krb5i, or krb5p. This API does no validation of these values, so if an invalid value is given, this will result in a fatal exception when the update method is called.

has_sec( CW$sec )

Takes a single string argument, and returns true if that value is found in the list of sec options, false otherwise.

add_sec( CW$sec )

Takes a single string argument, and adds that value to the list of sec options, if not already present.

remove_sec( CW$sec )

Takes a single string argument, and removes that value from the list of sec options, if present.

    get_root

Returns a list of the root option values.

set_root( CW$arrayref )

Takes a single argument, an array reference of root values, which can be any combination of hostnames, IP addresses, or networks. Again, no data validation is performed, so bogus values will not be detected until the export is updated on the filer, using the update method.

To clear the root option entirely, simply pass an empty array reference.

has_root( CW$root )

Takes a single string argument, and returns true if that value is found in the list of root options, false otherwise.

add_root( CW$root )

Takes a single string argument, and adds that value to the list of root options, if not already present.

remove_root( CW$root )

Takes a single string argument, and removes that value from the list of root options, if present.

    get_ro_all

Returns a boolean value, indicating whether or not the ro_all option has been set.

set_ro_all( CW$boolean )

Takes a single boolean argument, and sets the ro_all option to it’s value. Setting ro_all to a true value will clear the ro list, if it exists.

Also, if ro_all is true, then the following methods will quietly do nothing:



    has_ro
    add_ro
    remove_ro



The ro_all option must be cleared (set to a false value) first.

    get_ro

Returns a list of the ro entries, if any. Returns nothing if ro_all has been set.

set_ro( CW$arrayref )

Takes a single argument, an array reference of ro values. Setting the ro list explicitly will set clear ro_all (set it to a false value).

has_ro( CW$ro )

Takes a single argument, and returns true if that value is found in the list of ro options, false otherwise. If ro_all is true, then it always returns false.

add_ro( CW$ro )

Takes a single string argument, and adds that value to the list of ro options, if not already present. If ro_all is true, then this method will do nothing.

remove_ro( CW$ro )

Takes a single string argument, and removes that value from the list of ro options, if present. If ro_all is true, then this method does nothing.

    get_rw_all, set_rw_all, get_rw, set_rw, has_rw, add_rw, remove_rw

All of these methods behave exactly the same as their ro counterparts described immediately above. They apply to the rw option, instead of ro, but if that isn’t obvious...

    update

This method re-exports the export, using exportfs. If ANY of the object attributes have been changed programmatically, those changes will not take effect on the filer until this method has been called.

Note that updating an export will not necessarily change it’s type from temporary to permanent, unless the type is explicitly changed.

compare( CW$export )

This method takes a single NetApp::Filer::Export object, and compares the current object (that is, the one on which the method was called) to it. If they have the same basic export options, it returns true, otherwise, it returns false. Only the following options are compared:



    actual
    nosuid
    anon
    sec
    root
    rw/rw_all
    ro/ro_all



Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 NETAPP::FILER::EXPORT (3) 2008-11-26

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.