| 65 | |
| 66 | == Change Set N: Add information to `GetVersion` == |
| 67 | This change set adds some additional information to the return from `GetVersion`. |
| 68 | |
| 69 | === Change Set N1: Add `geni_am_version` === |
| 70 | Aggregates use varying ways to identify the software version their AM uses. SFA and PG use `code_tag`, Orca uses `orca_version`, and FOAM |
| 71 | uses `foam_version`. Automatically identifying software versions is important for monitoring and GENI operations. |
| 72 | |
| 73 | This change set proposes adding `geni_am_version` to the return from `GetVersion`. |
| 74 | * The value is a string. |
| 75 | * Legal characters are: alphanumeric, space, `-` (hyphen), `.`, `:` (colon), `#`, `_` (underscore), `+`, `(`, `)` |
| 76 | * Regular expression: `'^[a-zA-Z0-9-\.:#_\+\(\)]+$'` |
| 77 | |
| 78 | === Change Set N2: Add `geni_am_type` === |
| 79 | Aggregates are allowed to include AM specific return values, or even implement custom methods as part of the same interface. |
| 80 | Currently, there is no consistent way to identify what type of aggregate a given instance is, so as to know what additional attributes or options may be used. |
| 81 | |
| 82 | This change set proposes adding `geni_am_type` to the return from `GetVersion`. |
| 83 | * The value is a string. |
| 84 | * Legal characters: alphanumeric |
| 85 | * Values should be one of the defined geni AM types if applicable, as defined by the AM API [http://groups.geni.net/wiki/attachment/GAPI_AM_API_V3/CommonConcepts/geni-am-types.xml geni-am-types.xml]. (E.G. one of `orca`, `foam`, `protogeni`, `sfa`.) |
| 86 | |
| 87 | === Change Set N3: Use consistent types and prefixes === |
| 88 | Make am_type, geni_am_type, and AM specific prefixes for new options consistent. |
| 89 | |
| 90 | The AM API specifies an `am_type` field as part of the `code` in the basic return structure. This field has a set of prescribed values. |
| 91 | |
| 92 | [#ChangeSetN2:Addgeni_am_type An earlier proposal] adds a `geni_am_type` return to `GetVersion`. |
| 93 | |
| 94 | The AM API encourages AM specific options and returns. These options and returns should have unique names, but the API does not specify how |
| 95 | to ensure this. |
| 96 | |
| 97 | This proposal aims to standardize these fields. |
| 98 | |
| 99 | `am_type` and `geni_am_type`: |
| 100 | * The value is a string. |
| 101 | * Legal characters: alphanumeric |
| 102 | * Values should be one of the defined geni AM types if applicable, as defined by the AM API [http://groups.geni.net/wiki/attachment/GAPI_AM_API_V3/CommonConcepts/geni-am-types.xml geni-am-types.xml]. (E.G. one of `orca`, `foam`, `protogeni`, `sfa`.) |
| 103 | |
| 104 | Aggregate specific options and return attributes should be named with a prefix denoting the aggregate type. It should be the same as the `am_type` and `geni_am_type` for this aggregate. Therefore, character restrictions are: |
| 105 | * The value is a string. |
| 106 | * Legal characters: alphanumeric |
| 107 | * Values should be one of the defined geni AM types if applicable, as defined by the AM API [http://groups.geni.net/wiki/attachment/GAPI_AM_API_V3/CommonConcepts/geni-am-types.xml geni-am-types.xml]. (E.G. one of `orca`, `foam`, `protogeni`, `sfa`.) |
| 108 | |
| 109 | == Change Set O: Refine character restrictions == |
| 110 | === Change Set O1: Allow other characters in slice and sliver names === |
| 111 | Currently we heavily constrain legal characters in the 'name' portion of slice and sliver URNs. See GeniApiIdentifiers. This is awkward. In particular characters like colons, periods, and underscores are not allowed, but are very useful as separators. |
| 112 | |
| 113 | This change set proposes modifying the name portion or the URN rules as follows: |
| 114 | |
| 115 | '''Slice''': |
| 116 | * Slice names are <=19 characters, only alphanumeric plus hyphen, underscore, period, or colon (alphanumeric only in first character): '^[a-zA-Z0-9][-\._:a-zA-Z0-9]\{0,18\}$' |
| 117 | |
| 118 | '''Sliver''': |
| 119 | * May use only alphanumeric characters plus hyphen, underscore, period, or colon: `'^[a-zA-Z0-9-_\.:]+$'` |
| 120 | |
| 121 | === Change Set O2: Explicitly define legal characters in some strings === |
| 122 | Various 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. |
| 123 | |
| 124 | This change set proposes constraining several options/return values that are currently defined only as 'string'. |
| 125 | |
| 126 | 1. From `getversion` and `listresources` and `describe`, the RSpec `type`: |
| 127 | May use only alphanumeric characters plus hyphen, underscore, period, or colon; alphaumeric only in first character. `'^[a-zA-Z0-9][a-zA-Z0-9-_\.:]*$'` |
| 128 | |
| 129 | 2. From `getversion` and `listresources` and `describe`, the RSpec `version`: |
| 130 | May use only alphanumeric characters plus hyphen, underscore, period, or colon; alphaumeric only in first character. `'^[a-zA-Z0-9][a-zA-Z0-9-_\.:]*$'` |
| 131 | |
| 132 | 3. From `getversion`, the RSpec `schema`, and `namespace`: Any character valid in a URL (see e.g. http://www.w3.org/Addressing/URL/url-spec.txt) |
| 133 | |
| 134 | 4. From `getversion` and the `credentials` argument, the credential `geni_type`: |
| 135 | May use only alphanumeric characters plus hyphen, underscore, period, or colon; alphaumeric only in first character. `'^[a-zA-Z0-9][a-zA-Z0-9-_\.:]*$'` |
| 136 | |
| 137 | 5. From `getversion` and the `credentials argument, the credential `geni_version`: |
| 138 | May use only alphanumeric characters plus hyphen, underscore, period, or colon; alphaumeric only in first character. `'^[a-zA-Z0-9][a-zA-Z0-9-_\.:]*$'` |
| 139 | |
| 140 | 6. From `getversion`, `geni_allocate`: alphanumeric |
| 141 | |
| 142 | 7. From the return of multiple methods, `geni_allocation_status` and `geni_operational_status`: alphanumeric |