Skip to content

Commit 437944a

Browse files
committed
Address CR feedback container-storage-interface#3
1 parent 7e09ecb commit 437944a

File tree

3 files changed

+375
-369
lines changed

3 files changed

+375
-369
lines changed

csi.proto

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ message Volume {
367367
// volume is accessible from.
368368
// A plugin that returns this field MUST also set the
369369
// 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
371371
// accessible from multiple locations.
372372
// COs MAY use this information along with the topology information
373373
// returned by NodeGetInfo to ensure that a given volume is accessible
@@ -395,41 +395,41 @@ message TopologyRequirement {
395395
// Specifies the list of topologies the provisioned volume MUST be
396396
// accessible from.
397397
// 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.
399399
//
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.
402402
//
403403
// Given
404404
// x = number of topologies provisioned volume is accessible from
405-
// n = number of permitted topologies
405+
// n = number of requisite topologies
406406
// The CO MUST ensure n >= 1. The SP MUST ensure x >= 1
407407
// 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
409409
// unable to do so, the SP MUST fail the CreateVolume call.
410410
// For example, if a volume should be accessible from a single zone,
411-
// and permitted =
411+
// and requisite =
412412
// {"region": "R1", "zone": "Z2"}
413413
// then the provisioned volume MUST be accessible from the "region"
414414
// "R1" and the "zone" "Z2".
415415
// Similarly, if a volume should be accessible from two zones, and
416-
// permitted =
416+
// requisite =
417417
// {"region": "R1", "zone": "Z2"},
418418
// {"region": "R1", "zone": "Z3"}
419419
// then the provisioned volume MUST be accessible from the "region"
420420
// "R1" and both "zone" "Z2" and "zone" "Z3".
421421
//
422422
// 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
424424
// the CreateVolume call.
425425
// For example, if a volume should be accessible from a single zone,
426-
// and permitted =
426+
// and requisite =
427427
// {"region": "R1", "zone": "Z2"},
428428
// {"region": "R1", "zone": "Z3"}
429429
// then the SP may choose to make the provisioned volume available in
430430
// either the "zone" "Z2" or the "zone" "Z3" in the "region" "R1".
431431
// Similarly, if a volume should be accessible from two zones, and
432-
// permitted =
432+
// requisite =
433433
// {"region": "R1", "zone": "Z2"},
434434
// {"region": "R1", "zone": "Z3"},
435435
// {"region": "R1", "zone": "Z4"}
@@ -438,42 +438,42 @@ message TopologyRequirement {
438438
// "R1/Z4", or "R1/Z3" and "R1/Z4".
439439
//
440440
// 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
442442
// the remaining x-n unique topologies from the list of all possible
443443
// topologies. If it is unable to do so, the SP MUST fail the
444444
// CreateVolume call.
445445
// For example, if a volume should be accessible from two zones, and
446-
// permitted =
446+
// requisite =
447447
// {"region": "R1", "zone": "Z2"}
448448
// then the provisioned volume MUST be accessible from the "region"
449449
// "R1" and the "zone" "Z2" and the SP may select the second zone
450450
// independently, e.g. "R1/Z4".
451-
repeated Topology permitted = 1;
451+
repeated Topology requisite = 1;
452452

453453
// Specifies the list of topologies the CO would prefer the volume to
454454
// be provisioned in.
455455
//
456456
// 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.
458458
//
459459
// An SP MUST attempt to make the provisioned volume available using
460460
// the preferred topologies in order from first to last.
461461
//
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.
464464
//
465465
// If the SP is unable to to make the provisioned volume available
466466
// 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
469469
// 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
471471
// 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.
473473
//
474474
// Example 1:
475475
// Given a volume should be accessible from a single zone, and
476-
// permitted =
476+
// requisite =
477477
// {"region": "R1", "zone": "Z2"},
478478
// {"region": "R1", "zone": "Z3"}
479479
// preferred =
@@ -484,7 +484,7 @@ message TopologyRequirement {
484484
//
485485
// Example 2:
486486
// Given a volume should be accessible from a single zone, and
487-
// permitted =
487+
// requisite =
488488
// {"region": "R1", "zone": "Z2"},
489489
// {"region": "R1", "zone": "Z3"},
490490
// {"region": "R1", "zone": "Z4"},
@@ -499,10 +499,11 @@ message TopologyRequirement {
499499
// "Z3" or "Z5" in the "region" "R1".
500500
//
501501
// 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 =
506507
// {"region": "R1", "zone": "Z2"},
507508
// {"region": "R1", "zone": "Z3"},
508509
// {"region": "R1", "zone": "Z4"},
@@ -514,10 +515,10 @@ message TopologyRequirement {
514515
// accessible from the combination of the two "zones" "Z5" and "Z3" in
515516
// the "region" "R1". If that's not possible, it should fall back to
516517
// 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
518519
// 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.
521522
repeated Topology preferred = 2;
522523
}
523524

@@ -539,6 +540,8 @@ message TopologyRequirement {
539540
// The key prefix SHOULD include the plugin's host company name and/or
540541
// the plugin name, to minimize the possibility of collisions with keys
541542
// 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).
542545
// Keys MUST be case-insensitive. Meaning the keys "Zone" and "zone"
543546
// MUST not both exist.
544547
// Each value (topological segment) MUST contain 1 or more strings.
@@ -697,15 +700,14 @@ message GetCapacityRequest {
697700
// specific `parameters`. These are the same `parameters` the CO will
698701
// use in `CreateVolumeRequest`. This field is OPTIONAL.
699702
map<string, string> parameters = 2;
700-
703+
701704
// 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`.
706708
// This field is OPTIONAL. This field SHALL NOT be set unless the
707709
// plugin advertises the ACCESSIBILITY_CONSTRAINTS capability.
708-
TopologyRequirement accessibility_requirements = 7;
710+
Topology accessible_topology = 3;
709711
}
710712

711713
message GetCapacityResponse {

0 commit comments

Comments
 (0)