Commit f278b69e authored by englab's avatar englab
Browse files

external service instance support for group services

parent 7ab25b90
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -88,6 +88,20 @@ spec:
  - port: {{.port}}
    targetPort: {{.targetPort}}
    protocol: {{.protocol}}
{{if .mesvcname}}
---
kind: Service
apiVersion: v1
metadata:
  name: {{.mesvcname}}
  namespace: default
spec:
  type: ClusterIP
  ports:
  - port: {{.port}}
    targetPort: {{.targetPort}}
    protocol: {{.protocol}}
{{end}}
{{- end}}
{{- end}}

+7 −0
Original line number Diff line number Diff line
@@ -275,6 +275,13 @@ func parseScenario(scenario ceModel.Scenario) {
							userChartGroup := strings.Split(proc.UserChartGroup, ":")
							addServiceInfo(userChartGroup[0], userChartGroup[1], proc.Name)
						}

						// Store information from external config
						if proc.ExternalConfig != nil {
							for _, svcMap := range proc.ExternalConfig.EgressServiceMap {
								addServiceInfo(svcMap.Name, svcMap.MeSvcName, proc.Name)
							}
						}
					}
				}
			}
+1 −1
Original line number Diff line number Diff line
@@ -1017,7 +1017,7 @@ func applyMgSvcMapping() {

	keys := map[string]bool{}

	// For each pod, add MG Service LB rules & exposed services rules
	// For each pod, add MG, ingress & egress Service LB rules
	for _, podInfo := range podInfoMap {

		// MG Service LB rules
+19 −10
Original line number Diff line number Diff line
@@ -262,24 +262,33 @@ func populateScenarioTemplate(scenario model.Scenario) ([]helm.Chart, error) {
								addExtSelector(externalTemplate, "meepAppId: "+proc.Id)

								// Add ingress Service Maps, if any
								for _, serviceMap := range proc.ExternalConfig.IngressServiceMap {
								for _, svcMap := range proc.ExternalConfig.IngressServiceMap {
									var ingressSvcTemplate IngressServiceTemplate
									ingressSvcTemplate.NodePort = strconv.Itoa(int(serviceMap.ExternalPort))
									ingressSvcTemplate.Port = strconv.Itoa(int(serviceMap.Port))
									ingressSvcTemplate.Protocol = serviceMap.Protocol
									ingressSvcTemplate.NodePort = strconv.Itoa(int(svcMap.ExternalPort))
									ingressSvcTemplate.Port = strconv.Itoa(int(svcMap.Port))
									ingressSvcTemplate.Protocol = svcMap.Protocol
									ingressSvcTemplate.Name = "ingress-" + proc.Id + "-" + ingressSvcTemplate.NodePort

									externalTemplate.IngressServiceMap = append(externalTemplate.IngressServiceMap, ingressSvcTemplate)
								}

								// Add egress Service Maps, if any
								for _, serviceMap := range proc.ExternalConfig.EgressServiceMap {
								for _, svcMap := range proc.ExternalConfig.EgressServiceMap {
									var egressSvcTemplate EgressServiceTemplate
									egressSvcTemplate.Name = serviceMap.Name
									egressSvcTemplate.MeSvcName = serviceMap.MeSvcName
									egressSvcTemplate.IP = serviceMap.Ip
									egressSvcTemplate.Port = strconv.Itoa(int(serviceMap.Port))
									egressSvcTemplate.Protocol = serviceMap.Protocol
									egressSvcTemplate.Name = svcMap.Name
									egressSvcTemplate.IP = svcMap.Ip
									egressSvcTemplate.Port = strconv.Itoa(int(svcMap.Port))
									egressSvcTemplate.Protocol = svcMap.Protocol

									// Create and store ME Service template only with first occurrence.
									// If it already exists then add the matching pod label but don't create the service again.
									meSvcName := svcMap.MeSvcName
									if meSvcName != "" {
										if _, found := serviceMap[meSvcName]; !found {
											serviceMap[meSvcName] = "meepMeSvc: " + meSvcName
											egressSvcTemplate.MeSvcName = meSvcName
										}
									}

									externalTemplate.EgressServiceMap = append(externalTemplate.EgressServiceMap, egressSvcTemplate)
								}