@Override protected Long getId(Object obj) { if (obj instanceof Service) { return ((Service) obj).getId(); } return null; }
private void activateServices(List<? extends Service> services) { List<Long> alreadyActivatedServices = new ArrayList<>(); List<Long> alreadySeenServices = new ArrayList<>(); Map<Long, Service> servicesToActivate = new HashMap<>(); for (Service service : services) { servicesToActivate.put(service.getId(), service); } for (Service service : services) { activateService(service, servicesToActivate, alreadySeenServices, alreadyActivatedServices); } }
@Override public ServiceExposeMap getServiceIpExposeMap(Service service, String ipAddress) { return objectManager.findAny(ServiceExposeMap.class, SERVICE_EXPOSE_MAP.SERVICE_ID, service.getId(), SERVICE_EXPOSE_MAP.IP_ADDRESS, ipAddress, SERVICE_EXPOSE_MAP.REMOVED, null); }
@Override public ServiceExposeMap getServiceHostnameExposeMap(Service service, String hostName) { return objectManager.findAny(ServiceExposeMap.class, SERVICE_EXPOSE_MAP.SERVICE_ID, service.getId(), SERVICE_EXPOSE_MAP.HOST_NAME, hostName, SERVICE_EXPOSE_MAP.REMOVED, null); }
@Override public ServiceExposeMap getServiceInstanceMap(Service service, final Instance instance) { return objectManager.findAny(ServiceExposeMap.class, SERVICE_EXPOSE_MAP.INSTANCE_ID, instance.getId(), SERVICE_EXPOSE_MAP.SERVICE_ID, service.getId(), SERVICE_EXPOSE_MAP.REMOVED, null); }
@Override public void removeServiceIndexes(Service service) { for (ServiceIndex serviceIndex : objectManager.find(ServiceIndex.class, SERVICE_INDEX.SERVICE_ID, service.getId(), SERVICE_INDEX.REMOVED, null)) { objectProcessManager.scheduleStandardProcessAsync(StandardProcess.REMOVE, serviceIndex, null); } }
protected void addServiceLink(Service service, Service targetService) { ServiceLink link = new ServiceLink(targetService.getId(), null, null); addServiceLink(service, link); } }
@Override public void cloneConsumingServices(Service fromService, Service toService) { List<ServiceLink> linksToCreate = new ArrayList<>(); for (ServiceConsumeMap map : consumeMapDao.findConsumingServices(fromService.getId())) { ServiceLink link = new ServiceLink(toService.getId(), map.getName(), null); link.setConsumingServiceId(map.getServiceId()); linksToCreate.add(link); } consumeMapDao.createServiceLinks(linksToCreate); }
@Override public ServiceExposeMap createHostnameToServiceMap(Service service, String hostName) { ServiceExposeMap map = getServiceHostnameExposeMap(service, hostName); if (map == null) { map = objectManager.create(ServiceExposeMap.class, SERVICE_EXPOSE_MAP.SERVICE_ID, service.getId(), SERVICE_EXPOSE_MAP.HOST_NAME, hostName, SERVICE_EXPOSE_MAP.ACCOUNT_ID, service.getAccountId()); } return map; }
@Override public void run() { ServiceConsumeMap map = consumeMapDao.findMapToRemove(service.getId(), serviceLink.getServiceId()); if (map != null) { objectProcessManager.scheduleProcessInstanceAsync( ServiceConstants.PROCESS_SERVICE_CONSUME_MAP_REMOVE, map, null); } } });
@Override public ServiceExposeMap createIpToServiceMap(Service service, String ipAddress) { ServiceExposeMap map = getServiceIpExposeMap(service, ipAddress); if (map == null) { map = objectManager.create(ServiceExposeMap.class, SERVICE_EXPOSE_MAP.SERVICE_ID, service.getId(), SERVICE_EXPOSE_MAP.IP_ADDRESS, ipAddress, SERVICE_EXPOSE_MAP.ACCOUNT_ID, service.getAccountId()); } return map; }
protected Object findDriver(String driverKey, Service service, Map<String, Object> fields) { Class<?> driverClass = objectManager.getSchemaFactory().getSchemaClass(driverKey); return objectManager.findAny(driverClass, "serviceId", service.getId(), ObjectMetaDataManager.REMOVED_FIELD, null); }
protected void deregisterOldServiceLinks(Service service, String selectorLink) { List<? extends Service> targetServices = consumeMapDao.findLinkedServices(service.getId()); for (Service targetService : targetServices) { if (sdService.isSelectorLinkMatch(selectorLink, targetService)) { removeServiceLink(service, targetService); } } }
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 publishEvent(Service service) { Map<String, Object> data = new HashMap<>(); data.put(ObjectMetaDataManager.ACCOUNT_FIELD, service.getAccountId()); Event event = EventVO.newEvent(FrameworkEvents.STATE_CHANGE) .withData(data) .withResourceType(service.getKind()) .withResourceId(service.getId().toString()); eventService.publish(event); } }
@Override public ServiceConsumeMap createServiceLink(final Service service, final ServiceLink serviceLink) { return lockManager.lock(new ServiceLinkLock(service.getId(), serviceLink.getServiceId(), serviceLink.getService()), new LockCallback<ServiceConsumeMap>() { @Override public ServiceConsumeMap doWithLock() { return createServiceLinkImpl(service, serviceLink); } }); }
@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 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); } }
protected ServiceLog newServiceLog(Service obj) { ServiceLog auditLog = objectManager.newRecord(ServiceLog.class); auditLog.setLevel("info"); auditLog.setCreated(new Date()); auditLog.setAccountId(obj.getAccountId()); auditLog.setServiceId(obj.getId()); return auditLog; }
@Override public void doWithLockNoResult() { // in remove, we don't care about the sidekicks, and remove only requested service deleteServiceInstances(service); List<? extends ServiceExposeMap> unmanagedMaps = expMapDao .getUnmanagedServiceInstanceMapsToRemove(service.getId()); for (ServiceExposeMap unmanagedMap : unmanagedMaps) { objectProcessMgr.scheduleStandardProcessAsync(StandardProcess.REMOVE, unmanagedMap, null); } sdSvc.removeServiceMaps(service); sdSvc.removeFromLoadBalancerServices(service); }