![]() |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_get_interface {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Retrieves the interface of a Legion object, named by <class LOID> or <context path>, by calling that object's getInterface() member function. Prints the returned interface to stdout.
The example below returns the interface of the LegionClass (the metaclass for all Legion classes).
$ legion_get_interface 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( ObjectAttributeSignatureList); LegionAttributeList retrieveAllAttributes(); $
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_ping {[-c] <object context name> | -l <object LOID>} [-timeout <seconds>] [-debug] [-help]
Calls the object-mandatory ping() member function on the object named in <object LOID>. If the command returns, the object exists in an active state and its LOID is displayed.
$ legion_ping foo Pinging: 1.01.66000000.14000000.000001fc0a72... Returned: 1.01.66000000.14000000.000001fc0a72... $
If the object is not accessible by the tool, the command will return an error.
The following optional parameters are available:
legion_list_attributes {[-c] <object context name> | -l <object LOID>} [-L] [<attribute name>] [-debug] [-help]
Lists an object's attributes from the command line. Optional parameters do the following:
A very simple example of this command is below. An object's attributes can include architecture, operating system information, host or vault compatibility, encryption information, etc.
$ legion_list_attributes Foo Foo: (ALL) Total attributes retrieved 1 favoritecolors('puce', 'apricot') $
legion_list_invocations {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
Prints a list of currently pending, started, and recently completed invocations for a given object. The output will include information about each invocation's status, timing, progress, and errors.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_object_info {[-c] <object context name> | -l <object LOID>} [-v] [-debug] [-help]
Prints information about a given object. The output (obtained from the object's class) will include the object's host, vault, owner, Object Address, status, etc. Optional parameters do the following:
| -v | Print additional details about the specified object (host machine name and context name, OPA, and vault context name). |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_update_attributes {[-c] <object context name> | -l <object LOID>} [{-a | -d | -t} <attribute description>] [-u] [-debug] [-help]
Adds, deletes, test, and updates attributes, named in <attribute description>, of an object named in <context path> or <object LOID> from the command line. The <attribute description> parameter takes the form name(val1 ... valn). The attribute description must not contain any spaces or begin with an uppercase letter.
Optional parameters do the following:
The following example adds the attribute favoritenames to object Foo, with the -A flag.
$ legion_update_attributes foo -a "favoritenames(bob, fred)" IN make_attr_from_input - favoritenames(bob, fred) ** ADDED 1 attributes(s) to object $
Similarly, you can remove attributes, with the -d flag. Note, however, that all parameters must be included in order to remove an attribute:
$ legion_update_attributes 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 foo -d "favoritenames(bob, fred)" IN make_attr_from_input - favoritenames(bob, fred) ** DELETED 1 attributes(s) from object $
legion_activate_object {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
Activates the object named in <object LOID> or <context path> (i.e., instantiates that object as a process) if it is inert. If the object is already active, the command has no effect.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_create_object {[-c] <class context name> | -l <class LOID>} <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>] [-d <recorder context path> <debug session name>] [-debug] [-help]
Creates an instance of the class named in <class LOID> or <class context path>. No start-up parameters will be supplied for the class or new object. The following options are supported:
If the -h flag isn't used, the host is selected by the class. 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 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).
legion_create_object_r {[-c] <class context name> | -l <class LOID>} <context path> <host name> <host architecture> <$LEGION> <$LEGION_OPR> <$LEGION_OPA> <binary path> [<user id>] [-debug] [-help]
Causes the specified class object to create a new object on the host named in <host name> using the rsh1 (remote shell) mechanism. The object will be managed with rsh, if the class it is invoked on is an rshStartClass. If this utility is invoked on a normal class, normal object create mechanism will be used, and the object will not be managed by rsh. This command is generally used only by the legion_create_host and legion_create_vault scripts, not by users.
The additional arguments specify information for the rsh environment.
Optional parameters do the following:
| <user id> | Specifies the appropriate user name on the rsh host. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_deactivate_object {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
Deactivates the object named in <object LOID> or <context path> (moves it to an inert state) if it is currently active. If the object is already inactive, the command has no effect.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_destroy_object {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
Deletes the object named in <context path> or <object LOID>. More specifically, it removes the object's LOID but not its context name (if there is one). If the object is active, the command deactivates the object. In all cases, it deletes the OPR (object persistent representation) associated with the object.
This command will not remove any context name associated with the object: you must use the legion_rm command to remove the object's name(s) or you will get binding errors. (You can use legion_ls -A to check for multiple context names.)
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_list_implementations [-v] {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Lists the implementation objects associated with the class named in <class LOID> or <class context path>. In its default setting the output will consist of each implementation object's LOID and architecture type.
The following options are supported:
legion_list_instances {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Displays information about the instances of the class named by <context path> or <class LOID>. For every instance, the tool displays the class's LOID, current object address, status (active or inert), the host on which it resides, and the vault that holds its OPR. The example below shows that class BasicFileClass has two instances, and that both are currently running.
$ legion_list_instances /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 $
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_set_host {[-c] <instance context path> | -l <instance LOID>} {[-c] <host context path> | -l <host LOID>} [-debug] [-help]
Calls the set_host() class-mandatory member function on the class of the instance named by in <instance LOID> or <instance context path>, causing the instance to migrate to the host named in <host LOID> or <host context path>.
In the example below, object Foo's host is changed from BootstrapHost to newHost.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_set_vault {[-c] <instance context path> | -l <instance LOID>} {[-c] <vault context path> | -l <vault LOID>} [-permanent] [-debug] [-help]
Migrates the state (OPR) of the object named in <instance LOID> or <instance context path> to the vault named in <vault LOID> or <vault context path>.
The following options are supported:
Be careful with the -permanent flag. If none of the instance's acceptable hosts match the chosen vault (i.e., there are no compatible host-vault pairs) the instance cannot be reactivated. Alternatively, the chosen vault may be compatible only with hosts for which the class has no implementation.
Please note that this command can fail for many reasons, including:
The class object will enforce the current restrictions on its instance's acceptable vaults before it migrates the object's state. You may need to change the instance's list of acceptable vaults (via the legion_instance_vault_list command) to include the target vault before running legion_set_vault.
This command is not exactly the equivalent of a true object migration, since the object is not reactivated after its state is moved. Where the object reactivates depends on the scheduling decision made at the time the reactivation occurs. If the -permanent flag is not used and the instance's acceptable vault list is not otherwise altered, future activations of the instance may be on different vaults. If the -permanent flag is used, all future activations must use the specified vault, until the acceptable vault list is altered.
legion_add_class_mapping <metaclass LOID> <class LOID> [-debug] [-help]
This command notifies LegionClass that the meta-class named by <metaclass LOID> is the class of the class named by <class LOID>. LegionClass updates its class map accordingly.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_combine_domains [-v] <list of domain cookie files> [-debug] [-help]
Joins a set of Legion domains (systems) to create a single, larger, multi-domain Legion system. Before you run this command, you must obtain a copy of the Legion domain cookie files from all of the involved domains (see legion_generate_domain_cookie and legion_ print_domain_cookie), including the current Legion domain. If you are joining domain A to domain B and domain B has already been joined to domain C, you will need cookie files from domains A, B, and C. This provides transitivity in the system join. All three domains will be joined to one another to form a single system. The command is implemented this way to avoid communication failures; if a LOID can be passed to an object (e.g., in a method continuation list), that object should be able to use the LOID for further communication.
Non-transitive or non-reflexive joins would allow communication of LOIDs for which an object could not obtain a binding. For example, object X in domain A might be able to bind to object Y in domain B and pass a method to it, but object Y might not be able to bind to object X to pass it the return value.
In addition to joining the binding trees of the involved domains, legion_combine_domains also creates context links in the current domain's context space to all of the remote domains' root contexts. These links appear in local context space in the following path: /domain/LegionDomain.<domain-id>.
If the command is run on domains that are already connected, it has no affect and is harmless.
There is currently no mechanism supporting "unjoining" of domains. However, Legion security mechanisms (e.g., ACLs) can be used to effectively forbid any use of the current domain by outside domains.
The following options are supported:
| -v | Provide a verbose output as the command is running. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
The example below combines two domains. If either had previously been connected to another domain, three cookie files would be listed.
$ legion_combine_domains LegionDomainCookie.35d82a07 \ LegionDomainCookie.c8 Created 2 new domain interconnections $
legion_create_implementation <binary path name> <architecture> {[-c] <class context name> | -l <class LOID>} [[-c] <object context path>] [-nc] [-v] [-a <attribute>] [-debug] [-help]
Creates an implementation object based on the binary executable named in <binary path name>. Each class maintains a list of the implementation objects that are suitable for its instances. There are a set of implementation objects created when your system was initialized (use legion_ls -la /impl to see a list). Several different implementation objects might be maintained by a class to support the use of multiple platforms--a class might have implementation objects for different architectures, for different operating systems, with different memory requirements, etc.
The new implementation object is associated with the class object named in <class LOID> or <class context path>, and is marked as usable for hosts of a specified type (linux, solaris, etc.). For example,
creates a new implementation object for my_obj. The new object is automatically assigned the context path /impls/my_obj.linux.1 (if you ran the example a second time, the new object would be called /impls/my_obj.linux.2). You can use the -c <object context path> flag to specify a different context path or the -nc flag to specify that no context path be assigned.
At the moment, possible <architecture> values are:
The following optional parameters are supported:
| [-c] <context path> | Specify a context path for the new object. Default is /impls/<binary_name>.<architecture>.<#> |
| -nc | Specify that the new object have no context name. |
| -v | Run the command in verbose mode. |
| -a <attribute> | Assign the new object an extra attribute. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_generate_domain_cookie [-o <cookie output filename>] [-debug] [-help]
Generates a domain cookie file for the current Legion domain, as required by legion_combine_domains. A cookie file contains binding information for the LegionClass in the current domain, security credentials for joining to the current domain, and information about the context space of the current domain (for creating interdomain context space links). The default cookie file name is LegionDomainCookie.<domain-id>, or you can use the -o flag to specify a name. In a secure environment, you must be logged in as /users/admin for the current domain. This ensures that the required credentials can be generated and saved in the cookie file.
The following optional parameters are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_init_arch [-debug] [-help]
Creates and registers implementation objects for commonly used classes in the current architecture. This command is run on a new host to create its implementation objects in the proper place. Implementation objects for specific binary executables can be created with the legion_create_implementation utility.
$ 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 $
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_list_domains [-debug] [-help]
List the domains currently connected to your current Legion domain. The output will list the binding for your current domain and any domains linked to your current domain. Please see legion_combine_domains for information about connecting Legion domains.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_print_domain_cookie [-i <cookie input file>] [-debug] [-help]
Displays the contents of a Legion domain cookie file (required for using legion_combine_domains). By default the command displays the contents of the file LegionDomainCookie.<current-domain-id>, but any input file name can be specified using the -i option.
The following options are supported:
| -i <cookie input file> | Specify the path of the cookie file to print. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_activate_instances {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Activates all instances of the class named in <class context path> or <class LOID>. Instances that are already active will be unaffected.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_cat <context path1> <context path2> ... <context pathN> [-debug] [-help]
Prints the contents of the Legion file object(s) named in <context path> to standard output. It is similar to the Unix cat command.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_cd <context path> [-debug] [-help]
Changes the current working context to the context named in <context path>. Note that the path name can be relative or absolute. This command is identical to the legion_set_context command and analogous to the Unix cd command.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_context_add <object LOID> <context name> [-debug] [-help]
Adds a new name <context name> for the object named in <object LOID> to the current context space.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_context_create <context path> [-debug] [-help]
Creates a new context in Legion context space, and assigns it the name given in <context path>. This command is analogous to the Unix mkdir command. The new context will be placed in your current context. The output will contain the new context's location and its LOID.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_cp [-r] [-v] [-m] [-p] [-localsrc] [-localdest] [-V <vault context path>] <source path> <destination path> [-debug] [-help]
Copies the file object or tree named in <source path> (named as either a context path or a local path) to a new, duplicate, file object or tree named in <destination path> (named as either a context path or a local path). Use the recursive mode (-r) to export objects to local file space. Analogous to the Unix cp command.
The following optional parameters are supported:
legion_deactivate_instances {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Deactivates all instances of the class named in <class context path> or <class LOID>. Instances that are already deactivated will be unaffected.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_destroy_instances {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Destroys all instances of the class named in <class context path> or <class LOID>. Any active instances are deactivated.
This command will remove the LOIDs of the specified class' instances in all contexts, not just the current context. However, it will not remove any context name associated with this object: you must use the legion_rm command to remove the object's name(s), or you will get binding errors. (You can use legion_ls -A to check for multiple context names.)
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_direct_output {[-c] <object context path> | -l <object LOID>} {[-c] <tty context path> | -l <tty LOID>} [-debug] [-help]
Causes the object named in <object path> or <object LOID> to direct its output (standard out and standard error) to the Legion tty object named by <tty context path> or <tty LOID>. Note that this command can only be invoked on objects that have dynamic output redirection enabled. If the command is invoked on an object that does not have redirection enabled, neither the object nor the tty is affected and an error message is displayed.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_export_dir [-v] [-fc] [-cc] <local base directory path> <target base context path> [-debug] [-help]
The legion_export_dir command allows a complete directory tree in the local file system to be linked into Legion context space without requiring the creation of file copies. A new context will be created to match the local directory tree, and new context names will match the local directory's file names. The command executes only during the duration of time that you wish to use the exported files and directories: if you pause the command the tree's context space will not be available. Once you resume the command, the context will be available.
This is a temporary, read-only context: any changes that you make to the new context, such as changing or removing context names, will not be reflected in the local directory tree (and vice versa). For best results, do not make any changes to the exported directory tree or to the tree's context. For this same reason you should delete the tree's context space when you are finished.
To pause the command, press ^-C. To resume using the exported files, re-execute the command, specifying the same local base directory path and target context path. Use of exported files and directories while the command is not active will cause binding errors. The context space will not be automatically removed when the command is paused or stopped. To delete an exported directory tree's context space, use legion_rm -r while legion_export_dir is active.
The following options are supported:
legion_get_host {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
This command looks up and returns the LOID of the host on which the object named in <object context path> or <object LOID> currently resides.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_get_vault {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
Returns the LOID of the vault which the object named in <object context path> or <object LOID> is currently using to store its OPR.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_import_tree [<unix directory path> [<legion context path>]] [-debug] [-help]
Recursively copies a local directory tree in Unix space, named by <unix directory path>, into a Legion context, named by <legion context path>. The output will include the new context's LOID and location. Pathnames can be relative or absolute. Default values are the current working directory and the current working context.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_list_names {[-c] <object context name> | -l <object LOID>} [-debug] [-help]
Lists all of the given object's context names. This includes names assigned by other users. The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_ln <context path> <new alias> [-debug] [-help]
Assigns an additional name, given in <new alias>, to the object named in <context path>. Analogous to the Unix ln command. Path names can be relative or absolute.
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 following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_ls [-laLRAdqv] <context path> [-debug] [-help]
Lists the contents of a named Legion context in ascii-alphabetical order. Note that the pathname can be relative or absolute. The command is analogous to the Unix ls command. The default setting lists the current context. You can include a context path in the <context path> parameter to list the contents of that context. For example:
You can get more specific information (object type, LOID, other context aliases, state) about objects with the flags. For example, you can get more information about a particular context's objects with the -l, -a, and -A flags. The output below shows a complete list of all objects listed in this context, the objects' types, and any context aliases associated with each listed object.
$ legion_ls -laA /hosts . (context) /hosts .. (context) /class/.. /hosts/.. /vaults/.. /home/.. BootstrapHost (object) /hosts/BootstrapHost /hosts/host.DNS.name host.DNS.name (object) /hosts/BootstrapHost /hosts/host.DNS.name $
According to this, there are four names listed in /hosts, two referring to contexts and two to objects. We can see from the alternative context names, though, that BootstrapHost and my.host.DNS.name refer to the same object.
Optional parameters do the following:
legion_mkdir <context path> [-debug] [-help]
Creates a new context in Legion context space, and assigns it the name given in <context path>. This command is analogous to the Unix mkdir command (it is also identical to the legion_context_create command). The new context will be placed in your current context. The output will contain the new context's location and its LOID.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_mv <context path> <new context path> [-debug] [-help]
Assigns a new context name, given in <new context path> to the object named in <context path>. Pathnames can be relative or absolute. Analogous to the Unix mv command.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_pwd [-debug] [-help]
Prints your current context path. Similar to the Unix pwd command. The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_rm [-r] [-f] [-v] <context path list> [-debug] [-help]
Removes the context path[s] named in <context path list> from Legion context space. Pathnames can be relative or absolute. Analogous to the Unix rm command.
If the context path listed is the last (i.e., only) name mapped to a given object, the object will be destroyed.
Optional parameters do the following:
legion_set_context <context path> [-debug] [-help]
Changes the current working context to the context named in <context path>. Note that the path name can be relative or absolute. Analogous to the Unix cd command.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_set_tty <tty context path> [-debug] [-help]
This command will set an environment variable to indicate which tty object should be used by subsequent programs. By selecting a new current tty object, users can redirect the output to any window or file.
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:
creates a tty object whose output is sent to a file. To view the tty output, use the legion_tty_watch command (below).
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_tty <tty context path> [-debug] [-help]
This command can be used to direct all output from a particular shell back to that shell -- i.e., create and set a tty object for a shell -- in one step, rather than running legion_create_object, legion_set_tty, and legion_tty_watch. If no tty object exists at the path named in <tty context path> it creates a new object, sets it as the target tty, and starts the legion_tty_watch process in the background of the shell in which the command was run. If a tty object already exists at the named context path, the command sets that tty object as the target.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_tty_off [-debug] [-help]
Unsets (stops) the Legion tty object for the current shell so that Legion programs executed in that shell after legion_tty_off is run will not display their output to a Legion tty object. This command also shuts off the background legion_tty_watch process for the current shell. This command only works on tty objects that have been set with the legion_tty command. See legion_tty_watch for information on turning off other tty objects.
Note that this does not destroy the tty object. The object can be reused with legion_tty, legion_set_tty, or legion_tty_watch.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_tty_redirect <object context path> [-debug] [-help]
Causes the Legion tty object currently set in the shell environment to stream directly into the file object named in <object context path>. If the file does not already exist the system creates it. Existing files are appended to, not truncated. A single tty object can be simultaneously directed into any number of files (as well as watched from any number of terminal windows).
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_tty_unredirect <object context path> [-debug] [-help]
Causes the Legion tty object currently set in the shell environment to stop streaming into the file object named in <object context path>. If the tty object is not currently directing output to the named file the command is ignored.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_tty_watch [[-c] <tty context path> | -l <tty LOID>] [-debug] [-help]
Causes output written to a Legion tty object to be printed to standard output. If no command line parameters are specified, the current tty object set for the shell session is selected. Otherwise, the tty object named in <tty LOID> or <tty context path> is selected. Note, the command will not self-terminate: to stop the program send it a SIGINT (i.e., using ^C or "kill -INT"). Any number of legion_tty_watch sessions may simultaneously watch the same Legion tty object.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_add_host_account {-l <host object LOID> | [-c] <host object context path>} <Unix user id> [-l <owner LOID> | [-c] <owner context path>] [-debug] [-help]
This command is used on PCD host objects. Adds a mapping between a Legion account and a Unix account and adds this mapping to a PCD host object's list of available accounts. The user's Unix user id is named in the <Unix user id> parameter. The host object is named in the <host object LOID>/ <host object context path> parameter. The user's Legion user id can be given in the <owner LOID>/<owner context path> parameter.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_create_class [[-c] <context path>] [-sc <scheduler context path>] [-sl <scheduler LOID>] [-debug] [-help]
Creates a new instance of class VanillaMetaClass. The object will be placed in the current working context, unless specified with the -c flag. The following options are supported:
legion_destroy_host [-v] {[-c] <host context path> | -l <host LOID>} [-debug] [-help]
Destroy a given host object. All contexts objects on that host will be destroyed and all active objects will be deactivated. Legion will automatically search your context space and remove any dangling context names for the host object.
Optional parameters do the following:
| -v | Run in verbose mode. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_destroy_vault {[-c] <vault context path> | -l <vault LOID>} [-debug] [-help]
Destroy a given vault object. Legion will attempt to move all of the vault's current OPRs off of the vault object and then destroy the vault object. If any OPRs cannot be successfully moved the process will abort and an error message will be displayed.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_initialize [-debug] [-help]
Populates the Legion system with basic classes and implementations. This command should be run after a Legion system is started for the first time (using legion_startup). On subsequent activations of the system, the state created by this utility will already exist, so this command should not be run again.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_list_host_accounts {-l <host object LOID> | [-c] <host object context path>} <user id> [-debug] [-help]
This command is used on PCD host objects. It removes one or more account mappings from the host object's list of available accounts. The <user id> parameter is the user's Unix user id. If no host is named in the <host object LOID>/<host object context path> parameter, your current host object will be the default host.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_make_setup_script [-o <script basename>] [-OPR <OPR dir name>] [-L <$LEGION dir name>] [-debug] [-help]
Generates a Legion setup script for your system. This script sets the environment variables for Legion users. The following options are supported:
legion_print_config [-debug] [-help]
Prints the "well-known" binding for LegionClass in the current Legion configuration. The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_remove_host_account [-l <host object LOID> | [-c] <host object context path>] [-debug] [-help]
This command is used on PCD host objects. It lists the available accounts on a host object. If no host object argument is provided, your current host object will be used as a default.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_setup_state [-i] [-debug] [-help]
Creates OPRs for the basic Legion system objects. This script should be run when starting a Legion system for the first time. The following optional parameters are supported:
| -i | run the command in an interactive mode. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_shutdown [-local] [-f] [-i] [-debug] [-help]
Shuts down a running Legion system, preserving the state of all objects for subsequent reactivation of the system. Optional parameters allow users to shut down individual hosts and to specify an interactive shutdown.
Optional parameters do the following:
legion_shutdown_class {[-c] <class context name> | -l <class LOID>} [-debug] [-help]
Deactivates the class object named in <class LOID> or <context path> and all of its instances. This command operates recursively: if applied to a metaclass, for example, it would deactivate the metaclass, all of its class instances, all of their instances, etc.
The following options are supported:
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_starthost [-L <$LEGION>] [-O <$LEGION_OPR>] [-A <$LEGION_ARCH>] [-B <path>] [-N <context name>] [-U <user id>] [-C <host class>] {<new host name>} [<compatible vault list>] [-debug] [-help]
Creates a new host object on the specified <new host name>, using the legion_create_object_r command, automatically invoked on the host class). The <new host name> is the host's DNS name. The legion_starthost command selects the following default values for the new object:
| <$LEGION_OPA> | = $LEGION_OPR/Host-$HOST.OPA |
| <binary path> | = $LEGION/bin/$LEGION_ARCH/UnixHostObject |

This command uses remote shell (rsh or ssh) classes to start a new host object on a specified host. Please note that you must be able to run rsh/ssh on the target host from your current machine without having to enter a password. You can set up an .rhosts file for rsh or an authorized_keys file for ssh to accomplish this: see the rsh and ssh man pages for further information.
You can run Legion commands on a remote host using rsh or ssh, once you set the proper environment variables. For sh, ksh, or bash, use:
Optional parameters do the following:
legion_startup [-local] [-debug] [-help]
Starts up basic Legion services. The following optional parameters are supported:
| -local | starts up only a local host or vault. |
| -debug | Catch and print Legion exceptions. |
| -help | Print command syntax and exit. |
legion_startvault [-L <$LEGION>] [-O <$LEGION_OPR>] [-A <$LEGION_ARCH>] [-N <context name>] [-U <user id>] {<host name>} [<compatible host list>] [-debug] [-help]
Creates a new vault object on the specified <host name>, using the legion_create_object_r command (automatically invoked on the host class). The <host name> is the host's DNS name.
This command uses remote shell (rsh or ssh) classes to start a new vault object on a specified host. Please note that you must be able to run rsh/ssh on the target host from your current machine without having to enter a password. You can set up an .rhosts file for rsh or an authorized_keys file for ssh to accomplish this: see the rsh and ssh man pages for further information.
You can run Legion commands on a remote host using rsh or ssh, once you set the proper environment variables. For sh, ksh, or bash, use:
The following optional parameters are supported:
legion_class_host_list [[-c] <class context name> | -l <class LOID>] [{-a | -d | -t} <host1> <host2> ... <hostn>] [-p] [-debug] [-help]
Manipulates the list of hosts upon which the class named in <class context path> or <class LOID> can place its instances. The list of acceptable hosts for a given class consists only of hosts that have been added to the list. The list therefore may not necessarily include all possible hosts. If there are no hosts listed as acceptable the user can assume that all hosts are acceptable.
Note also that if you identify the class by its context name in the first parameter (i.e., myClass) you must use the hosts' context names in the [<host1> <host2> ... <hostn>] parameter. Similarly, if you name the class by its LOID (with the -l flag) you must use the hosts' LOIDs. If you were to enter:
$ legion_class_host_list /class/myClass -t 1.01.07.d59d...
You would get an error message. Legion will treat the host's LOID as a context name.
The example below adds a new host to the list of acceptable hosts of BasicFileClass, using the -A flag.
$ legion_class_host_list /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 /class/BasicFileClass -p ** ACCEPTIBLE HOST LISTING: ** 1.01.07.d59d1a40.000001fc094e23... $
The following optional parameters are supported:
You can use the -a, -d, and -t flags more than once when running the command but regardless of how you list them on the command line Legion will process them in a specific order when you run the command: first adding any new hosts, then deleting old hosts, then testing any hosts, and finally printing out the results.
legion_class_vault_list [[-c] <class context path> | -l <class LOID>} [{-a | -d | -t} <vault1> <vault2> ... <vaultn>] [-p] [-debug] [-help]
Manipulates the list of vaults upon which the class named in <class context path> or <class LOID> can place its instances' OPRs. Note that if you identify the class by its context name in the first parameter (i.e., myClass) you must name the vaults by their context names in the [<vault1> <vault2> ... <vaultn>] parameter. Similarly, if you name the class by its LOID (with the -l flag) you must use the vaults' LOIDs. If you were to enter:
You would get an error message. Legion will treat the vault's LOID as a context name.
You can use the -a, -d, and -t flags more than once when running the command but regardless of how you list them on the command line Legion will process them in a specific order when you run the command: first adding any new vaults, then deleting old vaults, then testing any vaults, and finally printing out the results.
legion_config_scheduler {[-c] <scheduler context path> | -l <scheduler LOID>} [-get_enactor] [-get_collection] [-set_enactor {[-c] <enactor context path> | -l <enactor LOID>}] [-set_collection {[-c] <collection path> | -l <collection LOID>}] [-debug] [-help]
This command can be used to query or configure the helper objects used by a basic Legion scheduler. Basic Legion scheduler objects use a collection helper object to obtain information about available resources upon which they can schedule objects. After constructing a schedule, basic Legion schedulers use an enactor helper object to implement scheduling decisions (to actually start up the scheduled objects). Use this command to assign a particular collection and enactor to a basic Legion scheduler or vice versa.
The following optional parameters are supported:
legion_host_vault_list {[-c] <host context path> | -l <host LOID>] [{-a | -d | -t} <vault1> <vault2> ... <vaultn>] [-p] [-debug] [-help]
Used to display and manipulate list of vaults with which the host named in <host context path> or <host LOID> can interoperate. Note also that if you identify the host by its context name in the first parameter (i.e., as foo) you must also identify the vaults by their context names in the [<vault1> <vault2> ... <vaultn>] parameter. Conversely, if you name the host by its LOID (via the -l flag) you must identify the vaults by their LOIDs. That is, if you enter:
$ legion_host_vault_list /host/HostName -t 1.01.03.d49...
You will get an error message. Legion will treat the vault's LOID as a context name.
To list the vaults that a host can operate on use the -p flag:
$ legion_host_vault_list /hosts/HostName -p ** COMPATIBLE VAULT LISTING: ** 1.01.03.d49d1a40.000001fc0a69cbb845... $
The following optional parameters are supported:
| -l | Use dotted hex LOIDs to specify host and vault. |