@SuppressWarnings("unchecked") protected void populateSelectorServiceLabels(Service service, String launchConfigName, Map<String, Object> composeServiceData) { String selectorContainer = service.getSelectorContainer(); String selectorLink = service.getSelectorLink(); if (selectorContainer == null && selectorLink == null) { return; } Map<String, String> labels = new HashMap<>(); if (composeServiceData.get(InstanceConstants.FIELD_LABELS) != null) { labels.putAll((HashMap<String, String>) composeServiceData.get(InstanceConstants.FIELD_LABELS)); } if (selectorLink != null) { labels.put(ServiceConstants.LABEL_SELECTOR_LINK, selectorLink); } if (selectorContainer != null) { labels.put(ServiceConstants.LABEL_SELECTOR_CONTAINER, selectorContainer); } if (!labels.isEmpty()) { composeServiceData.put(InstanceConstants.FIELD_LABELS, labels); } }
@SuppressWarnings("unchecked") protected void cleanupOldSelectorLinks(ProcessState state, Service service) { String selectorLink = service.getSelectorLink(); String oldSelectorLink = ""; Object oldObj = state.getData().get("old"); if (oldObj != null) { Map<String, Object> old = (Map<String, Object>) oldObj; Object obj = old.get(ServiceConstants.FIELD_SELECTOR_LINK); if (obj != null) { oldSelectorLink = obj.toString(); } } if (!StringUtils.isEmpty(oldSelectorLink) && !oldSelectorLink.equalsIgnoreCase(selectorLink)) { deregisterOldServiceLinks(service, oldSelectorLink); } }
protected Set<Long> getSelectorBasedLinks(Service service, PortRule rule, List<Service> targetServices) { Set<Long> svcIds = new HashSet<>(); for (Service targetService : targetServices) { // skip itself if (targetService.getId().equals(service.getId())) { continue; } if (validateSelector(rule)) { if (sdService.isSelectorLinkMatch(rule.getSelector(), targetService)) { svcIds.add(targetService.getId()); } } if (sdService.isSelectorLinkMatch(targetService.getSelectorLink(), service)) { svcIds.add(targetService.getId()); } } return svcIds; }
private void registerAsTargetService(Service targetService) { List<Long> accountIds = new ArrayList<>(); accountIds.add(targetService.getAccountId()); List<? extends AccountLink> linkedToAccounts = objectManager.find(AccountLink.class, ACCOUNT_LINK.LINKED_ACCOUNT_ID, targetService.getAccountId(), ACCOUNT_LINK.REMOVED, null); // add all accounts that are linked to service's account for (AccountLink linkedToAccount : linkedToAccounts) { accountIds.add(linkedToAccount.getAccountId()); } List<Service> services = new ArrayList<>(); for (Long accountId : accountIds) { services.addAll(objectManager.find(Service.class, SERVICE.ACCOUNT_ID, accountId, SERVICE.REMOVED, null)); } for (Service service : services) { // skip itself if (targetService.getId().equals(service.getId())) { continue; } if (isSelectorLinkMatch(service.getSelectorLink(), targetService)) { addServiceLink(service, targetService); } } }
private void registerTargetServices(Service service) { List<Long> targetAccountIds = new ArrayList<>(); targetAccountIds.add(service.getAccountId()); // add all accounts that are linked to service's account List<? extends AccountLink> linkedAccounts = objectManager.find(AccountLink.class, ACCOUNT_LINK.ACCOUNT_ID, service.getAccountId(), ACCOUNT_LINK.REMOVED, null, ACCOUNT_LINK.LINKED_ACCOUNT_ID, new Condition(ConditionType.NOTNULL)); for (AccountLink linkedAccount : linkedAccounts) { targetAccountIds.add(linkedAccount.getLinkedAccountId()); } List<Service> targetServices = new ArrayList<>(); for (Long accountId : targetAccountIds) { targetServices.addAll(objectManager.find(Service.class, SERVICE.ACCOUNT_ID, accountId, SERVICE.REMOVED, null)); } for (Service targetService : targetServices) { // skip itself if (targetService.getId().equals(service.getId())) { continue; } if (isSelectorLinkMatch(service.getSelectorLink(), targetService)) { addServiceLink(service, targetService); } } }
private List<Service> lookupAllActiveLBServices(Service targetService) { Map<Long, Service> lbServices = new HashMap<>(); List<Service> lbServicesForAccount = objectManager.find(Service.class, SERVICE.ACCOUNT_ID, targetService.getAccountId(), SERVICE.REMOVED, null, SERVICE.KIND, ServiceConstants.KIND_LOAD_BALANCER_SERVICE); // find all lbServices that have the given service as a target by looking at PortRules for (Service lbService : lbServicesForAccount) { if (sdService.isActiveService(lbService)) { LbConfig lbConfig = DataAccessor.field(lbService, ServiceConstants.FIELD_LB_CONFIG, jsonMapper, LbConfig.class); if (lbConfig != null && lbConfig.getPortRules() != null) { for (PortRule rule : lbConfig.getPortRules()) { if (!StringUtils.isEmpty(rule.getServiceId()) && Long.valueOf(rule.getServiceId()).equals(targetService.getId())) { lbServices.put(lbService.getId(), lbService); } else { if (sdService.isSelectorLinkMatch(rule.getSelector(), targetService)) { lbServices.put(lbService.getId(), lbService); } if (sdService.isSelectorLinkMatch(targetService.getSelectorLink(), lbService)) { lbServices.put(lbService.getId(), lbService); } } } } } } return new ArrayList<Service>(lbServices.values()); }
/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.Service 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()); setStackId(from.getStackId()); setVip(from.getVip()); setCreateIndex(from.getCreateIndex()); setSelectorLink(from.getSelectorLink()); setSelectorContainer(from.getSelectorContainer()); setExternalId(from.getExternalId()); setHealthState(from.getHealthState()); setSystem(from.getSystem()); setSkip(from.getSkip()); }