From 178b11bcf11accdf57f0d79509d80000fafbe05c Mon Sep 17 00:00:00 2001 From: Ritu Sood Date: Wed, 6 May 2020 13:47:11 -0700 Subject: Route based chaining 1) Adding controller for route based chaining 2) nfn agent code to insert route in container namespace 3) Calculate routes based on the Chaining Routes Based on the Ritu(ovn4nfv-k8s-plugin committer) patches Co-authored-by: Kuralamudhan Ramakrishnan Signed-off-by: Kuralamudhan Ramakrishnan Change-Id: I6757f269a5df7d98d650f273468c6ccbcc055d3e --- internal/pkg/nfnNotify/proto/nfn.pb.go | 270 +++++++++++++++++++++++++++------ internal/pkg/nfnNotify/proto/nfn.proto | 18 +++ internal/pkg/nfnNotify/server.go | 66 ++++++++ 3 files changed, 310 insertions(+), 44 deletions(-) (limited to 'internal/pkg/nfnNotify') diff --git a/internal/pkg/nfnNotify/proto/nfn.pb.go b/internal/pkg/nfnNotify/proto/nfn.pb.go index 750d55b..70628c6 100644 --- a/internal/pkg/nfnNotify/proto/nfn.pb.go +++ b/internal/pkg/nfnNotify/proto/nfn.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: nfn.proto +// source: proto/nfn.proto package nfn @@ -35,7 +35,7 @@ func (m *SubscribeContext) Reset() { *m = SubscribeContext{} } func (m *SubscribeContext) String() string { return proto.CompactTextString(m) } func (*SubscribeContext) ProtoMessage() {} func (*SubscribeContext) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{0} + return fileDescriptor_5ee04cc9cbb38bc3, []int{0} } func (m *SubscribeContext) XXX_Unmarshal(b []byte) error { @@ -69,6 +69,8 @@ type Notification struct { // *Notification_InSync // *Notification_ProviderNwCreate // *Notification_ProviderNwRemove + // *Notification_ContainterRtInsert + // *Notification_ContainterRtRemove Payload isNotification_Payload `protobuf_oneof:"payload"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -79,7 +81,7 @@ func (m *Notification) Reset() { *m = Notification{} } func (m *Notification) String() string { return proto.CompactTextString(m) } func (*Notification) ProtoMessage() {} func (*Notification) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{1} + return fileDescriptor_5ee04cc9cbb38bc3, []int{1} } func (m *Notification) XXX_Unmarshal(b []byte) error { @@ -123,12 +125,24 @@ type Notification_ProviderNwRemove struct { ProviderNwRemove *ProviderNetworkRemove `protobuf:"bytes,4,opt,name=provider_nw_remove,json=providerNwRemove,proto3,oneof"` } +type Notification_ContainterRtInsert struct { + ContainterRtInsert *ContainerRouteInsert `protobuf:"bytes,5,opt,name=containter_rt_insert,json=containterRtInsert,proto3,oneof"` +} + +type Notification_ContainterRtRemove struct { + ContainterRtRemove *ContainerRouteRemove `protobuf:"bytes,6,opt,name=containter_rt_remove,json=containterRtRemove,proto3,oneof"` +} + func (*Notification_InSync) isNotification_Payload() {} func (*Notification_ProviderNwCreate) isNotification_Payload() {} func (*Notification_ProviderNwRemove) isNotification_Payload() {} +func (*Notification_ContainterRtInsert) isNotification_Payload() {} + +func (*Notification_ContainterRtRemove) isNotification_Payload() {} + func (m *Notification) GetPayload() isNotification_Payload { if m != nil { return m.Payload @@ -157,12 +171,28 @@ func (m *Notification) GetProviderNwRemove() *ProviderNetworkRemove { return nil } +func (m *Notification) GetContainterRtInsert() *ContainerRouteInsert { + if x, ok := m.GetPayload().(*Notification_ContainterRtInsert); ok { + return x.ContainterRtInsert + } + return nil +} + +func (m *Notification) GetContainterRtRemove() *ContainerRouteRemove { + if x, ok := m.GetPayload().(*Notification_ContainterRtRemove); ok { + return x.ContainterRtRemove + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Notification) XXX_OneofWrappers() []interface{} { return []interface{}{ (*Notification_InSync)(nil), (*Notification_ProviderNwCreate)(nil), (*Notification_ProviderNwRemove)(nil), + (*Notification_ContainterRtInsert)(nil), + (*Notification_ContainterRtRemove)(nil), } } @@ -179,7 +209,7 @@ func (m *ProviderNetworkCreate) Reset() { *m = ProviderNetworkCreate{} } func (m *ProviderNetworkCreate) String() string { return proto.CompactTextString(m) } func (*ProviderNetworkCreate) ProtoMessage() {} func (*ProviderNetworkCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{2} + return fileDescriptor_5ee04cc9cbb38bc3, []int{2} } func (m *ProviderNetworkCreate) XXX_Unmarshal(b []byte) error { @@ -234,7 +264,7 @@ func (m *ProviderNetworkRemove) Reset() { *m = ProviderNetworkRemove{} } func (m *ProviderNetworkRemove) String() string { return proto.CompactTextString(m) } func (*ProviderNetworkRemove) ProtoMessage() {} func (*ProviderNetworkRemove) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{3} + return fileDescriptor_5ee04cc9cbb38bc3, []int{3} } func (m *ProviderNetworkRemove) XXX_Unmarshal(b []byte) error { @@ -289,7 +319,7 @@ func (m *VlanInfo) Reset() { *m = VlanInfo{} } func (m *VlanInfo) String() string { return proto.CompactTextString(m) } func (*VlanInfo) ProtoMessage() {} func (*VlanInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{4} + return fileDescriptor_5ee04cc9cbb38bc3, []int{4} } func (m *VlanInfo) XXX_Unmarshal(b []byte) error { @@ -342,7 +372,7 @@ func (m *DirectInfo) Reset() { *m = DirectInfo{} } func (m *DirectInfo) String() string { return proto.CompactTextString(m) } func (*DirectInfo) ProtoMessage() {} func (*DirectInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{5} + return fileDescriptor_5ee04cc9cbb38bc3, []int{5} } func (m *DirectInfo) XXX_Unmarshal(b []byte) error { @@ -370,6 +400,147 @@ func (m *DirectInfo) GetProviderIntf() string { return "" } +type RouteData struct { + Dst string `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"` + Gw string `protobuf:"bytes,3,opt,name=gw,proto3" json:"gw,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RouteData) Reset() { *m = RouteData{} } +func (m *RouteData) String() string { return proto.CompactTextString(m) } +func (*RouteData) ProtoMessage() {} +func (*RouteData) Descriptor() ([]byte, []int) { + return fileDescriptor_5ee04cc9cbb38bc3, []int{6} +} + +func (m *RouteData) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RouteData.Unmarshal(m, b) +} +func (m *RouteData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RouteData.Marshal(b, m, deterministic) +} +func (m *RouteData) XXX_Merge(src proto.Message) { + xxx_messageInfo_RouteData.Merge(m, src) +} +func (m *RouteData) XXX_Size() int { + return xxx_messageInfo_RouteData.Size(m) +} +func (m *RouteData) XXX_DiscardUnknown() { + xxx_messageInfo_RouteData.DiscardUnknown(m) +} + +var xxx_messageInfo_RouteData proto.InternalMessageInfo + +func (m *RouteData) GetDst() string { + if m != nil { + return m.Dst + } + return "" +} + +func (m *RouteData) GetGw() string { + if m != nil { + return m.Gw + } + return "" +} + +type ContainerRouteInsert struct { + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + Route []*RouteData `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerRouteInsert) Reset() { *m = ContainerRouteInsert{} } +func (m *ContainerRouteInsert) String() string { return proto.CompactTextString(m) } +func (*ContainerRouteInsert) ProtoMessage() {} +func (*ContainerRouteInsert) Descriptor() ([]byte, []int) { + return fileDescriptor_5ee04cc9cbb38bc3, []int{7} +} + +func (m *ContainerRouteInsert) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ContainerRouteInsert.Unmarshal(m, b) +} +func (m *ContainerRouteInsert) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ContainerRouteInsert.Marshal(b, m, deterministic) +} +func (m *ContainerRouteInsert) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerRouteInsert.Merge(m, src) +} +func (m *ContainerRouteInsert) XXX_Size() int { + return xxx_messageInfo_ContainerRouteInsert.Size(m) +} +func (m *ContainerRouteInsert) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerRouteInsert.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerRouteInsert proto.InternalMessageInfo + +func (m *ContainerRouteInsert) GetContainerId() string { + if m != nil { + return m.ContainerId + } + return "" +} + +func (m *ContainerRouteInsert) GetRoute() []*RouteData { + if m != nil { + return m.Route + } + return nil +} + +type ContainerRouteRemove struct { + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + Route []*RouteData `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerRouteRemove) Reset() { *m = ContainerRouteRemove{} } +func (m *ContainerRouteRemove) String() string { return proto.CompactTextString(m) } +func (*ContainerRouteRemove) ProtoMessage() {} +func (*ContainerRouteRemove) Descriptor() ([]byte, []int) { + return fileDescriptor_5ee04cc9cbb38bc3, []int{8} +} + +func (m *ContainerRouteRemove) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ContainerRouteRemove.Unmarshal(m, b) +} +func (m *ContainerRouteRemove) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ContainerRouteRemove.Marshal(b, m, deterministic) +} +func (m *ContainerRouteRemove) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerRouteRemove.Merge(m, src) +} +func (m *ContainerRouteRemove) XXX_Size() int { + return xxx_messageInfo_ContainerRouteRemove.Size(m) +} +func (m *ContainerRouteRemove) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerRouteRemove.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerRouteRemove proto.InternalMessageInfo + +func (m *ContainerRouteRemove) GetContainerId() string { + if m != nil { + return m.ContainerId + } + return "" +} + +func (m *ContainerRouteRemove) GetRoute() []*RouteData { + if m != nil { + return m.Route + } + return nil +} + type InSync struct { NodeIntfIpAddress string `protobuf:"bytes,1,opt,name=node_intf_ip_address,json=nodeIntfIpAddress,proto3" json:"node_intf_ip_address,omitempty"` NodeIntfMacAddress string `protobuf:"bytes,2,opt,name=node_intf_mac_address,json=nodeIntfMacAddress,proto3" json:"node_intf_mac_address,omitempty"` @@ -382,7 +553,7 @@ func (m *InSync) Reset() { *m = InSync{} } func (m *InSync) String() string { return proto.CompactTextString(m) } func (*InSync) ProtoMessage() {} func (*InSync) Descriptor() ([]byte, []int) { - return fileDescriptor_5b809db4a7814953, []int{6} + return fileDescriptor_5ee04cc9cbb38bc3, []int{9} } func (m *InSync) XXX_Unmarshal(b []byte) error { @@ -424,45 +595,56 @@ func init() { proto.RegisterType((*ProviderNetworkRemove)(nil), "ProviderNetworkRemove") proto.RegisterType((*VlanInfo)(nil), "VlanInfo") proto.RegisterType((*DirectInfo)(nil), "DirectInfo") + proto.RegisterType((*RouteData)(nil), "RouteData") + proto.RegisterType((*ContainerRouteInsert)(nil), "ContainerRouteInsert") + proto.RegisterType((*ContainerRouteRemove)(nil), "ContainerRouteRemove") proto.RegisterType((*InSync)(nil), "InSync") } func init() { - proto.RegisterFile("nfn.proto", fileDescriptor_5b809db4a7814953) -} - -var fileDescriptor_5b809db4a7814953 = []byte{ - // 472 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xdd, 0x6e, 0xd3, 0x30, - 0x14, 0x5e, 0xd8, 0xd4, 0x34, 0xa7, 0x1d, 0xb4, 0x47, 0x1b, 0x14, 0x10, 0xd2, 0xc8, 0x6e, 0x2a, - 0x2e, 0xd2, 0x6d, 0xdc, 0x72, 0x03, 0x43, 0x68, 0x91, 0xa0, 0x42, 0x19, 0xe2, 0xd6, 0x72, 0x1d, - 0x07, 0x59, 0x4b, 0x8f, 0xa3, 0xd4, 0xb4, 0xe4, 0x01, 0x78, 0x0e, 0x5e, 0x8f, 0xc7, 0x40, 0xb1, - 0x93, 0xfe, 0xac, 0xbb, 0xe1, 0x2e, 0x39, 0xdf, 0xf9, 0x7e, 0x6c, 0xf9, 0x83, 0x80, 0x32, 0x8a, - 0x8a, 0x52, 0x1b, 0x1d, 0x4e, 0x60, 0x70, 0xfb, 0x73, 0xb6, 0x10, 0xa5, 0x9a, 0xc9, 0x6b, 0x4d, - 0x46, 0xfe, 0x32, 0xf8, 0x12, 0x02, 0xd2, 0xa9, 0x64, 0xc4, 0xe7, 0x72, 0xe4, 0x9d, 0x79, 0xe3, - 0x20, 0xe9, 0xd6, 0x83, 0x29, 0x9f, 0xcb, 0xf0, 0xaf, 0x07, 0xfd, 0xa9, 0x36, 0x2a, 0x53, 0x82, - 0x1b, 0xa5, 0x09, 0x9f, 0x43, 0x57, 0x90, 0x62, 0xa6, 0x2a, 0xda, 0x65, 0x5f, 0x90, 0xfa, 0x56, - 0x15, 0x12, 0x43, 0xf0, 0x15, 0xb1, 0x45, 0x45, 0x62, 0xf4, 0xe8, 0xcc, 0x1b, 0xf7, 0xae, 0xfc, - 0x28, 0xa6, 0xdb, 0x8a, 0xc4, 0xcd, 0x41, 0xd2, 0x51, 0xf6, 0x0b, 0x3f, 0x01, 0x16, 0xa5, 0x5e, - 0xaa, 0x54, 0x96, 0x8c, 0x56, 0x4c, 0x94, 0x92, 0x1b, 0x39, 0x3a, 0xb4, 0xeb, 0x4f, 0xa3, 0xaf, - 0x0d, 0x34, 0x95, 0x66, 0xa5, 0xcb, 0xbb, 0x6b, 0x8b, 0xde, 0x1c, 0x24, 0x83, 0x96, 0x33, 0x5d, - 0xb9, 0xd9, 0x7d, 0x9d, 0x52, 0xce, 0xf5, 0x52, 0x8e, 0x8e, 0x1e, 0xd6, 0x49, 0x2c, 0xba, 0xab, - 0xe3, 0x66, 0x1f, 0x02, 0xf0, 0x0b, 0x5e, 0xe5, 0x9a, 0xa7, 0xe1, 0x6f, 0x0f, 0x4e, 0x1f, 0x0c, - 0x80, 0x63, 0x18, 0x6c, 0x9b, 0x6d, 0x5d, 0xd4, 0xe3, 0x8d, 0x60, 0x7d, 0x5d, 0xf8, 0x0a, 0x8e, - 0x96, 0x39, 0xa7, 0xe6, 0xfc, 0x41, 0xf4, 0x3d, 0xe7, 0x14, 0x53, 0xa6, 0x13, 0x3b, 0xc6, 0x73, - 0xe8, 0xa4, 0xaa, 0x94, 0xc2, 0x34, 0x27, 0xee, 0x45, 0x1f, 0xed, 0xaf, 0x5d, 0x69, 0xa0, 0xf0, - 0xcf, 0x7e, 0x0e, 0x17, 0xf6, 0x3f, 0x72, 0xbc, 0x81, 0x61, 0x6d, 0xc8, 0x72, 0xfd, 0x43, 0x09, - 0x9e, 0x33, 0x45, 0x26, 0xb3, 0xa1, 0x82, 0xe4, 0x49, 0x0d, 0x7c, 0x76, 0xf3, 0x98, 0x4c, 0x86, - 0x17, 0x70, 0xe2, 0x9c, 0xd9, 0x5a, 0xdc, 0xae, 0x1f, 0xda, 0x75, 0x74, 0x58, 0x1b, 0xa8, 0x66, - 0x84, 0x77, 0xd0, 0x6d, 0x0f, 0x86, 0xcf, 0xc0, 0xb7, 0x4e, 0x2a, 0x6d, 0xa2, 0x74, 0xea, 0xdf, - 0x38, 0xc5, 0x73, 0x38, 0xde, 0xd5, 0x73, 0xf6, 0xfd, 0x62, 0x4b, 0x09, 0x5f, 0x43, 0x7f, 0x27, - 0xa2, 0xf3, 0xec, 0xe5, 0x9b, 0x78, 0xe1, 0x25, 0xc0, 0xe6, 0x92, 0xf6, 0x55, 0xbd, 0x7d, 0xd5, - 0x30, 0x87, 0x8e, 0x7b, 0x78, 0x38, 0x81, 0x13, 0xfb, 0xb6, 0xeb, 0x55, 0xa6, 0x0a, 0xc6, 0xd3, - 0xb4, 0x94, 0x8b, 0x45, 0xc3, 0x1a, 0xd6, 0x58, 0xcd, 0x88, 0x8b, 0xf7, 0x0e, 0xc0, 0x4b, 0x38, - 0xdd, 0x10, 0xe6, 0x5c, 0xac, 0x19, 0x2e, 0x3d, 0xb6, 0x8c, 0x2f, 0x5c, 0x34, 0x94, 0xab, 0x77, - 0xb6, 0x60, 0xb6, 0x24, 0x15, 0x4e, 0x20, 0x58, 0x17, 0x0c, 0x87, 0xd1, 0xfd, 0xb2, 0xbd, 0x38, - 0x8e, 0xb6, 0xdb, 0x74, 0xe1, 0xcd, 0x3a, 0xb6, 0x98, 0x6f, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, - 0xad, 0x54, 0x7e, 0xa2, 0xa5, 0x03, 0x00, 0x00, + proto.RegisterFile("proto/nfn.proto", fileDescriptor_5ee04cc9cbb38bc3) +} + +var fileDescriptor_5ee04cc9cbb38bc3 = []byte{ + // 601 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x6f, 0xd3, 0x4e, + 0x10, 0x6d, 0x92, 0x36, 0xa9, 0x27, 0xfd, 0x93, 0xae, 0xd2, 0xdf, 0x2f, 0x80, 0x90, 0x82, 0x7b, + 0x89, 0x90, 0x70, 0xda, 0x72, 0xe5, 0x02, 0xad, 0x50, 0x2d, 0x41, 0x84, 0x5c, 0xc4, 0x85, 0xc3, + 0x6a, 0xbb, 0xde, 0x54, 0xab, 0x3a, 0xbb, 0xd6, 0x66, 0x9b, 0xe0, 0x0f, 0xc0, 0xe7, 0xe0, 0x9b, + 0x22, 0xb4, 0x7f, 0x6c, 0x27, 0x4d, 0x0e, 0x1c, 0xb8, 0xed, 0xbe, 0x37, 0xf3, 0xe6, 0xed, 0x8c, + 0x3d, 0x70, 0x9c, 0x2b, 0xa9, 0xe5, 0x58, 0x4c, 0x45, 0x64, 0x4f, 0xe1, 0x18, 0x7a, 0xb7, 0x8f, + 0x77, 0x73, 0xaa, 0xf8, 0x1d, 0xbb, 0x92, 0x42, 0xb3, 0x1f, 0x1a, 0xbd, 0x80, 0x40, 0xc8, 0x94, + 0x61, 0x41, 0x66, 0x6c, 0xd0, 0x18, 0x36, 0x46, 0x41, 0xb2, 0x6f, 0x80, 0x09, 0x99, 0xb1, 0xf0, + 0x77, 0x13, 0x0e, 0x26, 0x52, 0xf3, 0x29, 0xa7, 0x44, 0x73, 0x29, 0xd0, 0x33, 0xd8, 0xa7, 0x82, + 0x63, 0x5d, 0xe4, 0x65, 0x70, 0x87, 0x0a, 0xfe, 0xb5, 0xc8, 0x19, 0x0a, 0xa1, 0xc3, 0x05, 0x9e, + 0x17, 0x82, 0x0e, 0x9a, 0xc3, 0xc6, 0xa8, 0x7b, 0xd9, 0x89, 0x62, 0x71, 0x5b, 0x08, 0x7a, 0xb3, + 0x93, 0xb4, 0xb9, 0x3d, 0xa1, 0x8f, 0x80, 0x72, 0x25, 0x17, 0x3c, 0x65, 0x0a, 0x8b, 0x25, 0xa6, + 0x8a, 0x11, 0xcd, 0x06, 0x2d, 0x1b, 0xfe, 0x5f, 0xf4, 0xc5, 0x53, 0x13, 0xa6, 0x97, 0x52, 0x3d, + 0x5c, 0x59, 0xf6, 0x66, 0x27, 0xe9, 0x95, 0x39, 0x93, 0xa5, 0xc3, 0x9e, 0xea, 0x28, 0x36, 0x93, + 0x0b, 0x36, 0xd8, 0xdd, 0xae, 0x93, 0x58, 0x76, 0x5d, 0xc7, 0x61, 0x28, 0x86, 0x3e, 0x95, 0x42, + 0x13, 0x2e, 0x34, 0x53, 0x58, 0x69, 0xcc, 0xc5, 0x9c, 0x29, 0x3d, 0xd8, 0xb3, 0x4a, 0xa7, 0xd1, + 0x95, 0x23, 0x99, 0x4a, 0xe4, 0xa3, 0x66, 0xb1, 0x25, 0x6f, 0x76, 0x12, 0x54, 0x27, 0x25, 0xda, + 0xa1, 0x9b, 0x52, 0xde, 0x54, 0x7b, 0xab, 0x54, 0xe5, 0x69, 0x4d, 0xca, 0xa1, 0x1f, 0x02, 0xe8, + 0xe4, 0xa4, 0xc8, 0x24, 0x49, 0xc3, 0x9f, 0x0d, 0x38, 0xdd, 0xda, 0x16, 0x34, 0x82, 0xde, 0x6a, + 0x0b, 0x56, 0xc6, 0x77, 0x54, 0x3f, 0xd3, 0x0c, 0x11, 0xbd, 0x84, 0xdd, 0x45, 0x46, 0x84, 0x9f, + 0x4a, 0x10, 0x7d, 0xcb, 0x88, 0x88, 0xc5, 0x54, 0x26, 0x16, 0x46, 0x67, 0xd0, 0x4e, 0xb9, 0x62, + 0x54, 0xfb, 0x39, 0x74, 0xa3, 0x6b, 0x7b, 0xb5, 0x21, 0x9e, 0x0a, 0x7f, 0x6d, 0xfa, 0xf0, 0x2d, + 0xfc, 0x7b, 0x1f, 0xaf, 0xe1, 0xc4, 0x14, 0xc4, 0x99, 0xbc, 0xe7, 0x94, 0x64, 0x98, 0x0b, 0x3d, + 0xb5, 0xa6, 0x82, 0xe4, 0xd8, 0x10, 0x9f, 0x1c, 0x1e, 0x0b, 0x3d, 0x45, 0xe7, 0xd0, 0x77, 0x95, + 0x71, 0x25, 0x6e, 0xc3, 0x5b, 0x36, 0x1c, 0x39, 0xae, 0x34, 0x64, 0x32, 0xc2, 0x07, 0xd8, 0x2f, + 0x1f, 0x86, 0xfe, 0x87, 0x8e, 0xad, 0xc4, 0x53, 0x6f, 0xa5, 0x6d, 0xae, 0x71, 0x8a, 0xce, 0xe0, + 0x70, 0x5d, 0xcf, 0x95, 0x3f, 0xc8, 0x57, 0x94, 0xd0, 0x2b, 0x38, 0x58, 0xb3, 0xe8, 0x6a, 0x76, + 0xb3, 0xda, 0x5e, 0x78, 0x01, 0x50, 0x37, 0x69, 0x53, 0xb5, 0xb1, 0xa9, 0x1a, 0xbe, 0x81, 0xc0, + 0x4e, 0xfe, 0x9a, 0x68, 0x82, 0x7a, 0xd0, 0x4a, 0xe7, 0xda, 0x57, 0x37, 0x47, 0x74, 0x04, 0xcd, + 0xfb, 0xa5, 0x2f, 0xd5, 0xbc, 0x5f, 0x86, 0xdf, 0xa1, 0xbf, 0xed, 0xe3, 0x33, 0xe6, 0x68, 0x89, + 0xd7, 0xef, 0xeb, 0x56, 0x58, 0x9c, 0xa2, 0x21, 0xec, 0x29, 0x93, 0x31, 0x68, 0x0e, 0x5b, 0xa3, + 0xee, 0x25, 0x44, 0x55, 0xdd, 0xc4, 0x11, 0x9b, 0xe2, 0x7e, 0x96, 0xff, 0x44, 0x3c, 0x83, 0xb6, + 0xfb, 0xef, 0xd1, 0x18, 0xfa, 0x76, 0xb5, 0x98, 0x9e, 0x60, 0x9e, 0x63, 0x92, 0xa6, 0x8a, 0xcd, + 0xe7, 0x5e, 0xf6, 0xc4, 0x70, 0xa6, 0x35, 0x71, 0xfe, 0xde, 0x11, 0xe8, 0x02, 0x4e, 0xeb, 0x84, + 0x19, 0xa1, 0x55, 0x86, 0x6b, 0x14, 0x2a, 0x33, 0x3e, 0x13, 0xea, 0x53, 0x2e, 0xdf, 0x41, 0x20, + 0xa6, 0xc2, 0xee, 0xa8, 0x02, 0x8d, 0x21, 0xa8, 0xf6, 0x1b, 0x3a, 0x89, 0x9e, 0xee, 0xba, 0xe7, + 0x87, 0xd1, 0xea, 0x32, 0x3b, 0x6f, 0xdc, 0xb5, 0xed, 0x5e, 0x7c, 0xfb, 0x27, 0x00, 0x00, 0xff, + 0xff, 0x47, 0xfb, 0x68, 0x42, 0x2a, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -569,5 +751,5 @@ var _NfnNotify_serviceDesc = grpc.ServiceDesc{ ServerStreams: true, }, }, - Metadata: "nfn.proto", + Metadata: "proto/nfn.proto", } diff --git a/internal/pkg/nfnNotify/proto/nfn.proto b/internal/pkg/nfnNotify/proto/nfn.proto index 567df29..6bd6704 100644 --- a/internal/pkg/nfnNotify/proto/nfn.proto +++ b/internal/pkg/nfnNotify/proto/nfn.proto @@ -19,6 +19,9 @@ message Notification { InSync in_sync = 2; ProviderNetworkCreate provider_nw_create = 3; ProviderNetworkRemove provider_nw_remove = 4; + ContainerRouteInsert containter_rt_insert = 5; + ContainerRouteRemove containter_rt_remove = 6; + } } @@ -46,6 +49,21 @@ message DirectInfo { string provider_intf = 1; } +message RouteData { + string dst = 2; + string gw = 3; +} + +message ContainerRouteInsert { + string container_id = 1; + repeated RouteData route = 2; +} + +message ContainerRouteRemove { + string container_id = 1; + repeated RouteData route = 2; +} + message InSync { string node_intf_ip_address = 1; string node_intf_mac_address = 2; diff --git a/internal/pkg/nfnNotify/server.go b/internal/pkg/nfnNotify/server.go index a201618..4257cf9 100644 --- a/internal/pkg/nfnNotify/server.go +++ b/internal/pkg/nfnNotify/server.go @@ -1,9 +1,26 @@ +/* + * Copyright 2020 Intel Corporation, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package nfn import ( "fmt" "net" pb "ovn4nfv-k8s-plugin/internal/pkg/nfnNotify/proto" + chaining "ovn4nfv-k8s-plugin/internal/pkg/utils" "ovn4nfv-k8s-plugin/internal/pkg/node" v1alpha1 "ovn4nfv-k8s-plugin/pkg/apis/k8s/v1alpha1" clientset "ovn4nfv-k8s-plugin/pkg/generated/clientset/versioned" @@ -269,6 +286,55 @@ func sendMsg(msg pb.Notification, labels string, option string, nodeReq string) return nil } +//SendProviderNotif to client +func SendRouteNotif(chainRoutingInfo []chaining.RoutingInfo, msgType string) error { + var msg pb.Notification + var err error + var ins pb.ContainerRouteInsert + + for _, r := range chainRoutingInfo { + ins.ContainerId = r.Id + ins.Route = nil + + rt := &pb.RouteData{ + Dst: r.LeftNetworkRoute.Dst, + Gw: r.LeftNetworkRoute.GW, + } + ins.Route = append(ins.Route, rt) + + rt = &pb.RouteData{ + Dst: r.RightNetworkRoute.Dst, + Gw: r.RightNetworkRoute.GW, + } + ins.Route = append(ins.Route, rt) + + for _, d := range r.DynamicNetworkRoutes { + rt = &pb.RouteData{ + Dst: d.Dst, + Gw: d.GW, + } + ins.Route = append(ins.Route, rt) + } + if msgType == "create" { + msg = pb.Notification{ + CniType: "ovn4nfv", + Payload: &pb.Notification_ContainterRtInsert{ + ContainterRtInsert: &ins, + }, + } + } + client := notifServer.GetClient(r.Node) + if client.stream != nil { + if err := client.stream.Send(&msg); err != nil { + log.Error(err, "Failed to send msg", "Node", r.Node) + return err + } + } + // TODO: Handle Delete + } + return err +} + func nodeListIterator(labels string) <-chan string { ch := make(chan string) -- cgit 1.2.3-korg