{"action":"created","comment":{"url":"https://api.github.com/repos/golemfactory/concent/pulls/comments/214377072","pull_request_review_id":151425816,"id":214377072,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNDM3NzA3Mg==","diff_hunk":"@@ -0,0 +1,201 @@\n+# !/usr/bin/env python3\n+import os\n+import sys\n+import time\n+from threading import Thread\n+from typing import Optional\n+\n+import requests\n+from golem_messages import message\n+from golem_messages.factories.tasks import ReportComputedTaskFactory\n+from golem_messages.message import Message\n+from golem_messages.message.concents import ForceGetTaskResult\n+from golem_messages.message.concents import ForceReportComputedTask\n+from golem_messages.message.tasks import AckReportComputedTask\n+from golem_messages.message.tasks import ReportComputedTask\n+\n+from api_testing_common import compare_lists_regardless_of_order\n+from api_testing_common import count_fails\n+from api_testing_common import PROVIDER_PRIVATE_KEY\n+from api_testing_common import REQUESTOR_PRIVATE_KEY\n+from api_testing_common import api_request\n+from api_testing_common import create_signed_task_to_compute\n+from api_testing_common import run_tests\n+from api_testing_common import timestamp_to_isoformat\n+from common.helpers import get_current_utc_timestamp\n+from common.helpers import sign_message\n+\n+os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"concent_api.settings\")\n+\n+REPORT_COMPUTED_TASK_SIZE = 10\n+\n+NUMBER_OF_TESTING_THREADS = 3  # changing this variable remember to correct number of expected responses\n+MAXIMUM_WAITING_TIME_FOR_ALL_RESPONSES = 3  # seconds\n+\n+responses_global = []  # type: list\n+\n+\n+def clear_responses():\n+    global responses_global\n+    responses_global.clear()\n+\n+\n+def call_function_in_treads(\n+    func,\n+    number_of_threads: int,\n+    cluster_url: str,\n+    golem_message: Message,\n+) -> None:\n+    for i in range(number_of_threads):\n+        thread = Thread(target=func, args=(cluster_url, golem_message,))\n+        thread.start()\n+\n+\n+def get_ack_report_computed_task(report_computed_task: ReportComputedTask) -> AckReportComputedTask:\n+    return AckReportComputedTask(report_computed_task=report_computed_task)\n+\n+\n+def get_force_get_task_result(report_computed_task: ReportComputedTask) -> ForceGetTaskResult:\n+    return message.concents.ForceGetTaskResult(report_computed_task=report_computed_task)\n+\n+\n+def get_force_report_computed_task(report_computed_task: ReportComputedTask) -> ForceReportComputedTask:\n+    return ForceReportComputedTask(report_computed_task = report_computed_task)\n+\n+\n+def create_report_computed_task(\n+    task_id: str,\n+    subtask_id: str\n+) -> ReportComputedTask:\n+    current_time = get_current_utc_timestamp()\n+\n+    task_to_compute = create_signed_task_to_compute(\n+        timestamp=timestamp_to_isoformat(current_time),\n+        task_id=task_id,\n+        subtask_id=subtask_id,\n+        deadline=(current_time + 100),\n+        price=10000,\n+    )\n+\n+    report_computed_task = ReportComputedTaskFactory(\n+        task_to_compute=task_to_compute,\n+    )\n+    sign_message(report_computed_task, PROVIDER_PRIVATE_KEY)\n+    return report_computed_task\n+\n+\n+def send_correct_force_report_computed_task(\n+    cluster_url: str,\n+    report_computed_task: ReportComputedTask,\n+    expected_status: Optional[int] = None\n+) -> None:\n+    response = api_request(\n+        cluster_url,\n+        'send',\n+        PROVIDER_PRIVATE_KEY,\n+        CONCENT_PUBLIC_KEY,\n+        get_force_report_computed_task(\n+            report_computed_task=report_computed_task,\n+        ),\n+        headers={\n+            'Content-Type': 'application/octet-stream',\n+        },\n+        expected_status=expected_status,\n+    )\n+    responses_global.append(response['error_code'] if isinstance(response, dict) else response)\n+\n+\n+def send_correct_ack_report_computed_task(\n+    cluster_url: str,\n+    report_computed_task: ReportComputedTask,\n+    expected_status: Optional[int] = None\n+) -> None:\n+    api_request(\n+        cluster_url,\n+        'send',\n+        REQUESTOR_PRIVATE_KEY,\n+        CONCENT_PUBLIC_KEY,\n+        get_ack_report_computed_task(\n+            report_computed_task=report_computed_task\n+        ),\n+        headers={\n+            'Content-Type': 'application/octet-stream',\n+        },\n+        expected_status=expected_status,\n+    )\n+\n+\n+def send_correct_force_get_task_result(\n+    cluster_url: str,\n+    report_computed_task: ReportComputedTask,\n+    expected_status: Optional[int] = None,\n+) -> None:\n+    response = api_request(\n+        cluster_url,\n+        'send',\n+        REQUESTOR_PRIVATE_KEY,\n+        CONCENT_PUBLIC_KEY,\n+        get_force_get_task_result(\n+            report_computed_task=report_computed_task,\n+        ),\n+        headers={\n+            'Content-Type': 'application/octet-stream',\n+        },\n+        expected_status=expected_status,\n+    )\n+    responses_global.append(response.__class__.__name__)\n+\n+\n+@count_fails\n+def test_case_multiple_requests_concerning_one_subtask_will_be_processed_one_by_one_if_subtask_exists_in_database(\n+    cluster_consts: str,\n+    cluster_url: str,\n+    task_id: str,\n+    subtask_id: str\n+) -> None:\n+    report_computed_task = create_report_computed_task(task_id=task_id, subtask_id=subtask_id)\n+\n+    \"\"\"send messages to save subtask in database and change state to REPORTED. Next message ForceGetTaskResult\n+       requires REPORTED state and this is the simplest way to get it \"\"\"\n+    send_correct_force_report_computed_task(\n+        cluster_url=cluster_url,\n+        report_computed_task=report_computed_task,\n+        expected_status=202,\n+    )  # Subtask state changed to: FORCING_REPORT\n+    send_correct_ack_report_computed_task(\n+        cluster_url=cluster_url,\n+        report_computed_task=report_computed_task,\n+        expected_status=202,\n+    )  # Subtask state changed to: REPORTED\n+\n+    clear_responses()\n+    # this is test- sending some messages in one time\n+    call_function_in_treads(\n+        func=send_correct_force_get_task_result,  # Subtask state changed to: FORCING_RESULT_TRANSFER\n+        number_of_threads=NUMBER_OF_TESTING_THREADS,\n+        cluster_url=cluster_url,\n+        golem_message=report_computed_task,\n+    )\n+    # waiting for responses from all threads\"\"\"","path":"concent_api/api-integration-multi-threads-test.py","position":179,"original_position":179,"commit_id":"b42951fd4d4c3749695ac6899313144d736db5fe","original_commit_id":"b42951fd4d4c3749695ac6899313144d736db5fe","user":{"login":"pawelkisielewicz","id":36702174,"node_id":"MDQ6VXNlcjM2NzAyMTc0","avatar_url":"https://avatars3.githubusercontent.com/u/36702174?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelkisielewicz","html_url":"https://github.com/pawelkisielewicz","followers_url":"https://api.github.com/users/pawelkisielewicz/followers","following_url":"https://api.github.com/users/pawelkisielewicz/following{/other_user}","gists_url":"https://api.github.com/users/pawelkisielewicz/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelkisielewicz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelkisielewicz/subscriptions","organizations_url":"https://api.github.com/users/pawelkisielewicz/orgs","repos_url":"https://api.github.com/users/pawelkisielewicz/repos","events_url":"https://api.github.com/users/pawelkisielewicz/events{/privacy}","received_events_url":"https://api.github.com/users/pawelkisielewicz/received_events","type":"User","site_admin":false},"body":"done","created_at":"2018-08-31T14:43:59Z","updated_at":"2018-08-31T14:43:59Z","html_url":"https://github.com/golemfactory/concent/pull/764#discussion_r214377072","pull_request_url":"https://api.github.com/repos/golemfactory/concent/pulls/764","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/comments/214377072"},"html":{"href":"https://github.com/golemfactory/concent/pull/764#discussion_r214377072"},"pull_request":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/764"}},"in_reply_to_id":214339454},"pull_request":{"url":"https://api.github.com/repos/golemfactory/concent/pulls/764","id":211707990,"node_id":"MDExOlB1bGxSZXF1ZXN0MjExNzA3OTkw","html_url":"https://github.com/golemfactory/concent/pull/764","diff_url":"https://github.com/golemfactory/concent/pull/764.diff","patch_url":"https://github.com/golemfactory/concent/pull/764.patch","issue_url":"https://api.github.com/repos/golemfactory/concent/issues/764","number":764,"state":"open","locked":false,"title":"Feature select for update to prevent lost updates","user":{"login":"pawelkisielewicz","id":36702174,"node_id":"MDQ6VXNlcjM2NzAyMTc0","avatar_url":"https://avatars3.githubusercontent.com/u/36702174?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelkisielewicz","html_url":"https://github.com/pawelkisielewicz","followers_url":"https://api.github.com/users/pawelkisielewicz/followers","following_url":"https://api.github.com/users/pawelkisielewicz/following{/other_user}","gists_url":"https://api.github.com/users/pawelkisielewicz/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelkisielewicz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelkisielewicz/subscriptions","organizations_url":"https://api.github.com/users/pawelkisielewicz/orgs","repos_url":"https://api.github.com/users/pawelkisielewicz/repos","events_url":"https://api.github.com/users/pawelkisielewicz/events{/privacy}","received_events_url":"https://api.github.com/users/pawelkisielewicz/received_events","type":"User","site_admin":false},"body":"Resolves https://github.com/golemfactory/concent/issues/718\r\nbased on https://github.com/golemfactory/concent/pull/753 \r\nThis branch includes and fixes your comments from https://github.com/golemfactory/concent/pull/753 \r\n","created_at":"2018-08-29T10:43:23Z","updated_at":"2018-08-31T14:43:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"db469911ca4eaaf7c32998b6711a8fee9534d91c","assignee":{"login":"pawelkisielewicz","id":36702174,"node_id":"MDQ6VXNlcjM2NzAyMTc0","avatar_url":"https://avatars3.githubusercontent.com/u/36702174?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelkisielewicz","html_url":"https://github.com/pawelkisielewicz","followers_url":"https://api.github.com/users/pawelkisielewicz/followers","following_url":"https://api.github.com/users/pawelkisielewicz/following{/other_user}","gists_url":"https://api.github.com/users/pawelkisielewicz/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelkisielewicz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelkisielewicz/subscriptions","organizations_url":"https://api.github.com/users/pawelkisielewicz/orgs","repos_url":"https://api.github.com/users/pawelkisielewicz/repos","events_url":"https://api.github.com/users/pawelkisielewicz/events{/privacy}","received_events_url":"https://api.github.com/users/pawelkisielewicz/received_events","type":"User","site_admin":false},"assignees":[{"login":"pawelkisielewicz","id":36702174,"node_id":"MDQ6VXNlcjM2NzAyMTc0","avatar_url":"https://avatars3.githubusercontent.com/u/36702174?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelkisielewicz","html_url":"https://github.com/pawelkisielewicz","followers_url":"https://api.github.com/users/pawelkisielewicz/followers","following_url":"https://api.github.com/users/pawelkisielewicz/following{/other_user}","gists_url":"https://api.github.com/users/pawelkisielewicz/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelkisielewicz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelkisielewicz/subscriptions","organizations_url":"https://api.github.com/users/pawelkisielewicz/orgs","repos_url":"https://api.github.com/users/pawelkisielewicz/repos","events_url":"https://api.github.com/users/pawelkisielewicz/events{/privacy}","received_events_url":"https://api.github.com/users/pawelkisielewicz/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"Jakub89","id":20682491,"node_id":"MDQ6VXNlcjIwNjgyNDkx","avatar_url":"https://avatars2.githubusercontent.com/u/20682491?v=4","gravatar_id":"","url":"https://api.github.com/users/Jakub89","html_url":"https://github.com/Jakub89","followers_url":"https://api.github.com/users/Jakub89/followers","following_url":"https://api.github.com/users/Jakub89/following{/other_user}","gists_url":"https://api.github.com/users/Jakub89/gists{/gist_id}","starred_url":"https://api.github.com/users/Jakub89/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jakub89/subscriptions","organizations_url":"https://api.github.com/users/Jakub89/orgs","repos_url":"https://api.github.com/users/Jakub89/repos","events_url":"https://api.github.com/users/Jakub89/events{/privacy}","received_events_url":"https://api.github.com/users/Jakub89/received_events","type":"User","site_admin":false},{"login":"bartoszbetka","id":26007109,"node_id":"MDQ6VXNlcjI2MDA3MTA5","avatar_url":"https://avatars0.githubusercontent.com/u/26007109?v=4","gravatar_id":"","url":"https://api.github.com/users/bartoszbetka","html_url":"https://github.com/bartoszbetka","followers_url":"https://api.github.com/users/bartoszbetka/followers","following_url":"https://api.github.com/users/bartoszbetka/following{/other_user}","gists_url":"https://api.github.com/users/bartoszbetka/gists{/gist_id}","starred_url":"https://api.github.com/users/bartoszbetka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bartoszbetka/subscriptions","organizations_url":"https://api.github.com/users/bartoszbetka/orgs","repos_url":"https://api.github.com/users/bartoszbetka/repos","events_url":"https://api.github.com/users/bartoszbetka/events{/privacy}","received_events_url":"https://api.github.com/users/bartoszbetka/received_events","type":"User","site_admin":false},{"login":"MichalW-CP","id":36954871,"node_id":"MDQ6VXNlcjM2OTU0ODcx","avatar_url":"https://avatars3.githubusercontent.com/u/36954871?v=4","gravatar_id":"","url":"https://api.github.com/users/MichalW-CP","html_url":"https://github.com/MichalW-CP","followers_url":"https://api.github.com/users/MichalW-CP/followers","following_url":"https://api.github.com/users/MichalW-CP/following{/other_user}","gists_url":"https://api.github.com/users/MichalW-CP/gists{/gist_id}","starred_url":"https://api.github.com/users/MichalW-CP/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichalW-CP/subscriptions","organizations_url":"https://api.github.com/users/MichalW-CP/orgs","repos_url":"https://api.github.com/users/MichalW-CP/repos","events_url":"https://api.github.com/users/MichalW-CP/events{/privacy}","received_events_url":"https://api.github.com/users/MichalW-CP/received_events","type":"User","site_admin":false},{"login":"dybi","id":36961162,"node_id":"MDQ6VXNlcjM2OTYxMTYy","avatar_url":"https://avatars0.githubusercontent.com/u/36961162?v=4","gravatar_id":"","url":"https://api.github.com/users/dybi","html_url":"https://github.com/dybi","followers_url":"https://api.github.com/users/dybi/followers","following_url":"https://api.github.com/users/dybi/following{/other_user}","gists_url":"https://api.github.com/users/dybi/gists{/gist_id}","starred_url":"https://api.github.com/users/dybi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dybi/subscriptions","organizations_url":"https://api.github.com/users/dybi/orgs","repos_url":"https://api.github.com/users/dybi/repos","events_url":"https://api.github.com/users/dybi/events{/privacy}","received_events_url":"https://api.github.com/users/dybi/received_events","type":"User","site_admin":false},{"login":"michalpiasecki1","id":41307518,"node_id":"MDQ6VXNlcjQxMzA3NTE4","avatar_url":"https://avatars2.githubusercontent.com/u/41307518?v=4","gravatar_id":"","url":"https://api.github.com/users/michalpiasecki1","html_url":"https://github.com/michalpiasecki1","followers_url":"https://api.github.com/users/michalpiasecki1/followers","following_url":"https://api.github.com/users/michalpiasecki1/following{/other_user}","gists_url":"https://api.github.com/users/michalpiasecki1/gists{/gist_id}","starred_url":"https://api.github.com/users/michalpiasecki1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michalpiasecki1/subscriptions","organizations_url":"https://api.github.com/users/michalpiasecki1/orgs","repos_url":"https://api.github.com/users/michalpiasecki1/repos","events_url":"https://api.github.com/users/michalpiasecki1/events{/privacy}","received_events_url":"https://api.github.com/users/michalpiasecki1/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":822556027,"node_id":"MDU6TGFiZWw4MjI1NTYwMjc=","url":"https://api.github.com/repos/golemfactory/concent/labels/feature","name":"feature","color":"f2dc15","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/golemfactory/concent/pulls/764/commits","review_comments_url":"https://api.github.com/repos/golemfactory/concent/pulls/764/comments","review_comment_url":"https://api.github.com/repos/golemfactory/concent/pulls/comments{/number}","comments_url":"https://api.github.com/repos/golemfactory/concent/issues/764/comments","statuses_url":"https://api.github.com/repos/golemfactory/concent/statuses/b42951fd4d4c3749695ac6899313144d736db5fe","head":{"label":"golemfactory:feature-select-for-update-to-prevent-lost-updates","ref":"feature-select-for-update-to-prevent-lost-updates","sha":"b42951fd4d4c3749695ac6899313144d736db5fe","user":{"login":"golemfactory","id":23193179,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIzMTkzMTc5","avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"repo":{"id":108836885,"node_id":"MDEwOlJlcG9zaXRvcnkxMDg4MzY4ODU=","name":"concent","full_name":"golemfactory/concent","owner":{"login":"golemfactory","id":23193179,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIzMTkzMTc5","avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/golemfactory/concent","description":"Repository for Concent Service sources","fork":false,"url":"https://api.github.com/repos/golemfactory/concent","forks_url":"https://api.github.com/repos/golemfactory/concent/forks","keys_url":"https://api.github.com/repos/golemfactory/concent/keys{/key_id}","collaborators_url":"https://api.github.com/repos/golemfactory/concent/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/golemfactory/concent/teams","hooks_url":"https://api.github.com/repos/golemfactory/concent/hooks","issue_events_url":"https://api.github.com/repos/golemfactory/concent/issues/events{/number}","events_url":"https://api.github.com/repos/golemfactory/concent/events","assignees_url":"https://api.github.com/repos/golemfactory/concent/assignees{/user}","branches_url":"https://api.github.com/repos/golemfactory/concent/branches{/branch}","tags_url":"https://api.github.com/repos/golemfactory/concent/tags","blobs_url":"https://api.github.com/repos/golemfactory/concent/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/golemfactory/concent/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/golemfactory/concent/git/refs{/sha}","trees_url":"https://api.github.com/repos/golemfactory/concent/git/trees{/sha}","statuses_url":"https://api.github.com/repos/golemfactory/concent/statuses/{sha}","languages_url":"https://api.github.com/repos/golemfactory/concent/languages","stargazers_url":"https://api.github.com/repos/golemfactory/concent/stargazers","contributors_url":"https://api.github.com/repos/golemfactory/concent/contributors","subscribers_url":"https://api.github.com/repos/golemfactory/concent/subscribers","subscription_url":"https://api.github.com/repos/golemfactory/concent/subscription","commits_url":"https://api.github.com/repos/golemfactory/concent/commits{/sha}","git_commits_url":"https://api.github.com/repos/golemfactory/concent/git/commits{/sha}","comments_url":"https://api.github.com/repos/golemfactory/concent/comments{/number}","issue_comment_url":"https://api.github.com/repos/golemfactory/concent/issues/comments{/number}","contents_url":"https://api.github.com/repos/golemfactory/concent/contents/{+path}","compare_url":"https://api.github.com/repos/golemfactory/concent/compare/{base}...{head}","merges_url":"https://api.github.com/repos/golemfactory/concent/merges","archive_url":"https://api.github.com/repos/golemfactory/concent/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/golemfactory/concent/downloads","issues_url":"https://api.github.com/repos/golemfactory/concent/issues{/number}","pulls_url":"https://api.github.com/repos/golemfactory/concent/pulls{/number}","milestones_url":"https://api.github.com/repos/golemfactory/concent/milestones{/number}","notifications_url":"https://api.github.com/repos/golemfactory/concent/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/golemfactory/concent/labels{/name}","releases_url":"https://api.github.com/repos/golemfactory/concent/releases{/id}","deployments_url":"https://api.github.com/repos/golemfactory/concent/deployments","created_at":"2017-10-30T10:41:44Z","updated_at":"2018-08-31T07:58:06Z","pushed_at":"2018-08-31T14:20:08Z","git_url":"git://github.com/golemfactory/concent.git","ssh_url":"git@github.com:golemfactory/concent.git","clone_url":"https://github.com/golemfactory/concent.git","svn_url":"https://github.com/golemfactory/concent","homepage":null,"size":2662,"stargazers_count":4,"watchers_count":4,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":95,"license":null,"forks":2,"open_issues":95,"watchers":4,"default_branch":"master"}},"base":{"label":"golemfactory:master","ref":"master","sha":"2edc32aea646df956a50484834a6092d62d54817","user":{"login":"golemfactory","id":23193179,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIzMTkzMTc5","avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"repo":{"id":108836885,"node_id":"MDEwOlJlcG9zaXRvcnkxMDg4MzY4ODU=","name":"concent","full_name":"golemfactory/concent","owner":{"login":"golemfactory","id":23193179,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIzMTkzMTc5","avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/golemfactory/concent","description":"Repository for Concent Service sources","fork":false,"url":"https://api.github.com/repos/golemfactory/concent","forks_url":"https://api.github.com/repos/golemfactory/concent/forks","keys_url":"https://api.github.com/repos/golemfactory/concent/keys{/key_id}","collaborators_url":"https://api.github.com/repos/golemfactory/concent/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/golemfactory/concent/teams","hooks_url":"https://api.github.com/repos/golemfactory/concent/hooks","issue_events_url":"https://api.github.com/repos/golemfactory/concent/issues/events{/number}","events_url":"https://api.github.com/repos/golemfactory/concent/events","assignees_url":"https://api.github.com/repos/golemfactory/concent/assignees{/user}","branches_url":"https://api.github.com/repos/golemfactory/concent/branches{/branch}","tags_url":"https://api.github.com/repos/golemfactory/concent/tags","blobs_url":"https://api.github.com/repos/golemfactory/concent/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/golemfactory/concent/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/golemfactory/concent/git/refs{/sha}","trees_url":"https://api.github.com/repos/golemfactory/concent/git/trees{/sha}","statuses_url":"https://api.github.com/repos/golemfactory/concent/statuses/{sha}","languages_url":"https://api.github.com/repos/golemfactory/concent/languages","stargazers_url":"https://api.github.com/repos/golemfactory/concent/stargazers","contributors_url":"https://api.github.com/repos/golemfactory/concent/contributors","subscribers_url":"https://api.github.com/repos/golemfactory/concent/subscribers","subscription_url":"https://api.github.com/repos/golemfactory/concent/subscription","commits_url":"https://api.github.com/repos/golemfactory/concent/commits{/sha}","git_commits_url":"https://api.github.com/repos/golemfactory/concent/git/commits{/sha}","comments_url":"https://api.github.com/repos/golemfactory/concent/comments{/number}","issue_comment_url":"https://api.github.com/repos/golemfactory/concent/issues/comments{/number}","contents_url":"https://api.github.com/repos/golemfactory/concent/contents/{+path}","compare_url":"https://api.github.com/repos/golemfactory/concent/compare/{base}...{head}","merges_url":"https://api.github.com/repos/golemfactory/concent/merges","archive_url":"https://api.github.com/repos/golemfactory/concent/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/golemfactory/concent/downloads","issues_url":"https://api.github.com/repos/golemfactory/concent/issues{/number}","pulls_url":"https://api.github.com/repos/golemfactory/concent/pulls{/number}","milestones_url":"https://api.github.com/repos/golemfactory/concent/milestones{/number}","notifications_url":"https://api.github.com/repos/golemfactory/concent/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/golemfactory/concent/labels{/name}","releases_url":"https://api.github.com/repos/golemfactory/concent/releases{/id}","deployments_url":"https://api.github.com/repos/golemfactory/concent/deployments","created_at":"2017-10-30T10:41:44Z","updated_at":"2018-08-31T07:58:06Z","pushed_at":"2018-08-31T14:20:08Z","git_url":"git://github.com/golemfactory/concent.git","ssh_url":"git@github.com:golemfactory/concent.git","clone_url":"https://github.com/golemfactory/concent.git","svn_url":"https://github.com/golemfactory/concent","homepage":null,"size":2662,"stargazers_count":4,"watchers_count":4,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":95,"license":null,"forks":2,"open_issues":95,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/764"},"html":{"href":"https://github.com/golemfactory/concent/pull/764"},"issue":{"href":"https://api.github.com/repos/golemfactory/concent/issues/764"},"comments":{"href":"https://api.github.com/repos/golemfactory/concent/issues/764/comments"},"review_comments":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/764/comments"},"review_comment":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/764/commits"},"statuses":{"href":"https://api.github.com/repos/golemfactory/concent/statuses/b42951fd4d4c3749695ac6899313144d736db5fe"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"pawelkisielewicz"}}