Skip to content

Commit

Permalink
chore(orca): Upgrade to latest verion of orca. (#133)
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Duftler committed Nov 20, 2017
1 parent 4d3e7fb commit d1694a2
Show file tree
Hide file tree
Showing 12 changed files with 45 additions and 60 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ springVersion=4.3.10.RELEASE
springBootVersion=1.5.4.RELEASE
kotlinVersion=1.1.2
korkVersion=1.100.0
orcaVersion=3.35.0
orcaVersion=4.2.1
spectatorVersion=0.57.1
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -30,7 +29,7 @@ public class AtlasFetchStage {
StageDefinitionBuilder atlasFetchStageBuilder(){
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("atlasFetch", AtlasFetchTask.class);
}

Expand Down
10 changes: 5 additions & 5 deletions kayenta-core/kayenta-core.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ dependencies {
compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion"
compile "org.springframework.boot:spring-boot-starter-data-rest:$springBootVersion"

compile "com.fasterxml.jackson.core:jackson-core:2.8.8"
compile "com.fasterxml.jackson.core:jackson-databind:2.8.8"
compile "com.fasterxml.jackson.module:jackson-module-parameter-names:2.8.8"
compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.8.8"
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.8.8"
compile "com.fasterxml.jackson.core:jackson-core:2.9.2"
compile "com.fasterxml.jackson.core:jackson-databind:2.9.2"
compile "com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.2"
compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.2"
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.2"

// spinnaker.group('retrofitDefault')
compile "com.squareup.retrofit:retrofit:1.9.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -30,7 +29,7 @@ public class CanaryJudgeStage {
StageDefinitionBuilder canaryJudgeStageBuilder(){
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("canaryJudge", CanaryJudgeTask.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -30,7 +29,7 @@ public class SetupCanaryStage {
StageDefinitionBuilder setupCanaryStageBuilder() {
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("setupCanary", SetupCanaryTask.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -30,7 +29,7 @@ public class MetricSetMixerServiceStage {
StageDefinitionBuilder metricSetMixerStageBuilder(){
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("metricSetMixer", MetricSetMixerServiceTask.class);
}

Expand Down
Binary file modified kayenta-orca/libs/orca-queue-1.369.0-SNAPSHOT-test.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,20 @@
import com.netflix.spinnaker.kork.eureka.RemoteStatusChangedEvent;
import com.netflix.spinnaker.orca.log.ExecutionLogEntry;
import com.netflix.spinnaker.orca.log.ExecutionLogRepository;
import com.netflix.spinnaker.orca.pipeline.PipelineLauncher;
import com.netflix.spinnaker.orca.pipeline.model.Pipeline;
import com.netflix.spinnaker.orca.pipeline.ExecutionLauncher;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.persistence.ExecutionRepository;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import java.util.List;
Expand All @@ -44,7 +49,7 @@
public class PipelineController {

@Autowired
PipelineLauncher pipelineLauncher;
ExecutionLauncher executionLauncher;

@Autowired
ExecutionRepository executionRepository;
Expand Down Expand Up @@ -72,8 +77,8 @@ String start(@RequestBody Map map) throws Exception {

@ApiOperation(value = "Retrieve a pipeline execution")
@RequestMapping(value = "/{executionId}", method = RequestMethod.GET)
Pipeline getPipeline(@PathVariable String executionId) {
return executionRepository.retrievePipeline(executionId);
Execution getPipeline(@PathVariable String executionId) {
return executionRepository.retrieve(Execution.ExecutionType.PIPELINE, executionId);
}

@ApiOperation(value = "Retrieve pipeline execution logs")
Expand Down Expand Up @@ -105,7 +110,7 @@ private String startPipeline(Map config) throws Exception {

log.info("Requested pipeline: {}", json);

Pipeline pipeline = pipelineLauncher.start(json);
Execution pipeline = executionLauncher.start(Execution.ExecutionType.PIPELINE, json);

return pipeline.getId();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Pipeline;
import com.netflix.spinnaker.orca.pipeline.model.PipelineBuilder;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import com.netflix.spinnaker.orca.pipeline.persistence.ExecutionRepository;
import com.netflix.spinnaker.orca.pipeline.persistence.jedis.JedisExecutionRepository;
Expand Down Expand Up @@ -97,18 +97,10 @@ public void resetMocks() {

@Test
public void canRunASimplePipeline() {
Pipeline pipeline = PipelineBuilderKt.pipeline(p -> {
p.setApplication("spinnaker");

PipelineBuilderKt.stage(p, s -> {
s.setRefId("1");
s.setType("dummy");

return null;
});

return null;
});
Execution pipeline =
new PipelineBuilder("spinnaker")
.withStage("dummy")
.build();

repository.store(pipeline);

Expand All @@ -125,7 +117,7 @@ public void canRunASimplePipeline() {
},
repository);

assertEquals(repository.retrievePipeline(pipeline.getId()).getStatus(), ExecutionStatus.SUCCEEDED);
assertEquals(repository.retrieve(Execution.ExecutionType.PIPELINE, pipeline.getId()).getStatus(), ExecutionStatus.SUCCEEDED);
}
}

Expand Down Expand Up @@ -160,7 +152,7 @@ DummyTask dummyTask() {
StageDefinitionBuilder dummyStage(){
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("dummy", DummyTask.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -30,7 +29,7 @@ public class PrometheusFetchStage {
StageDefinitionBuilder prometheusFetchStageBuilder(){
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("prometheusFetch", PrometheusFetchTask.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.netflix.spinnaker.orca.pipeline.StageDefinitionBuilder;
import com.netflix.spinnaker.orca.pipeline.TaskNode;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -30,7 +29,7 @@ public class StackdriverFetchStage {
StageDefinitionBuilder stackdriverFetchStageBuilder(){
return new StageDefinitionBuilder() {
@Override
public <T extends Execution<T>> void taskGraph(Stage<T> stage, TaskNode.Builder builder) {
public void taskGraph(Stage stage, TaskNode.Builder builder) {
builder.withTask("stackdriverFetch", StackdriverFetchTask.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@
import com.netflix.kayenta.storage.StorageServiceRepository;
import com.netflix.spectator.api.Registry;
import com.netflix.spinnaker.orca.ExecutionStatus;
import com.netflix.spinnaker.orca.pipeline.PipelineLauncher;
import com.netflix.spinnaker.orca.pipeline.ExecutionLauncher;
import com.netflix.spinnaker.orca.pipeline.model.Execution;
import com.netflix.spinnaker.orca.pipeline.model.Pipeline;
import com.netflix.spinnaker.orca.pipeline.model.PipelineBuilder;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import com.netflix.spinnaker.orca.pipeline.persistence.ExecutionRepository;
import io.swagger.annotations.ApiOperation;
Expand All @@ -43,7 +43,6 @@

import java.time.Duration;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

@RestController
Expand All @@ -58,7 +57,7 @@ public class CanaryController {
private final String REFID_JUDGE = "judge";

private final String currentInstanceId;
private final PipelineLauncher pipelineLauncher;
private final ExecutionLauncher executionLauncher;
private final ExecutionRepository executionRepository;
private final AccountCredentialsRepository accountCredentialsRepository;
private final StorageServiceRepository storageServiceRepository;
Expand All @@ -68,15 +67,15 @@ public class CanaryController {

@Autowired
public CanaryController(String currentInstanceId,
PipelineLauncher pipelineLauncher,
ExecutionLauncher executionLauncher,
ExecutionRepository executionRepository,
AccountCredentialsRepository accountCredentialsRepository,
StorageServiceRepository storageServiceRepository,
Optional<List<CanaryScopeFactory>> canaryScopeFactories,
Registry registry,
ObjectMapper kayentaObjectMapper) {
this.currentInstanceId = currentInstanceId;
this.pipelineLauncher = pipelineLauncher;
this.executionLauncher = executionLauncher;
this.executionRepository = executionRepository;
this.accountCredentialsRepository = accountCredentialsRepository;
this.storageServiceRepository = storageServiceRepository;
Expand Down Expand Up @@ -215,9 +214,8 @@ public CanaryExecutionResponse initiateCanary(@RequestParam(required = false) fi
canaryJudgeContext.put("durationString", controlDuration.toString());
}

Pipeline pipeline =
Pipeline
.builder("kayenta-" + currentInstanceId)
Execution pipeline =
new PipelineBuilder("kayenta-" + currentInstanceId)
.withName("Standard Canary Pipeline")
.withPipelineConfigId(UUID.randomUUID() + "")
.withStage("setupCanary", "Setup Canary", setupCanaryContext)
Expand All @@ -232,7 +230,7 @@ public CanaryExecutionResponse initiateCanary(@RequestParam(required = false) fi
executionRepository.store(pipeline);

try {
pipelineLauncher.start(pipeline);
executionLauncher.start(pipeline);
} catch (Throwable t) {
handleStartupFailure(pipeline, t);
}
Expand All @@ -257,7 +255,7 @@ public CanaryExecutionStatusResponse getCanaryResults(@RequestParam(required = f
.getOne(resolvedStorageAccountName)
.orElseThrow(() -> new IllegalArgumentException("No storage service was configured; unable to retrieve results."));

Pipeline pipeline = executionRepository.retrievePipeline(canaryExecutionId);
Execution pipeline = executionRepository.retrieve(Execution.ExecutionType.PIPELINE, canaryExecutionId);
Stage judgeStage = pipeline.getStages().stream()
.filter(stage -> stage.getRefId().equals(REFID_JUDGE))
.findFirst()
Expand Down Expand Up @@ -307,19 +305,15 @@ public CanaryExecutionStatusResponse getCanaryResults(@RequestParam(required = f
return canaryExecutionStatusResponseBuilder.build();
}

private Pipeline handleStartupFailure(Pipeline pipeline, Throwable failure) {
private Execution handleStartupFailure(Execution execution, Throwable failure) {
final String canceledBy = "system";
final String reason = "Failed on startup: " + failure.getMessage();
final ExecutionStatus status = ExecutionStatus.TERMINAL;
final Function<Pipeline, Pipeline> reloader;
final String executionType = "pipeline";

reloader = (p) -> executionRepository.retrievePipeline(p.getId());
log.error("Failed to start {} {}", execution.getType(), execution.getId(), failure);
executionRepository.updateStatus(execution.getId(), status);
executionRepository.cancel(execution.getId(), canceledBy, reason);

log.error("Failed to start " + executionType + " " + pipeline.getId(), failure);
executionRepository.updateStatus(pipeline.getId(), status);
executionRepository.cancel(pipeline.getId(), canceledBy, reason);

return reloader.apply(pipeline);
return executionRepository.retrieve(execution.getType(), execution.getId());
}
}

0 comments on commit d1694a2

Please sign in to comment.