func processServiceLBEvent(netPlugin *plugin.NetPlugin, opts cliOpts, svcLBCfg *mastercfg.CfgServiceLBState, isDelete bool) error { var err error portSpecList := []core.PortSpec{} portSpec := core.PortSpec{} netPlugin.Lock() defer func() { netPlugin.Unlock() }() serviceID := svcLBCfg.ID log.Infof("Recevied Process Service load balancer event {%v}", svcLBCfg) //create portspect list from state. //Ports format: servicePort:ProviderPort:Protocol for _, port := range svcLBCfg.Ports { portInfo := strings.Split(port, ":") if len(portInfo) != 3 { return errors.New("Invalid Port Format") } svcPort := portInfo[0] provPort := portInfo[1] portSpec.Protocol = portInfo[2] sPort, _ := strconv.ParseUint(svcPort, 10, 16) portSpec.SvcPort = uint16(sPort) pPort, _ := strconv.ParseUint(provPort, 10, 16) portSpec.ProvPort = uint16(pPort) portSpecList = append(portSpecList, portSpec) } spec := &core.ServiceSpec{ IPAddress: svcLBCfg.IPAddress, Ports: portSpecList, } operStr := "" if isDelete { err = netPlugin.DeleteServiceLB(serviceID, spec) operStr = "delete" } else { err = netPlugin.AddServiceLB(serviceID, spec) operStr = "create" } if err != nil { log.Errorf("Service Load Balancer %s failed.Error:%s", operStr, err) return err } log.Infof("Service Load Balancer %s succeeded", operStr) return nil }