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; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Stack systemStack = (Stack) state.getResource(); if (systemStack.getExternalId() == null) { return null; } String systemStackType = SystemStackUpdate.getStackTypeFromExternalId(systemStack.getExternalId()); if (systemStackType == null) { return null; } for (Stack toCleanup : getStacksToCleanup(systemStack, systemStackType)) { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, toCleanup, null); } return null; }
protected void migrateCommunityStacks() { for (String orc : COMMUNITY_STACKS) { String fromLike = String.format("%%catalog://community:%s:%%", orc); for (Stack stack : objectManager.find(Stack.class, STACK.EXTERNAL_ID, new Condition(ConditionType.LIKE, fromLike), STACK.REMOVED, null)) { String[] parts = stack.getExternalId().split(":"); String to = String.format("catalog://community:infra*%s:%s", orc, parts[parts.length-1]); stack.setExternalId(to); objectManager.persist(stack); } } }
protected void migrateLibraryStacks() { for (String orc : LIBRARY_STACKS) { String fromLike = String.format("%%catalog://library:%s:%%", orc); for (Stack stack : objectManager.find(Stack.class, STACK.EXTERNAL_ID, new Condition(ConditionType.LIKE, fromLike), STACK.REMOVED, null)) { String[] parts = stack.getExternalId().split(":"); String toOrc = orc; if (orc.equals("kubernetes")) { toOrc = "k8s"; } String to = String.format("catalog://library:infra*%s:%s", toOrc, parts[parts.length-1]); if (to.equals("catalog://library:infra*k8s:7")) { to = "catalog://library:infra*k8s:8"; } stack.setExternalId(to); objectManager.persist(stack); } } }
protected Template getDefaultTemplateVersion(Stack stack) throws IOException { Template template = getTemplateVersionById(stack.getExternalId()); if (template == null || template.getLinks() == null && !template.getLinks().containsKey("template")) { return null; } String url = template.getLinks().get("template"); if (StringUtils.isBlank(url)) { return null; } StringBuilder builder = new StringBuilder(url); appendVersionCheck(builder); return getDefaultOrLatestTemplate(getTemplateAtURL(builder.toString())); }
protected void process(ProcessState state, ProcessInstance process) throws IOException { ScheduledUpgrade upgrade = (ScheduledUpgrade)state.getResource(); Stack stack = objectManager.loadResource(Stack.class, upgrade.getStackId()); if (StringUtils.isBlank(stack.getExternalId()) || stack.getRemoved() != null) { return; if (upgradeToExternalId.equals(stack.getExternalId())) { return; } else { String setting = UpgradeManager.UPGRADE_MANAGER.get(); if (setting.equalsIgnoreCase("manadatory") && !stack.getExternalId().contains(UpgradeManager.METADATA)) { return;
String templateId = catalogService.getTemplateIdFromExternalId(stack.getExternalId()); if (StringUtils.isBlank(templateId)) { continue;
if (StringUtils.isNotBlank(stack.getExternalId()) && stack.getExternalId().contains(UpgradeManager.METADATA)) { priority = 100L; delay = 0L;
externalIds.add(stack.getExternalId()); String orcType = getStackTypeFromExternalId(stack.getExternalId()); if (VIRTUAL_MACHINE.equals(orcType)) { virtualMachine = true;
/** * {@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()); }