@Override public String toString() { return toShortString(); }
/** * Deploy in the maintenance thread to avoid scheduling multiple deployments of the same application if it takes * longer to deploy than the (short) maintenance interval of this */ @Override protected void deploy(ApplicationId application) { deployWithLock(application); log.info("Redeployed application " + application.toShortString() + " as a manual change was made to its nodes"); }
@Override public LoadBalancer create(ApplicationId application, ClusterSpec.Id cluster, Set<Real> reals) { LoadBalancer loadBalancer = new LoadBalancer( new LoadBalancerId(application, cluster), HostName.from("lb-" + application.toShortString() + "-" + cluster.value()), Optional.of(new DnsZone("zone-id-1")), Collections.singleton(4443), ImmutableSet.of("10.2.3.0/24", "10.4.5.0/24"), reals, false); loadBalancers.put(loadBalancer.id(), loadBalancer); return loadBalancer; }
@Override public void activate(NestedTransaction transaction, ApplicationId application, Collection<HostSpec> hosts) { validate(hosts); activator.activate(application, hosts, transaction); transaction.onCommitted(() -> { if (nodeRepository.flags().get(FlagId.exclusiveLoadBalancer).isEnabled(application)) { try { loadBalancerProvisioner.ifPresent(lbProvisioner -> lbProvisioner.provision(application)); } catch (Exception e) { log.log(LogLevel.ERROR, "Failed to provision load balancer for application " + application.toShortString(), e); } } }); }
if (! allocation.fullfilled() && requestedNodes.canFail()) throw new OutOfCapacityException("Could not satisfy " + requestedNodes + " for " + cluster + " in " + application.toShortString() + outOfCapacityDetails(allocation));