Changes between Version 112 and Version 113 of GAPI_AM_API_DRAFT


Ignore:
Timestamp:
03/19/14 11:09:51 (10 years ago)
Author:
Aaron Helsinger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GAPI_AM_API_DRAFT

    v112 v113  
    274274This change set adds some additional information to the return from `GetVersion`.
    275275
    276 This change set was adopted at the GEC15 coding sprint. Aggregates may implement this as part of their AM API v3 implementation, but will be required to do so as part of AM API v4.
     276This change set was discussed at the GEC15 coding sprint and '''adopted at GEC19'''. Aggregates may implement this as part of their AM API v3 implementation, but will be required to do so as part of AM API v4.
    277277
    278278=== Change Set N1: Add `geni_am_code_version` ===
     
    322322
    323323== Change Set O: Refine character restrictions ==
    324 This change set was adopted at the GEC15 coding sprint. Aggregates may implement this as part of their AM API v3 implementation, but will be required to do so as part of AM API v4.
     324This change set was dicussed at the GEC15 coding sprint. Aggregates may implement this as part of their AM API v3 implementation, but will be required to do so as part of AM API v4.
    325325
    326326=== Change Set O1: Allow other characters in sliver names ===
    327327Currently we heavily constrain legal characters in the 'name' portion of sliver URNs. See GeniApiIdentifiers. This is awkward. In particular characters like periods, and underscores are not allowed, but are very useful as separators.
    328328
     329'''This change set was adopted at GEC19'''. Aggregates may start using these modified sliver names.
     330
    329331This change set proposes modifying the name portion of the URN rules as follows. Note that these changes loosen existing restrictions, and so are backwards compatible (existing sliver names remain legal). Note also that this change simple allows aggregates to use these other characters in their own identifiers, if they so choose.
    330332
     
    335337Various fields in the AM API specification are defined only as strings, without explicit limits on legal characters. This makes it awkward to pass these values to and from scripts. In particular, many fields should only be alphanumeric, plus some limited number of separator characters.
    336338
     339'''This change set was adopted at GEC19'''. This change is required in AM APIv4, optional earlier.
     340
    337341This change set proposes constraining several options/return values that are currently defined only as 'string'.
    338342
     
    352356 5. From the return of multiple methods, `geni_operational_status`: alphanumeric plus underscore; alphanumeric only in first character: `'^[a-zA-Z0-9][a-zA-Z0-9_]*$'`
    353357
    354 === Change Set O3: Allow unicode values ===
     358=== Deferred: Change Set O3: Allow unicode values ===
    355359Many values defined by this API appear to be limited to ASCII characters - both arguments and returns. We would like to support internationalization. Some values in this API (e.g. those defined as URLs) implicitly support unicode. Currently, a well behaved aggregate should be able to handle unicode values in at least some arguments. Similarly, a well behaved client should be able to handle unicode returns.
     360
     361''This change set was discussed and deferred at GEC19''. We do not yet have sufficient motivation, and their are questions about this proposal.
    356362
    357363This change would clarify the support for internationalization in this API, and allow aggregates to specify unicode support. This change should not require any clients or aggregates to make changes. This change would specify:
     
    367373
    368374== Change Set P: Support proxy clients that 'Speak For' an experimenter ==
     375
     376'''This change set was adopted at GEC19'''. This functionality may be implemented in AM API v2, and is required in AM API v4.
    369377
    370378GENI tools invoke AM API methods on behalf of experimenters. When that tool instance is well known and trusted by the experimenter, and runs local to a single experimenter, then it is reasonable for that tool to be given the experimenter's private key and public certificate, and 'speak as' the experimenter. But for a hosted tool that might act for multiple experimenters it is both more secure and more clear what is happening for such tools to have their own identity certificate and private key by which each tool instance authenticates to AM API calls, and use a new 'Speaks For' credential (or credential set) to authorize the tool instance to take a given action. The experimenter will issue such credentials to the tool instance (possibly scoped by time, slice, aggregate, or other dimension), and the aggregate can then properly assign the resources to the experimenter, while logging and reporting that the tool performed the operation. This functionality can also be used for an experimenter to authorize a 'proxy' aggregate or an aggregate of aggregates.
     
    431439== Change Set Q: Support changing users and keys on existing compute slivers ==
    432440
     441'''This change set was adopted at GEC19.'''
     442
    433443Experimenters often want to change the users and/or SSH keys installed on existing running compute nodes, in a way that is persistent and consistent with any aggregate manager controlled processes. This is theoretically possible through the use of `Update()`, but the semantics are not clear there.
    434444
     
    508518
    509519== Change Set S: More info from `GetVersion` ==
    510 `GetVersion` should return an additional field indicate the URN(s) of the Aggregate Manager at this endpoint. This corresponds to the URN IDs of the `component_manager` or `component_manager_id` from the advertisement RSpec produced by this aggregate.
    511 
    512 At many aggregates, this is a single URN. But at some aggregates that proxy for multiple component managers, this may be a list of URNs.
    513 
    514 '''FIXME''':
    515  - `geni_urn`? `geni_component_manager_urn`?
    516  - Presumably this must be a list?
    517  - Do aggregates ever have a single URN identifier?
     520`GetVersion` should return an additional field indicate the URN(s) of the Aggregate Manager at this endpoint. This corresponds to the URN in the certificate of the aggregate, or the URN that the aggregate uses if reporting slivers to the Federation SA API. For aggregates that have a single component manager, then this is likely the `component_manager` or `component_manager_id` from the advertisement RSpec produced by this aggregate. Aggregates which have multiple component managers must select a single AM URN, which may be the same as one of the component manager URNs.
     521
     522Proposal: `GetVersion` adds the field `geni_am_urn` whose value is the URN of the aggregate manager running at this XMLRPC endpoint.
    518523
    519524== Change Set T: Long Lived Slices ==
    520525This topic was raised at the [wiki:GEC18Agenda/CodingSprintTutoring#SessionSummary GEC18 Coding Sprint].
     526
     527The topic was later discussed at GEC19. Other proposals have been surfaced, including having aggregates sign credentials to users rather than the SA.
    521528
    522529This proposal provides a way to support long running experiments that require slices and resource reservations with long lives. This proposal requires changes to Slice Authorities and aggregates.