@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { ExternalEvent event = (ExternalEvent)state.getResource(); if (StringUtils.isEmpty(event.getExternalId())) { log.debug("External event doesn't have an external id: {}", event.getId()); return null; } if (ExternalEventConstants.KIND_VOLUME_EVENT.equals(event.getKind())) { handleVolumeEvent(event, state, process); } else if (ExternalEventConstants.KIND_STORAGE_POOL_EVENT.equals(event.getKind())) { handleStoragePoolEvent(event, state, process); } else if (ExternalEventConstants.KIND_EXTERNAL_DNS_EVENT.equals(event.getKind())) { handleExternalDnsEvent(event, state, process); } return null; }
@Override public void doWithLockNoResult() { String fqdn = DataAccessor.fieldString(event, ExternalEventConstants.FIELD_FQDN); String serviceName = DataAccessor .fieldString(event, ExternalEventConstants.FIELD_SERVICE_NAME); String stackName = DataAccessor.fieldString(event, ExternalEventConstants.FIELD_STACK_NAME); if (fqdn == null || serviceName == null || stackName == null) { log.info("External DNS [event: " + event.getId() + "] misses some fields"); return; } Stack stack = objectManager.findAny(Stack.class, STACK.ACCOUNT_ID, event.getAccountId(), STACK.REMOVED, null, STACK.NAME, stackName); if (stack == null) { log.info("Stack not found for external DNS [event: " + event.getId() + "]"); return; } Service service = objectManager.findAny(Service.class, SERVICE.ACCOUNT_ID, event.getAccountId(), SERVICE.REMOVED, null, SERVICE.STACK_ID, stack.getId(), SERVICE.NAME, serviceName); if (service == null) { log.info("Service not found for external DNS [event: " + event.getId() + "]"); return; } Map<String, Object> data = new HashMap<>(); data.put(ExternalEventConstants.FIELD_FQDN, fqdn); DataUtils.getWritableFields(service).putAll(data); objectManager.persist(service); objectProcessManager.scheduleStandardProcessAsync(StandardProcess.UPDATE, service, data); } });
/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.ExternalEvent from) { setId(from.getId()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid()); setState(from.getState()); setCreated(from.getCreated()); setData(from.getData()); setExternalId(from.getExternalId()); setEventType(from.getEventType()); setReportedAccountId(from.getReportedAccountId()); }