Changes between Initial Version and Version 1 of Omni


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

--

Legend:

Unmodified
Added
Removed
Modified
  • Omni

    v1 v1  
     1The Omni GENI Client -
     2
     3Omni is an end-user GENI client that communicates with GENI Aggregate
     4Managers and presents their resources with a uniform specification,
     5known as the omnispec.  The Omni client can also communicate with
     6control frameworks in order to create slices, delete slices, and
     7enumerate available GENI Aggregate Managers.
     8Note that Omni also supports using control framework native RSpecs.
     9
     10To configure Omni, please copy src/omni_config or /etc/omni/templates/omni_config
     11to your ~/.gcf directory and fill in the parameters for at least one control
     12framework.  The "omni" section should be filled in with the
     13certificate and key that you use in your control framework.  Note that keys
     14for the GCF framework are by default stored in ~/.gcf-servers. Embedded
     15comments describe the meaning of each field.
     16
     17The currently supported control frameworks are SFA, PG and GCF. OpenFlow
     18Aggregate Managers are also supported.
     19
     20Omni 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'
     24format. Users (hand) edit these and supply these to createsliver calls.
     25
     26Omnispecs
     27---------
     28Each OmniResource has a name, a description, a type, booleans
     29indicating whether the resource is allocated and whether the request
     30wants to allocate it, and then hashes for options and misc fields.
     31
     32Extending Omni
     33--------------
     34Extending Omni to support additional types of Aggregate Managers with
     35different RSpec formats requires adding a new omnispec/rspec conversion file.
     36
     37Extending Omni to support additional frameworks with their own
     38clearinghouse APIs requires adding a new Framework extension class.
     39
     40Omni workflow
     41=============
     42- Pick a Clearinghouse you want to use. That is the control framework you
     43 will use.
     44
     45- Be sure the appropriate section of omni config for your framework
     46(sfa/gcf/pg) has appropriate settings for contacting that Clearinghouse,
     47and user credentials that are valid for that Clearinghouse.
     48
     49- Run omni listresources > avail-resources.omnispec
     50a) When you do this, Omni will contact your designated Clearinghouse, using
     51your framework-specific user credentials.
     52b) The clearinghouse will list the Aggregates it knows about.
     53EG for GCF, the am_* entries in gcf_config. For SFA, it will return the
     54contents of /etc/sfa/geni_aggregates.xml.
     55c) Omni will then contact each of the Aggregates that the Clearinghouse told
     56it about, and use the GENI AM API to ask each for its resources.
     57Again, it will use your user credentials. So each Aggregate Manager must
     58trust the signer of your user credentials, in order for you to talk
     59to it. This is why you add the CH certificate to /etc/sfa/trusted_roots or to
     60the -r argument of your GCF gcf-am.py.
     61d) Omni will then convert the proprietary RSPecs into a single 'omnispec'.
     62
     63- Save this to a file. You can then edit this file to reserve resources,
     64by changing 'allocate: false' to 'allocate: true' wherever the resource
     65is not already allocated ('allocated: true').
     66
     67- Create a Slice.
     68Slices are created at your Clearinghouse. Slices are named based on
     69the Clearinghouse authority that signs for them. Using the shorthand
     70(just the name of your slice within PG, for example) allows Omni to
     71ensure your Slice is named correctly. So run:
     72omni.py createslice MyGreatTestSlice
     73
     74- Allocate your Resources
     75Given a slice, and your edited omnispec file, you are ready to allocate
     76resources by creating slivers at each of the Aggregate Managers.
     77Omni will contact your Clearinghouse again, to get the credentials
     78for your slice. It will parse your omnispec file, converting it back
     79into framework specific RSpec format as necessary.
     80It will then contact each Aggregate Manager in your
     81omnispec where you are reserving resources, calling the GENI AM API
     82CreateSliver call on each. It will supply your Slice Credentials
     83(from the Clearinghouse) plus your own user certificate, and the RSpec.
     84
     85At this point, you have resources and can do your experiment.
     86
     87- Renew or Delete
     88After a while you may want to Renew your Sliver that is expiring, or
     89Delete it. Omni will contact the Clearinghouse, get a list of all
     90Aggregates, and invoke RenewSliver or DeleteSliver on each, for
     91your slice name.
     92
     93Running Omni -
     94
     95== The following options are supported: ==
     96
     97-c FILE -- location of your config file (default ~/.gcf/omni_config)
     98
     99-f FRAMEWORK -- control framework to use (e.g. my_sfa), overriding default
     100 in config file.  The framework is a section named in the config file.
     101
     102--debug -- Enable debug output
     103
     104== The following commands are supported: ==
     105
     106** createslice
     107- format:  omni.py createslice <slice-name>
     108- example: omni.py createslice myslice
     109
     110  Creates the slice in your chosen control framework.
     111
     112  Default GCF certs require a slice named geni.net:gpo:gcf+slice+<name>
     113  based on the base_name section of gcf_config.  The shorthand notation
     114  is available for SFA and PG.  Shorthand works if your control framework is GCF
     115  only if you have configured the 'authority' line in the gcf section of
     116  omni_config.
     117
     118
     119** deleteslice
     120- format:  omni.py deleteslice <slice-name>
     121- example: omni.py deleteslice myslice
     122
     123  Deletes the slice in your chosen control framework
     124
     125
     126** listresources
     127- format:  omni.py listresources [slice-name] [-a AM-URL] [-n]
     128- example: omni.py listresources
     129           omni.py listresources myslice
     130           omni.py listresources myslice -a http://localhost:12348
     131           omni.py listresources myslice -a http://localhost:12348 -n
     132                   
     133  This command will list the rspecs of all geni aggregates available
     134  through your chosen framework, and present them in omnispec form.
     135  Save the result to a file and edit the allocate value to true
     136  to set up a reservation RSpec, suitable for use in a call to
     137  createsliver.
     138  If a slice name is supplied, then resources for that slice only
     139  will be displayed.
     140  If an Aggregate Manager URL is supplied, only resources
     141  from that AM will be listed.
     142  If the "-n" flag s used the native RSpec is returned instead of an
     143  omnispec. The "-n" flag requires the "-a" flag also be used to
     144  specify an aggregate manager.
     145
     146
     147** createsliver
     148- format:  omni.py createsliver <slice-name> [-a AM-URL -n] <spec file>
     149- example: omni.py createsliver myslice resources.ospec
     150           omni.py createsliver myslice -a http://localhost:12348 -n resources.rspec
     151
     152- argument: the spec file should have been created by a call to
     153            listresources (e.g. omni.py listresources > resources.ospec)
     154            Then, edit the file and set "allocate": true, for each
     155                        resource that you want to allocate.
     156
     157  This command will allocate the requested resources (those marked
     158  with allocate: true in the rspec).  It will send an rspec to each
     159  aggregate manager that a resource is requested for.
     160  This command can also operate in native mode "-n" by sending a
     161  native rspec to a single aggregate specified by the "-a" command.
     162
     163
     164** deletesliver
     165- format:  omni.py deletesliver <slice-name>
     166- example: omni.py deletesliver myslice
     167
     168        This command will free any resources associated with your slice. 
     169
     170
     171
     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"
     176
     177        This command will renew your resources at each aggregate up to the
     178        specified time.  This time must be less than or equal to the time
     179        available to the slice.
     180        Times are in UTC.
     181
     182
     183** sliverstatus
     184- format: omni.py sliverstatus <slice-name>
     185- example: omni.py sliverstatus myslice
     186
     187        This command will get information from each aggregate about the
     188        status of the specified slice
     189
     190
     191** shutdown
     192- format:  omni.py shutdown <slice-name>
     193- example: omni.py shutdown myslice
     194
     195  This command will stop the resources from running, but not delete
     196        their state.  This command should not be needed by most users.