From cf9499543b8a044fd57cadc9911fa7a14109efbd Mon Sep 17 00:00:00 2001 From: Brian Neville <29639579+brianneville@users.noreply.github.com> Date: Fri, 15 Dec 2023 17:13:43 +0000 Subject: [PATCH] gnsi/pathz: clarify rotation behaviour for ongoing gNMI subscribers The index.md is updated with a section covering the expected behaviour for ongoing subscriptions when a server experiences a pathz policy change. This commit also updates the pathz.UploadResponse value so that it contains information about ongoing subscriptions and whether they would experience different behaviour under the incoming policy. .pb.go files were regenerated. --- pathz/index.md | 63 +++++++ pathz/pathz.pb.go | 378 +++++++++++++++++++++++++++++++----------- pathz/pathz.proto | 27 +++ version/version.pb.go | 2 +- version/version.proto | 2 +- 5 files changed, 373 insertions(+), 99 deletions(-) diff --git a/pathz/index.md b/pathz/index.md index a1805ac..38dd63e 100644 --- a/pathz/index.md +++ b/pathz/index.md @@ -91,6 +91,69 @@ out the action. If the stream is disconnected prior to the Finalize message being sent, the proposed configuration is rolled back automatically. +### AuthorizationPolicy rotation and gNMI subscriptions + +When a gNMI client connects and begins a subscription, the active +pathz policy on the system is applied to that subscription for the entire +duration of that subscription. +If a new pathz policy is rotated and finalized, ongoing subscriptions will not be +affected and will continue to be subscribed with whatever authorization +they had upon beginning the subscription. +These clients will not be aware that the pathz policy has been updated +until they disconnect and reconnect, at which point the new policy will +be applied to their subscription, and the subset of YANG leafs which they are +permitted to read may change. + +While rotating a pathz policy, network operators may wish to know which of +the ongoing subscriptions would be affected if the rotation were finalized and +the gNMI subscriber were to then disconnect and reconnect. +For this purpose, the `pathz.UploadResponse` contains information about the +current ongoing subscriptions, as well as whether or not these subscriptions +would be impacted by the pathz policy which was uploaded in the +`pathz.UploadRequest` earlier in the Rotate stream. + +A subscription being "impacted" means that for the subscription path and the +user who made that subscription, the pathz policy from the +`pathz.UploadRequest` specifies some rules which would mean that the best-matching +rule for that user and path (or any subpaths underneath that path) would change if +the rotation gets finalized. + +For example, consider a system with the following installed rules: +``` +/a/b/[k0=*]/c -> user Alice, action PERMIT +/a/b/[k0=*]/c -> user Bob, action PERMIT +/a/b/[k0=*]/c -> user Charlie, action PERMIT +``` +Then: +user Alice subscribes to `/a` +user Bob subscribes to `/a` +user Charlie subscribes to `/a/b/[k0=X]/c/d` + +Next, a pathz Rotate stream begins, and a `pathz.UploadRequest` is sent containing +the following policy: +``` +/a/b/[k0=*]/c -> user Alice, action PERMIT READ +/a/b/[k0=*]/c -> user Bob, action PERMIT READ +/a/b/[k0=Y]/c -> user Bob, action DENY READ +/a/b/[k0=*]/c -> user Charlie, action PERMIT READ +/a/b/[k0=Y]/c -> user Charlie, action DENY READ +``` + +The uploadResponse returned specifies that for this incoming policy: +1. Alice's subscription to `/a` is not impacted. +2. Bob's subscription to `/a` is impacted. +3. Charlie's subscription `/a/b/[k0=X]/c/d` is not impacted + +- Alice's subscription is not impacted as the best-matching rule for `/a` + and every path beneath `/a` remains the same. +- Bob's subscription is impacted as currently the best-matching rule +for the subpath `/a/b/[k0=Y]/c` is PERMIT READ, while under this +incoming policy it is DENY READ. +If this rotation is finalized, his view of the YANG tree would change +when he disconnects/reconnects. +- Charlie's subscription is not impacted as the best-matching rule for his path +continues to be the `/a/b/[k0=*]/c` PERMIT READ rule + ## Open Questions/Considerations None to date. diff --git a/pathz/pathz.pb.go b/pathz/pathz.pb.go index 8135ff0..203127a 100755 --- a/pathz/pathz.pb.go +++ b/pathz/pathz.pb.go @@ -330,6 +330,8 @@ type UploadResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + ClientInfo []*ClientInfo `protobuf:"bytes,1,rep,name=client_info,json=clientInfo,proto3" json:"client_info,omitempty"` } func (x *UploadResponse) Reset() { @@ -364,6 +366,139 @@ func (*UploadResponse) Descriptor() ([]byte, []int) { return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{4} } +func (x *UploadResponse) GetClientInfo() []*ClientInfo { + if x != nil { + return x.ClientInfo + } + return nil +} + +type ClientInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + SubscriptionInfo []*SubscriptionInfo `protobuf:"bytes,4,rep,name=subscription_info,json=subscriptionInfo,proto3" json:"subscription_info,omitempty"` +} + +func (x *ClientInfo) Reset() { + *x = ClientInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClientInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClientInfo) ProtoMessage() {} + +func (x *ClientInfo) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. +func (*ClientInfo) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{5} +} + +func (x *ClientInfo) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *ClientInfo) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *ClientInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *ClientInfo) GetSubscriptionInfo() []*SubscriptionInfo { + if x != nil { + return x.SubscriptionInfo + } + return nil +} + +type SubscriptionInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path *gnmi.Path `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Impacted bool `protobuf:"varint,2,opt,name=impacted,proto3" json:"impacted,omitempty"` +} + +func (x *SubscriptionInfo) Reset() { + *x = SubscriptionInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscriptionInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscriptionInfo) ProtoMessage() {} + +func (x *SubscriptionInfo) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubscriptionInfo.ProtoReflect.Descriptor instead. +func (*SubscriptionInfo) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{6} +} + +func (x *SubscriptionInfo) GetPath() *gnmi.Path { + if x != nil { + return x.Path + } + return nil +} + +func (x *SubscriptionInfo) GetImpacted() bool { + if x != nil { + return x.Impacted + } + return false +} + type ProbeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -378,7 +513,7 @@ type ProbeRequest struct { func (x *ProbeRequest) Reset() { *x = ProbeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[5] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -391,7 +526,7 @@ func (x *ProbeRequest) String() string { func (*ProbeRequest) ProtoMessage() {} func (x *ProbeRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[5] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -404,7 +539,7 @@ func (x *ProbeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProbeRequest.ProtoReflect.Descriptor instead. func (*ProbeRequest) Descriptor() ([]byte, []int) { - return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{5} + return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{7} } func (x *ProbeRequest) GetUser() string { @@ -447,7 +582,7 @@ type ProbeResponse struct { func (x *ProbeResponse) Reset() { *x = ProbeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[6] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -460,7 +595,7 @@ func (x *ProbeResponse) String() string { func (*ProbeResponse) ProtoMessage() {} func (x *ProbeResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[6] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -473,7 +608,7 @@ func (x *ProbeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProbeResponse.ProtoReflect.Descriptor instead. func (*ProbeResponse) Descriptor() ([]byte, []int) { - return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{6} + return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{8} } func (x *ProbeResponse) GetAction() Action { @@ -501,7 +636,7 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[7] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -514,7 +649,7 @@ func (x *GetRequest) String() string { func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[7] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -527,7 +662,7 @@ func (x *GetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRequest.ProtoReflect.Descriptor instead. func (*GetRequest) Descriptor() ([]byte, []int) { - return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{7} + return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{9} } func (x *GetRequest) GetPolicyInstance() PolicyInstance { @@ -550,7 +685,7 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[8] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -563,7 +698,7 @@ func (x *GetResponse) String() string { func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { - mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[8] + mi := &file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -576,7 +711,7 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. func (*GetResponse) Descriptor() ([]byte, []int) { - return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{8} + return file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP(), []int{10} } func (x *GetResponse) GetVersion() string { @@ -645,61 +780,81 @@ var file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDesc = []byte{ 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x0c, 0x50, - 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, - 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x24, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, - 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x4c, 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xaa, 0x01, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0x4e, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x70, 0x61, 0x63, + 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6d, 0x70, 0x61, 0x63, + 0x74, 0x65, 0x64, 0x22, 0xb0, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, + 0x74, 0x68, 0x7a, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x46, + 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, + 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, + 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, + 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x22, 0x7f, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6e, + 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2a, 0x6a, 0x0a, 0x0e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x4c, 0x49, 0x43, + 0x59, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, + 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x49, 0x4e, + 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x02, + 0x32, 0xd4, 0x01, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x68, 0x7a, 0x12, 0x49, 0x0a, 0x06, 0x52, 0x6f, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, + 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x55, 0x0a, - 0x0d, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6e, - 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x7f, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x4f, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2a, 0x6a, 0x0a, 0x0e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, - 0x1b, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, - 0x0a, 0x16, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, - 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x41, - 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x02, 0x32, 0xd4, 0x01, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x68, - 0x7a, 0x12, 0x49, 0x0a, 0x06, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6e, - 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6e, 0x73, 0x69, - 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x05, - 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, - 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, - 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x22, - 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, - 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x73, 0x69, 0x2f, 0x70, 0x61, 0x74, - 0x68, 0x7a, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6e, + 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x03, 0x47, 0x65, 0x74, + 0x12, 0x19, 0x2e, 0x67, 0x6e, 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6e, + 0x73, 0x69, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x22, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x67, 0x6e, 0x73, 0x69, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x7a, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -715,7 +870,7 @@ func file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDescGZIP() []byte { } var file_github_com_openconfig_gnsi_pathz_pathz_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_github_com_openconfig_gnsi_pathz_pathz_proto_goTypes = []interface{}{ (PolicyInstance)(0), // 0: gnsi.pathz.v1.PolicyInstance (*RotateRequest)(nil), // 1: gnsi.pathz.v1.RotateRequest @@ -723,37 +878,42 @@ var file_github_com_openconfig_gnsi_pathz_pathz_proto_goTypes = []interface{}{ (*FinalizeRequest)(nil), // 3: gnsi.pathz.v1.FinalizeRequest (*UploadRequest)(nil), // 4: gnsi.pathz.v1.UploadRequest (*UploadResponse)(nil), // 5: gnsi.pathz.v1.UploadResponse - (*ProbeRequest)(nil), // 6: gnsi.pathz.v1.ProbeRequest - (*ProbeResponse)(nil), // 7: gnsi.pathz.v1.ProbeResponse - (*GetRequest)(nil), // 8: gnsi.pathz.v1.GetRequest - (*GetResponse)(nil), // 9: gnsi.pathz.v1.GetResponse - (*AuthorizationPolicy)(nil), // 10: gnsi.pathz.AuthorizationPolicy - (*gnmi.Path)(nil), // 11: gnmi.Path - (Mode)(0), // 12: gnsi.pathz.Mode - (Action)(0), // 13: gnsi.pathz.Action + (*ClientInfo)(nil), // 6: gnsi.pathz.v1.ClientInfo + (*SubscriptionInfo)(nil), // 7: gnsi.pathz.v1.subscriptionInfo + (*ProbeRequest)(nil), // 8: gnsi.pathz.v1.ProbeRequest + (*ProbeResponse)(nil), // 9: gnsi.pathz.v1.ProbeResponse + (*GetRequest)(nil), // 10: gnsi.pathz.v1.GetRequest + (*GetResponse)(nil), // 11: gnsi.pathz.v1.GetResponse + (*AuthorizationPolicy)(nil), // 12: gnsi.pathz.AuthorizationPolicy + (*gnmi.Path)(nil), // 13: gnmi.Path + (Mode)(0), // 14: gnsi.pathz.Mode + (Action)(0), // 15: gnsi.pathz.Action } var file_github_com_openconfig_gnsi_pathz_pathz_proto_depIdxs = []int32{ 4, // 0: gnsi.pathz.v1.RotateRequest.upload_request:type_name -> gnsi.pathz.v1.UploadRequest 3, // 1: gnsi.pathz.v1.RotateRequest.finalize_rotation:type_name -> gnsi.pathz.v1.FinalizeRequest 5, // 2: gnsi.pathz.v1.RotateResponse.upload:type_name -> gnsi.pathz.v1.UploadResponse - 10, // 3: gnsi.pathz.v1.UploadRequest.policy:type_name -> gnsi.pathz.AuthorizationPolicy - 11, // 4: gnsi.pathz.v1.ProbeRequest.path:type_name -> gnmi.Path - 12, // 5: gnsi.pathz.v1.ProbeRequest.mode:type_name -> gnsi.pathz.Mode - 0, // 6: gnsi.pathz.v1.ProbeRequest.policy_instance:type_name -> gnsi.pathz.v1.PolicyInstance - 13, // 7: gnsi.pathz.v1.ProbeResponse.action:type_name -> gnsi.pathz.Action - 0, // 8: gnsi.pathz.v1.GetRequest.policy_instance:type_name -> gnsi.pathz.v1.PolicyInstance - 10, // 9: gnsi.pathz.v1.GetResponse.policy:type_name -> gnsi.pathz.AuthorizationPolicy - 1, // 10: gnsi.pathz.v1.Pathz.Rotate:input_type -> gnsi.pathz.v1.RotateRequest - 6, // 11: gnsi.pathz.v1.Pathz.Probe:input_type -> gnsi.pathz.v1.ProbeRequest - 8, // 12: gnsi.pathz.v1.Pathz.Get:input_type -> gnsi.pathz.v1.GetRequest - 2, // 13: gnsi.pathz.v1.Pathz.Rotate:output_type -> gnsi.pathz.v1.RotateResponse - 7, // 14: gnsi.pathz.v1.Pathz.Probe:output_type -> gnsi.pathz.v1.ProbeResponse - 9, // 15: gnsi.pathz.v1.Pathz.Get:output_type -> gnsi.pathz.v1.GetResponse - 13, // [13:16] is the sub-list for method output_type - 10, // [10:13] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 12, // 3: gnsi.pathz.v1.UploadRequest.policy:type_name -> gnsi.pathz.AuthorizationPolicy + 6, // 4: gnsi.pathz.v1.UploadResponse.client_info:type_name -> gnsi.pathz.v1.ClientInfo + 7, // 5: gnsi.pathz.v1.ClientInfo.subscription_info:type_name -> gnsi.pathz.v1.subscriptionInfo + 13, // 6: gnsi.pathz.v1.subscriptionInfo.path:type_name -> gnmi.Path + 13, // 7: gnsi.pathz.v1.ProbeRequest.path:type_name -> gnmi.Path + 14, // 8: gnsi.pathz.v1.ProbeRequest.mode:type_name -> gnsi.pathz.Mode + 0, // 9: gnsi.pathz.v1.ProbeRequest.policy_instance:type_name -> gnsi.pathz.v1.PolicyInstance + 15, // 10: gnsi.pathz.v1.ProbeResponse.action:type_name -> gnsi.pathz.Action + 0, // 11: gnsi.pathz.v1.GetRequest.policy_instance:type_name -> gnsi.pathz.v1.PolicyInstance + 12, // 12: gnsi.pathz.v1.GetResponse.policy:type_name -> gnsi.pathz.AuthorizationPolicy + 1, // 13: gnsi.pathz.v1.Pathz.Rotate:input_type -> gnsi.pathz.v1.RotateRequest + 8, // 14: gnsi.pathz.v1.Pathz.Probe:input_type -> gnsi.pathz.v1.ProbeRequest + 10, // 15: gnsi.pathz.v1.Pathz.Get:input_type -> gnsi.pathz.v1.GetRequest + 2, // 16: gnsi.pathz.v1.Pathz.Rotate:output_type -> gnsi.pathz.v1.RotateResponse + 9, // 17: gnsi.pathz.v1.Pathz.Probe:output_type -> gnsi.pathz.v1.ProbeResponse + 11, // 18: gnsi.pathz.v1.Pathz.Get:output_type -> gnsi.pathz.v1.GetResponse + 16, // [16:19] is the sub-list for method output_type + 13, // [13:16] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_github_com_openconfig_gnsi_pathz_pathz_proto_init() } @@ -824,7 +984,7 @@ func file_github_com_openconfig_gnsi_pathz_pathz_proto_init() { } } file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeRequest); i { + switch v := v.(*ClientInfo); i { case 0: return &v.state case 1: @@ -836,7 +996,7 @@ func file_github_com_openconfig_gnsi_pathz_pathz_proto_init() { } } file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeResponse); i { + switch v := v.(*SubscriptionInfo); i { case 0: return &v.state case 1: @@ -848,7 +1008,7 @@ func file_github_com_openconfig_gnsi_pathz_pathz_proto_init() { } } file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRequest); i { + switch v := v.(*ProbeRequest); i { case 0: return &v.state case 1: @@ -860,6 +1020,30 @@ func file_github_com_openconfig_gnsi_pathz_pathz_proto_init() { } } file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProbeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_openconfig_gnsi_pathz_pathz_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetResponse); i { case 0: return &v.state @@ -885,7 +1069,7 @@ func file_github_com_openconfig_gnsi_pathz_pathz_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_github_com_openconfig_gnsi_pathz_pathz_proto_rawDesc, NumEnums: 1, - NumMessages: 9, + NumMessages: 11, NumExtensions: 0, NumServices: 1, }, diff --git a/pathz/pathz.proto b/pathz/pathz.proto index 8c1c5eb..505f58d 100644 --- a/pathz/pathz.proto +++ b/pathz/pathz.proto @@ -157,6 +157,33 @@ message UploadRequest { } message UploadResponse { + // client_info contains information about all the ongoing subscriptions on + // the system, and how the policy from the the UploadRequest will affect them + repeated ClientInfo client_info = 1; +} + +message ClientInfo { + string username = 1; + // address is a string in the form "ip:port" + string address = 2; + // the pathz policy version which is being applied to + // this client's ongoing subscription + string version = 3; + repeated subscriptionInfo subscription_info = 4; +} + +message subscriptionInfo { + gnmi.Path path = 1; + + // impacted is a bool that is true if the subscription to this path + // for this user would be impacted if the pathz policy contained in the + // UploadRequest if finalized. + // A subscription being "impacted" means that for the subscription path and the + // user who made that subscription, the pathz policy from the + // pathz.UploadRequest specifies some rules which would mean that the best-matching + // rule for that user and path (or any subpaths underneath that path) would change if + // the rotation gets finalized. + bool impacted = 2; } enum PolicyInstance { diff --git a/version/version.pb.go b/version/version.pb.go index 810a8c8..41430f0 100644 --- a/version/version.pb.go +++ b/version/version.pb.go @@ -32,7 +32,7 @@ var file_github_com_openconfig_gnsi_version_version_proto_rawDesc = []byte{ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x2c, 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x73, 0x69, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0xd2, 0x3e, 0x05, 0x31, - 0x2e, 0x35, 0x2e, 0x30, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x35, 0x2e, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_github_com_openconfig_gnsi_version_version_proto_goTypes = []interface{}{} diff --git a/version/version.proto b/version/version.proto index 0a5c5b6..5c1f02a 100644 --- a/version/version.proto +++ b/version/version.proto @@ -20,5 +20,5 @@ package gnsi; import "github.com/openconfig/gnoi/types/types.proto"; -option (gnoi.types.gnoi_version) = "1.5.0"; +option (gnoi.types.gnoi_version) = "1.5.1"; option go_package = "github.com/openconfig/gnsi/version";