Skip to content
This repository was archived by the owner on Oct 4, 2024. It is now read-only.

Commit e59a479

Browse files
committed
Updated to latest AWS CodePipeline model
Using the latest AWS CodePipeline SDK and model. Updated the internal job worker classes to reflect the latest model changes.
1 parent d11468f commit e59a479

File tree

11 files changed

+76
-53
lines changed

11 files changed

+76
-53
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ The job worker comes with two pre-defined configuration classes: `CustomActionJo
3535

3636
You can configure the following settings:
3737
```java
38-
// Configure action type the job worker polls for
39-
public ActionType getActionType() {
40-
return new ActionType(
38+
// Configure action type id the job worker polls for
39+
public ActionTypeId getActionTypeId() {
40+
return new ActionTypeId(
4141
"Deploy", // Action Type Category: Source, Build, Test, Deploy, Invoke
4242
"Custom", // Action Type Owner: Custom or ThirdParty
4343
"MyCustomAction", // Action Type Provider: Name of your action type
19.8 KB
Binary file not shown.

src/com/amazonaws/codepipeline/jobworker/configuration/CustomActionJobWorkerConfiguration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
package com.amazonaws.codepipeline.jobworker.configuration;
1414

1515
import com.amazonaws.codepipeline.jobworker.JobService;
16-
import com.amazonaws.codepipeline.jobworker.model.ActionType;
16+
import com.amazonaws.codepipeline.jobworker.model.ActionTypeId;
1717
import com.amazonaws.codepipeline.jobworker.plugin.customaction.CustomActionJobService;
1818

1919
/**
@@ -25,13 +25,13 @@ public class CustomActionJobWorkerConfiguration extends DefaultJobWorkerConfigur
2525
* Action type this job worker is polling and processing jobs for.
2626
* @return action type identifier
2727
*/
28-
public ActionType getActionType() {
29-
return new ActionType("Deploy", "Custom", "MyCustomAction", "1");
28+
public ActionTypeId getActionTypeId() {
29+
return new ActionTypeId("Deploy", "Custom", "MyCustomAction", "1");
3030
}
3131

3232
/**
3333
* @return job service implementation fpr the custom action API.
3434
*/
3535
@Override
36-
public JobService jobService() { return new CustomActionJobService(codePipelineClient(), getActionType()); }
36+
public JobService jobService() { return new CustomActionJobService(codePipelineClient(), getActionTypeId()); }
3737
}

src/com/amazonaws/codepipeline/jobworker/configuration/ThirdPartyJobWorkerConfiguration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
package com.amazonaws.codepipeline.jobworker.configuration;
1414

1515
import com.amazonaws.codepipeline.jobworker.JobService;
16-
import com.amazonaws.codepipeline.jobworker.model.ActionType;
16+
import com.amazonaws.codepipeline.jobworker.model.ActionTypeId;
1717
import com.amazonaws.codepipeline.jobworker.plugin.thirdparty.ClientTokenProvider;
1818
import com.amazonaws.codepipeline.jobworker.plugin.thirdparty.DefaultClientTokenProvider;
1919
import com.amazonaws.codepipeline.jobworker.plugin.thirdparty.ThirdPartyJobService;
@@ -31,15 +31,15 @@ public class ThirdPartyJobWorkerConfiguration extends DefaultJobWorkerConfigurat
3131
* Action type this job worker is polling and processing jobs for.
3232
* @return action type identifier
3333
*/
34-
public ActionType getActionType() {
35-
return new ActionType("Deploy", "ThirdParty", "ThirdPartyDeployProvider", "1");
34+
public ActionTypeId getActionTypeId() {
35+
return new ActionTypeId("Deploy", "ThirdParty", "ThirdPartyDeployProvider", "1");
3636
}
3737

3838
/**
3939
* @return job service implementation for the third party API.
4040
*/
4141
@Override
42-
public JobService jobService() { return new ThirdPartyJobService(codePipelineClient(), getActionType(), clientTokenProvider()); }
42+
public JobService jobService() { return new ThirdPartyJobService(codePipelineClient(), getActionTypeId(), clientTokenProvider()); }
4343

4444
/**
4545
* @return the poll interval in milliseconds

src/com/amazonaws/codepipeline/jobworker/model/ActionType.java renamed to src/com/amazonaws/codepipeline/jobworker/model/ActionTypeId.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@
1717
/**
1818
* Action type uniquely identifies a specific action which can be used in pipelines.
1919
*/
20-
public class ActionType {
20+
public class ActionTypeId {
2121
private final String category;
2222
private final String owner;
2323
private final String provider;
2424
private final String version;
2525

2626
/**
27-
* Initializes the action type
27+
* Initializes the action type id.
2828
* @param category action category (Source, Build, Test, Deploy, etc...)
2929
* @param owner action owner (AWS, ThirdParty or CustomAction)
3030
* @param provider action provider (CodeDeploy, ElasticBeanstalk, OpsWorks, etc...)
3131
* @param version action version
3232
*/
33-
public ActionType(final String category, final String owner, final String provider, final String version) {
33+
public ActionTypeId(final String category, final String owner, final String provider, final String version) {
3434
Validator.notNull(category);
3535
Validator.notNull(owner);
3636
Validator.notNull(provider);

src/com/amazonaws/codepipeline/jobworker/model/FailureDetails.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
public class FailureDetails {
2121
private final FailureType type;
2222
private final String message;
23+
private final String externalExecutionId;
2324

2425
/**
2526
* Initializes the failure details to report the reason for the job failure.
@@ -29,6 +30,7 @@ public FailureDetails(final FailureType type) {
2930
Validator.notNull(type);
3031
this.type = type;
3132
this.message = null;
33+
this.externalExecutionId = null;
3234
}
3335

3436
/**
@@ -40,6 +42,20 @@ public FailureDetails(final FailureType type, final String message) {
4042
Validator.notNull(type);
4143
this.type = type;
4244
this.message = message;
45+
this.externalExecutionId = null;
46+
}
47+
48+
/**
49+
* Initializes the failure details to report the reason for the job failure.
50+
* @param type failure type / failure class
51+
* @param message message indicating why the job failed
52+
* @param externalExecutionId the id of the external execution.
53+
*/
54+
public FailureDetails(final FailureType type, final String message, final String externalExecutionId) {
55+
Validator.notNull(type);
56+
this.type = type;
57+
this.message = message;
58+
this.externalExecutionId = externalExecutionId;
4359
}
4460

4561
/**
@@ -55,4 +71,11 @@ public FailureType getType() {
5571
public String getMessage() {
5672
return message;
5773
}
74+
75+
/**
76+
* @return the id of the external execution.
77+
*/
78+
public String getExternalExecutionId() {
79+
return externalExecutionId;
80+
}
5881
}

src/com/amazonaws/codepipeline/jobworker/plugin/JobConverter.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import java.util.stream.Collectors;
1818

1919
import com.amazonaws.codepipeline.jobworker.model.AWSSessionCredentials;
20-
import com.amazonaws.codepipeline.jobworker.model.ActionType;
20+
import com.amazonaws.codepipeline.jobworker.model.ActionTypeId;
2121
import com.amazonaws.codepipeline.jobworker.model.Artifact;
2222
import com.amazonaws.codepipeline.jobworker.model.CurrentRevision;
2323
import com.amazonaws.codepipeline.jobworker.model.ExecutionDetails;
@@ -161,15 +161,15 @@ public final static com.amazonaws.services.codepipeline.model.FailureDetails con
161161

162162
/**
163163
* Converts the third party action type structure into the internal job worker structure.
164-
* @param actionType action type identifier
164+
* @param actionTypeId action type identifier
165165
* @return action type identifier (internal model)
166166
*/
167-
public final static com.amazonaws.services.codepipeline.model.ActionType convert(final ActionType actionType) {
168-
final com.amazonaws.services.codepipeline.model.ActionType result = new com.amazonaws.services.codepipeline.model.ActionType();
169-
result.setCategory(actionType.getCategory());
170-
result.setOwner(actionType.getOwner());
171-
result.setProvider(actionType.getProvider());
172-
result.setVersion(actionType.getVersion());
167+
public final static com.amazonaws.services.codepipeline.model.ActionTypeId convert(final ActionTypeId actionTypeId) {
168+
final com.amazonaws.services.codepipeline.model.ActionTypeId result = new com.amazonaws.services.codepipeline.model.ActionTypeId();
169+
result.setCategory(actionTypeId.getCategory());
170+
result.setOwner(actionTypeId.getOwner());
171+
result.setProvider(actionTypeId.getProvider());
172+
result.setVersion(actionTypeId.getVersion());
173173
return result;
174174
}
175175
}

src/com/amazonaws/codepipeline/jobworker/plugin/customaction/CustomActionJobService.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
import com.amazonaws.codepipeline.jobworker.JobService;
2121
import com.amazonaws.codepipeline.jobworker.Validator;
22-
import com.amazonaws.codepipeline.jobworker.model.ActionType;
22+
import com.amazonaws.codepipeline.jobworker.model.ActionTypeId;
2323
import com.amazonaws.codepipeline.jobworker.model.CurrentRevision;
2424
import com.amazonaws.codepipeline.jobworker.model.ExecutionDetails;
2525
import com.amazonaws.codepipeline.jobworker.model.FailureDetails;
@@ -42,19 +42,19 @@ public class CustomActionJobService implements JobService {
4242
private static final Logger LOGGER = Logger.getLogger(CustomActionJobService.class);
4343

4444
private final AmazonCodePipelineClient codePipelineClient;
45-
private final ActionType actionType;
45+
private final ActionTypeId actionTypeId;
4646

4747
/**
4848
* Initializes the custom action job service wrapper.
4949
* @param codePipelineClient service client for the AWS CodePipeline api.
50-
* @param actionType action type to poll for.
50+
* @param actionTypeId action type id to poll for.
5151
*/
52-
public CustomActionJobService(final AmazonCodePipelineClient codePipelineClient, final ActionType actionType) {
52+
public CustomActionJobService(final AmazonCodePipelineClient codePipelineClient, final ActionTypeId actionTypeId) {
5353
Validator.notNull(codePipelineClient);
54-
Validator.notNull(actionType);
54+
Validator.notNull(actionTypeId);
5555

5656
this.codePipelineClient = codePipelineClient;
57-
this.actionType = actionType;
57+
this.actionTypeId = actionTypeId;
5858
}
5959

6060
/**
@@ -64,11 +64,11 @@ public CustomActionJobService(final AmazonCodePipelineClient codePipelineClient,
6464
*/
6565
@Override
6666
public List<WorkItem> pollForJobs(final int maxBatchSize) {
67-
LOGGER.info(String.format("PollForJobs for action type %s", actionType));
67+
LOGGER.info(String.format("PollForJobs for action type id %s", actionTypeId));
6868
final List<WorkItem> result = new ArrayList<>();
6969

7070
final PollForJobsRequest pollForJobsRequest = new PollForJobsRequest();
71-
pollForJobsRequest.setActionType(getActionType());
71+
pollForJobsRequest.setActionTypeId(getActionTypeId());
7272
pollForJobsRequest.setMaxBatchSize(maxBatchSize);
7373

7474
final PollForJobsResult pollForJobsResult = codePipelineClient.pollForJobs(pollForJobsRequest);
@@ -134,7 +134,7 @@ public void putJobFailure(final String jobId, final String clientId, final Failu
134134
codePipelineClient.putJobFailureResult(request);
135135
}
136136

137-
private com.amazonaws.services.codepipeline.model.ActionType getActionType() {
138-
return JobConverter.convert(actionType);
137+
private com.amazonaws.services.codepipeline.model.ActionTypeId getActionTypeId() {
138+
return JobConverter.convert(actionTypeId);
139139
}
140140
}

src/com/amazonaws/codepipeline/jobworker/plugin/thirdparty/ThirdPartyJobService.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.apache.log4j.Logger;
1919

2020
import com.amazonaws.codepipeline.jobworker.Validator;
21-
import com.amazonaws.codepipeline.jobworker.model.ActionType;
21+
import com.amazonaws.codepipeline.jobworker.model.ActionTypeId;
2222
import com.amazonaws.codepipeline.jobworker.JobService;
2323
import com.amazonaws.codepipeline.jobworker.model.CurrentRevision;
2424
import com.amazonaws.codepipeline.jobworker.model.ExecutionDetails;
@@ -45,23 +45,23 @@ public class ThirdPartyJobService implements JobService {
4545
private static final Logger LOGGER = Logger.getLogger(ThirdPartyJobService.class);
4646

4747
private final AmazonCodePipelineClient codePipelineClient;
48-
private final ActionType actionType;
48+
private final ActionTypeId actionTypeId;
4949
private final ClientTokenProvider clientTokenProvider;
5050

5151
/**
5252
* Initializes the third party job service wrapper.
5353
* @param codePipelineClient service client for the AWS CodePipeline api.
54-
* @param actionType action type to poll for.
54+
* @param actionTypeId action type to poll for.
5555
* @param clientTokenProvider client token provider to look up client token by client id
5656
* in order to get the job details.
5757
*/
58-
public ThirdPartyJobService(final AmazonCodePipelineClient codePipelineClient, final ActionType actionType, final ClientTokenProvider clientTokenProvider) {
58+
public ThirdPartyJobService(final AmazonCodePipelineClient codePipelineClient, final ActionTypeId actionTypeId, final ClientTokenProvider clientTokenProvider) {
5959
Validator.notNull(codePipelineClient);
60-
Validator.notNull(actionType);
60+
Validator.notNull(actionTypeId);
6161
Validator.notNull(clientTokenProvider);
6262

6363
this.codePipelineClient = codePipelineClient;
64-
this.actionType = actionType;
64+
this.actionTypeId = actionTypeId;
6565
this.clientTokenProvider = clientTokenProvider;
6666
}
6767

@@ -72,11 +72,11 @@ public ThirdPartyJobService(final AmazonCodePipelineClient codePipelineClient, f
7272
*/
7373
@Override
7474
public List<WorkItem> pollForJobs(final int maxBatchSize) {
75-
LOGGER.info(String.format("PollForThirdPartyJobs for action type '%s'", actionType));
75+
LOGGER.info(String.format("PollForThirdPartyJobs for action type id '%s'", actionTypeId));
7676
final List<WorkItem> result = new ArrayList<>();
7777

7878
final PollForThirdPartyJobsRequest pollForJobsRequest = new PollForThirdPartyJobsRequest();
79-
pollForJobsRequest.setActionType(getActionType());
79+
pollForJobsRequest.setActionTypeId(getActionTypeId());
8080
pollForJobsRequest.setMaxBatchSize(maxBatchSize);
8181

8282
final PollForThirdPartyJobsResult pollForJobsResult = codePipelineClient.pollForThirdPartyJobs(pollForJobsRequest);
@@ -155,7 +155,7 @@ private ThirdPartyJobDetails getJobDetails(final String jobId, final String clie
155155
return getJobDetailsResult.getJobDetails();
156156
}
157157

158-
private com.amazonaws.services.codepipeline.model.ActionType getActionType() {
159-
return JobConverter.convert(actionType);
158+
private com.amazonaws.services.codepipeline.model.ActionTypeId getActionTypeId() {
159+
return JobConverter.convert(actionTypeId);
160160
}
161161
}

tst/com/amazonaws/codepipeline/jobworker/plugin/customaction/CustomActionJobServiceTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.mockito.MockitoAnnotations;
3131

3232
import com.amazonaws.codepipeline.jobworker.JobService;
33-
import com.amazonaws.codepipeline.jobworker.model.ActionType;
33+
import com.amazonaws.codepipeline.jobworker.model.ActionTypeId;
3434
import com.amazonaws.codepipeline.jobworker.model.CurrentRevision;
3535
import com.amazonaws.codepipeline.jobworker.model.ExecutionDetails;
3636
import com.amazonaws.codepipeline.jobworker.model.FailureDetails;
@@ -49,7 +49,7 @@
4949
public class CustomActionJobServiceTest {
5050

5151
private JobService jobService;
52-
private final ActionType actionType = new ActionType("Build", "Custom", "MyCustomAction", "1.0");
52+
private final ActionTypeId actionTypeId = new ActionTypeId("Build", "Custom", "MyCustomAction", "1.0");
5353

5454
@Mock
5555
private AmazonCodePipelineClient codePipelineClient;
@@ -66,16 +66,16 @@ public class CustomActionJobServiceTest {
6666
@Before
6767
public void setUp() {
6868
MockitoAnnotations.initMocks(this);
69-
jobService = new CustomActionJobService(codePipelineClient, actionType);
69+
jobService = new CustomActionJobService(codePipelineClient, actionTypeId);
7070
}
7171

7272
@Test(expected = IllegalArgumentException.class)
7373
public void shouldThrowWhenCodePipelineClientIsNull() {
74-
new CustomActionJobService(null, actionType);
74+
new CustomActionJobService(null, actionTypeId);
7575
}
7676

7777
@Test(expected = IllegalArgumentException.class)
78-
public void shouldThrowWhenActionTypeIsNull() {
78+
public void shouldThrowWhenActionTypeIdIsNull() {
7979
new CustomActionJobService(codePipelineClient, null);
8080
}
8181

0 commit comments

Comments
 (0)