@Override public Event toEvent() { return Event.started(WorkflowInstance.parseKey(workflowInstance)); } }
@Override public Event toEvent() { return Event.dequeue(WorkflowInstance.parseKey(workflowInstance), resourceIds); } }
@Override public Event toEvent() { return Event.retryAfter(WorkflowInstance.parseKey(workflowInstance), delayMillis); } }
@Override public Event toEvent() { return Event.created(WorkflowInstance.parseKey(workflowInstance), executionId, dockerImage); } }
@Override public Event toEvent() { return Event.submitted(WorkflowInstance.parseKey(workflowInstance), executionId); } }
@Override public Event toEvent() { return Event.submit(WorkflowInstance.parseKey(workflowInstance), executionDescription, executionId); } }
@Override public Event toEvent() { return Event.info(WorkflowInstance.parseKey(workflowInstance), message); } }
@Override public Event toEvent() { return Event.terminate(WorkflowInstance.parseKey(workflowInstance), exitCode); } }
@Override public Event toEvent() { return Event.runError(WorkflowInstance.parseKey(workflowInstance), message); } }
private static Optional<WorkflowInstance> readPodWorkflowInstance(Pod pod) { final Map<String, String> annotations = pod.getMetadata().getAnnotations(); final String podName = pod.getMetadata().getName(); if (annotations == null || !annotations.containsKey(KubernetesDockerRunner.STYX_WORKFLOW_INSTANCE_ANNOTATION)) { LOG.warn("[AUDIT] Got pod without workflow instance annotation {}", podName); return Optional.empty(); } final WorkflowInstance workflowInstance = WorkflowInstance.parseKey( annotations.get(KubernetesDockerRunner.STYX_WORKFLOW_INSTANCE_ANNOTATION)); return Optional.of(workflowInstance); }
@Override public Event toEvent() { return Event.triggerExecution(WorkflowInstance.parseKey(workflowInstance), trigger(), parameters.orElse(TriggerParameters.zero())); }
List<WorkflowInstanceExecutionData> executionData(WorkflowId workflowId, String offset, int limit) throws IOException { try (final Table eventsTable = connection.getTable(EVENTS_TABLE_NAME)) { final Scan scan = new Scan() .setRowPrefixFilter(Bytes.toBytes(workflowId.toKey() + '#')) .setFilter(new FirstKeyOnlyFilter()); if (!Strings.isNullOrEmpty(offset)) { final WorkflowInstance offsetInstance = WorkflowInstance.create(workflowId, offset); scan.setStartRow(Bytes.toBytes(offsetInstance.toKey() + '#')); } final Set<WorkflowInstance> workflowInstancesSet = Sets.newHashSet(); try (ResultScanner scanner = eventsTable.getScanner(scan)) { Result result = scanner.next(); while (result != null) { final String key = new String(result.getRow()); final int lastHash = key.lastIndexOf('#'); final WorkflowInstance wfi = WorkflowInstance.parseKey(key.substring(0, lastHash)); workflowInstancesSet.add(wfi); if (workflowInstancesSet.size() == limit) { break; } result = scanner.next(); } } return executionData(workflowInstancesSet); } }
List<WorkflowInstanceExecutionData> executionData(WorkflowId workflowId, String start, String stop) throws IOException { try (final Table eventsTable = connection.getTable(EVENTS_TABLE_NAME)) { final Scan scan = new Scan() .setRowPrefixFilter(Bytes.toBytes(workflowId.toKey() + '#')) .setFilter(new FirstKeyOnlyFilter()); final WorkflowInstance startRow = WorkflowInstance.create(workflowId, start); scan.setStartRow(Bytes.toBytes(startRow.toKey() + '#')); if (!Strings.isNullOrEmpty(stop)) { final WorkflowInstance stopRow = WorkflowInstance.create(workflowId, stop); scan.setStopRow(Bytes.toBytes(stopRow.toKey() + '#')); } final Set<WorkflowInstance> workflowInstancesSet = Sets.newHashSet(); try (ResultScanner scanner = eventsTable.getScanner(scan)) { Result result = scanner.next(); while (result != null) { final String key = new String(result.getRow()); final int lastHash = key.lastIndexOf('#'); final WorkflowInstance wfi = WorkflowInstance.parseKey(key.substring(0, lastHash)); workflowInstancesSet.add(wfi); result = scanner.next(); } } return executionData(workflowInstancesSet); } }
public Event toEvent() { final WorkflowInstance workflowInstance = WorkflowInstance.parseKey(this.workflowInstance); switch (type) { case "timeTrigger": return Event.timeTrigger(workflowInstance); case "success": return Event.success(workflowInstance); case "retry": return Event.retry(workflowInstance); case "stop": return Event.stop(workflowInstance); case "timeout": return Event.timeout(workflowInstance); case "halt": return Event.halt(workflowInstance); default: throw new IllegalStateException("Event type " + type + " not covered by base PersistentEvent class"); } }