diff --git a/cmd/cnivpctl/common.go b/cmd/cnivpctl/common.go index a0b6666..f836834 100644 --- a/cmd/cnivpctl/common.go +++ b/cmd/cnivpctl/common.go @@ -217,11 +217,13 @@ type PoolRecord struct { Recycled bool `json:"recycled" yaml:"recycled"` RecycledTime int64 `json:"recycled_time" yaml:"recycled_time"` + CheckHealthTime int64 `json:"check_health_time" yaml:"check_health_time"` + Cooldown bool `json:"cooldown" yaml:"cooldown"` } func (r *PoolRecord) Titles() []string { - return []string{"IP", "RECYCLED", "COOLDOWN", "AGE"} + return []string{"IP", "RECYCLED", "COOLDOWN", "HEALTH_AGE", "AGE"} } func (r *PoolRecord) Row() []string { @@ -233,6 +235,7 @@ func (r *PoolRecord) Row() []string { r.IP, recycled, fmt.Sprint(r.Cooldown), + getAge(r.CheckHealthTime), getAge(r.CreateTime), } } @@ -261,22 +264,24 @@ func ListPool(nodes []*Node) ([]*PoolRecord, error) { wp.SingleFlight(func() { for _, ip := range resp.Pool { records = append(records, &PoolRecord{ - IP: ip.VPCIP, - Node: node.Name, - CreateTime: ip.CreateTime, - Recycled: ip.Recycled, - RecycledTime: ip.RecycleTime, - Cooldown: false, + IP: ip.VPCIP, + Node: node.Name, + CreateTime: ip.CreateTime, + Recycled: ip.Recycled, + RecycledTime: ip.RecycleTime, + CheckHealthTime: ip.CheckHealthTime, + Cooldown: false, }) } for _, ip := range resp.Cooldown { records = append(records, &PoolRecord{ - IP: ip.VPCIP, - Node: node.Name, - CreateTime: ip.CreateTime, - Recycled: ip.Recycled, - RecycledTime: ip.RecycleTime, - Cooldown: true, + IP: ip.VPCIP, + Node: node.Name, + CreateTime: ip.CreateTime, + Recycled: ip.Recycled, + RecycledTime: ip.RecycleTime, + CheckHealthTime: ip.CheckHealthTime, + Cooldown: true, }) } }) diff --git a/pkg/ipamd/pool.go b/pkg/ipamd/pool.go index d8239b7..e37718a 100644 --- a/pkg/ipamd/pool.go +++ b/pkg/ipamd/pool.go @@ -229,6 +229,7 @@ func (s *ipamServer) ipPoolWatermarkManager() { cooldownTk := time.Tick(time.Second * time.Duration(CooldownPeriodSeconds)) recycleStatusTk := time.Tick(10 * time.Minute) healthSize := 0 + checkIpHealthTk := time.Tick(10 * time.Minute) for { select { case <-tk: @@ -279,6 +280,12 @@ func (s *ipamServer) ipPoolWatermarkManager() { // Recycle the cooldown IP to pool s.recycleCooldownIP() + case <-checkIpHealthTk: + err := s.checkIPHealth() + if err != nil { + ulog.Errorf("Check ip health error: %v", err) + } + case <-recycleStatusTk: err := s.recycleStatus() if err != nil { @@ -483,6 +490,21 @@ func (s *ipamServer) recycleCooldownIP() { return } + network := kv.Value.Network + exists, err := s.checkSecondaryIpExist(network.VPCIP, s.hostMacAddr) + if err != nil { + ulog.Errorf("Check cooldown ip %v from vpc error: %v", network.VPCIP, err) + err = s.cooldownDB.Put(kv.Key, kv.Value) + if err != nil { + ulog.Errorf("Put ip %v back to cooldown pool after checking health error: %v, it will leak", network.VPCIP, err) + } + return + } + if !exists { + ulog.Warnf("The cooldwon ip %s is not exist in vpc, ignore it", network.VPCIP) + continue + } + if s.putIpToPool(kv.Value.Network) { ulog.Infof("Recycle cooldown ip %s to pool", kv.Value.Network.VPCIP) } @@ -624,6 +646,58 @@ func (s *ipamServer) usedIP() (map[string]struct{}, error) { return used, nil } +func (s *ipamServer) checkIPHealth() error { + kvs, err := s.poolDB.List() + if err != nil { + return err + } + + // Let's pick an IP that hasn't been checked for the longest time. + var toCheck *database.KeyValue[rpc.PodNetwork] + for _, kv := range kvs { + if toCheck == nil { + toCheck = kv + continue + } + + if kv.Value.CheckHealthTime < toCheck.Value.CheckHealthTime { + toCheck = kv + } + } + + if toCheck == nil { + ulog.Infof("No ip in pool, skip checking health") + return nil + } + + ulog.Infof("Check health for ip %s", toCheck.Value.VPCIP) + exists, err := s.checkSecondaryIpExist(toCheck.Value.VPCIP, s.hostMacAddr) + if err != nil { + return fmt.Errorf("failed to check ip health for %s, vpc api error: %v", toCheck.Value.VPCIP, err) + } + + if !exists { + // This ip has already been removed in VPC, it should not be assigned to Pod. + // So it should be removed from pool immediately. + ulog.Warnf("The ip %s is not exist in vpc, remove it in pool", toCheck.Value.VPCIP) + err = s.poolDB.Delete(toCheck.Key) + if err != nil { + return fmt.Errorf("failed to remove not exists ip %s from pool: %v", toCheck.Value.VPCIP, err) + } + + return nil + } + + ulog.Infof("The ip %s is exists in VPC", toCheck.Value.VPCIP) + + toCheck.Value.CheckHealthTime = time.Now().Unix() + err = s.poolDB.Put(toCheck.Key, toCheck.Value) + if err != nil { + return fmt.Errorf("failed to update check health time for ip %s: %v", toCheck.Value.VPCIP, err) + } + return nil +} + func (s *ipamServer) putIpToPool(ip *rpc.PodNetwork) bool { err := s.poolDB.Put(getReservedIPKey(ip), ip) if err != nil { diff --git a/rpc/ipamd.pb.go b/rpc/ipamd.pb.go index dd62139..99b2167 100644 --- a/rpc/ipamd.pb.go +++ b/rpc/ipamd.pb.go @@ -1,21 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.33.0 +// protoc v4.25.3 // source: rpc/ipamd.proto package rpc import ( context "context" - reflect "reflect" - sync "sync" - grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) const ( @@ -837,23 +836,24 @@ type PodNetwork struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PodName string `protobuf:"bytes,1,opt,name=PodName,proto3" json:"PodName,omitempty"` - PodNS string `protobuf:"bytes,2,opt,name=PodNS,proto3" json:"PodNS,omitempty"` - PodUID string `protobuf:"bytes,3,opt,name=PodUID,proto3" json:"PodUID,omitempty"` - SandboxID string `protobuf:"bytes,4,opt,name=SandboxID,proto3" json:"SandboxID,omitempty"` - NetNS string `protobuf:"bytes,5,opt,name=NetNS,proto3" json:"NetNS,omitempty"` - VPCIP string `protobuf:"bytes,6,opt,name=VPCIP,proto3" json:"VPCIP,omitempty"` - VPCID string `protobuf:"bytes,7,opt,name=VPCID,proto3" json:"VPCID,omitempty"` - SubnetID string `protobuf:"bytes,8,opt,name=SubnetID,proto3" json:"SubnetID,omitempty"` - Gateway string `protobuf:"bytes,9,opt,name=Gateway,proto3" json:"Gateway,omitempty"` - Mask string `protobuf:"bytes,10,opt,name=Mask,proto3" json:"Mask,omitempty"` - MacAddress string `protobuf:"bytes,11,opt,name=MacAddress,proto3" json:"MacAddress,omitempty"` - DedicatedUNI bool `protobuf:"varint,12,opt,name=DedicatedUNI,proto3" json:"DedicatedUNI,omitempty"` - InterfaceID string `protobuf:"bytes,13,opt,name=InterfaceID,proto3" json:"InterfaceID,omitempty"` - EIPID string `protobuf:"bytes,14,opt,name=EIPID,proto3" json:"EIPID,omitempty"` - CreateTime int64 `protobuf:"varint,15,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` - RecycleTime int64 `protobuf:"varint,16,opt,name=RecycleTime,proto3" json:"RecycleTime,omitempty"` - Recycled bool `protobuf:"varint,17,opt,name=Recycled,proto3" json:"Recycled,omitempty"` + PodName string `protobuf:"bytes,1,opt,name=PodName,proto3" json:"PodName,omitempty"` + PodNS string `protobuf:"bytes,2,opt,name=PodNS,proto3" json:"PodNS,omitempty"` + PodUID string `protobuf:"bytes,3,opt,name=PodUID,proto3" json:"PodUID,omitempty"` + SandboxID string `protobuf:"bytes,4,opt,name=SandboxID,proto3" json:"SandboxID,omitempty"` + NetNS string `protobuf:"bytes,5,opt,name=NetNS,proto3" json:"NetNS,omitempty"` + VPCIP string `protobuf:"bytes,6,opt,name=VPCIP,proto3" json:"VPCIP,omitempty"` + VPCID string `protobuf:"bytes,7,opt,name=VPCID,proto3" json:"VPCID,omitempty"` + SubnetID string `protobuf:"bytes,8,opt,name=SubnetID,proto3" json:"SubnetID,omitempty"` + Gateway string `protobuf:"bytes,9,opt,name=Gateway,proto3" json:"Gateway,omitempty"` + Mask string `protobuf:"bytes,10,opt,name=Mask,proto3" json:"Mask,omitempty"` + MacAddress string `protobuf:"bytes,11,opt,name=MacAddress,proto3" json:"MacAddress,omitempty"` + DedicatedUNI bool `protobuf:"varint,12,opt,name=DedicatedUNI,proto3" json:"DedicatedUNI,omitempty"` + InterfaceID string `protobuf:"bytes,13,opt,name=InterfaceID,proto3" json:"InterfaceID,omitempty"` + EIPID string `protobuf:"bytes,14,opt,name=EIPID,proto3" json:"EIPID,omitempty"` + CreateTime int64 `protobuf:"varint,15,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` + RecycleTime int64 `protobuf:"varint,16,opt,name=RecycleTime,proto3" json:"RecycleTime,omitempty"` + Recycled bool `protobuf:"varint,17,opt,name=Recycled,proto3" json:"Recycled,omitempty"` + CheckHealthTime int64 `protobuf:"varint,18,opt,name=CheckHealthTime,proto3" json:"CheckHealthTime,omitempty"` } func (x *PodNetwork) Reset() { @@ -1007,6 +1007,13 @@ func (x *PodNetwork) GetRecycled() bool { return false } +func (x *PodNetwork) GetCheckHealthTime() int64 { + if x != nil { + return x.CheckHealthTime + } + return 0 +} + type BorrowIPRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1677,7 +1684,7 @@ var file_rpc_ipamd_proto_rawDesc = []byte{ 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, - 0xd8, 0x03, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x18, + 0x82, 0x04, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x6f, 0x64, 0x4e, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x6f, 0x64, 0x4e, 0x53, 0x12, 0x16, @@ -1706,143 +1713,145 @@ var file_rpc_ipamd_proto_rawDesc = []byte{ 0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x64, 0x22, 0x2b, 0x0a, 0x0f, 0x42, 0x6f, - 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x22, 0x5a, 0x0a, 0x10, 0x42, 0x6f, 0x72, 0x72, 0x6f, - 0x77, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, + 0x52, 0x08, 0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x63, 0x41, 0x64, + 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, + 0x72, 0x22, 0x5a, 0x0a, 0x10, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x02, + 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x02, 0x49, 0x50, 0x22, 0x15, 0x0a, + 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2b, 0x0a, 0x08, 0x43, 0x6f, 0x6f, + 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x43, 0x6f, + 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x21, 0x0a, 0x0f, 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, + 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0x5a, 0x0a, 0x10, 0x50, 0x75, 0x73, + 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x52, 0x02, 0x49, 0x50, 0x22, 0x20, 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0x59, 0x0a, 0x0f, 0x50, 0x6f, 0x70, 0x50, 0x6f, + 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x02, + 0x49, 0x50, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, + 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x02, 0x49, 0x50, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, - 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x50, 0x6f, - 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, - 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, - 0x2b, 0x0a, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x64, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x52, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x21, 0x0a, 0x0f, - 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, - 0x5a, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x49, 0x50, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x02, 0x49, 0x50, 0x22, 0x20, 0x0a, 0x0e, 0x50, - 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0x59, 0x0a, - 0x0f, 0x50, 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x02, 0x49, 0x50, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x55, 0x6e, 0x75, 0x73, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, - 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x05, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x22, - 0x22, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x02, 0x49, 0x50, 0x22, 0x3a, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x2a, - 0xad, 0x03, 0x0a, 0x0c, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4e, 0x49, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, - 0x12, 0x19, 0x0a, 0x14, 0x43, 0x4e, 0x49, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x10, 0xe9, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x43, - 0x4e, 0x49, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x61, 0x72, 0x79, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xea, 0x07, 0x12, - 0x21, 0x0a, 0x1c, 0x43, 0x4e, 0x49, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, - 0xeb, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x43, 0x4e, 0x49, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x65, 0x45, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xec, 0x07, 0x12, 0x19, - 0x0a, 0x14, 0x43, 0x4e, 0x49, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x49, 0x50, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xed, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x43, 0x4e, 0x49, - 0x42, 0x69, 0x6e, 0x64, 0x45, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xee, - 0x07, 0x12, 0x18, 0x0a, 0x13, 0x43, 0x4e, 0x49, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x45, 0x49, - 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xef, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x43, - 0x4e, 0x49, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x55, 0x4e, 0x49, 0x46, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf0, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x43, 0x4e, 0x49, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x55, 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, - 0xf1, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x43, 0x4e, 0x49, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x55, - 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf2, 0x07, 0x12, 0x18, 0x0a, 0x13, - 0x43, 0x4e, 0x49, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x55, 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x10, 0xf3, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x43, 0x4e, 0x49, 0x4b, 0x38, 0x53, - 0x41, 0x50, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xf4, 0x07, 0x12, 0x14, 0x0a, 0x0f, 0x43, - 0x4e, 0x49, 0x57, 0x72, 0x69, 0x74, 0x65, 0x44, 0x42, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xf5, - 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x43, 0x4e, 0x49, 0x52, 0x65, 0x61, 0x64, 0x44, 0x42, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x10, 0xf6, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x43, 0x4e, 0x49, 0x42, 0x6f, 0x72, - 0x72, 0x6f, 0x77, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf7, 0x07, 0x32, - 0xb0, 0x07, 0x0a, 0x07, 0x43, 0x4e, 0x49, 0x49, 0x70, 0x61, 0x6d, 0x12, 0x2d, 0x0a, 0x04, 0x50, - 0x69, 0x6e, 0x67, 0x12, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0d, 0x41, 0x64, - 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, - 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, + 0x72, 0x6b, 0x52, 0x05, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0x3a, 0x0a, + 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x4e, 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xad, 0x03, 0x0a, 0x0c, 0x43, 0x4e, + 0x49, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4e, + 0x49, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x43, 0x4e, + 0x49, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x10, 0xe9, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x43, 0x4e, 0x49, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x49, 0x50, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xea, 0x07, 0x12, 0x21, 0x0a, 0x1c, 0x43, 0x4e, 0x49, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, + 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xeb, 0x07, 0x12, 0x1a, 0x0a, 0x15, + 0x43, 0x4e, 0x49, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x45, 0x49, 0x50, 0x46, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xec, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x43, 0x4e, 0x49, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x10, 0xed, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x43, 0x4e, 0x49, 0x42, 0x69, 0x6e, 0x64, 0x45, 0x49, + 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xee, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x43, + 0x4e, 0x49, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x45, 0x49, 0x50, 0x46, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x10, 0xef, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x43, 0x4e, 0x49, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x65, 0x55, 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf0, + 0x07, 0x12, 0x19, 0x0a, 0x14, 0x43, 0x4e, 0x49, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x55, + 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf1, 0x07, 0x12, 0x18, 0x0a, 0x13, + 0x43, 0x4e, 0x49, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x55, 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x10, 0xf2, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x43, 0x4e, 0x49, 0x44, 0x65, 0x74, + 0x61, 0x63, 0x68, 0x55, 0x4e, 0x49, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf3, 0x07, + 0x12, 0x13, 0x0a, 0x0e, 0x43, 0x4e, 0x49, 0x4b, 0x38, 0x53, 0x41, 0x50, 0x49, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x10, 0xf4, 0x07, 0x12, 0x14, 0x0a, 0x0f, 0x43, 0x4e, 0x49, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x44, 0x42, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xf5, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x43, + 0x4e, 0x49, 0x52, 0x65, 0x61, 0x64, 0x44, 0x42, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xf6, 0x07, + 0x12, 0x17, 0x0a, 0x12, 0x43, 0x4e, 0x49, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x10, 0xf7, 0x07, 0x32, 0xb0, 0x07, 0x0a, 0x07, 0x43, 0x4e, + 0x49, 0x49, 0x70, 0x61, 0x6d, 0x12, 0x2d, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, - 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, + 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, + 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, + 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, - 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x13, 0x44, 0x65, - 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x12, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x50, 0x6f, 0x64, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x39, 0x0a, 0x08, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x12, 0x14, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, - 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x18, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x12, - 0x14, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x75, 0x73, 0x68, - 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, - 0x0a, 0x07, 0x50, 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x75, 0x73, 0x65, 0x12, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, - 0x50, 0x12, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, - 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x3b, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x08, 0x42, + 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6f, + 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, + 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, + 0x08, 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x07, 0x50, 0x6f, 0x70, 0x50, + 0x6f, 0x6f, 0x6c, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x70, 0x50, 0x6f, 0x6f, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x6f, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x3c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x12, 0x15, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x6e, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, + 0x0a, 0x09, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, 0x12, 0x15, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, + 0x2e, 0x2f, 0x3b, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/rpc/ipamd.proto b/rpc/ipamd.proto index 70eccc9..15e9b82 100644 --- a/rpc/ipamd.proto +++ b/rpc/ipamd.proto @@ -102,6 +102,7 @@ message PodNetwork { int64 CreateTime = 15; int64 RecycleTime = 16; bool Recycled = 17; + int64 CheckHealthTime = 18; } message BorrowIPRequest {