Commit 9abbb2cf authored by Muhammad Umair Khan's avatar Muhammad Umair Khan
Browse files

Bug Fix: TC-Engine

parent 9882d8db
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -20,6 +20,6 @@ COPY ./data /

RUN echo "deb http://archive.debian.org/debian stretch main" > /etc/apt/sources.list

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends iputils-ping iproute2 iptables conntrack net-tools && rm -rf /var/lib/apt/lists/*
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends iputils-ping iproute2 iptables conntrack net-tools curl && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/meep-tc-sidecar"]
+14 −0
Original line number Diff line number Diff line
@@ -275,6 +275,20 @@ func addScenarioNode(sandboxName string, nodeName string) {
			log.Error("Error creating charts: ", err)
			return
		}
	} else if mod.IsPhyLoc(nodeType) {
		node := activeModel.GetNode(nodeName)
		pl, ok := node.(*dataModel.PhysicalLocation)
		if !ok {
			log.Error("Error casting physical location: " + nodeName)
			return
		}
		for _, proc := range pl.Processes {
			err := Deploy(sandboxName, proc.Name, activeModel)
			if err != nil {
				log.Error("Error creating charts for process ", proc.Name, ": ", err)
				continue
			}
		}
	} else {
		log.Error("Unsupported node type: ", nodeType)
		return
+22 −3
Original line number Diff line number Diff line
@@ -540,6 +540,7 @@ func (m *Model) addPhyLoc(node *dataModel.ScenarioNode, parentNode *Node) (err e

	// Get parent Network Location node & context information
	nl := parentNode.object.(*dataModel.NetworkLocation)
	nlCtx := parentNode.context.(*NodeContext)

	// Validate Physical Location
	if node.NodeDataUnion == nil || node.NodeDataUnion.PhysicalLocation == nil {
@@ -551,12 +552,30 @@ func (m *Model) addPhyLoc(node *dataModel.ScenarioNode, parentNode *Node) (err e
		return err
	}

	// Ignore any configured processes
	pl.Processes = make([]dataModel.Process, 0)

	// Add PhyLoc to parent NetLoc
	nl.PhysicalLocations = append(nl.PhysicalLocations, *pl)

	// Add configured processes
	for iProc := range pl.Processes {
		proc := &pl.Processes[iProc]
		
		// Create node context (Scenario -> Domain -> Zone -> NetLoc -> PhyLoc)
		procCtx := NewNodeContext(nlCtx.Parents[Deployment], nlCtx.Parents[Domain], nlCtx.Parents[Zone], nl.Name, pl.Name)
		
		// Add to node map and network graph
		m.nodeMap.AddNode(NewNode(proc.Id, proc.Name, proc.Type_, proc, nil, pl, procCtx))
		m.networkGraph.AddNode(proc.Name, pl.Name, false)
		
		// Update service map for external processes
		if proc.IsExternal {
			var nodeServiceMaps dataModel.NodeServiceMaps
			nodeServiceMaps.Node = proc.Name
			nodeServiceMaps.IngressServiceMap = append(nodeServiceMaps.IngressServiceMap, proc.ExternalConfig.IngressServiceMap...)
			nodeServiceMaps.EgressServiceMap = append(nodeServiceMaps.EgressServiceMap, proc.ExternalConfig.EgressServiceMap...)
			m.svcMap = append(m.svcMap, nodeServiceMaps)
		}
	}

	return nil
}