public String toKey() { // Used as ID in storage etc. Do not change. return workflowId().toKey() + "#" + parameter(); }
private static List<EnvVar> buildEnv(WorkflowInstance workflowInstance, RunSpec runSpec, String styxEnvironment) { // store user provided env first to prevent accidentally/intentionally overwriting system ones final Map<String, String> env = new HashMap<>(runSpec.env()); env.put(COMPONENT_ID, workflowInstance.workflowId().componentId()); env.put(WORKFLOW_ID, workflowInstance.workflowId().id()); env.put(PARAMETER, workflowInstance.parameter()); env.put(COMMIT_SHA, runSpec.commitSha().orElse("")); env.put(SERVICE_ACCOUNT, runSpec.serviceAccount().orElse("")); env.put(DOCKER_ARGS, String.join(" ", runSpec.args())); env.put(DOCKER_IMAGE, runSpec.imageName()); env.put(EXECUTION_ID, runSpec.executionId()); env.put(TERMINATION_LOG, "/dev/termination-log"); env.put(TRIGGER_ID, runSpec.trigger().map(TriggerUtil::triggerId).orElse(null)); env.put(TRIGGER_TYPE, runSpec.trigger().map(TriggerUtil::triggerType).orElse(null)); env.put(ENVIRONMENT, styxEnvironment); env.put(LOGGING, "structured"); return env.entrySet().stream() .map(entry -> envVar(entry.getKey(), entry.getValue())) .collect(Collectors.toList()); }
@Override public void printStates(RunStateDataPayload runStateDataPayload) { System.out.println(String.format(" %-20s %-12s %-47s %-7s %s", "WORKFLOW INSTANCE", "STATE", "EXECUTION ID", "TRIES", "PREVIOUS EXECUTION MESSAGE")); CliUtil.groupStates(runStateDataPayload.activeStates()).entrySet().forEach(entry -> { System.out.println(); System.out.println(String.format("%s %s", colored(CYAN, entry.getKey().componentId()), colored(BLUE, entry.getKey().id()))); entry.getValue().forEach(runStateData -> { final StateData stateData = runStateData.stateData(); final Ansi ansiState = getAnsiForState(runStateData); final Message lastMessage = stateData.message().orElse(Message.create(Message.MessageLevel.UNKNOWN, "No info")); final Ansi ansiMessage = colored(messageColor(lastMessage.level()), lastMessage.line()); System.out.println(String.format(" %-20s %-20s %-47s %-7d %s", runStateData.workflowInstance().parameter(), ansiState, stateData.executionId().orElse("<no-execution-id>"), stateData.tries(), ansiMessage)); }); }); }
@Override public void printStates(RunStateDataPayload runStateDataPayload) { SortedMap<WorkflowId, SortedSet<RunStateDataPayload.RunStateData>> groupedStates = CliUtil.groupStates(runStateDataPayload.activeStates()); groupedStates.forEach((workflowId, value) -> value.forEach(RunStateData -> { final StateData stateData = RunStateData.stateData(); System.out.println(String.format( "%s %s %s %s %s %d %s", workflowId.componentId(), workflowId.id(), RunStateData.workflowInstance().parameter(), RunStateData.state(), stateData.executionId().orElse("<no-execution-id>"), stateData.tries(), stateData.message().map(Message::line).orElse("No info") )); })); }
final List<String> command = argsReplace(dockerArgs, workflowInstance.parameter());
workflowInstance.parameter(), workflow.configuration().schedule()); } catch (IllegalArgumentException e) {
.set(PROPERTY_COMPONENT, wfi.workflowId().componentId()) .set(PROPERTY_WORKFLOW, wfi.workflowId().id()) .set(PROPERTY_PARAMETER, wfi.parameter()) .set(PROPERTY_COUNTER, state.counter());
private RunSpec createRunSpec(RunState state) throws ResourceNotFoundException { final Optional<ExecutionDescription> executionDescriptionOpt = state.data().executionDescription(); final ExecutionDescription executionDescription = executionDescriptionOpt.orElseThrow( () -> new ResourceNotFoundException("Missing execution description for " + state.workflowInstance())); final String executionId = state.data().executionId().orElseThrow( () -> new ResourceNotFoundException("Missing execution id for " + state.workflowInstance())); final String dockerImage = executionDescription.dockerImage(); final List<String> dockerArgs = executionDescription.dockerArgs(); final String parameter = state.workflowInstance().parameter(); final List<String> command = argsReplace(dockerArgs, parameter); return RunSpec.builder() .executionId(executionId) .imageName(dockerImage) .args(command) .terminationLogging(executionDescription.dockerTerminationLogging()) .secret(executionDescription.secret()) .serviceAccount(executionDescription.serviceAccount()) .trigger(state.data().trigger()) .commitSha(state.data().executionDescription().flatMap(ExecutionDescription::commitSha)) .env(executionDescription.env()) .build(); } }