in pkg/cloudprovider/vsphere/loadbalancer/state.go [64:128]
func (s *state) Process(class *loadBalancerClass) error {
var err error
s.ipAddressAlloc, s.ipAddress, err = s.access.FindExternalIPAddressForObject(class.ipPool.Identifier, s.clusterName, s.objectName)
if err != nil {
return err
}
s.servers, err = s.access.FindVirtualServers(s.clusterName, s.objectName)
if err != nil {
return err
}
s.pools, err = s.access.FindPools(s.clusterName, s.objectName)
if err != nil {
return err
}
s.tcpMonitors, err = s.access.FindTCPMonitorProfiles(s.clusterName, s.objectName)
if err != nil {
return err
}
if len(s.servers) > 0 {
className := getTag(s.servers[0].Tags, ScopeLBClass)
ipPoolID := getTag(s.servers[0].Tags, ScopeIPPoolID)
if class.className != className || class.ipPool.Identifier != ipPoolID {
classConfig := &config.LoadBalancerClassConfig{
IPPoolID: ipPoolID,
}
class, err = newLBClass(className, classConfig, class, nil)
if err != nil {
return err
}
}
}
s.class = class
for _, servicePort := range s.service.Spec.Ports {
mapping := NewMapping(servicePort)
monitor, err := s.getTCPMonitor(mapping)
if err != nil {
return err
}
pool, err := s.getPool(mapping, monitor)
if err != nil {
return err
}
_, err = s.getVirtualServer(mapping, pool.Path)
if err != nil {
return err
}
}
validPoolPaths, err := s.deleteOrphanVirtualServers()
if err != nil {
return err
}
s.CtxInfof("validPoolPaths: %v", validPoolPaths.List())
validTCPMonitorPaths, err := s.deleteOrphanPools(validPoolPaths)
if err != nil {
return err
}
s.CtxInfof("validTCPMonitorPaths: %v", validTCPMonitorPaths.List())
err = s.deleteOrphanTCPMonitors(validTCPMonitorPaths)
if err != nil {
return err
}
return nil
}