public FormValidation doCheckWorkflowName( @QueryParameter final String serverUrl, @QueryParameter final String userName, @QueryParameter final String password, @QueryParameter final String tenant, @QueryParameter final String workflowName) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, IOException, URISyntaxException { String workflowNameValue = Util.fixEmptyAndTrim(workflowName); if (workflowNameValue == null) { return FormValidation.error("Please enter workflow name."); } if (workflowNameValue.indexOf('$') >= 0) { // set by variable, can't validate return FormValidation.ok(); } // Call server and validate BuildParam buildParam = new BuildParam(serverUrl, userName, password, tenant, null); OrchestratorClient client = new OrchestratorClient(buildParam); List<Workflow> workflows = client.fetchWorkflows(); boolean isWorkflowFound = false; for (Workflow workflow : workflows) { if (workflow.getName().equals(workflowName)) { isWorkflowFound = true; } } if (!isWorkflowFound) { return FormValidation.error("Workflow with the given name doesn't exist in the server."); } return FormValidation.ok(); }
@Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { PrintStream logger = listener.getLogger(); EnvVariableResolver resolver = new EnvVariableResolver(build, listener); // Resolve the workflowName to workflowId BuildParam buildParam = new BuildParam(serverUrl, userName, password, tenant, null); OrchestratorClient client = new OrchestratorClient(buildParam); String workflowId = null; try { String resolvedWfName = resolver.getValueForBuildParameter(workflowName); List<Workflow> workflows = client.fetchWorkflows(); for (Workflow workflow : workflows) { if (workflow.getName().equals(resolvedWfName)) { workflowId = workflow.getId(); break; } } } catch (Exception e) { throw new IOException(e.getMessage(), e); } if (workflowId == null) { throw new IOException("Workflow doesn't exist in the server."); } BuildParam param = new BuildParam( resolver.getValueForBuildParameter(serverUrl), resolver.getValueForBuildParameter(userName), resolver.getValueForBuildParameter(password), resolver.getValueForBuildParameter(tenant), workflowId, waitExec, resolver.getValueForBuildParameter(inputParams)); logger.println("Starting Orchestrator workflow execution : " + param.getWorkflowName()); param.validate(); OrchestratorCallable callable = new OrchestratorCallable(param); Map<String, String> outputParameters = launcher.getChannel().call(callable); if (outputParameters != null && outputParameters.size() > 0) { logger.println("Output Parameters from the workflow execution"); for (Map.Entry entry : outputParameters.entrySet()) { logger.println(entry.getKey() + " : " + entry.getValue()); } } OrchestratorEnvAction orchestratorAction = new OrchestratorEnvAction(outputParameters); build.addAction(orchestratorAction); return true; }