public void trigger(Long accountId) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Account.class, accountId); request.addItem(STACKS); request.withDeferredTrigger(true); itemManager.updateConfig(request); }
public static void setWaitFor(ConfigUpdateRequest request) { request.getAttributes().put(WAIT_FOR, true); }
@Override protected void populateContext(Agent agent, Instance instance, ConfigItem item, ArchiveContext context) { context.getData().put("data", map.getMap(name)); if (instance != null) { return; } Client client = new Client(Agent.class, agent.getId()); ConfigUpdateRequest request = new ConfigUpdateRequest(client).withDeferredTrigger(true); for (String itemName : REQUIRED.get()) { if (!statusManager.isAssigned(client, itemName)) { log.info("Adding missing [{}] to agent [{}]", itemName, agent.getId()); request.addItem(itemName); } } if (request.getItems().size() > 0) { statusManager.updateConfig(request); } }
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 void handleDownload(Request req) throws IOException { ConfigItem item = itemRegistry.getConfigItem(req.getItemName()); if (item == null) { log.info("Client [{}] requested unknown item [{}]", req.getClient(), req.getItemName()); req.setResponseCode(Request.NOT_FOUND); return; } if (!versionManager.isAssigned(req.getClient(), req.getItemName())) { if (item.isDynamicallyApplied()) { ConfigUpdateRequest updateRequest = new ConfigUpdateRequest(req.getClient()).withDeferredTrigger(true); updateRequest.addItem(req.getItemName()); versionManager.updateConfig(updateRequest); } else { log.error("Client [{}] requesting non-assigned item [{}]", req.getClient(), req.getItemName()); req.setResponseCode(Request.NOT_FOUND); return; } } log.info("Processing [{}] for client [{}]", req.getItemName(), req.getClient()); item.handleRequest(req); }
for (final Map.Entry<Client, List<String>> entry : items.entrySet()) { final Client client = entry.getKey(); final ConfigUpdateRequest request = new ConfigUpdateRequest(client).withMigration(migration); request.addItem(item).withApply(false).withIncrement(false).withCheckInSyncOnly(true);
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 (request.isMigration()) { log.info("Waiting on [{}] on [{}], for migration", client, name); } else {
@Override public void updateConfig(ConfigUpdateRequest request) { if (request.getClient() == null) { throw new IllegalArgumentException("Client is null on request [" + request + "]"); log.trace("ITEM UPDATE: for [{}]", request.getClient()); 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(name); log.trace("ITEM UPDATE: incrementOrApply [{}]", request.getClient()); configItemStatusDao.incrementOrApply(client, name); log.trace("ITEM UPDATE: done incrementOrApply [{}]", request.getClient()); } else { log.info("ITEM UPDATE: ignore [{}] [{}]", name, request.getClient()); continue; log.trace("ITEM UPDATE: get requested [{}]", request.getClient()); requestedVersion = configItemStatusDao.getRequestedVersion(client, name); log.trace("ITEM UPDATE: done get requested [{}]", request.getClient()); } else if (requestedVersion == null && item.getSetVersion() != null) { log.trace("ITEM UPDATE: setVersion [{}]", request.getClient()); configItemStatusDao.setIfOlder(client, name, item.getSetVersion()); log.trace("ITEM UPDATE: done setVersion [{}]", request.getClient()); requestedVersion = item.getSetVersion(); } else if (requestedVersion == null && item.isIncrement()) {
public static ConfigUpdateRequest forResource(Class<?> type, Long resourceId) { return new ConfigUpdateRequest(new Client(type, resourceId)); }
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 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(); }
@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); }
@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 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); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { List<Service> services = new ArrayList<>(); Set<Long> stackIds = new HashSet<>(); if (state.getResource() instanceof Stack) { stackIds.add(((Stack) state.getResource()).getId()); } else if (state.getResource() instanceof Service) { services.add((Service) state.getResource()); } else if (state.getResource() instanceof Instance) { services.addAll(instanceDao.findServicesFor((Instance) state.getResource())); } for (Service service : services) { stackIds.add(service.getStackId()); } for (Long stackId : stackIds) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Stack.class, stackId); request.addItem(STACK); request.withDeferredTrigger(true); itemManager.updateConfig(request); } return null; }