| 284 | |
| 285 | |
| 286 | Result<ResourceProviderID> getResourceProviderId( |
| 287 | const Offer::Operation& operation) |
| 288 | { |
| 289 | Option<Resource> resource; |
| 290 | |
| 291 | switch (operation.type()) { |
| 292 | case Offer::Operation::LAUNCH: |
| 293 | return Error("Unexpected LAUNCH operation"); |
| 294 | case Offer::Operation::LAUNCH_GROUP: |
| 295 | return Error("Unexpected LAUNCH_GROUP operation"); |
| 296 | case Offer::Operation::RESERVE: |
| 297 | if (operation.reserve().resources().empty()) { |
| 298 | return Error("Operation contains no resources"); |
| 299 | } |
| 300 | resource = operation.reserve().resources(0); |
| 301 | break; |
| 302 | case Offer::Operation::UNRESERVE: |
| 303 | if (operation.unreserve().resources().empty()) { |
| 304 | return Error("Operation contains no resources"); |
| 305 | } |
| 306 | resource = operation.unreserve().resources(0); |
| 307 | break; |
| 308 | case Offer::Operation::CREATE: |
| 309 | if (operation.create().volumes().empty()) { |
| 310 | return Error("Operation contains no resources"); |
| 311 | } |
| 312 | resource = operation.create().volumes(0); |
| 313 | break; |
| 314 | case Offer::Operation::DESTROY: |
| 315 | if (operation.destroy().volumes().empty()) { |
| 316 | return Error("Operation contains no resources"); |
| 317 | } |
| 318 | resource = operation.destroy().volumes(0); |
| 319 | break; |
| 320 | case Offer::Operation::GROW_VOLUME: |
| 321 | resource = operation.grow_volume().volume(); |
| 322 | break; |
| 323 | case Offer::Operation::SHRINK_VOLUME: |
| 324 | resource = operation.shrink_volume().volume(); |
| 325 | break; |
| 326 | case Offer::Operation::CREATE_DISK: |
| 327 | resource = operation.create_disk().source(); |
| 328 | break; |
| 329 | case Offer::Operation::DESTROY_DISK: |
| 330 | resource = operation.destroy_disk().source(); |
| 331 | break; |
| 332 | case Offer::Operation::UNKNOWN: |
| 333 | return Error("Unknown offer operation"); |
| 334 | } |
| 335 | |
| 336 | CHECK_SOME(resource); |
| 337 | |
| 338 | if (resource->has_provider_id()) { |
| 339 | return resource->provider_id(); |
| 340 | } |
| 341 | |
| 342 | return None(); |
| 343 | } |
no test coverage detected