Changes between Version 1 and Version 2 of Omni


Ignore:
Timestamp:
09/10/10 13:07:12 (11 years ago)
Author:
Josh Karlin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Omni

    v1 v2  
    1 The Omni GENI Client -
     1= The Omni GENI Client =
    22
    33Omni is an end-user GENI client that communicates with GENI Aggregate
     
    1919
    2020Omni works by
    21 - The Framework classes know the API for each clearinghouse
    22 - Aggregate Managers are contacted via the GENI API
    23 - RSpecs are converted to a very simple common 'omnispec'
     21 * The Framework classes know the API for each clearinghouse
     22 * Aggregate Managers are contacted via the GENI API
     23 * RSpecs are converted to a very simple common 'omnispec'
    2424format. Users (hand) edit these and supply these to createsliver calls.
    2525
    26 Omnispecs
    27 ---------
     26== Omnispecs ==
    2827Each OmniResource has a name, a description, a type, booleans
    2928indicating whether the resource is allocated and whether the request
    3029wants to allocate it, and then hashes for options and misc fields.
    3130
    32 Extending Omni
    33 --------------
     31== Extending Omni ==
    3432Extending Omni to support additional types of Aggregate Managers with
    3533different RSpec formats requires adding a new omnispec/rspec conversion file.
     
    3836clearinghouse APIs requires adding a new Framework extension class.
    3937
    40 Omni workflow
    41 =============
    42 - Pick a Clearinghouse you want to use. That is the control framework you
    43  will use.
     38== Omni workflow ==
     39 1. Pick a Clearinghouse you want to use. That is the control framework you
     40  will use.
    4441
    45 - Be sure the appropriate section of omni config for your framework
    46 (sfa/gcf/pg) has appropriate settings for contacting that Clearinghouse,
    47 and user credentials that are valid for that Clearinghouse.
     42 2. Be sure the appropriate section of omni config for your framework
     43  (sfa/gcf/pg) has appropriate settings for contacting that Clearinghouse,
     44  and user credentials that are valid for that Clearinghouse.
    4845
    49 - Run omni listresources > avail-resources.omnispec
    50 a) When you do this, Omni will contact your designated Clearinghouse, using
    51 your framework-specific user credentials.
    52 b) The clearinghouse will list the Aggregates it knows about.
    53 EG for GCF, the am_* entries in gcf_config. For SFA, it will return the
    54 contents of /etc/sfa/geni_aggregates.xml.
    55 c) Omni will then contact each of the Aggregates that the Clearinghouse told
    56 it about, and use the GENI AM API to ask each for its resources.
    57 Again, it will use your user credentials. So each Aggregate Manager must
    58 trust the signer of your user credentials, in order for you to talk
    59 to it. This is why you add the CH certificate to /etc/sfa/trusted_roots or to
    60 the -r argument of your GCF gcf-am.py.
    61 d) Omni will then convert the proprietary RSPecs into a single 'omnispec'.
     46 3. Run omni listresources > avail-resources.omnispec
     47  a. When you do this, Omni will contact your designated Clearinghouse, using your framework-specific user credentials.
     48  b. The clearinghouse will list the Aggregates it knows about. EG for GCF, the am_* entries in gcf_config. For SFA, it will
     49   return the contents of /etc/sfa/geni_aggregates.xml.
     50  c. Omni will then contact each of the Aggregates that the Clearinghouse told it about, and use the GENI AM API to ask
     51  each for its resources. Again, it will use your user credentials. So each Aggregate Manager must  trust the signer of your
     52  user credentials, in order for you to talk to it. This is why you add the CH certificate to /etc/sfa/trusted_roots or to the
     53  -r argument of your GCF gcf-am.py.
     54  d. Omni will then convert the proprietary RSPecs into a single 'omnispec'.
    6255
    63 - Save this to a file. You can then edit this file to reserve resources,
    64 by changing 'allocate: false' to 'allocate: true' wherever the resource
    65 is not already allocated ('allocated: true').
     56 4. Save this to a file. You can then edit this file to reserve resources, by changing
     57  'allocate: false' to 'allocate: true' wherever the resource is not already allocated
     58  ('allocated: true').
    6659
    67 - Create a Slice.
    68 Slices are created at your Clearinghouse. Slices are named based on
    69 the Clearinghouse authority that signs for them. Using the shorthand
    70 (just the name of your slice within PG, for example) allows Omni to
    71 ensure your Slice is named correctly. So run:
    72 omni.py createslice MyGreatTestSlice
     60 5. Create a Slice.
     61  Slices are created at your Clearinghouse. Slices are named based on the
     62  Clearinghouse authority that signs for them. Using the shorthand (just
     63  the name of your slice within PG, for example) allows Omni to ensure
     64  your Slice is named correctly. So run: omni.py createslice MyGreatTestSlice
    7365
    74 - Allocate your Resources
    75 Given a slice, and your edited omnispec file, you are ready to allocate
    76 resources by creating slivers at each of the Aggregate Managers.
    77 Omni will contact your Clearinghouse again, to get the credentials
    78 for your slice. It will parse your omnispec file, converting it back
    79 into framework specific RSpec format as necessary.
    80 It will then contact each Aggregate Manager in your
    81 omnispec where you are reserving resources, calling the GENI AM API
    82 CreateSliver call on each. It will supply your Slice Credentials
    83 (from the Clearinghouse) plus your own user certificate, and the RSpec.
     66 6. Allocate your Resources
     67  Given a slice, and your edited omnispec file, you are ready to allocate
     68  resources by creating slivers at each of the Aggregate Managers.
     69  Omni will contact your Clearinghouse again, to get the credentials
     70  for your slice. It will parse your omnispec file, converting it back
     71  into framework specific RSpec format as necessary.
     72  It will then contact each Aggregate Manager in your
     73  omnispec where you are reserving resources, calling the GENI AM API
     74  CreateSliver call on each. It will supply your Slice Credentials
     75  (from the Clearinghouse) plus your own user certificate, and the RSpec.
    8476
    85 At this point, you have resources and can do your experiment.
     77  At this point, you have resources and can do your experiment.
    8678
    87 - Renew or Delete
    88 After a while you may want to Renew your Sliver that is expiring, or
    89 Delete it. Omni will contact the Clearinghouse, get a list of all
    90 Aggregates, and invoke RenewSliver or DeleteSliver on each, for
    91 your slice name.
     79 7. Renew or Delete
     80  After a while you may want to Renew your Sliver that is expiring, or
     81  Delete it. Omni will contact the Clearinghouse, get a list of all
     82  Aggregates, and invoke RenewSliver or DeleteSliver on each, for
     83  your slice name.
    9284
    93 Running Omni -
     85== Running Omni ==
    9486
    95 == The following options are supported: ==
     87=== The following options are supported: ===
    9688
    9789-c FILE -- location of your config file (default ~/.gcf/omni_config)
     
    10294--debug -- Enable debug output
    10395
    104 == The following commands are supported: ==
     96=== The following commands are supported: ===
    10597
    106 ** createslice
    107 - format:  omni.py createslice <slice-name>
    108 - example: omni.py createslice myslice
     98==== createslice ====
     99 * format:  omni.py createslice <slice-name>
     100 * example: omni.py createslice myslice
    109101
    110102  Creates the slice in your chosen control framework.
     
    116108  omni_config.
    117109
    118 
    119 ** deleteslice
    120 - format:  omni.py deleteslice <slice-name>
    121 - example: omni.py deleteslice myslice
     110==== deleteslice ====
     111 * format:  omni.py deleteslice <slice-name>
     112 * example: omni.py deleteslice myslice
    122113
    123114  Deletes the slice in your chosen control framework
    124115
    125116
    126 ** listresources
    127 - format:  omni.py listresources [slice-name] [-a AM-URL] [-n]
    128 - example: omni.py listresources
     117==== listresources ====
     118 * format:  omni.py listresources [slice-name] [-a AM-URL] [-n]
     119 * example: omni.py listresources
    129120           omni.py listresources myslice
    130121           omni.py listresources myslice -a http://localhost:12348
     
    145136
    146137
    147 ** createsliver
    148 - format:  omni.py createsliver <slice-name> [-a AM-URL -n] <spec file>
    149 - example: omni.py createsliver myslice resources.ospec
     138==== createsliver ====
     139 * format:  omni.py createsliver <slice-name> [-a AM-URL -n] <spec file>
     140 * example: omni.py createsliver myslice resources.ospec
    150141           omni.py createsliver myslice -a http://localhost:12348 -n resources.rspec
    151142
    152 - argument: the spec file should have been created by a call to
     143 * argument: the spec file should have been created by a call to
    153144            listresources (e.g. omni.py listresources > resources.ospec)
    154145            Then, edit the file and set "allocate": true, for each
     
    161152  native rspec to a single aggregate specified by the "-a" command.
    162153
    163 
    164 ** deletesliver
    165 - format:  omni.py deletesliver <slice-name>
    166 - example: omni.py deletesliver myslice
     154==== deletesliver ====
     155 * format:  omni.py deletesliver <slice-name>
     156 * example: omni.py deletesliver myslice
    167157
    168158        This command will free any resources associated with your slice. 
     
    170160
    171161
    172 ** renewsliver
    173 - format:  omni.py renewsliver <slice-name> "<time>"
    174 - example: omni.py renewsliver myslice "12/12/10 4:15pm"
    175 - example: omni.py renewsliver myslice "12/12/10 16:15"
     162==== renewsliver ====
     163 * format:  omni.py renewsliver <slice-name> "<time>"
     164 * example: omni.py renewsliver myslice "12/12/10 4:15pm"
     165 * example: omni.py renewsliver myslice "12/12/10 16:15"
    176166
    177167        This command will renew your resources at each aggregate up to the
     
    181171
    182172
    183 ** sliverstatus
    184 - format: omni.py sliverstatus <slice-name>
    185 - example: omni.py sliverstatus myslice
     173==== sliverstatus ====
     174 * format: omni.py sliverstatus <slice-name>
     175 * example: omni.py sliverstatus myslice
    186176
    187177        This command will get information from each aggregate about the
     
    189179
    190180
    191 ** shutdown
    192 - format:  omni.py shutdown <slice-name>
    193 - example: omni.py shutdown myslice
     181==== shutdown ====
     182 * format:  omni.py shutdown <slice-name>
     183 * example: omni.py shutdown myslice
    194184
    195185  This command will stop the resources from running, but not delete