@@ -367,7 +367,7 @@ message Volume {
367
367
// volume is accessible from.
368
368
// A plugin that returns this field MUST also set the
369
369
// ACCESSIBILITY_CONSTRAINTS plugin capability.
370
- // An SP may specify multiple topologies to indicate the volume is
370
+ // An SP MAY specify multiple topologies to indicate the volume is
371
371
// accessible from multiple locations.
372
372
// COs MAY use this information along with the topology information
373
373
// returned by NodeGetInfo to ensure that a given volume is accessible
@@ -395,41 +395,41 @@ message TopologyRequirement {
395
395
// Specifies the list of topologies the provisioned volume MUST be
396
396
// accessible from.
397
397
// This field is OPTIONAL. If TopologyRequirement is specified either
398
- // permitted or preferred or both MUST be specified.
398
+ // requisite or preferred or both MUST be specified.
399
399
//
400
- // If permitted is specified, the provisioned volume MUST be
401
- // accessible from at least one of the permitted topologies.
400
+ // If requisite is specified, the provisioned volume MUST be
401
+ // accessible from at least one of the requisite topologies.
402
402
//
403
403
// Given
404
404
// x = number of topologies provisioned volume is accessible from
405
- // n = number of permitted topologies
405
+ // n = number of requisite topologies
406
406
// The CO MUST ensure n >= 1. The SP MUST ensure x >= 1
407
407
// If x==n, than the SP MUST make the provisioned volume available to
408
- // all topologies from the list of permitted topologies. If it is
408
+ // all topologies from the list of requisite topologies. If it is
409
409
// unable to do so, the SP MUST fail the CreateVolume call.
410
410
// For example, if a volume should be accessible from a single zone,
411
- // and permitted =
411
+ // and requisite =
412
412
// {"region": "R1", "zone": "Z2"}
413
413
// then the provisioned volume MUST be accessible from the "region"
414
414
// "R1" and the "zone" "Z2".
415
415
// Similarly, if a volume should be accessible from two zones, and
416
- // permitted =
416
+ // requisite =
417
417
// {"region": "R1", "zone": "Z2"},
418
418
// {"region": "R1", "zone": "Z3"}
419
419
// then the provisioned volume MUST be accessible from the "region"
420
420
// "R1" and both "zone" "Z2" and "zone" "Z3".
421
421
//
422
422
// If x<n, than the SP SHALL choose x unique topologies from the list
423
- // of permitted topologies. If it is unable to do so, the SP MUST fail
423
+ // of requisite topologies. If it is unable to do so, the SP MUST fail
424
424
// the CreateVolume call.
425
425
// For example, if a volume should be accessible from a single zone,
426
- // and permitted =
426
+ // and requisite =
427
427
// {"region": "R1", "zone": "Z2"},
428
428
// {"region": "R1", "zone": "Z3"}
429
429
// then the SP may choose to make the provisioned volume available in
430
430
// either the "zone" "Z2" or the "zone" "Z3" in the "region" "R1".
431
431
// Similarly, if a volume should be accessible from two zones, and
432
- // permitted =
432
+ // requisite =
433
433
// {"region": "R1", "zone": "Z2"},
434
434
// {"region": "R1", "zone": "Z3"},
435
435
// {"region": "R1", "zone": "Z4"}
@@ -438,42 +438,42 @@ message TopologyRequirement {
438
438
// "R1/Z4", or "R1/Z3" and "R1/Z4".
439
439
//
440
440
// If x>n, than the SP MUST make the provisioned volume available from
441
- // all topologies from the list of permitted topologies and MAY choose
441
+ // all topologies from the list of requisite topologies and MAY choose
442
442
// the remaining x-n unique topologies from the list of all possible
443
443
// topologies. If it is unable to do so, the SP MUST fail the
444
444
// CreateVolume call.
445
445
// For example, if a volume should be accessible from two zones, and
446
- // permitted =
446
+ // requisite =
447
447
// {"region": "R1", "zone": "Z2"}
448
448
// then the provisioned volume MUST be accessible from the "region"
449
449
// "R1" and the "zone" "Z2" and the SP may select the second zone
450
450
// independently, e.g. "R1/Z4".
451
- repeated Topology permitted = 1 ;
451
+ repeated Topology requisite = 1 ;
452
452
453
453
// Specifies the list of topologies the CO would prefer the volume to
454
454
// be provisioned in.
455
455
//
456
456
// This field is OPTIONAL. If TopologyRequirement is specified either
457
- // permitted or preferred or both MUST be specified.
457
+ // requisite or preferred or both MUST be specified.
458
458
//
459
459
// An SP MUST attempt to make the provisioned volume available using
460
460
// the preferred topologies in order from first to last.
461
461
//
462
- // If permitted is specified, all topologies in preferred volume MUST
463
- // also be present in the list of permitted topologies.
462
+ // If requisite is specified, all topologies in preferred list MUST
463
+ // also be present in the list of requisite topologies.
464
464
//
465
465
// If the SP is unable to to make the provisioned volume available
466
466
// from any of the preferred topologies, the SP MAY choose a topology
467
- // from the list of permitted topologies.
468
- // If the list of permitted topologies is not specified, then the SP
467
+ // from the list of requisite topologies.
468
+ // If the list of requisite topologies is not specified, then the SP
469
469
// MAY choose from the list of all possible topologies.
470
- // If the list of permitted topologies is specified and the SP is
470
+ // If the list of requisite topologies is specified and the SP is
471
471
// unable to to make the provisioned volume available from any of the
472
- // permitted topologies it MUST fail the CreateVolume call.
472
+ // requisite topologies it MUST fail the CreateVolume call.
473
473
//
474
474
// Example 1:
475
475
// Given a volume should be accessible from a single zone, and
476
- // permitted =
476
+ // requisite =
477
477
// {"region": "R1", "zone": "Z2"},
478
478
// {"region": "R1", "zone": "Z3"}
479
479
// preferred =
@@ -484,7 +484,7 @@ message TopologyRequirement {
484
484
//
485
485
// Example 2:
486
486
// Given a volume should be accessible from a single zone, and
487
- // permitted =
487
+ // requisite =
488
488
// {"region": "R1", "zone": "Z2"},
489
489
// {"region": "R1", "zone": "Z3"},
490
490
// {"region": "R1", "zone": "Z4"},
@@ -499,10 +499,11 @@ message TopologyRequirement {
499
499
// "Z3" or "Z5" in the "region" "R1".
500
500
//
501
501
// Example 3:
502
- // Given a volume should be accessible from TWO zones (because opaque
503
- // parameter in CreateVolumeRequest, for example, specifies volume is
504
- // accessible from two zones, aka synchronously replicated), and
505
- // permitted =
502
+ // Given a volume should be accessible from TWO zones (because an
503
+ // opaque parameter in CreateVolumeRequest, for example, specifies
504
+ // the volume is accessible from two zones, aka synchronously
505
+ // replicated), and
506
+ // requisite =
506
507
// {"region": "R1", "zone": "Z2"},
507
508
// {"region": "R1", "zone": "Z3"},
508
509
// {"region": "R1", "zone": "Z4"},
@@ -514,10 +515,10 @@ message TopologyRequirement {
514
515
// accessible from the combination of the two "zones" "Z5" and "Z3" in
515
516
// the "region" "R1". If that's not possible, it should fall back to
516
517
// a combination of "Z5" and other possibilities from the list of
517
- // permitted . If that's not possible, it should fall back to a
518
+ // requisite . If that's not possible, it should fall back to a
518
519
// combination of "Z3" and other possibilities from the list of
519
- // permitted . If that's not possible, it should fall back to a
520
- // combination of other possibilities from the list of permitted .
520
+ // requisite . If that's not possible, it should fall back to a
521
+ // combination of other possibilities from the list of requisite .
521
522
repeated Topology preferred = 2 ;
522
523
}
523
524
@@ -539,6 +540,8 @@ message TopologyRequirement {
539
540
// The key prefix SHOULD include the plugin's host company name and/or
540
541
// the plugin name, to minimize the possibility of collisions with keys
541
542
// from other plugins.
543
+ // If a key prefix is specified, it MUST be identical across all
544
+ // topology keys returned by the SP (across all RPCs).
542
545
// Keys MUST be case-insensitive. Meaning the keys "Zone" and "zone"
543
546
// MUST not both exist.
544
547
// Each value (topological segment) MUST contain 1 or more strings.
@@ -697,15 +700,14 @@ message GetCapacityRequest {
697
700
// specific `parameters`. These are the same `parameters` the CO will
698
701
// use in `CreateVolumeRequest`. This field is OPTIONAL.
699
702
map <string , string > parameters = 2 ;
700
-
703
+
701
704
// If specified, the Plugin SHALL report the capacity of the storage
702
- // that can be used to provision volumes that satisfy ALL of the
703
- // specified `accessibility_requirements`. These are the same
704
- // `accessibility_requirements` the CO will use in a
705
- // `CreateVolumeRequest`.
705
+ // that can be used to provision volumes that in the specified
706
+ // `accessible_topology`. This is the same as the
707
+ // `accessible_topology` the CO returns in a `CreateVolumeResponse`.
706
708
// This field is OPTIONAL. This field SHALL NOT be set unless the
707
709
// plugin advertises the ACCESSIBILITY_CONSTRAINTS capability.
708
- TopologyRequirement accessibility_requirements = 7 ;
710
+ Topology accessible_topology = 3 ;
709
711
}
710
712
711
713
message GetCapacityResponse {
0 commit comments