Calls on Objects
Calls on Class Objects
Calls on LegionClass
Calls on File and Context Objects
Start-Up and Shutdown Functions
Scheduling Support
General Functions About the State of the System
Security
Application Development
Program Support
Alphabetical list of commands
|
Starting and shutting down Legion 1.2 Legion context space How to start remote programs in Legion Legion host and vault objects Legion graphic user interface Quick list of all Legion commands |
Depending on how your system is set up, you may need to set up your access to your system before you can run Legion commands. This will probably involve running a script such as this:
$ . ~LEGION/setup.sh
or
$ source ~LEGION/setup.csh
A quick list of just the commands' syntax is also available.
For the purposes of this tool, "ClassObject" is a well-known class string. "CommandLineClass" and "BootstrapMetaClass" are not considered well-known classes because they do not have any special member functions, as shown in the examples below.
$ legion_exports_interface -c LegionClass -w ClassObject
1
$
$ legion_exports_interface -c /class/LegionClass -w CommandLineObject
"CommandLineObject" is not a well known class. Exiting.
usage: legion_exports_interface
{-l <class loid> | -c <legion space path>}
{-w <well known class type> | -f <function signature>}+
-1
$
$ legion_exports_interface -c LegionClass -w LegionClass -w ClassObject
1
$
$ legion_exports_interface -c /hosts/BootstrapHost -w UnixHostClass
1
$
$ legion_exports_interface -c /hosts/BootstrapHost -w ClassObject
0
$
$ legion_exports_interface -c /class/LegionClass \
-f " LegionLOID ping();"
1
$
$ legion_exports_interface -c /hosts/BootstrapHost \
-f " LegionLOID ping();" -w UnixHostClass
1
$This example returns the interface of the LegionClass (the metaclass for all Legion classes).
$ legion_get_interface -c class/LegionClass Getting the interface of object:1.01.01..000001fc0b325... Object Interface: void deactivate(); RestoreStateReply restoreState(); SaveStateReply saveState(SaveStateRequest); LegionLOID ping(); LegionObjectInterface getInterface(); int exportsInterface(LegionObjectInterface); int addAttribute(ObjectAttribute); int addAttributes(ObjectAttributeList); int replaceAttribute(ObjectAttribute, ObjectAttribute); int replaceAttribute_s(ObjectAttribute, ObjectAttribute); int replaceAttributes(ObjectAttributeList, ObjectAttributeList); int replaceAttributes_s(ObjectAttributeSignatureList, ObjectAttributeList); int removeAttribute(ObjectAttribute); int removeAttribute_s(ObjectAttributeSignature); int removeAttributes(ObjectAttributeList); int removeAttributes_s(ObjectAttributeSignatureList); LegionAttributeList retrieveAttributes(ObjectAttribute- List); LegionAttributeSignatureList retrieveAttributes_s(Object- AttributeSignatureList); LegionAttributeList retrieveAllAttributes(); $
$ legion_ping -c foo Pinging: 1.01.66000000.14000000.000001fc0a72cd9e3... Returned: 1.01.66000000.14000000.000001fc0a72cd9e3... $
legion_list_attributes
{-l <object LOID> | -c <context path>} [-L] [<attribute name>]
| -L | Lists the LOID of each attribute |
| <attribute name> | Specify the attribute to be listed (more than one attribute can be listed) |
$ legion_list_attributes -c Foo
Foo:
(ALL)
Total attributes retrieved 1
favoritecolors('puce', 'apricot')
$
legion_update_attributes
{-l <object LOID> | -c <context path>}
[{-a | -d | -t} <attribute description>] [-u]
| -a | Add an attribute |
| -d | Delete an attribute |
| -t | Test an attribute |
| <attribute description> | Specify an attribute to be updated |
| -u | Update an object's attributes |
$ legion_update_attributes -c foo -a "favoritenames(bob, fred)" IN make_attr_from_input - favoritenames(bob, fred) ** ADDED 1 attributes(s) to object $
$ legion_update_attributes -c foo -d "favoritenames(bob)" IN make_attr_from_input - favoritenames(bob) ** WARNING - DELETED 0 attributes(s) from object instead of 1 specified $ legion_update_attributes -c foo -d "favoritenames(bob, fred)" IN make_attr_from_input - favoritecname(bob, fred) ** DELETED 1 attributes(s) from object $
legion_activate_object
{-l <object LOID> | -c <context path>}
legion_create_object
{-l <class LOID> | -c <class context path>}
<new object context path>
[-h <host name on which to place new object>]
[-v <vault on which to place new object>]
[-H <context path of preferred host class>]
[-V <context path of preferred vault class>]
[-Ch <context containing list of preferred hosts>]
[-Cv <context containing list of preferred vaults>]
If the -h flag isn't used, the host is selected by the class in which you are creating an instance. Similarly, the class will choose a vault if the -v flag isn't used. Normally, this means that a random host is selected, but some classes may act differently. If the -Ch or -Cv flag is used, the class will randomly choose a host or vault from the hosts or vaults listed in the specified context. In both cases, the system will not return the LOID of the randomly chosen host. The legion_host_vault_list and legion_vault_host_list (page 30 and page 31) commands will allow users to limit the placement of a given class's instances (i.e., any instances of class Foo can only be placed on hosts X, Y, and Z).
The following options are supported:
| -h | Specify a host for the new object |
| -v | Specify a vault for the new object |
| -H | Specify the preferred host class's context path |
| -V | Specify the context path of the preferred vault |
| -Ch | Specify a context which contains a list of the preferred hosts |
| -Cv | Specify a context which contains a list of the preferred vaults |
legion_create_object_r
{-l <class LOID> | -c <class context path>}
<context path> <host name> <host architecture>
<$LEGION> <$LEGION_OPR> <$LEGION_OPA> <binary path>
[<user id>]
The additional arguments specify information for the rsh environment.
| <host name> | Specifies the host upon which the new object should be placed. Note that this should be a DNS name |
| <host architecture> | Specifies the host's architecture |
| <$LEGION> | Specifies the Legion environment variable on the rsh host |
| <$LEGION_OPR> | Specifies LEGION_OPR for host |
| <$LEGION_OPA> | Specifies the OPR address for the object, i.e, a unique directory in which the object will maintain its persistent representation on the remote host |
| <binary path> | Binary executable path for the object on the remote host |
The optional parameter does the following:
| <user id> | Specifies the appropriate user name on the rsh host |
legion_deactivate_object
{-l <object LOID> | -c <context path>}
legion_destroy_object
{-l <object LOID> | -c <context path>}
This command will not remove an object's context name: you must use the legion_context_remove or legion_rm command to remove the context name (if there is one) or you will get binding errors in that context. A simpler approach, however, would be to use the legion_rm command with the -destroy option to remove both the context name and the LOID.
$ legion_list_instances -c /class/BasicFileClass
Class 1.01.66000000..000001fc0d63e97... knows about the following instances:
LOID: 1.01.66000000.01000000.000001fc0a00...
Current oa : [xxx.xxx.xxx.xxx : 2020]
Current host : 1.01.07.30232908.000001fc0...
Current vault: 1.01.03.2e232908.000001fc0...
Status : object-running
LOID: 1.01.66000000.02000000.000001fc0edd...
Current oa : [xxx.xxx.xxx.xxx : 1895]
Current host : 1.01.07.31232908.000001fc0...
Current vault: 1.01.03.2e232908.000001fc0...
Status : object-running
$legion_set_host {-l <object LOID> | -c <object context path>}
{-l <host LOID> | -c <host context path>}
In the example below, object Foo's host is changed from BootstrapHost to newHost.
$ legion_set_host -c Foo -c /hosts/newHost
legion_set_vault {-l <object LOID> | -c <object context path>}
{-l <vault LOID> | -c <vault context path>}
legion_create_implementation
<binary path name> <architecture>
[-l <class LOID> | -c <context path>]
$ legion_create_implementation Legion/bin/linux/my_obj \ linux -c my_class $
$ legion_init_arch
Initializing Legion implementations for "linux"
Creating an implementation (ContextObject) for ContextClass
Continue (y=yes, Y=yes to all, n=no, N=no to all, v=verbose,
V=verbose all)? Y
Creating an implementation (MetaClassObject) for LegionClass
Creating an implementation (ClassObject) for VanillaMetaClass
Creating an implementation (BindingAgent) for BindingAgentClass
Creating an implementation (BasicFileObject) for BasicFileClass
Creating an implementation (ttyObject) for ttyObjectClass
Creating an implementation (StatTreeObject) for StatTreeClass
$legion_activate_instances
{-l <class LOID> | -c <class context path>}
$ legion_cat newFileObject This is a test, just a test, nothing more. $
legion_cp
[-localsource | -localdest]
<source file> <destination file>
The following optional parameters are supported:
| -localsource | Indicates that the source path is in the local files system |
| -localdest | Indicates that the target path is in the local file system. |
legion_deactivate_instances
{-l <class LOID> | -c <class context path>}
legion_destroy_instances
{-l <class LOID> | -c <class context path>}
This command will remove the LOIDsof the specified class' instances in all contexts, not just the current context. However, it will not remove the context names: you must use the legion_context_remove or legion_rm command to remove any names, or you will get binding errors. Use legion_rm with the -destroy option to remove both the name and the LOID of individual objects.
legion_direct_output {-l <LOID> | -c <object path>}
{-l <tty LOID> | -c <tty path>}
$ legion_get_host -c Foo 1.01.07.d49d1a40.000001fc0c04724... $
$ legion_get_vault -c Foo 1.01.03.d49d1a40.000001fc0a69cbb8... $
An object can have multiple context names, assigned by one or more users. The same context name can be assigned to different objects or to the same object so long as the contexts names are in different contexts (just as the same file names can be used in different levels of a Unix directory).
The default setting lists the current context. Optional parameters do the following:
| -l | Lists object type and information, if possible |
| -L | Lists LOIDs associated with names |
| -a | Lists all objects, not just contexts and files |
Optional parameters do the following:
| -deactivate | In addition to deleting the object name, deactivates the associated object | -destroy | In addition to deleting the object name, destroys the associated object. |
$ legion_set_tty /my-tty
Note that program output does not have to be directed to the same window in which the program is run. By setting a new current tty object, the output can be redirected to any window, or even a file. For example:
$ legion_create_object -c /class/ttyObjectClass /my-tty $ legion_set_tty /log-file
| -c | Assign the new object the name given in <context path> |
The following optional parameter is supported:
| -i | Run the command in an interactive mode. |
Optional parameters do the following:
| -local | Shuts down only a local host or vault. |
| -f | Forces the termination of a system, may leave processes running and prevent a system restart. |
| -i | Puts the shutdown in an interactive mode, which will provide prompts for user actions. |
| -h | Returns the command's complete syntax. |
legion_shutdown_class
{-l <class LOID> | -c <context path>}
legion_starthost
[-L <$LEGION>] [-O <$LEGION_OPR>] [-A <$LEGION_ARCH>]
[-N <context name>] [-U <user id>] {<new host name>}
[<compatible vault list>]
| <$LEGION_OPA> | = $LEGION_OPR/Host-$HOST.OPA |
| <binary path> | = $LEGION/bin/$LEGION_ARCH/UnixHostObject |
| -L <$LEGION> | Specify $LEGION for host (default is "/home/Legion") |
| -O <$LEGION_OPR> | Specify $LEGION_OPR for host (default is current $LEGION_OPR) |
| -A <$LEGION_ARCH> | Specify the architecture type for the host (default is current $LEGION_ARCH) |
| -N <context name> | Specify the context name for the host object (default is "/hosts/<host name>") |
| -U <user id> | Specify the user id for host (default is current user id) |
The following optional parameter is supported:
| -local | starts up only a local host or vault |
legion_startvault
[-L <$LEGION>] [-O <$LEGION_OPR>] [-A <$LEGION_ARCH>]
[-N <context name>] [-U <user id>] {<host name>}
[<compatible host list>]
The following optional parameters are supported:
| -L <$LEGION> |
Specify $LEGION for the vaults host (default is "/home/Legion") |
| -O <$LEGION_OPR> |
Specify $LEGION_OPR for the vaults host (default is "/home/OPR") |
| -A <$LEGION_ARCH> |
Specify the architecture of the vaults host (default is current $LEGION_ARCH) |
| -N <context name> |
Specify the context name for the vault object (default is "/vaults/vault-<host name>") |
| -U <user id> |
Specify the user id to use on the vaults host (default is current user id) |
legion_class_host_list
[-l <class LOID> | -c <class context path>]
[{-a | -d} <host name>] [-p] [-u]
The following optional parameters are supported:
| -c | use context paths to specify class and host |
| -l | use dotted hex LOIDs to specify class and host |
| -a | add named host to the class's acceptable host list |
| -d | delete named host from the class's acceptable host list |
| -p | display the class's acceptable host list |
| -u | print usage |
$ legion_class_host_list -c /class/BasicFileClass -a /hosts/newHost ** ADDED 1 host(s) to class's acceptable host set The -p flag can then be used to check the listing. $ legion_class_host_list -c /class/BasicFileClass -p ** ACCEPTIBLE HOST LISTING: ** 1.01.07.d59d1a40.000001fc094e23... $
legion_class_vault_list
{-l <class LOID> | -c <class context path>}
[{-a | -d} <vault name>] [-p] [-u]
| -c | Use context paths to specify class and vault |
| -l | Use LOIDs to specify class and vault |
| -a | Add named vault to the class's acceptable vault list |
| -d | Delete named vault from the class's acceptable vault list |
| -p | Display the class's acceptable vault list |
| -u | Print usage |
legion_get_candidate_hosts
{-l <object LOID> | -c <object context path>}
legion_get_candidate_placements
{-l <class LOID> <instance LOID>} | {-c <class context path>
<instance context path>} [<max placements>]
The output of this command lists the LOIDs of the instance (abbreviated as inst), host, implementation object (abbreviated as impl obj), and vault of each pairing. The instance LOID appears in each listed pairing.
The example below displays the list of pairings for instance Foo of class BasicFileClass. In this case, there are two possible vaults (BootstrapVault and NewVaultObject) but only one host (BootstrapHost): there are therefore two possible pairings, and two lists. The first pairing, of BootstrapHost and BootstrapVault, lists the LOID of Foo, BootstrapHost, BasicFileClass's implementation object, and BootstrapVault. The next pairing, of BootstrapHost and NewVaultObject) repeats the LOIDs of Foo, BootstrapHost, and the implementation object, and ends with the NewObjectVault's LOID.
$ legion_get_candidate_placements -c /class/BasicFileClass Foo
max = -99
ALL_PLACEMENTS = -99
Candidate Placements for Foo:
inst = 1.01.66000000.01000000.000001...
host = 1.01.07.d49d1a40.000001fc0c04...
impl obj = 1.01.08.d89d1a40.000... arch = 1
vault = 1.01.03.d49d1a40.000001fc0a6...
inst = 1.01.66000000.01000000.000001...
host = 1.01.07.d49d1a40.000001fc0c04...
impl obj = 1.01.08.d89d1a40.000... arch = 1
vault = 1.01.03.d69d1a40.000001fc0ac...
$legion_get_candidate_vaults
{-l <object LOID> | -c <object context path>}
$ legion_get_candidate_hosts -c /vaults/NewVaultObject 1.01.07.d49d1a40.000001fc0c0472... 1.01.07.d59d1a40.000001fc094e23... 1.01.07.d69d1a40.000001fc0b6810... $
legion_host_vault_list
{-l <host LOID> | -c <host context path>}
[{-a | -d} <vault name>] [-p] [-u]
The following optional parameters are supported:
| -c | Use context paths to specify host and vault |
| -l | Use dotted hex LOIDs to specify host and vault |
| -a | Add named vault to the host's acceptable vault list |
| -d | Delete named vault from the host's acceptable vault list |
| -p | Display the host's acceptable vault list |
| -u | Print usage |
$ legion_host_vault_list -c /hosts/HostName -p ** COMPATIBLE VAULT LISTING: ** 1.01.03.d49d1a40.000001fc0a69cbb845... $
legion_instance_host_list
{-l <LOID> | -c <context path>}
[{-a | -d} <host name>] [-p] [-u]
The following optional parameters are supported:
| -c | Use context paths to specify object and host |
| -l | Use LOIDs to specify object and host |
| -a | Add named host to the object's acceptable host list |
| -d | Delete named host from the object's acceptable host list |
| -p | Display the object's acceptable host list |
| -u | Print usage |
legion_vault_host_list
{-l <vault LOID> | -c <vault context path>}
[{-a | -d} <host name>] [-p] [-u]
The following optional parameters are supported:
| -c | use context paths to specify vault and host |
| -l | Use LOIDs to specify vault and host |
| -a | Add named host to the vault's acceptable host list |
| -d | Delete named host from the vault's acceptable host list |
| -p | Display the vault's acceptable host list |
| -u | Print usage |
$ legion_vault_host_list -c /vaults/VaultName -p ** COMPATIBLE HOST LISTING: ** 1.01.07.d49d1a40.000001fc0c04724... ** 1.01.07.d59d1a40.000001fc094e23c... ** 1.01.07.d69d1a40.000001fc0b68108... $
legion_classof
{-l <object LOID> | -c <context path>}
$ legion_classof -c Foo The class of 1.01.66000000.01000000.000001fc0... is 1.01.66000000..000001fc0d085b2c33... $
legion_list_objects
{-l <host LOID> | -c <host context path>}
The user id is the context name of an AuthenticationObject: the legion_create_object utility creates the object and assigns it the context name given in <user id>. The command will prompt for a password for the new user, and will return the new object's LOID. Note that the context in which the user id is placed has nothing to do with that user's privileges in that context. Once a user is created, the legion_login command is used to log in.
$ legion_login bob -e legion_ping -c bob
Note that the command can be use without any arguments.
legion_set_acl {-l <object LOID> | -c <object context path>}
[-s | filename]
The following option is supported:
| -s | Read from standard input |
legion_set_implicit_params
[-l <object LOID> | -c <object context path>]
[-s | filename]
The following option is supported:
| -s | Read from standard input |
The following options are used:
| -o <out file> | Name of the file containing the resulting Fortran or MPL output |
| -BackEnd | Instructs the legion_bfs compiler to produce output for IDL files included in the Fortran input file (ignored when the input is a BFS IDL file) |
The <java options> argument can include any command-line options accepted by the locally installed "java" interpreter. This set of options will always include the Java class to be executed.
legion_flogger [-v] {-n <number of processors>}
{-f <specification file name>} <program class name>]
[<arg1>, <arg2>, ... <argn>]
The flogger specification file might look something like this:
in in.dat in.dat.* out out.dat
Note that if your program prints to standard output you must direct your output to a Legion tty object with the legion_tty_watch command.
The following parameters are used with this command:
| -n <number of processors> | Specify the number of processors used to run the program |
| -f <specification file name> | The Unix path name of the flogger specification file |
The following options are available with this command:
| -v | Provide a verbose output as the command is running (you can use up to four of these to get increasing levels of detail) |
| <arg1>, <arg2>, ... <argn> | Allows users to include arbitrary command-line arguments for the program |
legion_mpi_debug [-q] {-c <instance context path>}
The -q flag will list the contents of the queues.
There are a few limitations in legion_mpi_debug: If an MPI object doesn't respond, it will hang, and it won't go on to query additional objects. An MPI object can only respond when it enters the MPI library; if it is in an endless computational loop, it will never reply.
legion_mpi_register
<class name> <binary local path name> <platform type>
The command can be executed several times, if you have compiled your program on several architecture.
legion_mpi_run
{-f <options file> [<flags>]} |
{-n <number of hosts> [<flags>] <command> [<arguments>]}
If the -f flag is not used, the MPI application named in the legion_mpi_run command will then be started with the given flags.
The <command> argument is the Legion context name for the class created by legion_mpi_register.
The parameters used for this command are:
| -f <options file> | Allows userse to run multiple MPI binaries with a common MPI_COMM_WORLD. |
| -n <number of processes> | Specify the number of hosts on which the program will run. |
| -h <host context path> | Specify the set of hosts on which the program will run (default is the system's default placement) |
| -0 <legion context name> | Runs the first process (i.e., process zero) on this node (note that this flag is a zero, not a capital "o") |
| -p <PID context> | Specify a name for PIDs (default is /mpi/instance/program_name) |
| -s | Print statistics at exit |
| -v | Verbose option. Up to four of these may be used to specify increasing levels of detail. |
| -d <Unix path name> | Specify that all children change to the specified directory before they begin to run. |
$ legion_mpi_run -n 2 /mpi/programs/vdelay
$ legion_context_list /mpi/instances/program_name
legion_pvm_register
<class path name> <binary local path name> <platform type>
Once you've registered an application, you can run it. If necessary, you can examine Legion context space with either
$ legion_context_list /pvm
$ legion_context_list /pvm/tasks
To register a Linux binary named matmult in Legion, enter:
$ legion_pvm_register /pvm/tasks/matmult matmult linux
legion_register_program
<program class> <executable path> <legion arch>
Programs registered through legion_register_program can be executed with the legion_run command. See also legion_register_runnable for information about registering Legion programs.
The following parameters are used with this command:
| <program class> | The Legion context path name of the class with which the registered program should be associated |
| <executable path> | The local file path of the executable program to register. This can be any program that could be run from the shell command prompt, including scripts, and binary executable generated by any programming language. |
| <legion arch> | The platform type that the program should be executed. |
legion_register_runnable
<program class> <executable path> <legion arch>
The following parameters are used with this command:
| <program class> | The Legion context space path of the class with which the registered program should be associated |
| <executable path> | The local file path of the executable program to register. This program should be a valid Legion object implementation that has been linked with the Legion library, and that exports the Legion "runnable" interface. |
| <legion arch> | The platform type on which the program should be executed. |
legion_run [-help] [-w] [a <architecture>]
[-in <contex path name>] [-out <context path name>]
[-IN <local file name>] [-OUT <local file name>]
[-f <options file>] <program class> [<arg1>, <arg2>, ... <argn>]
Note that any number of input and output files may be specified for a single execution of legion_run (i.e., the -in/-out and -IN/-OUT options can be repeated). The -f flag can be used to specify legion_run options in the file named in <options file>, rather than on the command line.
The following parameters are used with this command:
| <program class> | Specifies the program class of which an instance should be executed. This program class should have been previously created with the legion_register_program or legion_register_runnable command. |
| The following optional parameters are supported: | |
| -help | Displays the command's syntax and provides a brief description of how to use its options. |
| -w | Directs legion_run's output to your current tty object. If you have not created and set a tty object for your current window you will not be able to see any output and an error message will appear. |
| -a <architecture> | Allows users to specify what kind of architecture the program should be executed on. |
| -in <context path name> |
Specifies the context path of a Legion file that should be copied into the remote program's current working directory before execution begins. The local file will have the same name as the |
| -out <context path name> | Specifies the context path of a Legion file that should be copied out of the remote program's current working directory after the program terminates. The local source file will have the same name as the <context path name> base-name. Note that output files are copied out regardless of the cause of program termination. Partial results will be available if the program crashes. Output files that are not found in the program's current working directory are skipped. |
| -IN <local file name> | Similar to the -in option, but operates on a file in the local execution environment of legion_run (i.e., the file named in <local file name>). |
| -OUT <local file name> | Similar to the -out option, but operates on a file in the local execution environment of legion_run (i.e., the file named in <local file name>). |
| -f <options file> | Allows users to specify options for running legion_run in a separate file rather than listing them on the command line. This is useful for programs that make extensive use of the -in/-out or -IN/-OUT options. The file can contain one or more options, delimited by spaces, tabs, or blank lines. |
Alphabetical list of Legion commands