Skip to content

Commit 5df6557

Browse files
author
Aalyria Technologies, Inc
committed
Import changes.
- db3e2617fc5cf9a79d7c33d775f74e6bc88ebe0d GitOrigin-RevId: db3e2617fc5cf9a79d7c33d775f74e6bc88ebe0d
1 parent 8773811 commit 5df6557

File tree

3 files changed

+352
-46
lines changed

3 files changed

+352
-46
lines changed

api/provisioning/v1alpha/provisioning.proto

Lines changed: 243 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ service Provisioning {
3838

3939
// P2P SR-TE Policy provisioning.
4040
//
41-
// RFC 9522 S5.1.1.3; RFC 9256 SR Policy.
41+
// RFC 9522 S5.1.1.3; RFC 9256 P2P SR Policy.
4242
//
4343
// Manage resources under `p2pSrTePolicy/{policy_id}`.
4444
rpc GetP2pSrTePolicy(GetP2pSrTePolicyRequest) returns (P2pSrTePolicy) {}
@@ -49,7 +49,7 @@ service Provisioning {
4949

5050
// P2P SR TE Policy dynamic candidate path provisioning.
5151
//
52-
// RFC 9256 section 2.2, SR Policy dynamic candidate paths.
52+
// RFC 9256 section 2.2, P2P SR Policy dynamic candidate paths.
5353
//
5454
// Manage subresources under
5555
// `p2pSrTePolicy/{policy_id}/candidatePath/{path_id}`.
@@ -59,6 +59,29 @@ service Provisioning {
5959
rpc UpdateP2pSrTePolicyCandidatePath(UpdateP2pSrTePolicyCandidatePathRequest) returns (P2pSrTePolicyCandidatePath) {}
6060
rpc DeleteP2pSrTePolicyCandidatePath(DeleteP2pSrTePolicyCandidatePathRequest) returns (google.protobuf.Empty) {}
6161

62+
// P2MP SR-TE Policy provisioning.
63+
//
64+
// RFC 9522 S5.1.1.3; draft-ietf-pim-sr-p2mp-policy P2MP SR Policy
65+
//
66+
// Manage resources under `p2mpSrTePolicy/{policy_id}`.
67+
rpc GetP2mpSrTePolicy(GetP2mpSrTePolicyRequest) returns (P2mpSrTePolicy) {}
68+
rpc ListP2mpSrTePolicies(ListP2mpSrTePoliciesRequest) returns (ListP2mpSrTePoliciesResponse) {}
69+
rpc CreateP2mpSrTePolicy(CreateP2mpSrTePolicyRequest) returns (P2mpSrTePolicy) {}
70+
rpc UpdateP2mpSrTePolicy(UpdateP2mpSrTePolicyRequest) returns (P2mpSrTePolicy) {}
71+
rpc DeleteP2mpSrTePolicy(DeleteP2mpSrTePolicyRequest) returns (google.protobuf.Empty) {}
72+
73+
// P2MP SR TE Policy dynamic candidate path provisioning.
74+
//
75+
// draft-ietf-pim-sr-p2mp-policy-22 S2.3 P2MP SR Policy candidate paths.
76+
//
77+
// Manage subresources under
78+
// `p2mpSrTePolicy/{policy_id}/candidatePath/{path_id}`.
79+
rpc GetP2mpSrTePolicyCandidatePath(GetP2mpSrTePolicyCandidatePathRequest) returns (P2mpSrTePolicyCandidatePath) {}
80+
rpc ListP2mpSrTePolicyCandidatePaths(ListP2mpSrTePolicyCandidatePathsRequest) returns (ListP2mpSrTePolicyCandidatePathsResponse) {}
81+
rpc CreateP2mpSrTePolicyCandidatePath(CreateP2mpSrTePolicyCandidatePathRequest) returns (P2mpSrTePolicyCandidatePath) {}
82+
rpc UpdateP2mpSrTePolicyCandidatePath(UpdateP2mpSrTePolicyCandidatePathRequest) returns (P2mpSrTePolicyCandidatePath) {}
83+
rpc DeleteP2mpSrTePolicyCandidatePath(DeleteP2mpSrTePolicyCandidatePathRequest) returns (google.protobuf.Empty) {}
84+
6285
// Downtime provisioning.
6386
//
6487
// Inform Spacetime when elements of the network will be, or should
@@ -353,6 +376,224 @@ message DeleteP2pSrTePolicyCandidatePathRequest{
353376
}];
354377
}
355378

379+
// A Point-to-MultiPoint (P2MP) Segment Routing (SR) Traffic Engineering (TE)
380+
// Policy.
381+
//
382+
// Describes one SR TE policy from one root EK_ROUTE_FN entity in the
383+
// data model to the set of EK_ROUTE_FN entities in the list of leaves.
384+
//
385+
// See also:
386+
// - draft-ietf-pim-sr-p2mp-policy
387+
message P2mpSrTePolicy {
388+
// The resource name of this policy.
389+
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
390+
391+
// The priority field allows the requester to specify the order in
392+
// which requests for Provisioning resources are satisfied relative
393+
// to all other requests.
394+
//
395+
// A request will be treated as having a higher priority if the
396+
// value of this field is arithmetically greater than that of
397+
// another service request.
398+
//
399+
// Users may want to directly map this to some utility metric of
400+
// relevance to their network operations, e.g. estimated revenue,
401+
// number of customers served, etc.
402+
//
403+
// Cf. RFC 9256 S2.12's re-compute priority.
404+
double priority = 2;
405+
406+
// The time interval over which this service is requested.
407+
//
408+
// If start_time is empty the service is requested to be provisioned
409+
// at the earliest possible time it may be realized in the network.
410+
//
411+
// If end_time is empty the service is requested to be provisioned
412+
// until this specific request is canceled or this interval field
413+
// is updated with a non-empty end_time.
414+
google.type.Interval interval = 3;
415+
416+
// A simple way to temporarily disable this request without deleting
417+
// it from the store of requests. Requests that are disabled will
418+
// not be provisioned by Spacetime, but evaluation of candidate
419+
// links and topologies may still be performed (to improve rapidity
420+
// of provisioning once re-enabled).
421+
bool disabled = 4;
422+
423+
// NMTS Entity ID corresponding to the source EK_ROUTE_FN Entity
424+
// element already created within the network data model.
425+
//
426+
// draft-ietf-pim-sr-p2mp-policy S2.1 SR P2MP Policy identifying
427+
// tuple; "[a]n SR P2MP Policy is uniquely identified by the tuple
428+
// <Root, Tree-ID>".
429+
//
430+
// Note: SR P2P Policy color-like differentiation can be implemented
431+
// via tree_id values.
432+
string root = 5;
433+
int64 tree_id = 6; // restricted to uint32 values
434+
435+
// NMTS Entity IDs corresponding to the destination EK_ROUTE_FN
436+
// Entity elements already created within the network data model.
437+
repeated string leaves = 7;
438+
439+
// RFC 9256 S2.1; "[a]n implementation MAY allow the assignment
440+
// of a symbolic name..."
441+
string symbolic_name = 8;
442+
}
443+
444+
message GetP2mpSrTePolicyRequest {
445+
// The resource name of the policy to retrieve.
446+
// Format: `p2mpSrTePolicies/{policy_id}`
447+
string name = 1 [
448+
(google.api.field_behavior) = REQUIRED,
449+
(google.api.resource_reference) = {
450+
type: "provisioning.spacetimeapis.com/P2mpSrTePolicy"
451+
}];
452+
}
453+
454+
message ListP2mpSrTePoliciesRequest{
455+
}
456+
457+
message ListP2mpSrTePoliciesResponse{
458+
repeated P2mpSrTePolicy p2mp_sr_te_policies = 1;
459+
}
460+
461+
message CreateP2mpSrTePolicyRequest{
462+
// The ID to use for the policy, which will become the final component of
463+
// the policy's resource name, i.e. `p2mpSrTePolicies/{policy_id}`.
464+
//
465+
// This value should be 1-63 characters, and valid characters
466+
// are /[a-z][0-9]-/, specifically of the form
467+
// "^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$".
468+
string policy_id = 2 [(google.api.field_behavior) = REQUIRED];
469+
470+
// The policy to create.
471+
P2mpSrTePolicy policy = 3 [(google.api.field_behavior) = REQUIRED];
472+
}
473+
474+
message UpdateP2mpSrTePolicyRequest{
475+
// The policy to update.
476+
//
477+
// The policy's `name` field is used to identify the policy to be updated.
478+
// Format: `p2mpSrTePolicies/{policy_id}`
479+
P2mpSrTePolicy policy = 1 [(google.api.field_behavior) = REQUIRED];
480+
481+
// The list of fields to be updated.
482+
google.protobuf.FieldMask update_mask = 2;
483+
484+
// If set to true, and the policy is not found, a new instance will be
485+
// created. In this situation, `update_mask` is ignored.
486+
bool allow_missing = 3;
487+
}
488+
489+
message DeleteP2mpSrTePolicyRequest{
490+
// The resource name of the policy to delete.
491+
// Format: `p2mpSrTePolicies/{policy_id}`
492+
//
493+
// Deleting a P2MP SR-TE Policy also deletes all its Candidate Paths.
494+
string name = 1 [
495+
(google.api.field_behavior) = REQUIRED,
496+
(google.api.resource_reference) = {
497+
type: "provisioning.spacetimeapis.com/P2mpSrTePolicy"
498+
}];
499+
}
500+
501+
message P2mpSrTePolicyCandidatePath {
502+
// The resource name of this candidate path.
503+
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
504+
505+
// Candidate Paths inherit the scheduling parameters of their
506+
// parent P2MP SR-TE Policy.
507+
508+
// RFC 9256 S2.5 Discriminator; used to associate a candidate path
509+
// with this specific SR Policy's path request.
510+
uint32 discriminator = 2;
511+
// RFC 9256 S2.6 optional symbolic name.
512+
string symbolic_name = 3;
513+
// draft-ietf-pim-sr-p2mp-policy-22 does not have a field corresponding
514+
// to the RFC 9256 S2.7 Preference. This can be added later, should the
515+
// specification change or the need arise.
516+
517+
// Quantitative path metrics.
518+
Metrics metrics = 4;
519+
}
520+
521+
message GetP2mpSrTePolicyCandidatePathRequest{
522+
// The resource name of the candidate path to retrieve.
523+
// Format: `p2mpSrTePolicies/{policy_id}/candidatePaths/{path_id}`
524+
string name = 1 [
525+
(google.api.field_behavior) = REQUIRED,
526+
(google.api.resource_reference) = {
527+
type: "provisioning.spacetimeapis.com/P2mpSrTePolicyCandidatePath"
528+
}];
529+
}
530+
531+
message ListP2mpSrTePolicyCandidatePathsRequest{
532+
// The parent policy for which to list candidate paths.
533+
// Format: `p2mpSrTePolicies/{policy_id}`
534+
string parent = 1 [
535+
(google.api.field_behavior) = REQUIRED,
536+
(google.api.resource_reference) = {
537+
child_type: "provisioning.spacetimeapis.com/P2mpSrTePolicyCandidatePath"
538+
}];
539+
}
540+
541+
message ListP2mpSrTePolicyCandidatePathsResponse{
542+
repeated P2mpSrTePolicyCandidatePath p2mp_sr_te_policy_candidate_paths = 1;
543+
}
544+
545+
message CreateP2mpSrTePolicyCandidatePathRequest{
546+
// The parent policy for which this candidate path will be created.
547+
// Format: `p2mpSrTePolicies/{policy_id}`
548+
string parent = 1 [
549+
(google.api.field_behavior) = REQUIRED,
550+
(google.api.resource_reference) = {
551+
child_type: "provisioning.spacetimeapis.com/P2mpSrTePolicyCandidatePath"
552+
}];
553+
554+
// The ID to use for the path, which will become the final component of
555+
// the path's resource name, i.e.
556+
// `p2mpSrTePolicies/{policy_id}/candidatePaths/{path_id}`
557+
//
558+
// This value should be 1-63 characters, and valid characters
559+
// are /[a-z][0-9]-/, specifically of the form
560+
// "^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$".
561+
string path_id = 2 [(google.api.field_behavior) = REQUIRED];
562+
563+
// The Candidate Path to create.
564+
P2mpSrTePolicyCandidatePath path = 3 [(google.api.field_behavior) = REQUIRED];
565+
}
566+
567+
message UpdateP2mpSrTePolicyCandidatePathRequest{
568+
// The candidate path to update.
569+
//
570+
// The candidate path's `name` field is used to identify the candidate
571+
// path to be updated.
572+
// `p2mpSrTePolicies/{policy_id}/candidatePaths/{path_id}`
573+
P2mpSrTePolicyCandidatePath path = 1 [(google.api.field_behavior) = REQUIRED];
574+
575+
// The list of fields to be updated.
576+
google.protobuf.FieldMask update_mask = 2;
577+
578+
// If set to true, and the candidate path is not found, a new instance will
579+
// be created, subject to the existence the parent SR-TE Policy. In this
580+
// situation, `update_mask` is ignored.
581+
bool allow_missing = 3;
582+
}
583+
584+
message DeleteP2mpSrTePolicyCandidatePathRequest{
585+
// The resource name of the candidate path to delete.
586+
// Format: `p2mpSrTePolicies/{policy_id}/candidatePaths/{path_id}`
587+
//
588+
// Delete all Candidate Paths associated with a P2MP SR-TE Policy
589+
// DOES NOT delete the policy itself.
590+
string name = 1 [
591+
(google.api.field_behavior) = REQUIRED,
592+
(google.api.resource_reference) = {
593+
type: "provisioning.spacetimeapis.com/P2mpSrTePolicyCandidatePath"
594+
}];
595+
}
596+
356597
// A notification to Spacetime of downtime for specified network elements.
357598
//
358599
// This resource informs Spacetime of elements in the network scheduled

tools/nbictl/proto/provisioning.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ option go_package = "aalyria.com/spacetime/tools/nbictl/provisioning";
3030
message ProvisioningResources {
3131
repeated aalyria.spacetime.api.provisioning.v1alpha.P2pSrTePolicy p2p_sr_te_policies = 1;
3232
repeated aalyria.spacetime.api.provisioning.v1alpha.P2pSrTePolicyCandidatePath p2p_sr_te_policy_candidate_paths = 2;
33+
repeated aalyria.spacetime.api.provisioning.v1alpha.P2mpSrTePolicy p2mp_sr_te_policies = 10;
34+
repeated aalyria.spacetime.api.provisioning.v1alpha.P2mpSrTePolicyCandidatePath p2mp_sr_te_policy_candidate_paths = 11;
3335
repeated aalyria.spacetime.api.provisioning.v1alpha.Downtime downtimes = 3;
3436
repeated aalyria.spacetime.api.provisioning.v1alpha.ProtectionAssociationGroup protection_association_groups = 4;
3537
repeated aalyria.spacetime.api.provisioning.v1alpha.DisjointAssociationGroup disjoint_association_groups = 5;

0 commit comments

Comments
 (0)