@Override
  @SuppressWarnings("unchecked")
  public void createLoadBalancerService(
      Service service, List<? extends Long> certIds, Long defaultCertId) {
    String lbName = getLoadBalancerName(service);
    // 1. create load balancer config
    Map<String, Object> lbConfigData =
        (Map<String, Object>)
            DataAccessor.field(
                service,
                ServiceDiscoveryConstants.FIELD_LOAD_BALANCER_CONFIG,
                jsonMapper,
                Map.class);

    if (lbConfigData == null) {
      lbConfigData = new HashMap<String, Object>();
    }

    LoadBalancerConfig lbConfig = createDefaultLoadBalancerConfig(lbName, lbConfigData, service);

    // 2. add listeners to the config based on the ports info
    Map<String, Object> launchConfigData =
        ServiceDiscoveryUtil.getLaunchConfigDataAsMap(service, null);
    createListeners(service, lbConfig, launchConfigData);

    // 3. create a load balancer
    createLoadBalancer(service, lbName, lbConfig, launchConfigData, certIds, defaultCertId);
  }
Ejemplo n.º 2
0
 protected List<? extends Instance> getServiceInstancesToRestart(Service service) {
   // get all instances of the service
   List<? extends Instance> instances = exposeMapDao.listServiceManagedInstances(service.getId());
   List<Instance> toRestart = new ArrayList<>();
   ServiceRestart svcRestart =
       DataAccessor.field(
           service, ServiceDiscoveryConstants.FIELD_RESTART, jsonMapper, ServiceRestart.class);
   RollingRestartStrategy strategy = svcRestart.getRollingRestartStrategy();
   Map<Long, Long> instanceToStartCount = strategy.getInstanceToStartCount();
   // compare its start_count with one set on the service restart field
   for (Instance instance : instances) {
     if (instanceToStartCount.containsKey(instance.getId())) {
       Long previousStartCount = instanceToStartCount.get(instance.getId());
       if (previousStartCount == instance.getStartCount()) {
         toRestart.add(instance);
       }
     }
   }
   return toRestart;
 }