Skip to content

Commit

Permalink
feat(plugins): Add kork-plugins, wire up initial spel function extens…
Browse files Browse the repository at this point in the history
…ion point (#3242)
  • Loading branch information
robzienert authored and mergify[bot] committed Oct 23, 2019
1 parent c00a773 commit 154eb6c
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 22 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#Mon Oct 21 18:38:12 UTC 2019
fiatVersion=1.1.0
enablePublishing=false
korkVersion=6.14.0
korkVersion=6.14.2
spinnakerGradleVersion=7.0.1
keikoVersion=2.14.2
org.gradle.parallel=true
1 change: 1 addition & 0 deletions orca-core/orca-core.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ dependencies {
api("com.netflix.spinnaker.kork:kork-security")
api("com.netflix.spinnaker.kork:kork-exceptions")
api("com.netflix.spinnaker.kork:kork-expressions")
api("com.netflix.spinnaker.kork:kork-plugins")
api("io.reactivex:rxjava")

implementation(project(":orca-extensionpoint"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.netflix.spectator.api.Registry;
import com.netflix.spinnaker.config.PluginsAutoConfiguration;
import com.netflix.spinnaker.kork.core.RetrySupport;
import com.netflix.spinnaker.kork.expressions.ExpressionFunctionProvider;
import com.netflix.spinnaker.orca.StageResolver;
Expand All @@ -41,7 +42,11 @@
import com.netflix.spinnaker.orca.pipeline.util.ContextParameterProcessor;
import java.time.Clock;
import java.time.Duration;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import org.pf4j.PluginManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
Expand Down Expand Up @@ -72,7 +77,7 @@
"com.netflix.spinnaker.orca.telemetry",
"com.netflix.spinnaker.orca.notifications.scheduling"
})
@Import(PreprocessorConfiguration.class)
@Import({PreprocessorConfiguration.class, PluginsAutoConfiguration.class})
@EnableConfigurationProperties
public class OrcaConfiguration {
@Bean
Expand Down Expand Up @@ -132,8 +137,8 @@ UserConfiguredUrlRestrictions userConfiguredUrlRestrictions(

@Bean
public ContextParameterProcessor contextParameterProcessor(
List<ExpressionFunctionProvider> expressionFunctionProviders) {
return new ContextParameterProcessor(expressionFunctionProviders);
List<ExpressionFunctionProvider> expressionFunctionProviders, PluginManager pluginManager) {
return new ContextParameterProcessor(expressionFunctionProviders, pluginManager);
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,10 @@
import com.netflix.spinnaker.kork.expressions.ExpressionsSupport;
import com.netflix.spinnaker.orca.ExecutionStatus;
import com.netflix.spinnaker.orca.pipeline.model.*;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.function.Function;
import lombok.Getter;
import org.pf4j.PluginManager;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.ParserContext;
import org.springframework.expression.common.TemplateParserContext;
Expand Down Expand Up @@ -66,8 +63,10 @@ public class PipelineExpressionEvaluator {

@Getter private final Set<String> executionAwareFunctions = new HashSet<String>();

public PipelineExpressionEvaluator(List<ExpressionFunctionProvider> expressionFunctionProviders) {
this.support = new ExpressionsSupport(extraAllowedReturnTypes, expressionFunctionProviders);
public PipelineExpressionEvaluator(
List<ExpressionFunctionProvider> expressionFunctionProviders, PluginManager pluginManager) {
this.support =
new ExpressionsSupport(extraAllowedReturnTypes, expressionFunctionProviders, pluginManager);
initExecutionAwareFunctions(expressionFunctionProviders);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,17 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.annotations.VisibleForTesting;
import com.netflix.spinnaker.kork.expressions.ExpressionEvaluationSummary;
import com.netflix.spinnaker.kork.expressions.ExpressionFunctionProvider;
import com.netflix.spinnaker.orca.config.UserConfiguredUrlRestrictions;
import com.netflix.spinnaker.orca.jackson.OrcaObjectMapper;
import com.netflix.spinnaker.orca.pipeline.expressions.PipelineExpressionEvaluator;
import com.netflix.spinnaker.orca.pipeline.expressions.functions.*;
import com.netflix.spinnaker.orca.pipeline.model.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import org.pf4j.DefaultPluginManager;
import org.pf4j.PluginManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -49,19 +48,22 @@ public class ContextParameterProcessor {

private PipelineExpressionEvaluator expressionEvaluator;

@VisibleForTesting
public ContextParameterProcessor() {
this(
Arrays.asList(
new ArtifactExpressionFunctionProvider(),
new DeployedServerGroupsExpressionFunctionProvider(),
new ManifestLabelValueExpressionFunctionProvider(),
new StageExpressionFunctionProvider(),
new UrlExpressionFunctionProvider(
new UserConfiguredUrlRestrictions.Builder().build())));
new UrlExpressionFunctionProvider(new UserConfiguredUrlRestrictions.Builder().build())),
new DefaultPluginManager());
}

public ContextParameterProcessor(List<ExpressionFunctionProvider> expressionFunctionProviders) {
this.expressionEvaluator = new PipelineExpressionEvaluator(expressionFunctionProviders);
public ContextParameterProcessor(
List<ExpressionFunctionProvider> expressionFunctionProviders, PluginManager pluginManager) {
this.expressionEvaluator =
new PipelineExpressionEvaluator(expressionFunctionProviders, pluginManager);
}

public Map<String, Object> process(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,26 @@ package com.netflix.spinnaker.orca.pipeline.expressions

import com.netflix.spinnaker.kork.expressions.ExpressionFunctionProvider
import com.netflix.spinnaker.orca.pipeline.model.Execution
import org.pf4j.PluginManager
import spock.lang.Specification

class PipelineExpressionEvaluatorSpec extends Specification {

PluginManager pluginManager = Mock() {
getExtensions(_) >> []
}

def 'should set execution aware functions for the given function providers'() {

given: 'function providers'
ExpressionFunctionProvider expressionFunctionProvider1 = buildExpressionFunctionProvider('pipeline')
ExpressionFunctionProvider expressionFunctionProvider2 = buildExpressionFunctionProvider('jenkins')

when: 'registered with pipeline evaluator'
PipelineExpressionEvaluator evaluator = new PipelineExpressionEvaluator([expressionFunctionProvider1, expressionFunctionProvider2])
PipelineExpressionEvaluator evaluator = new PipelineExpressionEvaluator(
[expressionFunctionProvider1, expressionFunctionProvider2],
pluginManager
)

then:
noExceptionThrown()
Expand Down

0 comments on commit 154eb6c

Please sign in to comment.