Changes between Version 30 and Version 31 of AaronHelsinger/GAPI_AM_API_DRAFT
- Timestamp:
- 03/30/12 09:31:54 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AaronHelsinger/GAPI_AM_API_DRAFT
v30 v31 341 341 }}} 342 342 - Give up the reservation for resources. 343 - Return: Trueor error343 - Return: true (1 in XMLRPC) or error 344 344 - Omitting the ticket causes the aggregate to release the 0 or 1 outstanding tickets for this slice. 345 345 - If this ticket was from !UpdateSlivers, then the sliver returns to the {{{allocated}}} state and existing resources are not modified. … … 497 497 These methods all take a new option (aggregates must support it, clients do not need to supply it): 498 498 {{{ 499 geni_best_effort: < True/False, default False>499 geni_best_effort: <XML-RPC boolean 1/0, default 0> 500 500 }}} 501 501 If false, the client is requesting that the aggregate either fully satisfy the request, moving all listed slivers to the desired state, or fully fail the request, leaving all slivers in their original state. … … 504 504 '''Note''': !CreateSlivers remains all or nothing (either the aggregate can allocate all desired resources as requested, or the call fails). 505 505 506 '''Note''': These calls are synchronous - when they return, the slivers shall be in their final state. In particular, the transition from state 2 to 3 (`geni_allocated` to `geni_provisioned`) should be quick. The resource that is now in the 'provisioned' state may take a long time to actually be ready for operational use (e.g. imaging and booting the node) -- this remains true as in version 2 after !CreateSliver. 506 '''Note''': These calls are synchronous - when they return, the slivers shall be in their final state. In particular, the transition from state 2 to 3 (`geni_allocated` to `geni_provisioned`) should be quick. The resource that is now in the 'provisioned' state may take a long time to actually be ready for operational use (e.g. imaging and booting the node) -- this remains true as in version 2 after !CreateSliver. Note that the `geni_allocated` state is by definition cheap, such that transitioning to this state should also be quick. 507 507 508 508 !SliverStatus, where it currently includes {{{geni_status}}} for each `geni_resource`, shall now return {{{geni_allocation_status}}} with one of the above defined values, and {{{geni_operational_status}}}. The values of {{{geni_operational_status}}} are still under discussion. … … 918 918 ---- 919 919 = Change summary - method signatures = 920 If all change sets listed here are adopted, the final method signatures will be as follows: 920 If the generally agreed-upon change sets listed here are adopted, the final method signatures will be as follows: 921 922 == Common Arguments and Returns == 923 === `credentials` === 924 Many methods take an array of credentials. This is an array of credential type, version, and string value. 925 {{{ 926 credentials = [ 927 { 928 geni_type: <string>, 929 geni_version: <string>, 930 geni_value: <string>, 931 <others> 932 } 933 ] 934 }}} 921 935 922 936 == !GetVersion == 937 Query static configuration information about this aggregate manager implementation, such as API and RSpec versions supported. 923 938 {{{ 924 939 struct GetVersion([optional: struct options]) … … 956 971 957 972 == !ListResources == 973 Retrieve RSpecs listing resources at this aggregate. Without arguments, retrieve an Advertisement RSpec of available resources. With arguments naming a particular slice and/or slivers, retrieve a Manifest RSpec of resources allocated to the given slivers. 974 958 975 {{{ 959 976 struct ListResources(struct credentials[], struct options) … … 975 992 }}} 976 993 977 Where credentials is: 978 {{{ 979 credentials = [ 980 { 981 geni_type: <string>, 982 geni_version: <string>, 983 geni_value: <string>, 984 <others> 985 } 986 ] 987 }}} 994 Where credentials is the standard argument defined above. 988 995 989 996 Where supplying `geni_sliver_urns`, whether or not the `geni_slice_urn` is also supplied, means return a manifest RSpec showing the (allocated or provisioned) slivers listed - not necessarily the complete slice at this aggregate. … … 1013 1020 == !CreateSlivers == 1014 1021 AKA Allocate() 1022 Request resources described by the given request RSpec to be allocated to the given slice. On success, one or more slivers are allocated, containing resources satisfying the request, and assigned to the given slice. The manifest RSpec describing those resources is returned. 1015 1023 {{{ 1016 1024 struct CreateSlivers(string slice_urn, … … 1020 1028 }}} 1021 1029 1022 Where credentials is: 1023 {{{ 1024 credentials = [ 1025 { 1026 geni_type: <string>, 1027 geni_version: <string>, 1028 geni_value: <string>, 1029 <others> 1030 } 1031 ] 1032 }}} 1030 Where credentials is the standard argument defined above. 1033 1031 1034 1032 Options include: … … 1059 1057 == Renew == 1060 1058 AKA !RenewSliver() or !RenewAllocated 1059 Request that the named slivers be renewed, with their expiration extended. If possible, the aggregate should extend the slivers to the requested expiration time, or to a sooner time if policy limits apply. This method applies to slivers that are `geni_allocated` or to slivers that are `geni_provisioned`, though different policies may apply to slivers in the different states, resulting in much shorter max expiration times for `geni_allocated` slivers. 1061 1060 {{{ 1062 1061 struct Renew(string urn[], … … 1066 1065 }}} 1067 1066 1068 Where credentials is: 1069 {{{ 1070 credentials = [ 1071 { 1072 geni_type: <string>, 1073 geni_version: <string>, 1074 geni_value: <string>, 1075 <others> 1076 } 1077 ] 1078 }}} 1079 1080 Options include {{{geni_best_effort: <True/False, default false>}}} 1067 Where credentials is the standard argument defined above. 1068 1069 Options include {{{geni_best_effort: <XML-RPC boolean 1 or 0, default false (0)>}}} 1081 1070 1082 1071 Return list of structs: … … 1098 1087 == !UpdateAllocations == 1099 1088 AKA !UpdateAllocated() 1089 This method modifies a set of allocated slivers in place. The existing reservations are not lost if the newly requested allocations cannot be satisfied by the aggregate. 1090 1091 Details are suppressed pending agreement on this method. 1092 {{{ 1093 #!comment 1094 1100 1095 {{{ 1101 1096 struct UpdateAllocations(string urn[], struct credentials[], string rspec, … … 1103 1098 }}} 1104 1099 1105 Where credentials is: 1106 {{{ 1107 credentials = [ 1108 { 1109 geni_type: <string>, 1110 geni_version: <string>, 1111 geni_value: <string>, 1112 <others> 1113 } 1114 ] 1115 }}} 1116 1117 Options include {{{geni_end_time}}} and {{{geni_best_effort: <True/False, default false>}}} 1100 Where credentials is the standard argument defined above. 1101 1102 Options include {{{geni_end_time}}} and {{{geni_best_effort: <XML-RPC boolean 1 or 0, default false (0)>}}} 1118 1103 1119 1104 Return struct: … … 1137 1122 FIXME: Split Update(slice) from Update(slivers) 1138 1123 FIXME: Is this the same method as for updating provisioned slivers? 1139 1124 }}} 1140 1125 == !ProvisionSlivers == 1141 1126 AKA Provision() 1127 Request that the named `geni_allocated` slivers be made `geni_provisioned`, instantiating or otherwise realizing the resources, such that they have a valid `geni_operational_status` and may possibly be made `geni_ready` for experimenter use. 1142 1128 {{{ 1143 1129 struct ProvisionSlivers(string urn[], struct credentials[], … … 1145 1131 }}} 1146 1132 1147 Where credentials is: 1148 {{{ 1149 credentials = [ 1150 { 1151 geni_type: <string>, 1152 geni_version: <string>, 1153 geni_value: <string>, 1154 <others> 1155 } 1156 ] 1157 }}} 1133 Where credentials is the standard argument defined above. 1158 1134 1159 1135 Options include: 1160 - {{{geni_best_effort = True/False, default false}}}1136 - {{{geni_best_effort = XML-RPC boolean 1 or 0, default false (0)}}} 1161 1137 - {{{geni_end_time}}} 1162 1138 - `struct geni_users[]`: An array of user structs, which contain information about the users that might login to the sliver that the AM needs to know about. Each struct must include the key 'keys', which is an array of strings and can be empty. The struct must also include the key 'urn', which is the user’s URN string. The users array can be empty. For example: … … 1197 1173 == !UpdateSlivers == 1198 1174 AKA Update() 1175 This method requests a modification to 1 or more provisioned slivers. The slivers end up in a new `geni_allocated+geni_provisioned` state. 1176 1177 Details are suppressed pending agreement on this method. 1178 {{{ 1179 #!comment 1180 1199 1181 {{{ 1200 1182 struct UpdateSlivers(string urn[], struct credentials[], string rspec, … … 1202 1184 }}} 1203 1185 1204 Where credentials is: 1205 {{{ 1206 credentials = [ 1207 { 1208 geni_type: <string>, 1209 geni_version: <string>, 1210 geni_value: <string>, 1211 <others> 1212 } 1213 ] 1214 }}} 1186 Where credentials is the standard argument defined above. 1215 1187 1216 1188 Options include: 1217 1189 - {{{geni_end_time}}} 1218 - {{{geni_best_effort: < True/False, default false>}}}1190 - {{{geni_best_effort: <XML-RPC boolean 1 or 0, default false (0)>}}} 1219 1191 - `struct geni_users[]`: An array of user structs, which contain information about the users that might login to the sliver that the AM needs to know about. Each struct must include the key 'keys', which is an array of strings and can be empty. The struct must also include the key 'urn', which is the user’s URN string. The users array can be empty. For example: 1220 1192 {{{ … … 1253 1225 FIXME: Is this the same method as for updating allocated slivers? 1254 1226 FIXME: Return both a manifest and a delta RSpec? 1255 1227 }}} 1256 1228 == !SliversStatus == 1229 Retrieve status information about the named slivers. This should be relatively dynamic data, not descriptive data as returned in the manifest RSpec by !ListResources. 1257 1230 {{{ 1258 1231 struct SliversStatus(string urn[], struct credentials[], struct options) 1259 1232 }}} 1260 1233 1261 Where credentials is: 1262 {{{ 1263 credentials = [ 1264 { 1265 geni_type: <string>, 1266 geni_version: <string>, 1267 geni_value: <string>, 1268 <others> 1269 } 1270 ] 1271 }}} 1234 Where credentials is the standard argument defined above. 1272 1235 1273 1236 Return: … … 1297 1260 1298 1261 == !PerformOperationalAction == 1262 Perform the named operational action on the named slivers, possibly changing the `geni_operational_status` of the named slivers. 1299 1263 {{{ 1300 1264 struct PerformOperationalAction (string urn[], struct credentials[], string action, … … 1302 1266 }}} 1303 1267 1304 Where credentials is: 1305 {{{ 1306 credentials = [ 1307 { 1308 geni_type: <string>, 1309 geni_version: <string>, 1310 geni_value: <string>, 1311 <others> 1312 } 1313 ] 1314 }}} 1315 1316 Options include: {{{geni_best_effort: <True/False, default false>}}} 1268 Where credentials is the standard argument defined above. 1269 1270 Options include: {{{geni_best_effort: <XML-RPC boolean 1 or 0, default false (0)>}}} 1317 1271 1318 1272 Return list of structs: … … 1333 1287 1334 1288 == !DeleteSlivers == 1289 Delete the named slivers, making them `geni_unallocated`. Resources are de-provisioned. No further AM API operations may be performed on slivers that have been deleted. 1335 1290 {{{ 1336 1291 struct DeleteSlivers(string urn[], struct credentials[], struct options) 1337 1292 }}} 1338 1293 1339 Where credentials is: 1340 {{{ 1341 credentials = [ 1342 { 1343 geni_type: <string>, 1344 geni_version: <string>, 1345 geni_value: <string>, 1346 <others> 1347 } 1348 ] 1349 }}} 1350 1351 Options include: {{{geni_best_effort: <True/False, default false>}}} 1294 Where credentials is the standard argument defined above. 1295 1296 Options include: {{{geni_best_effort: <XML-RPC boolean 1 or 0, default false (0)>}}} 1352 1297 1353 1298 Return list of structs: … … 1365 1310 1366 1311 == Shutdown == 1312 Perform an emergency shutdown on the slice at this aggregate. Resources should be taken offline, such that experimenter access (on both the control and data plane) is cut off. No further actions on the slice should be possible at this aggregate, until an un-specified operator action restores the slice. 1367 1313 {{{ 1368 1314 struct Shutdown(string slice_urn, struct credentials[], struct options) 1369 1315 }}} 1370 1316 1371 Where credentials is: 1372 {{{ 1373 credentials = [ 1374 { 1375 geni_type: <string>, 1376 geni_version: <string>, 1377 geni_value: <string>, 1378 <others> 1379 } 1380 ] 1381 }}} 1382 1383 Return: boolean 1317 Where credentials is the standard argument defined above. 1318 1319 Return: XML-RPC boolean