Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/oa web repo dispatch #168

Merged
merged 3 commits into from
Jun 21, 2023
Merged
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
15 changes: 10 additions & 5 deletions academic_observatory_workflows/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,16 @@
import json

import requests
from airflow import AirflowException


def trigger_repository_dispatch(*, token: str, event_type: str):
"""Trigger a Github repository dispatch event.
def trigger_repository_dispatch(*, org: str, repo_name: str, token: str, event_type: str):
"""Trigger a GitHub repository dispatch event.

:param org: the GitHub organisation / username.
:param repo_name: the repository name.
:param token: the GitHub token.
:param event_type: the event type
:param token: the Github token.
:return: the response.
"""

Expand All @@ -35,8 +38,10 @@ def trigger_repository_dispatch(*, token: str, event_type: str):
}
data = {"event_type": event_type}

return requests.post(
"https://api.github.com/repos/The-Academic-Observatory/coki-oa-web/dispatches",
response = requests.post(
f"https://api.github.com/repos/{org}/{repo_name}/dispatches",
headers=headers,
data=json.dumps(data),
)
if response.status_code != 204:
raise AirflowException(f"trigger_repository_dispatch: {response.status_code}, {response.text}")
13 changes: 12 additions & 1 deletion academic_observatory_workflows/tests/test_github.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,22 @@
import unittest
from unittest.mock import patch

import requests
from airflow import AirflowException

from academic_observatory_workflows.github import trigger_repository_dispatch


class TestGithub(unittest.TestCase):
@patch("academic_observatory_workflows.github.requests.post")
def test_trigger_repository_dispatch(self, mock_requests_post):
trigger_repository_dispatch(token="my-token", event_type="my-event-type")
response = requests.Response()
response.status_code = 204
mock_requests_post.return_value = response

trigger_repository_dispatch(org="org", repo_name="my-repo", token="my-token", event_type="my-event-type")
mock_requests_post.called_once()

response.status_code = 401
with self.assertRaises(AirflowException):
trigger_repository_dispatch(org="org", repo_name="my-repo", token="my-token", event_type="my-event-type")
4 changes: 3 additions & 1 deletion academic_observatory_workflows/workflows/oa_web_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -765,7 +765,9 @@ def repository_dispatch(self, release: OaWebRelease, **kwargs):
token = get_airflow_connection_password(self.github_conn_id)
event_types = ["data-update/develop", "data-update/staging", "data-update/production"]
for event_type in event_types:
trigger_repository_dispatch(token=token, event_type=event_type)
trigger_repository_dispatch(
org="The-Academic-Observatory", repo_name="coki-oa-web", token=token, event_type=event_type
)

def cleanup(self, release: OaWebRelease, **kwargs):
"""Delete all files and folders associated with this release.
Expand Down