Skip to content

feat: add before_action and after_action for blueprint#2644

Merged
klesh merged 2 commits into
apache:mainfrom
merico-ai:issues/2502
Aug 9, 2022
Merged

feat: add before_action and after_action for blueprint#2644
klesh merged 2 commits into
apache:mainfrom
merico-ai:issues/2502

Conversation

@likyh
Copy link
Copy Markdown
Contributor

@likyh likyh commented Aug 1, 2022

Summary

Add before_action and after_action for the blueprint

Does this close any open issues?

close #2502

Screenshots

curl -X POST -H 'host:4000/api/blueprints -d '{"name":"MY BLUEPRINT","cronConfig":"0 0 * * *","plan":[[]],"settings":{"version":"1.0.0","before_plan":[[{"plugin":"before","options":{"connectionId":1},"subtasks":["collectApiJobs"]}]],"after_plan":[[{"plugin":"after1.1","options":{"connectionId":1},"subtasks":["extractApiJobs"]},{"plugin":"after1.2","options":{"connectionId":1},"subtasks":["extractApiJobs"]}],[{"plugin":"after2.2","options":{"connectionId":1},"subtasks":["extractApiJobs"]}]],"connections":[{"plugin":"jira","connectionId":1,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":80},"entities":["TICKET","CROSS"]}]},{"plugin":"jira","connectionId":2,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":79},"entities":["TICKET","CROSS"]},{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":8},"entities":["TICKET","CROSS"]}]},{"plugin":"github","connectionId":1,"scope":[{"transformation":{"prType":"","prComponent":"","issueSeverity":"","issueComponent":"","issuePriority":"","issueTypeRequirement":"","issueTypeBug":"","issueTypeIncident":"","refdiff":null},"options":{"owner":"apache","repo":"incubator-devlake"},"entities":["CODE","TICKET","CODEREVIEW","CROSS"]}]}]},"enable":true,"mode":"NORMAL","isManual":true}'

{"name":"MY BLUEPRINT","mode":"NORMAL","plan":[[{"plugin":"before","subtasks":["collectApiJobs"],"options":{"connectionId":1}}],[{"plugin":"jira","subtasks":["collectStatus","extractStatus","collectProjects","extractProjects","collectBoard","extractBoard","collectIssueTypes","extractIssueType","collectIssues","extractIssues","collectIssueChangelogs","extractIssueChangelogs","collectAccounts","collectWorklogs","extractWorklogs","collectRemotelinks","extractRemotelinks","collectSprints","extractSprints","convertBoard","convertIssues","convertWorklogs","convertIssueChangelogs","convertSprints","convertSprintIssues","convertIssueCommits","extractAccounts","convertAccounts","collectEpics","extractEpics"],"options":{"boardId":80,"connectionId":1,"transformationRules":{"epicKeyField":"","storyPointField":"","remotelinkCommitShaPattern":"","typeMappings":{}}}},{"plugin":"jira","subtasks":["collectStatus","extractStatus","collectProjects","extractProjects","collectBoard","extractBoard","collectIssueTypes","extractIssueType","collectIssues","extractIssues","collectIssueChangelogs","extractIssueChangelogs","collectAccounts","collectWorklogs","extractWorklogs","collectRemotelinks","extractRemotelinks","collectSprints","extractSprints","convertBoard","convertIssues","convertWorklogs","convertIssueChangelogs","convertSprints","convertSprintIssues","convertIssueCommits","extractAccounts","convertAccounts","collectEpics","extractEpics"],"options":{"boardId":79,"connectionId":2,"transformationRules":{"epicKeyField":"","storyPointField":"","remotelinkCommitShaPattern":"","typeMappings":{}}}},{"plugin":"github","subtasks":["collectApiIssues","extractApiIssues","collectApiPullRequests","extractApiPullRequests","collectApiComments","extractApiComments","collectApiEvents","extractApiEvents","collectApiPullRequestCommits","extractApiPullRequestCommits","collectApiPullRequestReviews","extractApiPullRequestReviews","CollectApiPrReviewCommentsMeta","extractApiPrReviewComments","collectApiMilestones","extractMilestones","collectAccounts","extractAccounts","collectAccountOrg","ExtractAccountOrg","enrichPullRequestIssues","convertRepo","convertIssues","convertIssueLabels","convertPullRequestCommits","convertPullRequests","convertPullRequestReviews","convertPullRequestLabels","convertPullRequestIssues","convertIssueComments","convertPullRequestComments","convertMilestones","convertAccounts"],"options":{"connectionId":1,"owner":"apache","repo":"incubator-devlake","transformationRules":{"issueComponent":"","issuePriority":"","issueSeverity":"","issueTypeBug":"","issueTypeIncident":"","issueTypeRequirement":"","prComponent":"","prType":"","refdiff":null}}},{"plugin":"gitextractor","subtasks":null,"options":{"repoId":"github:GithubRepo:1:384111310","url":"https://git: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@github.com/apache/incubator-devlake.git"}}],[{"plugin":"jira","subtasks":["collectStatus","extractStatus","collectProjects","extractProjects","collectBoard","extractBoard","collectIssueTypes","extractIssueType","collectIssues","extractIssues","collectIssueChangelogs","extractIssueChangelogs","collectAccounts","collectWorklogs","extractWorklogs","collectRemotelinks","extractRemotelinks","collectSprints","extractSprints","convertBoard","convertIssues","convertWorklogs","convertIssueChangelogs","convertSprints","convertSprintIssues","convertIssueCommits","extractAccounts","convertAccounts","collectEpics","extractEpics"],"options":{"boardId":8,"connectionId":2,"transformationRules":{"epicKeyField":"","storyPointField":"","remotelinkCommitShaPattern":"","typeMappings":{}}}}],[{"plugin":"after1.1","subtasks":["extractApiJobs"],"options":{"connectionId":1}},{"plugin":"after1.2","subtasks":["extractApiJobs"],"options":{"connectionId":1}}],[{"plugin":"after2.2","subtasks":["extractApiJobs"],"options":{"connectionId":1}}]],"enable":true,"cronConfig":"0 0 * * *","isManual":true,"settings":{"version":"1.0.0","before_plan":[[{"plugin":"before","options":{"connectionId":1},"subtasks":["collectApiJobs"]}]],"after_plan":[[{"plugin":"after1.1","options":{"connectionId":1},"subtasks":["extractApiJobs"]},{"plugin":"after1.2","options":{"connectionId":1},"subtasks":["extractApiJobs"]}],[{"plugin":"after2.2","options":{"connectionId":1},"subtasks":["extractApiJobs"]}]],"connections":[{"plugin":"jira","connectionId":1,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":80},"entities":["TICKET","CROSS"]}]},{"plugin":"jira","connectionId":2,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":79},"entities":["TICKET","CROSS"]},{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":8},"entities":["TICKET","CROSS"]}]},{"plugin":"github","connectionId":1,"scope":[{"transformation":{"prType":"","prComponent":"","issueSeverity":"","issueComponent":"","issuePriority":"","issueTypeRequirement":"","issueTypeBug":"","issueTypeIncident":"","refdiff":null},"options":{"owner":"apache","repo":"incubator-devlake"},"entities":["CODE","TICKET","CODEREVIEW","CROSS"]}]}]},"id":6,"createdAt":"2022-08-01T09:33:03.990969+08:00","updatedAt":"2022-08-01T09:33:03.990969+08:00"}

Request:
image
Response:
image

 curl -X POST http://localhost:4000/api/blueprints  -H 'Content-Type: application/json' -d '{"name":"MY BLUEPRINT","cronConfig":"0 0 * * *","plan":[[]],"settings":{"version":"1.0.0","connections":[{"plugin":"jira","connectionId":1,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":80},"entities":["TICKET","CROSS"]}]},{"plugin":"jira","connectionId":2,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":79},"entities":["TICKET","CROSS"]},{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":8},"entities":["TICKET","CROSS"]}]}]},"enable":true,"mode":"NORMAL","isManual":true}'

{"name":"MY BLUEPRINT","mode":"NORMAL","plan":[[{"plugin":"jira","subtasks":["collectStatus","extractStatus","collectProjects","extractProjects","collectBoard","extractBoard","collectIssueTypes","extractIssueType","collectIssues","extractIssues","collectIssueChangelogs","extractIssueChangelogs","collectAccounts","collectWorklogs","extractWorklogs","collectRemotelinks","extractRemotelinks","collectSprints","extractSprints","convertBoard","convertIssues","convertWorklogs","convertIssueChangelogs","convertSprints","convertSprintIssues","convertIssueCommits","extractAccounts","convertAccounts","collectEpics","extractEpics"],"options":{"boardId":80,"connectionId":1,"transformationRules":{"epicKeyField":"","storyPointField":"","remotelinkCommitShaPattern":"","typeMappings":{}}}},{"plugin":"jira","subtasks":["collectStatus","extractStatus","collectProjects","extractProjects","collectBoard","extractBoard","collectIssueTypes","extractIssueType","collectIssues","extractIssues","collectIssueChangelogs","extractIssueChangelogs","collectAccounts","collectWorklogs","extractWorklogs","collectRemotelinks","extractRemotelinks","collectSprints","extractSprints","convertBoard","convertIssues","convertWorklogs","convertIssueChangelogs","convertSprints","convertSprintIssues","convertIssueCommits","extractAccounts","convertAccounts","collectEpics","extractEpics"],"options":{"boardId":79,"connectionId":2,"transformationRules":{"epicKeyField":"","storyPointField":"","remotelinkCommitShaPattern":"","typeMappings":{}}}}],[{"plugin":"jira","subtasks":["collectStatus","extractStatus","collectProjects","extractProjects","collectBoard","extractBoard","collectIssueTypes","extractIssueType","collectIssues","extractIssues","collectIssueChangelogs","extractIssueChangelogs","collectAccounts","collectWorklogs","extractWorklogs","collectRemotelinks","extractRemotelinks","collectSprints","extractSprints","convertBoard","convertIssues","convertWorklogs","convertIssueChangelogs","convertSprints","convertSprintIssues","convertIssueCommits","extractAccounts","convertAccounts","collectEpics","extractEpics"],"options":{"boardId":8,"connectionId":2,"transformationRules":{"epicKeyField":"","storyPointField":"","remotelinkCommitShaPattern":"","typeMappings":{}}}}]],"enable":true,"cronConfig":"0 0 * * *","isManual":true,"settings":{"version":"1.0.0","connections":[{"plugin":"jira","connectionId":1,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":80},"entities":["TICKET","CROSS"]}]},{"plugin":"jira","connectionId":2,"scope":[{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":79},"entities":["TICKET","CROSS"]},{"transformation":{"epicKeyField":"","typeMappings":{},"storyPointField":"","remotelinkCommitShaPattern":"","bugTags":[],"incidentTags":[],"requirementTags":[]},"options":{"boardId":8},"entities":["TICKET","CROSS"]}]}]},"id":8,"createdAt":"2022-08-01T09:45:52.755168+08:00","updatedAt":"2022-08-01T09:45:52.755168+08:00"}

Request without any change:
image
Of course, without any problem:
image

Copy link
Copy Markdown
Contributor

@klesh klesh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
Can we have the new logic unit-tested?

@likyh likyh requested a review from klesh August 9, 2022 07:50
Copy link
Copy Markdown
Contributor

@klesh klesh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@klesh klesh merged commit 2539ebb into apache:main Aug 9, 2022
@likyh likyh deleted the issues/2502 branch October 23, 2022 10:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature][framework] Adding before_plan and after_plan support to Blueprint normal mode for orchestrating plugins like starrocks/dbt

2 participants