@Override public void run() { request.setUpdateFuture(call(request.getClient(), event)); } };
public void trigger(Long accountId) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Account.class, accountId); request.addItem(STACKS); request.withDeferredTrigger(true); itemManager.updateConfig(request); }
public ConfigUpdateItem addItem(String name) { ConfigUpdateItem item = new ConfigUpdateItem(name); items.add(item); return item; }
protected ConfigUpdateRequest before(ConfigUpdateRequest request, Agent agent) { if (request == null) { request = ConfigUpdateRequest.forResource(Agent.class, agent.getId()); for (String item : ITEMS.get()) { request.addItem(item).withIncrement(false).setCheckInSyncOnly(true); } } statusManager.updateConfig(request); return request; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Instance instance = (Instance)state.getResource(); if (!Boolean.TRUE.equals(instance.getSystem())) { return null; } List<Long> agentIds = agentInstanceDao.getAgentProviderIgnoreHealth(SystemLabels.LABEL_AGENT_SERVICE_IPSEC, instance.getAccountId()); for (long agentId : agentIds) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Agent.class, agentId); ConfigUpdateItem item = request.addItem("psk"); item.setApply(true); item.setIncrement(false); statusManager.updateConfig(request); } return null; }
public void updateMetadata(Long accountId) { long revision = accountDao.incrementRevision(accountId); List<Long> internalAgents = agentInstanceDao.getAgentProviderIgnoreHealth(SystemLabels.LABEL_AGENT_SERVICE_METADATA, accountId); List<Long> foreignAgents = agentInstanceDao.getExternalAgentProvider(SystemLabels.LABEL_AGENT_SERVICE_METADATA, accountId); List<Long> agentIds = new ArrayList<>(); agentIds.addAll(internalAgents); agentIds.addAll(foreignAgents); for (long agentId : agentIds) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Agent.class, agentId); request.addItem("metadata-answers").withSetVersion(revision); statusManager.updateConfig(request); } }
protected List<ConfigUpdateItem> getNeedsUpdating(ConfigUpdateRequest request, boolean checkVersions) { Client client = request.getClient(); Map<String, ConfigItemStatus> statuses = getStatus(request); List<ConfigUpdateItem> toTrigger = new ArrayList<ConfigUpdateItem>(); for (ConfigUpdateItem item : request.getItems()) { String name = item.getName(); ConfigItemStatus status = statuses.get(item.getName()); if (item.isCheckInSyncOnly()) { if (!checkVersions || !ObjectUtils.equals(status.getRequestedVersion(), status.getAppliedVersion())) { if (request.isMigration()) { log.info("Waiting on [{}] on [{}], for migration", client, name); } else { } else if (item.getRequestedVersion() != null) { Long applied = status.getAppliedVersion(); if (applied == null || item.getRequestedVersion() > applied) { log.debug("Waiting on [{}] on [{}], not applied requested [{}] > applied [{}]", client, name, item.getRequestedVersion(), applied); addToList(toTrigger, item);
@Override public List<? extends ConfigItemStatus> listItems(ConfigUpdateRequest request) { Set<String> names = new HashSet<String>(); for ( ConfigUpdateItem item : request.getItems() ) { names.add(item.getName()); } return create() .selectFrom(CONFIG_ITEM_STATUS) .where( CONFIG_ITEM_STATUS.NAME.in(names) .and(targetObjectCondition(request.getClient()))) .fetch(); }
protected boolean itemDone(ConfigUpdateItem item, Map<String, ItemVersion> applied) { ItemVersion version = applied.get(item.getName()); if (version == null) { return false; } if (item.getRequestedVersion() == null) { return false; } if (version.getRevision() < item.getRequestedVersion()) { return false; } return true; }
@Override public String toString() { StringBuilder message = new StringBuilder("update ["); boolean first = true; for (ConfigUpdateItem item : items) { if (!first) { message.append(", "); } first = false; message.append(item.getName()); } message.append("] on [").append(client).append("]"); return message.toString(); }
public static ConfigUpdateRequest forResource(Class<?> type, Long resourceId) { return new ConfigUpdateRequest(new Client(type, resourceId)); }
public static void setWaitFor(ConfigUpdateRequest request) { request.getAttributes().put(WAIT_FOR, true); }
protected ConfigUpdate getEvent(ConfigUpdateRequest request) { List<ConfigUpdateItem> toTrigger = getNeedsUpdating(request, !request.isMigration()); return getEvent(request, toTrigger); }
protected void triggerUpdate(final ConfigUpdateRequest request, final List<ConfigUpdateItem> items) { final ConfigUpdate event = getEvent(request, items); if (event == null) { return; } Runnable run = new Runnable() { @Override public void run() { request.setUpdateFuture(call(request.getClient(), event)); } }; if (request.isDeferredTrigger()) { DeferredUtils.defer(run); } else { run.run(); } }
@Override public void reconcileServiceEndpoints(Service service) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Service.class, service.getId()); request.addItem(SERVICE_ENDPOINTS_UPDATE); request.withDeferredTrigger(false); itemManager.updateConfig(request); }
protected static void addToList(List<ConfigUpdateItem> list, ConfigUpdateItem item) { if (PRIORITY_ITEMS.get().contains(item.getName())) { list.add(0, item); } else { list.add(item); } }
public static boolean shouldWaitFor(ConfigUpdateRequest request) { return Boolean.TRUE.equals(request.getAttributes().get(WAIT_FOR)); } }
@Override public void reconcileServices(Collection<? extends Service> services) { for (Service service: services) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Service.class, service.getId()); request.addItem(RECONCILE); request.withDeferredTrigger(true); itemManager.updateConfig(request); } }
@Override public void reconcileHostEndpoints(Host host) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Host.class, host.getId()); request.addItem(HOST_ENDPOINTS_UPDATE); request.withDeferredTrigger(false); itemManager.updateConfig(request); }