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)