The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

AFS::Command::PTS - OO API to the AFS pts command

SYNOPSIS

    use AFS::Command::PTS;

    my $pts = AFS::Command::PTS->new();

    my $pts = AFS::Command::PTS->new
      (
       command                  => $path_to_your_pts_binary,
      );

    my $pts = AFS::Command::PTS->new
      (
       noauth                   => 1,
       force                    => 1,
      );

DESCRIPTION

This module implements an OO API wrapper around the AFS 'pts' command. The supported methods depend on the version of the pts binary used, and are determined automagically.

METHODS -- Inherited

All of the following methods are inherited from the AFS::Command::Base class. See that documentation for details.

new
errors
supportsOperation
supportsArgument

METHODS (with complex return values)

creategroup

Arguments

The pts help string is:

    pts creategroup: create a new group
    Usage: pts creategroup -name <group name>+ [-owner <owner of the group>]
                           [-id <id (negated) for the group>+]
                           [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->creategroup
      (
       # Required arguments
       name                     => $name, # OR [ $name1, $name2, ... ]
       # Optional arguments
       owner                    => $owner,
       id                       => $id, # OR [ $id1, $id2, ... ]
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains one AFS::Object::Group for each group created.

    my $result = $pts->creategroup
      (
       name                     => $name,
       owner            => $owner,
      ) || die $pts->errors();
    foreach my $group ( $result->getGroups() ) {
        my ($grname,$grid) = ($group->name(),$group->id());
        print "New group $grname has id $grid\n";
    }

Each of these objects has the following attributes and methods:

AFS::Object::PTServer

    Methods                     Returns
    -------                     -------
    getGroupNames()             list of group names
    getGroupIds()               list of group ids
    getGroups()                 list of AFS::Object::Group objects
    getGroupByName($name)       the AFS::Object::Group object for group $name
    getGroupById($id)           the AFS::Object::Group object for id $id
    getGroup( name => $name )   the AFS::Object::Group object for group $name
    getGroup( id => $id )       the AFS::Object::Group object for id $id

AFS::Object::Group

    Attributes                  Values
    ----------                  ------
    name                        Group name
    id                          Group id

createuser

Arguments

The pts help string is:

    pts createuser: create a new user
    Usage: pts createuser -name <user name>+ [-id <user id>+]
                          [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->createuser
      (
       # Required arguments
       name                     => $name, # OR [ $name1, $name2, ... ]
       # Optional arguments
       owner                    => $owner,
       id                       => $id, # OR [ $id1, $id2, ... ]
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains one AFS::Object::User for each user created.

    my $result = $pts->createuser
      (
       name                     => $name,
       owner            => $owner,
      ) || die $pts->errors();
    foreach my $user ( $result->getUsers() ) {
        my ($username,$userid) = ($user->name(),$user->id());
        print "New user $username has id $userid\n";
    }

Each of these objects has the following attributes and methods:

AFS::Object::PTServer

    Methods                     Returns
    -------                     -------
    getUserNames()              list of user names
    getUserIds()                list of user ids
    getUsers()                  list of AFS::Object::User objects
    getUserByName($name)        the AFS::Object::User object for user $name
    getUserById($id)            the AFS::Object::User object for id $id
    getUser( name => $name )    the AFS::Object::User object for user $name
    getUser( id => $id )        the AFS::Object::User object for id $id

AFS::Object::User

    Attributes                  Values
    ----------                  ------
    name                        User name
    id                          User id

examine

Arguments

The pts help string is:

    pts examine: examine an entry
    Usage: pts examine -nameorid <user or group name or id>+
                       [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->examine
      (
       # Required arguments
       nameorid                 => $nameorid, # OR [ $nameorid1, $nameorid2, ... ]
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains one AFS::Object::User or AFS::Object::Group object for each user/group examined.

    my $result = $pts->examine
      (
       nameorid                 => [ $name1, $name2 ],
       cell                             => 1,
      ) || die $pts->errors();
    foreach my $userobj ( $result->getUser() ) {
        my ($name,$id) = ($userobj->name(),$userobj->id());
        print "User $name has id $id\n";
    }
    foreach my $groupobj ( $result->getGroups() ) {
        my ($name,$id) = ($groupobj->name(),$groupobj->id());
        print "Group $name has id $id\n";
    }

Each of these objects has the following attributes and methods:

AFS::Object::PTServer

    Methods                     Returns
    -------                     -------
    getGroupNames()             list of group names
    getGroupIds()               list of group ids
    getGroups()                 list of AFS::Object::Group objects
    getGroupByName($name)       the AFS::Object::Group object for group $name
    getGroupById($id)           the AFS::Object::Group object for id $id
    getGroup( name => $name )   the AFS::Object::Group object for group $name
    getGroup( id => $id )       the AFS::Object::Group object for id $id
    getUserNames()              list of user names
    getUserIds()                list of user ids
    getUsers()                  list of AFS::Object::User objects
    getUserByName($name)        the AFS::Object::User object for user $name
    getUserById($id)            the AFS::Object::User object for id $id
    getUser( name => $name )    the AFS::Object::User object for user $name
    getUser( id => $id )        the AFS::Object::User object for id $id

AFS::Object::User, AFS::Object::Group

    Attributes                  Values
    ----------                  ------
    name                        User or group name
    id                          User or group id
    owner                       Owner of the entry
    creator                     Creator of the entry
    membership                  Number of groups the user is a member of, or..
                                Number of members of the group
    groupquota                  Group creation quota

listentries

Arguments

The pts help string is:

    pts listentries: list users/groups in the protection database
    Usage: pts listentries [-users] [-groups] [-cell <cell name>]
                           [-noauth] [-force]
    Where: -users   list user entries
           -groups  list group entries

The corresponding method invocation looks like:

    my $result = $pts->listentries
      (
       # Optional arguments
       users                    => 1,
       groups                   => 1,
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains one AFS::Object::User or AFS::Object::Group object for each user/group listed.

    my $result = $pts->listentries
      (
       users                    => 1,
       groups                   => 1,
       cell                             => $cell,
      ) || die $pts->errors();
    # Starting to see a pattern?  The result is parsed in almost the
    # same way as shown for examine

Each of these objects has the following attributes and methods:

AFS::Object::PTServer

    Methods                     Returns
    -------                     -------
    getGroupNames()             list of group names
    getGroupIds()               list of group ids
    getGroups()                 list of AFS::Object::Group objects
    getGroupByName($name)       the AFS::Object::Group object for group $name
    getGroupById($id)           the AFS::Object::Group object for id $id
    getGroup( name => $name )   the AFS::Object::Group object for group $name
    getGroup( id => $id )       the AFS::Object::Group object for id $id
    getUserNames()              list of user names
    getUserIds()                list of user ids
    getUsers()                  list of AFS::Object::User objects
    getUserByName($name)        the AFS::Object::User object for user $name
    getUserById($id)            the AFS::Object::User object for id $id
    getUser( name => $name )    the AFS::Object::User object for user $name
    getUser( id => $id )        the AFS::Object::User object for id $id

AFS::Object::User, AFS::Object::Group

    Attributes                  Values
    ----------                  ------
    name                        User or group name
    id                          User or group id
    owner                       Numeric id of the owner of the entry
    creator                     Numeric id of the creator of the entry

listmax

Arguments

The pts help string is:

    pts listmax: list max id
    Usage: pts listmax [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->listmax
      (
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains two attributes:

    my $result = $pts->listmax
      (
       cell                             => $cell,
      ) || die $pts->errors();
    print "Maximum group ID is " . $result->maxgroupid() . "\n";
    print "Maximum user ID is " . $result->maxuserid() . "\n";

This object has the following attributes, which are always present:

    Attributes                  Values
    ----------                  ------
    maxgroupid                  Numeric value of the highest group ID
    maxuserid                   Numeric value of the highest user ID

listowned

Arguments

The pts help string is:

    pts listowned: list groups owned by an entry or zero id gets orphaned groups
    Usage: pts listowned -nameorid <user or group name or id>+
                         [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->listowned
      (
       # Required arguments
       nameorid                 => $nameorid, # OR [ $nameorid1, $nameorid2, ... ]
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains one AFS::Object::User or AFS::Object::Group object for each user/group specified.

    my $result = $pts->listowned
      (
       nameorid                 => $user,
       cell                             => $cell,
      ) || die $pts->errors();
    my $userobj = $result->getUserbyName($user);
    print "User $user owns the following groups:\n";
    foreach my $owned ( $userobj->getOwned() ) {
        print "\t$owned\n";
    }

Each of these objects has the following attributes and methods:

AFS::Object::PTServer

    Methods                     Returns
    -------                     -------
    getGroupNames()             list of group names
    getGroupIds()               list of group ids
    getGroups()                 list of AFS::Object::Group objects
    getGroupByName($name)       the AFS::Object::Group object for group $name
    getGroupById($id)           the AFS::Object::Group object for id $id
    getGroup( name => $name )   the AFS::Object::Group object for group $name
    getGroup( id => $id )       the AFS::Object::Group object for id $id
    getUserNames()              list of user names
    getUserIds()                list of user ids
    getUsers()                  list of AFS::Object::User objects
    getUserByName($name)        the AFS::Object::User object for user $name
    getUserById($id)            the AFS::Object::User object for id $id
    getUser( name => $name )    the AFS::Object::User object for user $name
    getUser( id => $id )        the AFS::Object::User object for id $id

AFS::Object::User, AFS::Object::Group

    Attributes                  Values
    ----------                  ------
    name                        User or group name
    id                          User or group id

    Methods                     Returns
    -------                     -------
    getOwned()                  list of group names owned by the user or group

membership

Arguments

The pts help string is:

    pts membership: list membership of a user or group
    Usage: pts membership -nameorid <user or group name or id>+
                          [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->membership
      (
       # Required arguments
       nameorid                 => $nameorid, # OR [ $nameorid1, $nameorid2, ... ]
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );
Return Values

This method returns an AFS::Object::PTServer object, which contains one AFS::Object::User or AFS::Object::Group object for each user/group specified.

    my $result = $pts->membership
      (
       nameorid                 => $user,
       cell                     => $cell,
      ) || die $pts->errors();
    my $userobj = $result->getUserbyName($user);
    print "User $user is a member of these groups:\n";
    foreach my $group ( $userobj->getMembership() ) {
        print "\t$group\n";
    }

Each of these objects has the following attributes and methods:

AFS::Object::PTServer

    Methods                     Returns
    -------                     -------
    getGroupNames()             list of group names
    getGroupIds()               list of group ids
    getGroups()                 list of AFS::Object::Group objects
    getGroupByName($name)       the AFS::Object::Group object for group $name
    getGroupById($id)           the AFS::Object::Group object for id $id
    getGroup( name => $name )   the AFS::Object::Group object for group $name
    getGroup( id => $id )       the AFS::Object::Group object for id $id
    getUserNames()              list of user names
    getUserIds()                list of user ids
    getUsers()                  list of AFS::Object::User objects
    getUserByName($name)        the AFS::Object::User object for user $name
    getUserById($id)            the AFS::Object::User object for id $id
    getUser( name => $name )    the AFS::Object::User object for user $name
    getUser( id => $id )        the AFS::Object::User object for id $id

AFS::Object::User, AFS::Object::Group

    Attributes                  Values
    ----------                  ------
    name                        User or group name
    id                          User or group id

    Methods                     Returns
    -------                     -------
    getMembership()             For a user, the list of group to which the user belongs,
                                for a group, the members of the group

METHODS (with simple return values)

All of the following commands return a simple Boolean (true/false) value, if they succeed or fail.

adduser

The pts help string is:

    pts adduser: add a user to a group
    Usage: pts adduser -user <user name>+ -group <group name>+
                       [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->adduser
      (
       # Required arguments
       user                     => $user, # OR [ $user1, $user2, ... ]
       group                    => $group, # OR [ $group1, $group2, ... ]
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

chown

The pts help string is:

    pts chown: change ownership of a group
    Usage: pts chown -name <group name> -owner <new owner>
                     [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->chown
      (
       # Required arguments
       name                     => $name,
       owner                    => $owner,
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

delete

The pts help string is:

    pts delete: delete a user or group from database
    Usage: pts delete -nameorid <user or group name or id>+
                      [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->delete
      (
       # Required arguments
       nameorid                 => $nameorid, # OR [ $nameorid1, $nameorid2, ... ]
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

removeuser

The pts help string is:

    pts removeuser: remove a user from a group
    Usage: pts removeuser -user <user name>+ -group <group name>+
                          [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->removeuser
      (
       # Required arguments
       user                     => $user, # OR [ $user1, $user2, ... ]
       group                    => $group, # OR [ $group1, $group2, ... ]
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

rename

The pts help string is:

    pts rename: rename user or group
    Usage: pts rename -oldname <old name> -newname <new name>
                      [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->rename
      (
       # Required arguments
       oldname                  => $oldname,
       newname                  => $newname,
       # Optional arguments
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

setfields

The pts help string is:

pts setfields: set fields for an entry Usage: pts setfields -nameorid <user or group name or id>+ [-access <set privacy flags>] [-groupquota <set limit on group creation>] [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->setfields
      (
       # Required arguments
       nameorid                 => $nameorid, # OR [ $nameorid1, $nameorid2, ... ]
       # Optional arguments
       access                   => $access,
       groupquota               => $groupquota,
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

setmax

The pts help string is:

    pts setmax: set max id
    Usage: pts setmax [-group <group max>] [-user <user max>]
                      [-cell <cell name>] [-noauth] [-force]

The corresponding method invocation looks like:

    my $result = $pts->setmax
      (
       # Optional arguments
       user                     => $user,
       group                    => $group,
       cell                     => $cell,
       noauth                   => 1,
       force                    => 1,
      );

SEE ALSO

AFS::Command(1), AFS::Object(1)