Commit 49e82151 authored by Kevin Di Lallo's avatar Kevin Di Lallo
Browse files

MG manager + tc engine app lifecycle fixes

parent 8279ca3e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -941,6 +941,9 @@ func mgAppCreate(mgName string, mgApp *mgModel.MobilityGroupApp) error {
	// Store & Apply latest MG Service mappings
	applyMgSvcMapping()

	// Inform TC Engine of LB rules updatge
	publishLbRulesUpdate()

	return nil
}

@@ -1038,6 +1041,9 @@ func mgUeCreate(mgName string, appID string, mgUe *mgModel.MobilityGroupUe) erro

		// Store & Apply latest MG Service mappings
		applyMgSvcMapping()

		// Inform TC Engine of LB rules updatge
		publishLbRulesUpdate()
	}
	return nil
}
+17 −0
Original line number Diff line number Diff line
@@ -32,6 +32,17 @@ const typeMeSvc string = "ME-SVC"
const typeIngressSvc string = "INGRESS-SVC"
const typeEgressSvc string = "EGRESS-SVC"

const fieldSvcType string = "svc-type"
const fieldSvcName string = "svc-name"
const fieldSvcIp string = "svc-ip"
const fieldSvcProtocol string = "svc-protocol"
const fieldSvcPort string = "svc-port"
const fieldLbSvcName string = "lb-svc-name"
const fieldLbSvcIp string = "lb-svc-ip"
const fieldLbSvcPort string = "lb-svc-port"
const fieldLbPodName string = "lb-pod-name"
const fieldLbPodIp string = "lb-pod-ip"

const DEFAULT_LB_RULES_DB = 0

// LbRulesStore -
@@ -143,6 +154,8 @@ func (re *RoutingEngine) applyLbRules() {
				fields[fieldLbSvcName] = svcInfo.Name
				fields[fieldLbSvcIp] = tce.ipManager.GetSvcIp(svcInfo.Name)
				fields[fieldLbSvcPort] = portInfo.Port
				fields[fieldLbPodName] = svcInfo.Node
				fields[fieldLbPodIp] = tce.ipManager.GetPodIp(svcInfo.Node)

				// Make unique key
				key := tce.netCharStore.baseKey + typeLb + ":" + podInfo.Name + ":" +
@@ -178,6 +191,8 @@ func (re *RoutingEngine) applyLbRules() {
			fields[fieldLbSvcName] = svcInfo.Name
			fields[fieldLbSvcIp] = tce.ipManager.GetSvcIp(svcInfo.Name)
			fields[fieldLbSvcPort] = svcMap.SvcPort
			fields[fieldLbPodName] = svcInfo.Node
			fields[fieldLbPodIp] = tce.ipManager.GetPodIp(svcInfo.Node)

			// Make unique key
			key := tce.netCharStore.baseKey + typeLb + ":" + podInfo.Name + ":" +
@@ -200,6 +215,8 @@ func (re *RoutingEngine) applyLbRules() {
			fields[fieldLbSvcName] = svcMap.SvcName
			fields[fieldLbSvcIp] = svcMap.SvcIp
			fields[fieldLbSvcPort] = svcMap.SvcPort
			fields[fieldLbPodName] = "n/a"
			fields[fieldLbPodIp] = IP_ADDR_NONE

			// Make unique key
			key := tce.netCharStore.baseKey + typeLb + ":" + podInfo.Name + ":" +
+0 −9
Original line number Diff line number Diff line
@@ -40,15 +40,6 @@ const tcEngineKey string = "tc-engine:"
const mgManagerKey string = "mg-manager:"
const typeNet string = "net"

const fieldSvcType string = "svc-type"
const fieldSvcName string = "svc-name"
const fieldSvcIp string = "svc-ip"
const fieldSvcProtocol string = "svc-protocol"
const fieldSvcPort string = "svc-port"
const fieldLbSvcName string = "lb-svc-name"
const fieldLbSvcIp string = "lb-svc-ip"
const fieldLbSvcPort string = "lb-svc-port"

// MQ payload fields
const fieldEventType = "event-type"

+14 −2
Original line number Diff line number Diff line
@@ -70,8 +70,11 @@ const fieldSvcName string = "svc-name"
const fieldSvcIp string = "svc-ip"
const fieldSvcProtocol string = "svc-protocol"
const fieldSvcPort string = "svc-port"
const fieldLbSvcName string = "lb-svc-name"
const fieldLbSvcIp string = "lb-svc-ip"
const fieldLbSvcPort string = "lb-svc-port"
const fieldLbPodName string = "lb-pod-name"
const fieldLbPodIp string = "lb-pod-ip"

const DEFAULT_SIDECAR_DB = 0

@@ -509,8 +512,17 @@ func refreshLbRulesHandler(key string, fields map[string]string, userData interf
		"-m", "comment", "--comment", service)

	// Ignore rules with missing IP addresses
	if fields[fieldSvcIp] == ipAddrNone || fields[fieldLbSvcIp] == ipAddrNone {
		log.Debug("Missing IP address for service: ", service)
	if fields[fieldSvcIp] == ipAddrNone {
		log.Debug("Missing MG Svc IP address for service: ", service)
		return nil
	}
	if fields[fieldLbSvcIp] == ipAddrNone {
		log.Debug("Missing LB Svc IP address for service: ", fields[fieldLbSvcName])
		return nil
	}
	// For ME Svc & Ingress rules, verify LB pod IP as well
	if (fields[fieldSvcType] == typeMeSvc || fields[fieldSvcType] == typeIngressSvc) && fields[fieldLbPodIp] == ipAddrNone {
		log.Debug("Missing LB Pod IP address for pod: ", fields[fieldLbPodName])
		return nil
	}