@Override public void run() { Service service = objectManager.loadResource(Service.class, client.getResourceId()); if (service != null && service.getRemoved() == null) { reconcileServiceEndpointsImpl(service); } } });
@Override public Object perform(String name, Object obj, ApiRequest request) { if (!(obj instanceof Stack)) { return null; } Stack stack = (Stack) obj; List<? extends Long> serviceIds = DataAccessor.fromMap(request.getRequestObject()) .withKey(ServiceConstants.FIELD_SERVICE_IDS).asList(jsonMapper, Long.class); List<? extends Service> services = objectManager.mappedChildren(stack, Service.class); List<Service> toExport = new ArrayList<>(); for (Service service : services) { // export only non-removed requested services if ((serviceIds == null || serviceIds.isEmpty()) || serviceIds.contains(service.getId())) { if (service.getRemoved() == null && !service.getState().equals(CommonStatesConstants.REMOVED)) { toExport.add(service); } } } Map.Entry<String, String> composeConfig = svcDiscoveryServer.buildComposeConfig(toExport, stack); return new ComposeConfig(composeConfig.getKey(), composeConfig.getValue()); } }
protected void validateLinks(final Map<String, ServiceLink> newServiceLinks) { for (ServiceLink link : newServiceLinks.values()) { if (link.getServiceId() == null) { continue; } Service targetService = objMgr.loadResource(Service.class, link.getServiceId()); if (targetService == null || targetService.getRemoved() != null || targetService.getState().equalsIgnoreCase(CommonStatesConstants.REMOVING)) { Object obfuscatedId = idFormatter.formatId("service", link.getServiceId()); String obfuscatedIdStr = obfuscatedId != null ? obfuscatedId.toString() : null; String svcName = targetService != null ? targetService.getName() : obfuscatedIdStr; ValidationErrorCodes.throwValidationError(ValidationErrorCodes.INVALID_REFERENCE, "Service " + svcName + " is removed"); } } }
@Override public void upgrade(Service service, io.cattle.platform.core.addon.ServiceUpgradeStrategy strategy, String currentProcess) { if (strategy instanceof ToServiceUpgradeStrategy) { ToServiceUpgradeStrategy toServiceStrategy = (ToServiceUpgradeStrategy) strategy; Service toService = objectManager.loadResource(Service.class, toServiceStrategy.getToServiceId()); if (toService == null || toService.getRemoved() != null) { return; } updateLinks(service, toServiceStrategy); } while (!doUpgrade(service, strategy, currentProcess)) { sleep(service, strategy, currentProcess); } }
@Override protected void populatedData(Account system, List<Object> toCreate) { List<Data> datas = objectManager.find(Data.class, DATA.NAME, new Condition(ConditionType.LIKE, "service.v2.%.cert")); for (Data data : datas) { String name = data.getName(); String[] parts = name.split("[.]"); if (parts.length != 4) { continue; } Long id = null; try { id = Long.parseLong(parts[2]); } catch (NumberFormatException nfe) { continue; } Service service = objectManager.loadResource(Service.class, id); if (service == null || service.getRemoved() != null || StringUtils.isBlank(service.getName())) { continue; } String newKey = "service.v3." + service.getAccountId() + "." + service.getName() + ".cert"; dataDao.getOrCreate(newKey, false, new Callable<String>() { @Override public String call() throws Exception { return data.getValue(); } }); } }
protected void reconcileServiceEndpointsImpl(final Service service) { final List<PublicEndpoint> newData = instanceDao.getPublicEndpoints(service.getAccountId(), service.getId(), null); if (service != null && service.getRemoved() == null && !ServiceDiscoveryUtil.isNoopLBService(service)) { updateObjectEndPoints(service, service.getKind(), service.getId(), service.getAccountId(), newData); } }
protected void checkAndDelete(Service service, Stack env) { service = objectManager.reload(service); env = objectManager.reload(env); boolean found = false; for (ServiceExposeMap map : serviceExportMapDao.getUnmanagedServiceInstanceMapsToRemove(service.getId())) { found = true; if (isRemoved(service.getRemoved(), service.getState())) { Instance instance = objectManager.loadResource(Instance.class, map.getInstanceId()); DefaultDeploymentUnitInstance.removeInstance(instance, objectProcessManager); } } if (!found && !isRemoved(service.getRemoved(), service.getState())) { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, service, null); } env = objectManager.reload(env); if (isRemoved(env.getRemoved(), env.getState())) { return; } List<Service> services = objectManager.find(Service.class, SERVICE.STACK_ID, env.getId(), ObjectMetaDataManager.STATE_FIELD, new Condition(ConditionType.NE, CommonStatesConstants.REMOVING), ObjectMetaDataManager.REMOVED_FIELD, null); if (services.size() == 0) { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, env, null); } }
protected ServiceConsumeMap createServiceLinkImpl(Service service, ServiceLink serviceLink) { Service linkFrom = objectManager.reload(service); if (linkFrom == null || linkFrom.getRemoved() != null || linkFrom.getState().equalsIgnoreCase(CommonStatesConstants.REMOVING)) { return null; if (linkTo == null || linkTo.getRemoved() != null || linkTo.getState().equalsIgnoreCase(CommonStatesConstants.REMOVING)) { return null;
if (toService == null || toService.getRemoved() != null) { return true;
/** * {@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()); }