Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@

public class InvokeConfig implements Serializable {
private String functionName;
private String qualifier;
private String payload;
private boolean synchronous;
private List<JsonParameter> jsonParameters;

public InvokeConfig(String functionName, String payload, boolean synchronous, List<JsonParameter> jsonParameters) {
public InvokeConfig(String functionName, final String qualifier, String payload, boolean synchronous, List<JsonParameter> jsonParameters) {
this.functionName = functionName;
this.qualifier = qualifier;
this.payload = payload;
this.synchronous = synchronous;
this.jsonParameters = jsonParameters;
Expand All @@ -24,6 +26,14 @@ public void setFunctionName(String functionName) {
this.functionName = functionName;
}

public String getQualifier() {
return qualifier;
}

public void setQualifier(final String qualifier) {
this.qualifier = qualifier;
}

public String getPayload() {
return payload;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,18 @@ public class LambdaInvokeAction implements ProminentProjectAction {
private final String displayName;


public LambdaInvokeAction(String functionName, Boolean success) {
public LambdaInvokeAction(String functionName, String qualifier, Boolean success) {

final String qualifierWithColon = qualifier!=null && !qualifier.isEmpty()? ":" + qualifier:"";

if(success){
iconFileName = "/plugin/aws-lambda/images/Lambda_24.png";
bigIconFileName = "/plugin/aws-lambda/images/Lambda_48.png";
displayName = "Invoked Lambda: " + functionName;
displayName = "Invoked Lambda: " + functionName + qualifierWithColon;
}else {
iconFileName = "/plugin/aws-lambda/images/Lambda_24_grey.png";
bigIconFileName = "/plugin/aws-lambda/images/Lambda_48_grey.png";
displayName = "Lambda invocation failure: " + functionName;
displayName = "Lambda invocation failure: " + functionName + qualifierWithColon;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public void perform(LambdaInvokeBuildStepVariables lambdaInvokeBuildStepVariable
run.addAction(new LambdaOutputInjectionAction(entry.getKey(), entry.getValue()));
}
run.getEnvironment(listener);
run.addAction(new LambdaInvokeAction(executionVariables.getFunctionName(), invocationResult.isSuccess()));
run.addAction(new LambdaInvokeAction(executionVariables.getFunctionName(), executionVariables.getQualifier(), invocationResult.isSuccess()));
} catch (Exception exc) {
throw new RuntimeException(exc);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,24 +47,27 @@ public class LambdaInvokeBuildStepVariables extends AbstractDescribableImpl<Lamb
private String clearTextAwsSecretKey;
private String awsRegion;
private String functionName;
private String qualifier;
private String payload;
private boolean synchronous;
private List<JsonParameterVariables> jsonParameters;

@DataBoundConstructor
public LambdaInvokeBuildStepVariables(String awsRegion, String functionName, boolean synchronous) {
public LambdaInvokeBuildStepVariables(String awsRegion, String functionName, String qualifier, boolean synchronous) {
this.awsRegion = awsRegion;
this.functionName = functionName;
this.qualifier = qualifier;
this.synchronous = synchronous;
}

@Deprecated
public LambdaInvokeBuildStepVariables(boolean useInstanceCredentials, String awsAccessKeyId, Secret awsSecretKey, String awsRegion, String functionName, String payload, boolean synchronous, List<JsonParameterVariables> jsonParameters) {
public LambdaInvokeBuildStepVariables(boolean useInstanceCredentials, String awsAccessKeyId, Secret awsSecretKey, String awsRegion, String functionName, final String qualifier, String payload, boolean synchronous, List<JsonParameterVariables> jsonParameters) {
this.useInstanceCredentials = useInstanceCredentials;
this.awsAccessKeyId = awsAccessKeyId;
this.awsSecretKey = awsSecretKey != null ? awsSecretKey.getEncryptedValue() : null;
this.awsRegion = awsRegion;
this.functionName = functionName;
this.qualifier = qualifier;
this.payload = payload;
this.synchronous = synchronous;
this.jsonParameters = jsonParameters;
Expand Down Expand Up @@ -105,6 +108,10 @@ public String getFunctionName() {
return functionName;
}

public String getQualifier() {
return qualifier;
}

public String getPayload() {
return payload;
}
Expand Down Expand Up @@ -137,6 +144,9 @@ public void expandVariables(EnvVars env) {
awsRegion = ExpansionUtils.expand(awsRegion, env);
functionName = ExpansionUtils.expand(functionName, env);
payload = ExpansionUtils.expand(payload, env);
if(qualifier !=null){
qualifier = ExpansionUtils.expand(qualifier, env);
}
if(jsonParameters != null) {
for (JsonParameterVariables jsonParameter : jsonParameters) {
jsonParameter.expandVariables(env);
Expand All @@ -145,7 +155,7 @@ public void expandVariables(EnvVars env) {
}

public LambdaInvokeBuildStepVariables getClone(){
LambdaInvokeBuildStepVariables lambdaInvokeBuildStepVariables = new LambdaInvokeBuildStepVariables(awsRegion, functionName, synchronous);
LambdaInvokeBuildStepVariables lambdaInvokeBuildStepVariables = new LambdaInvokeBuildStepVariables(awsRegion, functionName, qualifier, synchronous);
lambdaInvokeBuildStepVariables.setUseInstanceCredentials(useInstanceCredentials);
lambdaInvokeBuildStepVariables.setAwsAccessKeyId(awsAccessKeyId);
lambdaInvokeBuildStepVariables.setAwsSecretKey(awsSecretKey);
Expand All @@ -159,7 +169,7 @@ public InvokeConfig getInvokeConfig(){
for (JsonParameterVariables jsonParameterVariables : getJsonParameters()) {
jsonParameters.add(jsonParameterVariables.buildJsonParameter());
}
return new InvokeConfig(functionName, payload, synchronous, jsonParameters);
return new InvokeConfig(functionName, qualifier, payload, synchronous, jsonParameters);
}

public LambdaClientConfig getLambdaClientConfig(){
Expand Down Expand Up @@ -199,6 +209,8 @@ public boolean equals(Object o) {
return false;
if (getFunctionName() != null ? !getFunctionName().equals(variables.getFunctionName()) : variables.getFunctionName() != null)
return false;
if (getQualifier() != null ? !getQualifier().equals(variables.getQualifier()) : variables.getQualifier() != null)
return false;
if (getPayload() != null ? !getPayload().equals(variables.getPayload()) : variables.getPayload() != null)
return false;
return !(getJsonParameters() != null ? !getJsonParameters().equals(variables.getJsonParameters()) : variables.getJsonParameters() != null);
Expand All @@ -212,6 +224,7 @@ public int hashCode() {
result = 31 * result + (getAwsSecretKey() != null ? getAwsSecretKey().hashCode() : 0);
result = 31 * result + (getAwsRegion() != null ? getAwsRegion().hashCode() : 0);
result = 31 * result + (getFunctionName() != null ? getFunctionName().hashCode() : 0);
result = 31 * result + (getQualifier() != null ? getQualifier().hashCode() : 0);
result = 31 * result + (getPayload() != null ? getPayload().hashCode() : 0);
result = 31 * result + (getSynchronous() ? 1 : 0);
result = 31 * result + (getJsonParameters() != null ? getJsonParameters().hashCode() : 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public boolean perform(LambdaInvokeVariables lambdaInvokeVariables,AbstractBuild
build.addAction(new LambdaOutputInjectionAction(entry.getKey(), entry.getValue()));
}
build.getEnvironment(listener);
build.addAction(new LambdaInvokeAction(executionVariables.getFunctionName(), invocationResult.isSuccess()));
build.addAction(new LambdaInvokeAction(executionVariables.getFunctionName(), executionVariables.getQualifier(), invocationResult.isSuccess()));
return true;
} catch (Exception exc) {
throw new RuntimeException(exc);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,25 +47,28 @@ public class LambdaInvokeVariables extends AbstractDescribableImpl<LambdaInvokeV
private String clearTextAwsSecretKey;
private String awsRegion;
private String functionName;
private String qualifier;
private String payload;
private boolean synchronous;
private boolean successOnly;
private List<JsonParameterVariables> jsonParameters = new ArrayList<JsonParameterVariables>();

@DataBoundConstructor
public LambdaInvokeVariables(String awsRegion, String functionName, boolean synchronous) {
public LambdaInvokeVariables(String awsRegion, String functionName, String qualifier, boolean synchronous) {
this.awsRegion = awsRegion;
this.functionName = functionName;
this.qualifier = qualifier;
this.synchronous = synchronous;
}

@Deprecated
public LambdaInvokeVariables(boolean useInstanceCredentials, String awsAccessKeyId, Secret awsSecretKey, String awsRegion, String functionName, String payload, boolean synchronous, boolean successOnly, List<JsonParameterVariables> jsonParameters) {
public LambdaInvokeVariables(boolean useInstanceCredentials, String awsAccessKeyId, Secret awsSecretKey, String awsRegion, String functionName, String qualifier, String payload, boolean synchronous, boolean successOnly, List<JsonParameterVariables> jsonParameters) {
this.useInstanceCredentials = useInstanceCredentials;
this.awsAccessKeyId = awsAccessKeyId;
this.awsSecretKey = awsSecretKey != null ? awsSecretKey.getEncryptedValue() : null;
this.awsRegion = awsRegion;
this.functionName = functionName;
this.qualifier = qualifier;
this.payload = payload;
this.synchronous = synchronous;
this.successOnly = successOnly;
Expand Down Expand Up @@ -107,6 +110,15 @@ public String getFunctionName() {
return functionName;
}


public String getQualifier() {
return qualifier;
}

public void setQualifier(String qualifier) {
this.qualifier = qualifier;
}

public String getPayload() {
return payload;
}
Expand Down Expand Up @@ -148,6 +160,9 @@ public void expandVariables(EnvVars env) {
awsRegion = ExpansionUtils.expand(awsRegion, env);
functionName = ExpansionUtils.expand(functionName, env);
payload = ExpansionUtils.expand(payload, env);
if(qualifier !=null){
qualifier = ExpansionUtils.expand(qualifier, env);
}
if(jsonParameters != null) {
for (JsonParameterVariables jsonParameter : jsonParameters) {
jsonParameter.expandVariables(env);
Expand All @@ -156,7 +171,7 @@ public void expandVariables(EnvVars env) {
}

public LambdaInvokeVariables getClone(){
LambdaInvokeVariables lambdaInvokeVariables = new LambdaInvokeVariables(awsRegion, functionName, synchronous);
LambdaInvokeVariables lambdaInvokeVariables = new LambdaInvokeVariables(awsRegion, functionName, qualifier, synchronous);
lambdaInvokeVariables.setUseInstanceCredentials(useInstanceCredentials);
lambdaInvokeVariables.setAwsAccessKeyId(awsAccessKeyId);
lambdaInvokeVariables.setAwsSecretKey(awsSecretKey);
Expand All @@ -171,7 +186,7 @@ public InvokeConfig getInvokeConfig(){
for (JsonParameterVariables jsonParameterVariables : getJsonParameters()) {
jsonParameters.add(jsonParameterVariables.buildJsonParameter());
}
return new InvokeConfig(functionName, payload, synchronous, jsonParameters);
return new InvokeConfig(functionName, qualifier, payload, synchronous, jsonParameters);
}

public LambdaClientConfig getLambdaClientConfig(){
Expand Down Expand Up @@ -212,6 +227,8 @@ public boolean equals(Object o) {
return false;
if (getFunctionName() != null ? !getFunctionName().equals(that.getFunctionName()) : that.getFunctionName() != null)
return false;
if (getQualifier() != null ? !getQualifier().equals(that.getQualifier()) : that.getQualifier() != null)
return false;
if (getPayload() != null ? !getPayload().equals(that.getPayload()) : that.getPayload() != null) return false;
return !(getJsonParameters() != null ? !getJsonParameters().equals(that.getJsonParameters()) : that.getJsonParameters() != null);

Expand All @@ -224,6 +241,7 @@ public int hashCode() {
result = 31 * result + (getAwsSecretKey() != null ? getAwsSecretKey().hashCode() : 0);
result = 31 * result + (getAwsRegion() != null ? getAwsRegion().hashCode() : 0);
result = 31 * result + (getFunctionName() != null ? getFunctionName().hashCode() : 0);
result = 31 * result + (getQualifier() != null ? getQualifier().hashCode() : 0);
result = 31 * result + (getPayload() != null ? getPayload().hashCode() : 0);
result = 31 * result + (getSynchronous() ? 1 : 0);
result = 31 * result + (getSuccessOnly() ? 1 : 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ public String invokeLambdaFunction(InvokeConfig invokeConfig) throws LambdaInvok
.withFunctionName(invokeConfig.getFunctionName())
.withPayload(invokeConfig.getPayload());

if(invokeConfig.getQualifier() !=null && !invokeConfig.getQualifier().isEmpty()){
invokeRequest.withQualifier(invokeConfig.getQualifier());
}

if(invokeConfig.isSynchronous()){
invokeRequest
.withInvocationType(InvocationType.RequestResponse)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class LambdaInvokeActionTest {

@Test
public void testLambdaInvokeActionSuccess(){
LambdaInvokeAction lambdaInvokeAction = new LambdaInvokeAction("lambda1", true);
LambdaInvokeAction lambdaInvokeAction = new LambdaInvokeAction("lambda1", null, true);

assertEquals("Invoked Lambda: lambda1", lambdaInvokeAction.getDisplayName());
assertEquals("console", lambdaInvokeAction.getUrlName());
Expand All @@ -18,11 +18,31 @@ public void testLambdaInvokeActionSuccess(){

@Test
public void testLambdaInvokeActionFailure(){
LambdaInvokeAction lambdaInvokeAction = new LambdaInvokeAction("lambda1", false);
LambdaInvokeAction lambdaInvokeAction = new LambdaInvokeAction("lambda1",null, false);

assertEquals("Lambda invocation failure: lambda1", lambdaInvokeAction.getDisplayName());
assertEquals("console", lambdaInvokeAction.getUrlName());
assertEquals("/plugin/aws-lambda/images/Lambda_24_grey.png", lambdaInvokeAction.getIconFileName());
assertEquals("/plugin/aws-lambda/images/Lambda_48_grey.png", lambdaInvokeAction.getBigIconFileName());
}

@Test
public void testLambdaInvokeActionSuccessWithQualifier(){
LambdaInvokeAction lambdaInvokeAction = new LambdaInvokeAction("lambda1", "alias", true);

assertEquals("Invoked Lambda: lambda1:alias", lambdaInvokeAction.getDisplayName());
assertEquals("console", lambdaInvokeAction.getUrlName());
assertEquals("/plugin/aws-lambda/images/Lambda_24.png", lambdaInvokeAction.getIconFileName());
assertEquals("/plugin/aws-lambda/images/Lambda_48.png", lambdaInvokeAction.getBigIconFileName());
}

@Test
public void testLambdaInvokeActionFailureWithQualifier(){
LambdaInvokeAction lambdaInvokeAction = new LambdaInvokeAction("lambda1","alias", false);

assertEquals("Lambda invocation failure: lambda1:alias", lambdaInvokeAction.getDisplayName());
assertEquals("console", lambdaInvokeAction.getUrlName());
assertEquals("/plugin/aws-lambda/images/Lambda_24_grey.png", lambdaInvokeAction.getIconFileName());
assertEquals("/plugin/aws-lambda/images/Lambda_48_grey.png", lambdaInvokeAction.getBigIconFileName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public class LambdaInvokeBuildStepTest {
public void testHtml() throws Exception {
List<JsonParameterVariables> jsonParameterVariables = new ArrayList<JsonParameterVariables>();
jsonParameterVariables.add(new JsonParameterVariables("KEY", "value"));
LambdaInvokeBuildStepVariables variables = new LambdaInvokeBuildStepVariables(false, "accessKeyId", Secret.fromString("secretKey"), "eu-west-1", "function", "payload", true, jsonParameterVariables);
LambdaInvokeBuildStepVariables variables = new LambdaInvokeBuildStepVariables(false, "accessKeyId", Secret.fromString("secretKey"), "eu-west-1", "function", "alias", "payload", true, jsonParameterVariables);

FreeStyleProject p = j.createFreeStyleProject();
LambdaInvokeBuildStep before = new LambdaInvokeBuildStep(variables);
Expand All @@ -71,7 +71,7 @@ public void testHtml() throws Exception {
public void testPerform() throws IOException, ExecutionException, InterruptedException {
List<JsonParameterVariables> jsonParameterVariables = new ArrayList<JsonParameterVariables>();
jsonParameterVariables.add(new JsonParameterVariables("KEY", "$.key2"));
LambdaInvokeBuildStepVariables clone = new LambdaInvokeBuildStepVariables(false, "accessKeyId", Secret.fromString("secretKey"), "eu-west-1", "function", "payload", true, jsonParameterVariables);
LambdaInvokeBuildStepVariables clone = new LambdaInvokeBuildStepVariables(false, "accessKeyId", Secret.fromString("secretKey"), "eu-west-1", "function", "alias", "payload", true, jsonParameterVariables);
LambdaInvokeBuildStepVariables spy = Mockito.spy(clone);

when(original.getClone()).thenReturn(spy);
Expand Down Expand Up @@ -100,7 +100,7 @@ public void testPerform() throws IOException, ExecutionException, InterruptedExc
public void testPerformFailure() throws IOException, ExecutionException, InterruptedException {
List<JsonParameterVariables> jsonParameterVariables = new ArrayList<JsonParameterVariables>();
jsonParameterVariables.add(new JsonParameterVariables("KEY", "$.key2"));
LambdaInvokeBuildStepVariables clone = new LambdaInvokeBuildStepVariables(false, "accessKeyId", Secret.fromString("secretKey"), "eu-west-1", "function", "payload", true, jsonParameterVariables);
LambdaInvokeBuildStepVariables clone = new LambdaInvokeBuildStepVariables(false, "accessKeyId", Secret.fromString("secretKey"), "eu-west-1", "function", "alias", "payload", true, jsonParameterVariables);
LambdaInvokeBuildStepVariables spy = Mockito.spy(clone);

when(original.getClone()).thenReturn(spy);
Expand Down
Loading