This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch refactor-with-go
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git


The following commit(s) were added to refs/heads/refactor-with-go by this push:
     new 65abcaf  Introduce observe service
65abcaf is described below

commit 65abcafef25d8e4848343ffd3dc006665742c400
Author: Albumen Kevin <[email protected]>
AuthorDate: Thu Mar 2 19:44:32 2023 +0800

    Introduce observe service
---
 ca/pkg/v1alpha1/ca.pb.go      | 413 +++++++++++++++++++++++++++++++++++++-----
 ca/pkg/v1alpha1/ca.proto      |  29 +++
 ca/pkg/v1alpha1/ca_grpc.pb.go | 118 ++++++++++++
 3 files changed, 515 insertions(+), 45 deletions(-)

diff --git a/ca/pkg/v1alpha1/ca.pb.go b/ca/pkg/v1alpha1/ca.pb.go
index 84abc1a..59c8a07 100644
--- a/ca/pkg/v1alpha1/ca.pb.go
+++ b/ca/pkg/v1alpha1/ca.pb.go
@@ -25,6 +25,7 @@ package v1alpha1
 import (
        protoreflect "google.golang.org/protobuf/reflect/protoreflect"
        protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+       anypb "google.golang.org/protobuf/types/known/anypb"
        structpb "google.golang.org/protobuf/types/known/structpb"
        reflect "reflect"
        sync "sync"
@@ -179,6 +180,242 @@ func (x *DubboCertificateResponse) GetMessage() string {
        return ""
 }
 
+type ObserveRequest struct {
+       state         protoimpl.MessageState
+       sizeCache     protoimpl.SizeCache
+       unknownFields protoimpl.UnknownFields
+
+       Nonce string `protobuf:"bytes,1,opt,name=nonce,proto3" 
json:"nonce,omitempty"`
+       Type  string `protobuf:"bytes,2,opt,name=type,proto3" 
json:"type,omitempty"`
+}
+
+func (x *ObserveRequest) Reset() {
+       *x = ObserveRequest{}
+       if protoimpl.UnsafeEnabled {
+               mi := &file_v1alpha1_ca_proto_msgTypes[2]
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               ms.StoreMessageInfo(mi)
+       }
+}
+
+func (x *ObserveRequest) String() string {
+       return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ObserveRequest) ProtoMessage() {}
+
+func (x *ObserveRequest) ProtoReflect() protoreflect.Message {
+       mi := &file_v1alpha1_ca_proto_msgTypes[2]
+       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 ObserveRequest.ProtoReflect.Descriptor instead.
+func (*ObserveRequest) Descriptor() ([]byte, []int) {
+       return file_v1alpha1_ca_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ObserveRequest) GetNonce() string {
+       if x != nil {
+               return x.Nonce
+       }
+       return ""
+}
+
+func (x *ObserveRequest) GetType() string {
+       if x != nil {
+               return x.Type
+       }
+       return ""
+}
+
+type ObserveResponse struct {
+       state         protoimpl.MessageState
+       sizeCache     protoimpl.SizeCache
+       unknownFields protoimpl.UnknownFields
+
+       Version string     `protobuf:"bytes,1,opt,name=version,proto3" 
json:"version,omitempty"`
+       Nonce   string     `protobuf:"bytes,2,opt,name=nonce,proto3" 
json:"nonce,omitempty"`
+       Type    string     `protobuf:"bytes,3,opt,name=type,proto3" 
json:"type,omitempty"`
+       Data    *anypb.Any `protobuf:"bytes,4,opt,name=data,proto3" 
json:"data,omitempty"`
+}
+
+func (x *ObserveResponse) Reset() {
+       *x = ObserveResponse{}
+       if protoimpl.UnsafeEnabled {
+               mi := &file_v1alpha1_ca_proto_msgTypes[3]
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               ms.StoreMessageInfo(mi)
+       }
+}
+
+func (x *ObserveResponse) String() string {
+       return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ObserveResponse) ProtoMessage() {}
+
+func (x *ObserveResponse) ProtoReflect() protoreflect.Message {
+       mi := &file_v1alpha1_ca_proto_msgTypes[3]
+       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 ObserveResponse.ProtoReflect.Descriptor instead.
+func (*ObserveResponse) Descriptor() ([]byte, []int) {
+       return file_v1alpha1_ca_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ObserveResponse) GetVersion() string {
+       if x != nil {
+               return x.Version
+       }
+       return ""
+}
+
+func (x *ObserveResponse) GetNonce() string {
+       if x != nil {
+               return x.Nonce
+       }
+       return ""
+}
+
+func (x *ObserveResponse) GetType() string {
+       if x != nil {
+               return x.Type
+       }
+       return ""
+}
+
+func (x *ObserveResponse) GetData() *anypb.Any {
+       if x != nil {
+               return x.Data
+       }
+       return nil
+}
+
+type AuthorizationRule struct {
+       state         protoimpl.MessageState
+       sizeCache     protoimpl.SizeCache
+       unknownFields protoimpl.UnknownFields
+
+       Version string `protobuf:"bytes,1,opt,name=version,proto3" 
json:"version,omitempty"`
+       Rule    string `protobuf:"bytes,2,opt,name=rule,proto3" 
json:"rule,omitempty"`
+}
+
+func (x *AuthorizationRule) Reset() {
+       *x = AuthorizationRule{}
+       if protoimpl.UnsafeEnabled {
+               mi := &file_v1alpha1_ca_proto_msgTypes[4]
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               ms.StoreMessageInfo(mi)
+       }
+}
+
+func (x *AuthorizationRule) String() string {
+       return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthorizationRule) ProtoMessage() {}
+
+func (x *AuthorizationRule) ProtoReflect() protoreflect.Message {
+       mi := &file_v1alpha1_ca_proto_msgTypes[4]
+       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 AuthorizationRule.ProtoReflect.Descriptor instead.
+func (*AuthorizationRule) Descriptor() ([]byte, []int) {
+       return file_v1alpha1_ca_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *AuthorizationRule) GetVersion() string {
+       if x != nil {
+               return x.Version
+       }
+       return ""
+}
+
+func (x *AuthorizationRule) GetRule() string {
+       if x != nil {
+               return x.Rule
+       }
+       return ""
+}
+
+type AuthenticationRule struct {
+       state         protoimpl.MessageState
+       sizeCache     protoimpl.SizeCache
+       unknownFields protoimpl.UnknownFields
+
+       Version string `protobuf:"bytes,1,opt,name=version,proto3" 
json:"version,omitempty"`
+       Rule    string `protobuf:"bytes,2,opt,name=rule,proto3" 
json:"rule,omitempty"`
+}
+
+func (x *AuthenticationRule) Reset() {
+       *x = AuthenticationRule{}
+       if protoimpl.UnsafeEnabled {
+               mi := &file_v1alpha1_ca_proto_msgTypes[5]
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               ms.StoreMessageInfo(mi)
+       }
+}
+
+func (x *AuthenticationRule) String() string {
+       return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticationRule) ProtoMessage() {}
+
+func (x *AuthenticationRule) ProtoReflect() protoreflect.Message {
+       mi := &file_v1alpha1_ca_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 AuthenticationRule.ProtoReflect.Descriptor instead.
+func (*AuthenticationRule) Descriptor() ([]byte, []int) {
+       return file_v1alpha1_ca_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *AuthenticationRule) GetVersion() string {
+       if x != nil {
+               return x.Version
+       }
+       return ""
+}
+
+func (x *AuthenticationRule) GetRule() string {
+       if x != nil {
+               return x.Rule
+       }
+       return ""
+}
+
 var File_v1alpha1_ca_proto protoreflect.FileDescriptor
 
 var file_v1alpha1_ca_proto_rawDesc = []byte{
@@ -187,39 +424,69 @@ var file_v1alpha1_ca_proto_rawDesc = []byte{
        0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 
0x31, 0x61, 0x6c, 0x70,
        0x68, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 
0x70, 0x72, 0x6f, 0x74,
        0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 
0x70, 0x72, 0x6f, 0x74,
-       0x6f, 0x22, 0x74, 0x0a, 0x17, 0x44, 0x75, 0x62, 0x62, 0x6f, 0x43, 0x65, 
0x72, 0x74, 0x69, 0x66,
-       0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 
0x12, 0x10, 0x0a, 0x03,
-       0x63, 0x73, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 
0x73, 0x72, 0x12, 0x12,
-       0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 
0x52, 0x04, 0x74, 0x79,
-       0x70, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 
0x74, 0x61, 0x18, 0x03,
-       0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 
0x65, 0x2e, 0x70, 0x72,
-       0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 
0x74, 0x52, 0x08, 0x6d,
-       0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xab, 0x01, 0x0a, 0x18, 
0x44, 0x75, 0x62, 0x62,
-       0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 
0x52, 0x65, 0x73, 0x70,
-       0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 
0x65, 0x73, 0x73, 0x18,
-       0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 
0x73, 0x73, 0x12, 0x19,
-       0x0a, 0x08, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x09,
-       0x52, 0x07, 0x63, 0x65, 0x72, 0x74, 0x50, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 
0x0b, 0x74, 0x72, 0x75,
-       0x73, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 
0x28, 0x09, 0x52, 0x0a,
-       0x74, 0x72, 0x75, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x1f, 
0x0a, 0x0b, 0x65, 0x78,
-       0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 
0x01, 0x28, 0x03, 0x52,
-       0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 
0x18, 0x0a, 0x07, 0x6d,
-       0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 
0x52, 0x07, 0x6d, 0x65,
-       0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0xa4, 0x01, 0x0a, 0x17, 0x44, 0x75, 
0x62, 0x62, 0x6f, 0x43,
-       0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 
0x72, 0x76, 0x69, 0x63,
-       0x65, 0x12, 0x88, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
0x43, 0x65, 0x72, 0x74,
-       0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6f, 0x72, 
0x67, 0x2e, 0x61, 0x70,
-       0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x61, 
0x75, 0x74, 0x68, 0x2e,
-       0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x62, 
0x62, 0x6f, 0x43, 0x65,
-       0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 
0x75, 0x65, 0x73, 0x74,
-       0x1a, 0x38, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 
0x65, 0x2e, 0x64, 0x75,
-       0x62, 0x62, 0x6f, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 
0x6c, 0x70, 0x68, 0x61,
-       0x31, 0x2e, 0x44, 0x75, 0x62, 0x62, 0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 
0x66, 0x69, 0x63, 0x61,
-       0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 
0x42, 0x2d, 0x50, 0x01,
-       0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 
0x2f, 0x61, 0x70, 0x61,
-       0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x61, 0x64, 
0x6d, 0x69, 0x6e, 0x2f,
-       0x63, 0x61, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 
0x06, 0x70, 0x72, 0x6f,
-       0x74, 0x6f, 0x33,
+       0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 
0x6f, 0x74, 0x6f, 0x62,
+       0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 
0x22, 0x74, 0x0a, 0x17,
+       0x44, 0x75, 0x62, 0x62, 0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 
0x63, 0x61, 0x74, 0x65,
+       0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 
0x73, 0x72, 0x18, 0x01,
+       0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x73, 0x72, 0x12, 0x12, 0x0a, 
0x04, 0x74, 0x79, 0x70,
+       0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 
0x65, 0x12, 0x33, 0x0a,
+       0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 
0x01, 0x28, 0x0b, 0x32,
+       0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 
0x74, 0x6f, 0x62, 0x75,
+       0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 
0x74, 0x61, 0x64, 0x61,
+       0x74, 0x61, 0x22, 0xab, 0x01, 0x0a, 0x18, 0x44, 0x75, 0x62, 0x62, 0x6f, 
0x43, 0x65, 0x72, 0x74,
+       0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 
0x6e, 0x73, 0x65, 0x12,
+       0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 
0x20, 0x01, 0x28, 0x08,
+       0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 
0x08, 0x63, 0x65, 0x72,
+       0x74, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 
0x07, 0x63, 0x65, 0x72,
+       0x74, 0x50, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x75, 0x73, 
0x74, 0x5f, 0x63, 0x65,
+       0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 
0x72, 0x75, 0x73, 0x74,
+       0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 
0x69, 0x72, 0x65, 0x5f,
+       0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 
0x65, 0x78, 0x70, 0x69,
+       0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 
0x73, 0x73, 0x61, 0x67,
+       0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 
0x73, 0x61, 0x67, 0x65,
+       0x22, 0x3a, 0x0a, 0x0e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 
0x65, 0x71, 0x75, 0x65,
+       0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 
0x01, 0x20, 0x01, 0x28,
+       0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 
0x74, 0x79, 0x70, 0x65,
+       0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 
0x22, 0x7f, 0x0a, 0x0f,
+       0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 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, 0x14, 0x0a, 
0x05, 0x6e, 0x6f, 0x6e,
+       0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 
0x6e, 0x63, 0x65, 0x12,
+       0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 
0x09, 0x52, 0x04, 0x74,
+       0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 
0x04, 0x20, 0x01, 0x28,
+       0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 
0x72, 0x6f, 0x74, 0x6f,
+       0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 
0x61, 0x22, 0x41, 0x0a,
+       0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 
0x6f, 0x6e, 0x52, 0x75,
+       0x6c, 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, 0x12, 0x0a, 0x04,
+       0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 
0x72, 0x75, 0x6c, 0x65,
+       0x22, 0x42, 0x0a, 0x12, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 
0x63, 0x61, 0x74, 0x69,
+       0x6f, 0x6e, 0x52, 0x75, 0x6c, 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, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 
0x28, 0x09, 0x52, 0x04,
+       0x72, 0x75, 0x6c, 0x65, 0x32, 0xa4, 0x01, 0x0a, 0x17, 0x44, 0x75, 0x62, 
0x62, 0x6f, 0x43, 0x65,
+       0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 
0x76, 0x69, 0x63, 0x65,
+       0x12, 0x88, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 
0x65, 0x72, 0x74, 0x69,
+       0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6f, 0x72, 0x67, 
0x2e, 0x61, 0x70, 0x61,
+       0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x61, 0x75, 
0x74, 0x68, 0x2e, 0x76,
+       0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x75, 0x62, 0x62, 
0x6f, 0x43, 0x65, 0x72,
+       0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 
0x65, 0x73, 0x74, 0x1a,
+       0x38, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 
0x2e, 0x64, 0x75, 0x62,
+       0x62, 0x6f, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 
0x70, 0x68, 0x61, 0x31,
+       0x2e, 0x44, 0x75, 0x62, 0x62, 0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 
0x69, 0x63, 0x61, 0x74,
+       0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 
0x82, 0x01, 0x0a, 0x0e,
+       0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 
0x63, 0x65, 0x12, 0x70,
+       0x0a, 0x07, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x12, 0x2e, 0x2e, 
0x6f, 0x72, 0x67, 0x2e,
+       0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 
0x2e, 0x61, 0x75, 0x74,
+       0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 
0x62, 0x73, 0x65, 0x72,
+       0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 
0x6f, 0x72, 0x67, 0x2e,
+       0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 
0x2e, 0x61, 0x75, 0x74,
+       0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 
0x62, 0x73, 0x65, 0x72,
+       0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 
0x28, 0x01, 0x30, 0x01,
+       0x42, 0x2d, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 
0x2e, 0x63, 0x6f, 0x6d,
+       0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 
0x6f, 0x2d, 0x61, 0x64,
+       0x6d, 0x69, 0x6e, 0x2f, 0x63, 0x61, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 
0x68, 0x61, 0x31, 0x62,
+       0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -234,21 +501,29 @@ func file_v1alpha1_ca_proto_rawDescGZIP() []byte {
        return file_v1alpha1_ca_proto_rawDescData
 }
 
-var file_v1alpha1_ca_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_v1alpha1_ca_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 var file_v1alpha1_ca_proto_goTypes = []interface{}{
        (*DubboCertificateRequest)(nil),  // 0: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateRequest
        (*DubboCertificateResponse)(nil), // 1: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateResponse
-       (*structpb.Struct)(nil),          // 2: google.protobuf.Struct
+       (*ObserveRequest)(nil),           // 2: 
org.apache.dubbo.auth.v1alpha1.ObserveRequest
+       (*ObserveResponse)(nil),          // 3: 
org.apache.dubbo.auth.v1alpha1.ObserveResponse
+       (*AuthorizationRule)(nil),        // 4: 
org.apache.dubbo.auth.v1alpha1.AuthorizationRule
+       (*AuthenticationRule)(nil),       // 5: 
org.apache.dubbo.auth.v1alpha1.AuthenticationRule
+       (*structpb.Struct)(nil),          // 6: google.protobuf.Struct
+       (*anypb.Any)(nil),                // 7: google.protobuf.Any
 }
 var file_v1alpha1_ca_proto_depIdxs = []int32{
-       2, // 0: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateRequest.metadata:type_name -> 
google.protobuf.Struct
-       0, // 1: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateService.CreateCertificate:input_type
 -> org.apache.dubbo.auth.v1alpha1.DubboCertificateRequest
-       1, // 2: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateService.CreateCertificate:output_type
 -> org.apache.dubbo.auth.v1alpha1.DubboCertificateResponse
-       2, // [2:3] is the sub-list for method output_type
-       1, // [1:2] is the sub-list for method input_type
-       1, // [1:1] is the sub-list for extension type_name
-       1, // [1:1] is the sub-list for extension extendee
-       0, // [0:1] is the sub-list for field type_name
+       6, // 0: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateRequest.metadata:type_name -> 
google.protobuf.Struct
+       7, // 1: org.apache.dubbo.auth.v1alpha1.ObserveResponse.data:type_name 
-> google.protobuf.Any
+       0, // 2: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateService.CreateCertificate:input_type
 -> org.apache.dubbo.auth.v1alpha1.DubboCertificateRequest
+       2, // 3: 
org.apache.dubbo.auth.v1alpha1.ObserveService.Observe:input_type -> 
org.apache.dubbo.auth.v1alpha1.ObserveRequest
+       1, // 4: 
org.apache.dubbo.auth.v1alpha1.DubboCertificateService.CreateCertificate:output_type
 -> org.apache.dubbo.auth.v1alpha1.DubboCertificateResponse
+       3, // 5: 
org.apache.dubbo.auth.v1alpha1.ObserveService.Observe:output_type -> 
org.apache.dubbo.auth.v1alpha1.ObserveResponse
+       4, // [4:6] is the sub-list for method output_type
+       2, // [2:4] is the sub-list for method input_type
+       2, // [2:2] is the sub-list for extension type_name
+       2, // [2:2] is the sub-list for extension extendee
+       0, // [0:2] is the sub-list for field type_name
 }
 
 func init() { file_v1alpha1_ca_proto_init() }
@@ -281,6 +556,54 @@ func file_v1alpha1_ca_proto_init() {
                                return nil
                        }
                }
+               file_v1alpha1_ca_proto_msgTypes[2].Exporter = func(v 
interface{}, i int) interface{} {
+                       switch v := v.(*ObserveRequest); i {
+                       case 0:
+                               return &v.state
+                       case 1:
+                               return &v.sizeCache
+                       case 2:
+                               return &v.unknownFields
+                       default:
+                               return nil
+                       }
+               }
+               file_v1alpha1_ca_proto_msgTypes[3].Exporter = func(v 
interface{}, i int) interface{} {
+                       switch v := v.(*ObserveResponse); i {
+                       case 0:
+                               return &v.state
+                       case 1:
+                               return &v.sizeCache
+                       case 2:
+                               return &v.unknownFields
+                       default:
+                               return nil
+                       }
+               }
+               file_v1alpha1_ca_proto_msgTypes[4].Exporter = func(v 
interface{}, i int) interface{} {
+                       switch v := v.(*AuthorizationRule); i {
+                       case 0:
+                               return &v.state
+                       case 1:
+                               return &v.sizeCache
+                       case 2:
+                               return &v.unknownFields
+                       default:
+                               return nil
+                       }
+               }
+               file_v1alpha1_ca_proto_msgTypes[5].Exporter = func(v 
interface{}, i int) interface{} {
+                       switch v := v.(*AuthenticationRule); i {
+                       case 0:
+                               return &v.state
+                       case 1:
+                               return &v.sizeCache
+                       case 2:
+                               return &v.unknownFields
+                       default:
+                               return nil
+                       }
+               }
        }
        type x struct{}
        out := protoimpl.TypeBuilder{
@@ -288,9 +611,9 @@ func file_v1alpha1_ca_proto_init() {
                        GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
                        RawDescriptor: file_v1alpha1_ca_proto_rawDesc,
                        NumEnums:      0,
-                       NumMessages:   2,
+                       NumMessages:   6,
                        NumExtensions: 0,
-                       NumServices:   1,
+                       NumServices:   2,
                },
                GoTypes:           file_v1alpha1_ca_proto_goTypes,
                DependencyIndexes: file_v1alpha1_ca_proto_depIdxs,
diff --git a/ca/pkg/v1alpha1/ca.proto b/ca/pkg/v1alpha1/ca.proto
index 60c5f58..3cdc623 100644
--- a/ca/pkg/v1alpha1/ca.proto
+++ b/ca/pkg/v1alpha1/ca.proto
@@ -18,6 +18,7 @@
 syntax = "proto3";
 
 import "google/protobuf/struct.proto";
+import "google/protobuf/any.proto";
 
 package org.apache.dubbo.auth.v1alpha1;
 
@@ -45,3 +46,31 @@ service DubboCertificateService {
       returns (DubboCertificateResponse) {
   }
 }
+
+message ObserveRequest {
+  string nonce = 1;
+  string type = 2;
+}
+
+message ObserveResponse {
+  string version = 1;
+  string nonce = 2;
+  string type = 3;
+  google.protobuf.Any data = 4;
+}
+
+message AuthorizationRule {
+  string version = 1;
+  string rule = 2;
+}
+
+message AuthenticationRule {
+  string version = 1;
+  string rule = 2;
+}
+
+service ObserveService {
+  rpc Observe(stream ObserveRequest)
+      returns (stream ObserveResponse) {
+  }
+}
diff --git a/ca/pkg/v1alpha1/ca_grpc.pb.go b/ca/pkg/v1alpha1/ca_grpc.pb.go
index aa14c4a..6cfe9d0 100644
--- a/ca/pkg/v1alpha1/ca_grpc.pb.go
+++ b/ca/pkg/v1alpha1/ca_grpc.pb.go
@@ -104,3 +104,121 @@ var DubboCertificateService_ServiceDesc = 
grpc.ServiceDesc{
        Streams:  []grpc.StreamDesc{},
        Metadata: "v1alpha1/ca.proto",
 }
+
+// ObserveServiceClient is the client API for ObserveService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please 
refer to 
https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type ObserveServiceClient interface {
+       Observe(ctx context.Context, opts ...grpc.CallOption) 
(ObserveService_ObserveClient, error)
+}
+
+type observeServiceClient struct {
+       cc grpc.ClientConnInterface
+}
+
+func NewObserveServiceClient(cc grpc.ClientConnInterface) ObserveServiceClient 
{
+       return &observeServiceClient{cc}
+}
+
+func (c *observeServiceClient) Observe(ctx context.Context, opts 
...grpc.CallOption) (ObserveService_ObserveClient, error) {
+       stream, err := c.cc.NewStream(ctx, 
&ObserveService_ServiceDesc.Streams[0], 
"/org.apache.dubbo.auth.v1alpha1.ObserveService/Observe", opts...)
+       if err != nil {
+               return nil, err
+       }
+       x := &observeServiceObserveClient{stream}
+       return x, nil
+}
+
+type ObserveService_ObserveClient interface {
+       Send(*ObserveRequest) error
+       Recv() (*ObserveResponse, error)
+       grpc.ClientStream
+}
+
+type observeServiceObserveClient struct {
+       grpc.ClientStream
+}
+
+func (x *observeServiceObserveClient) Send(m *ObserveRequest) error {
+       return x.ClientStream.SendMsg(m)
+}
+
+func (x *observeServiceObserveClient) Recv() (*ObserveResponse, error) {
+       m := new(ObserveResponse)
+       if err := x.ClientStream.RecvMsg(m); err != nil {
+               return nil, err
+       }
+       return m, nil
+}
+
+// ObserveServiceServer is the server API for ObserveService service.
+// All implementations must embed UnimplementedObserveServiceServer
+// for forward compatibility
+type ObserveServiceServer interface {
+       Observe(ObserveService_ObserveServer) error
+       mustEmbedUnimplementedObserveServiceServer()
+}
+
+// UnimplementedObserveServiceServer must be embedded to have forward 
compatible implementations.
+type UnimplementedObserveServiceServer struct {
+}
+
+func (UnimplementedObserveServiceServer) Observe(ObserveService_ObserveServer) 
error {
+       return status.Errorf(codes.Unimplemented, "method Observe not 
implemented")
+}
+func (UnimplementedObserveServiceServer) 
mustEmbedUnimplementedObserveServiceServer() {}
+
+// UnsafeObserveServiceServer may be embedded to opt out of forward 
compatibility for this service.
+// Use of this interface is not recommended, as added methods to 
ObserveServiceServer will
+// result in compilation errors.
+type UnsafeObserveServiceServer interface {
+       mustEmbedUnimplementedObserveServiceServer()
+}
+
+func RegisterObserveServiceServer(s grpc.ServiceRegistrar, srv 
ObserveServiceServer) {
+       s.RegisterService(&ObserveService_ServiceDesc, srv)
+}
+
+func _ObserveService_Observe_Handler(srv interface{}, stream 
grpc.ServerStream) error {
+       return 
srv.(ObserveServiceServer).Observe(&observeServiceObserveServer{stream})
+}
+
+type ObserveService_ObserveServer interface {
+       Send(*ObserveResponse) error
+       Recv() (*ObserveRequest, error)
+       grpc.ServerStream
+}
+
+type observeServiceObserveServer struct {
+       grpc.ServerStream
+}
+
+func (x *observeServiceObserveServer) Send(m *ObserveResponse) error {
+       return x.ServerStream.SendMsg(m)
+}
+
+func (x *observeServiceObserveServer) Recv() (*ObserveRequest, error) {
+       m := new(ObserveRequest)
+       if err := x.ServerStream.RecvMsg(m); err != nil {
+               return nil, err
+       }
+       return m, nil
+}
+
+// ObserveService_ServiceDesc is the grpc.ServiceDesc for ObserveService 
service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var ObserveService_ServiceDesc = grpc.ServiceDesc{
+       ServiceName: "org.apache.dubbo.auth.v1alpha1.ObserveService",
+       HandlerType: (*ObserveServiceServer)(nil),
+       Methods:     []grpc.MethodDesc{},
+       Streams: []grpc.StreamDesc{
+               {
+                       StreamName:    "Observe",
+                       Handler:       _ObserveService_Observe_Handler,
+                       ServerStreams: true,
+                       ClientStreams: true,
+               },
+       },
+       Metadata: "v1alpha1/ca.proto",
+}

Reply via email to