| 69 | |
| 70 | === Fedid.py === |
| 71 | |
| 72 | The `fedid.py` command prints the [Feddabout#Globalidentifiers:Fedids fedid] of the public key of an X.509 certificate to the standard output. This is handy in getting fedids for the various [FeddDatabases databases] that `fedd` uses. The command is invoked with 0 or more '''--attribute='''''attr'' parameters and 0 or more filenames. The command prints the fedids and the attributes in the format of a [FeddDatabases#GlobalAccessDB global access database] and can be used directly to construct those files. For example, this invocation: |
| 73 | |
| 74 | {{{ |
| 75 | $ fedid.py --attribute=split --attribute=allocate fedd.pem deterboss.pem |
| 76 | }}} |
| 77 | |
| 78 | produces |
| 79 | |
| 80 | {{{ |
| 81 | fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea split,allocate |
| 82 | fedid:9b8e7f2b114956ad516befc93fa7e7eae3751bf9 split,allocate |
| 83 | }}} |
| 84 | |
| 85 | === User_to_project.py === |
| 86 | |
| 87 | The `user_to_project.py` command exists to provide command line functionality that Emulab keeps in a web page. It attaches a user to a project. It is called by a `fedd` running on `boss` when a project is dynamically created. Its default installation destination and the default value for the [experiment_control] parameter '''user_to_project''' both default to `/usr/local/bin/user_to_project.py`. It is unlikely a user will ever need to run this command. |
| 88 | |
| 89 | == Command Line == |
| 90 | |
| 91 | These scripts make up the command line interface to the federation system. They remain the most versatile and powerful way to create and manage federated experiments. Most of these commands communicate with the experiment controller through either a SOAP or XMLRPC interface to carry out their functions. |
| 92 | |
| 93 | All are installed in {{{/usr/local/bin}}} by default. |
| 94 | |
| 95 | All the command line tools accept the following arguments: |
| 96 | |
| 97 | '''--cert='''''filename'':: |
| 98 | Certificate from which to derive the user's [FeddAbout#GlobalIdentifiers:Fedids fedid]. By default the contents of `.ssl/emulab.pem` in the user's home directory is used. |
| 99 | '''--debug''':: |
| 100 | Produce additional debugging output. |
| 101 | '''--serializeOnly''':: |
| 102 | Do not contact the `fedd`, but just print the SOAP or XMLRPC message to the standard output. |
| 103 | '''--trusted='''''filename'':: |
| 104 | Use the certificates in ''filename'' as certificate authorities to confirm the server's identity. Optional. |
| 105 | '''--url='''''fedd_url''':: |
| 106 | Fedd to contact. |
| 107 | '''--transport=[xmlrpc|soap]''':: |
| 108 | Use the given encoding of the service request. |
| 109 | '''--trace''':: |
| 110 | Print the SOAP exchanges to stderr. Currently only the SOAP transport is supported. |
| 111 | |
66 | | This command creates a federated experiment from an experiment description. It does the equivalent of a call to `fedd_new.py` to make an allocation and then attaches resources and services as described in the description file. On completion it returns the name of the experiment, and if requested using the '''--experiment_cert''' parameter, a certificate that grants access to the experiment. |
67 | | |
68 | | When `fedd_create.py` returns, the experiment has not yet fully been created, it is simply in progress. Users can poll the experiment controller by issuing `fedd_multistatus.py` commands or wait for the experiment to be instantiated using `fedd_spewlog.py`. |
| 114 | This command creates a federated experiment from an experiment description. It does the equivalent of a call to [FeddCommands#fedd_new.py fedd_new.py] to make an allocation and then attaches resources and services as described in the description file. On completion it returns the name of the experiment, and if requested using the '''--experiment_cert''' parameter, a certificate that grants access to the experiment. |
| 115 | |
| 116 | When `fedd_create.py` returns, the experiment has not yet fully been created, it is simply in progress. Users can poll the experiment controller by issuing [FeddCommnads#fedd_multistatus.py fedd_multistatus.py] commands or wait for the experiment to be instantiated using [FeddCommands#fedd_spewlog.py fedd_spewlog.py]. |
| 117 | |
| 118 | `fedd_create.py` takes the following arguments: |
| 119 | |
| 120 | '''--experiment_cert='''''filename'':: |
| 121 | Store the certificate used to access the resulting experiment in ''filename''. This certificate can be used as an input parameter to the terminate and informational commands below, but is an output parameter here. |
| 122 | '''--experiment_name='''''exp_name'':: |
| 123 | Suggest ''exp_name'' to the `fedd` as a local identifier for the federated experiment. The actual local name chosen will be returned from the command. |
| 124 | '''--file='''''filename'':: |
| 125 | File containing the [FeddAbout#ExperimentDescriptions experiment description]. |
| 126 | '''--project='''''export_project'':: |
| 127 | The local project to export from the master testbed. |
| 128 | '''--master='''''master_testbed'':: |
| 129 | The master testbed. This should correspond to one of the annotations used for testbed names in the experiment. The `fedd` will use its [FeddDatabases#ExperimentNameMappingDB experiment name mapping DB] to resolve that name to a testbed. |
| 130 | |
| 131 | |
| 132 | |
| 133 | |
| 134 | |
| 135 | |
| 136 | |
| 137 | |
195 | | |
196 | | == Fedid.py == |
197 | | |
198 | | The `fedid.py` command prints the [Feddabout#Globalidentifiers:Fedids fedid] of the public key of an X.509 certificate to the standard output. This is handy in getting fedids for the various [FeddDatabases databases] that `fedd` uses. The command is invoked with 0 or more '''--attribute='''''attr'' parameters and 0 or more filenames. The command prints the fedids and the attributes in the format of a [FeddDatabases#GlobalAccessDB global access database] and can be used directly to construct those files. For example, this invocation: |
199 | | |
200 | | {{{ |
201 | | $ fedid.py --attribute=split --attribute=allocate fedd.pem deterboss.pem |
202 | | }}} |
203 | | |
204 | | produces |
205 | | |
206 | | {{{ |
207 | | fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea split,allocate |
208 | | fedid:9b8e7f2b114956ad516befc93fa7e7eae3751bf9 split,allocate |
209 | | }}} |
210 | | |
211 | | == User_to_project.py == |
212 | | |
213 | | The `user_to_project.py` command exists to provide command line functionality that Emulab keeps in a web page. It attaches a user to a project. It is called by a `fedd` running on `boss` when a project is dynamically created. Its default installation destination and the default value for the [experiment_control] parameter '''user_to_project''' both default to `/usr/local/bin/user_to_project.py`. It is unlikely a user will ever need to run this command. |