@Override protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) { Stack env = (Stack)state.getResource(); if (!DockerConstants.TYPE_COMPOSE_PROJECT.equals(env.getKind())) { return null; } Long accountId = env.getAccountId(); List<Long> agentIds = agentInstanceDao.getAgentProvider(SystemLabels.LABEL_AGENT_SERVICE_COMPOSE_PROVIDER, accountId); return agentIds.size() == 0 ? null : agentIds.get(0); }
@Override protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) { Stack env = (Stack)state.getResource(); if (!stackKind.equals(env.getKind())) { return null; } Long accountId = env.getAccountId(); List<Long> agentIds = agentInstanceDao.getAgentProvider(agentService, accountId); return agentIds.size() == 0 ? null : agentIds.get(0); }
protected List<Stack> getStacksToCleanup(Stack systemStack, String systemStackType) { List<Stack> all = objectManager.find(Stack.class, STACK.ACCOUNT_ID, systemStack.getAccountId(), STACK.REMOVED, null); if (all.isEmpty()) { return new ArrayList<>(); } List<Stack> toCleanup = new ArrayList<>(); List<String> stackExternalIdPrefixes = STACKS_TO_CLEANUP_EXTERNAL_ID.get(systemStackType); for (Stack stack : all) { boolean removeByExternalId = false; if (stack.getExternalId() != null && stackExternalIdPrefixes != null) { for (String prefix : stackExternalIdPrefixes) { if (stack.getExternalId().startsWith(prefix)) { toCleanup.add(stack); removeByExternalId = true; break; } } if (removeByExternalId) { continue; } if (STACKS_TO_CLEANUP_KIND.get(systemStackType) != null && STACKS_TO_CLEANUP_KIND.get(systemStackType).contains(stack.getKind())) { toCleanup.add(stack); } } } return toCleanup; }
private void removeVolumeTemplates(Stack stack) { List<? extends VolumeTemplate> templates = objectManager.find(VolumeTemplate.class, VOLUME_TEMPLATE.ACCOUNT_ID, stack.getAccountId(), VOLUME_TEMPLATE.REMOVED, null, VOLUME_TEMPLATE.STACK_ID, stack.getId()); for (VolumeTemplate template : templates) { objectProcessManager.scheduleStandardProcessAsync(StandardProcess.REMOVE, template, null); } }
@Override public void updateHealthState(final Stack stack) { if (stack == null) { return; } List<Service> services = objectManager.find(Service.class, SERVICE.STACK_ID, stack.getId(), SERVICE.REMOVED, null); List<? extends Host> ActiveHosts = allocatorDao.getActiveHosts(stack.getAccountId()); HashSet<Long> activeHosts = new HashSet<Long>(); for(Host host: ActiveHosts){ activeHosts.add(host.getId()); } setServiceHealthState(services, activeHosts); setStackHealthState(stack); setEnvironmentHealthState(objectManager.loadResource(Account.class, stack.getAccountId())); }
private void removeVolumes(Stack stack) { List<? extends Volume> volumes = objectManager.find(Volume.class, VOLUME.ACCOUNT_ID, stack.getAccountId(), VOLUME.REMOVED, null, VOLUME.STACK_ID, stack.getId()); for (Volume volume : volumes) { String state = volume.getState(); if (!REMOVED.equals(state) && !REMOVING.equals(state)){ try { objectProcessManager.scheduleStandardProcessAsync(StandardProcess.REMOVE, volume, null); } catch (ProcessCancelException e) { volume = resourceMonitor.waitForState(volume, STATE_DETACHED, 3000L); objectProcessManager.scheduleStandardProcessAsync(StandardProcess.REMOVE, volume, null); } } } }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Object resource = state.getResource(); if (resource instanceof Stack) { Stack stack = (Stack)resource; if (!ServiceConstants.isSystem(stack)) { Account account = objectManager.loadResource(Account.class, stack.getAccountId()); if (DataAccessor.fieldString(account, AccountConstants.FIELD_ORCHESTRATION) != null) { return null; } } trigger(stack.getAccountId()); } else if (resource instanceof Host) { trigger(((Host) resource).getAccountId()); } return null; }
SCHEDULED_UPGRADE.ACCOUNT_ID, stack.getAccountId(), SCHEDULED_UPGRADE.STACK_ID, stack.getId());
@Override public void cleanupResources(final Service service) { if (!DockerConstants.TYPE_COMPOSE_SERVICE.equals(service.getKind())) { return; } final Stack env = objectManager.loadResource(Stack.class, service.getStackId()); lockManager.lock(new DefaultMultiLockDefinition(new ComposeProjectLock(env.getAccountId(), env.getName()), new ComposeServiceLock(env.getAccountId(), service.getName())), new LockCallbackNoReturn() { @Override public void doWithLockNoResult() { checkAndDelete(service, env); } }); }
/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.Stack from) { setId(from.getId()); setName(from.getName()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid()); setDescription(from.getDescription()); setState(from.getState()); setCreated(from.getCreated()); setRemoved(from.getRemoved()); setRemoveTime(from.getRemoveTime()); setData(from.getData()); setExternalId(from.getExternalId()); setHealthState(from.getHealthState()); setGroup(from.getGroup()); setSystem(from.getSystem()); }