Skip to content

Commit

Permalink
Fix/oa web repo dispatch (#168)
Browse files Browse the repository at this point in the history
  • Loading branch information
jdddog committed Jun 21, 2023
1 parent 736f40f commit b7ed3d3
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 7 deletions.
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

0 comments on commit b7ed3d3

Please sign in to comment.