Merge pull request #287 from jenkinsci/bug/JENKINS-35771

JENKINS-35771# Fixed steps log API
This commit is contained in:
vivek 2016-06-21 17:11:50 -07:00 committed by GitHub
commit 6668a93091
5 changed files with 19 additions and 20 deletions

View File

@ -8,7 +8,7 @@ import io.jenkins.blueocean.commons.ServiceException;
import io.jenkins.blueocean.rest.hal.Link;
import io.jenkins.blueocean.rest.model.BlueActionProxy;
import io.jenkins.blueocean.rest.model.BluePipelineNodeContainer;
import io.jenkins.blueocean.rest.model.BluePipelineStep;
import io.jenkins.blueocean.rest.model.BluePipelineStepContainer;
import io.jenkins.blueocean.rest.model.BlueRun;
import io.jenkins.blueocean.rest.model.Container;
import io.jenkins.blueocean.rest.model.Containers;
@ -172,7 +172,7 @@ public class AbstractRunImpl<T extends Run> extends BlueRun {
}
@Override
public Container<?> getSteps() {
public BluePipelineStepContainer getSteps() {
return null;
}

View File

@ -4,16 +4,12 @@ import hudson.scm.ChangeLogSet;
import hudson.scm.ChangeLogSet.Entry;
import io.jenkins.blueocean.rest.hal.Link;
import io.jenkins.blueocean.rest.model.BluePipelineNodeContainer;
import io.jenkins.blueocean.rest.model.BluePipelineStep;
import io.jenkins.blueocean.rest.model.BlueRun;
import io.jenkins.blueocean.rest.model.BluePipelineStepContainer;
import io.jenkins.blueocean.rest.model.Container;
import io.jenkins.blueocean.rest.model.Containers;
import org.jenkinsci.plugins.workflow.graph.FlowNode;
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
@ -50,14 +46,8 @@ public class PipelineRunImpl extends AbstractRunImpl<WorkflowRun> {
}
@Override
public Container<?> getSteps() {
PipelineNodeGraphBuilder graphBuilder = new PipelineNodeGraphBuilder(run);
List<FlowNode> nodes = graphBuilder.getAllSteps();
List<BluePipelineStep> pipelineSteps = new ArrayList<>();
for(FlowNode node:nodes){
pipelineSteps.add(new PipelineStepImpl(node, graphBuilder, getLink().rel(BlueRun.STEPS)));
}
return Containers.fromResource(getLink().rel(BlueRun.STEPS), pipelineSteps);
public BluePipelineStepContainer getSteps() {
return new PipelineStepContainerImpl(null, new PipelineNodeGraphBuilder(run), getLink());
}
@Override

View File

@ -20,7 +20,7 @@ public class PipelineStepContainerImpl extends BluePipelineStepContainer {
private final Link self;
public PipelineStepContainerImpl(FlowNode node, PipelineNodeGraphBuilder graphBuilder, Link parentLink) {
this.self = parentLink.rel("nodes");
this.self = parentLink.rel("steps");
this.node = node;
this.graphBuilder = graphBuilder;
}
@ -39,10 +39,17 @@ public class PipelineStepContainerImpl extends BluePipelineStepContainer {
@Override
public Iterator<BluePipelineStep> iterator() {
List<FlowNode> nodes = graphBuilder.getSteps(node);
List<BluePipelineStep> pipelineSteps = new ArrayList<>();
for(FlowNode node:nodes){
pipelineSteps.add(new PipelineStepImpl(node, graphBuilder, getLink()));
if(node!=null) {
List<FlowNode> nodes = graphBuilder.getSteps(node);
for (FlowNode node : nodes) {
pipelineSteps.add(new PipelineStepImpl(node, graphBuilder, getLink()));
}
}else{
List<FlowNode> nodes = graphBuilder.getAllSteps();
for(FlowNode node:nodes){
pipelineSteps.add(new PipelineStepImpl(node, graphBuilder, getLink()));
}
}
return pipelineSteps.iterator();
}

View File

@ -622,6 +622,8 @@ public class PipelineNodeTest extends BaseTest {
List<Map> resp = get("/organizations/jenkins/pipelines/pipeline1/runs/1/steps/", List.class);
Assert.assertEquals(4,resp.size());
String log = get("/organizations/jenkins/pipelines/pipeline1/runs/1/steps/"+resp.get(0).get("id")+"/log/", String.class);
Assert.assertNotNull(log);
}

View File

@ -170,7 +170,7 @@ public abstract class BlueRun extends Resource {
* interpreted as step as its StepAtomNode and implementation of this API must ensure not to include it.
*/
@Exported(name = STEPS)
public abstract Container<?> getSteps();
public abstract BluePipelineStepContainer getSteps();
/**
* @return Instance of stapler aware instance that can do the following: