{"action":"created","comment":{"url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/comments/172000965","pull_request_review_id":100958811,"id":172000965,"diff_hunk":"@@ -0,0 +1,246 @@\n+#!/usr/bin/env python\n+import json\n+import os\n+\n+import boto3\n+import sys\n+\n+pkg_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))  # noqa\n+sys.path.insert(0, pkg_root)  # noqa\n+\n+from dss.util.aws import ARN\n+from dss.stepfunctions import step_functions_arn\n+\n+stage = os.environ.get('DSS_DEPLOYMENT_STAGE')\n+dev_stage = 'dev'\n+region = ARN.get_region()\n+accountid = ARN.get_account_id()\n+\n+checkout_bundle_arn_prefix = f\"arn:aws:lambda:{region}:{accountid}:function:dss-scalability-test-{stage}:domovoi-stepfunctions-task-CheckoutBundle\"\n+upload_bundle_arn_prefix = f\"arn:aws:lambda:{region}:{accountid}:function:dss-scalability-test-{stage}:domovoi-stepfunctions-task-UploadBundle\"\n+download_bundle_arn_prefix = f\"arn:aws:lambda:{region}:{accountid}:function:dss-scalability-test-{stage}:domovoi-stepfunctions-task-DownloadBundle\"\n+dss_s3_copy_arn = f\"arn:aws:states:{region}:{accountid}:stateMachine:dss-s3-copy-sfn-{dev_stage}\"\n+\n+\n+def get_metrics_array(arn_template, cnt):\n+    metrics_array = [[\"AWS/States\", \"LambdaFunctionRunTime\", \"LambdaFunctionArn\", arn_template + '{}'.format(0),\n+                      {\"yAxis\": \"left\", \"period\": 10}]]\n+    for idx in range(1, cnt):\n+        metrics_array.append(\n+            [\"...\",\n+             arn_template + '{}'.format(idx),\n+             {\"period\": 10}])\n+    return metrics_array\n+\n+\n+dashboard_def = {\n+    \"widgets\": [\n+        {\n+            \"type\": \"metric\",\n+            \"x\": 0,\n+            \"y\": 24,\n+            \"width\": 12,\n+            \"height\": 6,\n+            \"properties\": {\n+                \"view\": \"timeSeries\",\n+                \"stacked\": True,\n+                \"metrics\": [\n+                    [\"AWS/ES\", \"CPUUtilization\", \"DomainName\", f\"dss-index-{stage}\", \"ClientId\", \"861229788715\",\n+                     {\"period\": 10}],\n+                    [\".\", \"WriteThroughput\", \".\", \".\", \".\", \".\", {\"period\": 10}],\n+                    [\".\", \"WriteIOPS\", \".\", \".\", \".\", \".\", {\"period\": 10}]\n+                ],\n+                \"region\": region,\n+                \"period\": 300,\n+                \"title\": \"Elastic search\"\n+            }\n+        }\n+        ,\n+        {\n+            \"type\": \"metric\",\n+            \"x\": 0,\n+            \"y\": 0,\n+            \"width\": 15,\n+            \"height\": 3,\n+            \"properties\": {\n+                \"view\": \"singleValue\",\n+                \"metrics\": [\n+                    [\"AWS/States\", \"ExecutionsStarted\", \"StateMachineArn\",\n+                     step_functions_arn(f\"dss-scalability-test-{stage}\"),\n+                     {\"stat\": \"Sum\", \"period\": 3600}],\n+                    [\".\", \"ExecutionsSucceeded\", \".\", \".\", {\"stat\": \"Sum\", \"period\": 3600}],\n+                    [\".\", \"ExecutionsFailed\", \".\", \".\", {\"stat\": \"Sum\", \"period\": 3600}],\n+                    [\".\", \"ExecutionThrottled\", \".\", \".\", {\"stat\": \"Sum\", \"period\": 3600}]\n+                ],\n+                \"region\": region,\n+                \"title\": \"Active tests\",\n+                \"period\": 300\n+            }\n+        }\n+        ,\n+        {\n+            \"type\": \"metric\",\n+            \"x\": 0,\n+            \"y\": 12,\n+            \"width\": 18,\n+            \"height\": 6,\n+            \"properties\": {\n+                \"view\": \"timeSeries\",\n+                \"stacked\": False,\n+                \"metrics\": [\n+                    [\"AWS/States\", \"ExecutionsStarted\", \"StateMachineArn\",\n+                     step_functions_arn(f\"dss-scalability-test-{stage}\"), {\"stat\": \"Sum\"}],\n+                    [\".\", \"ExecutionsFailed\", \".\", \".\", {\"stat\": \"Sum\"}],\n+                    [\".\", \"ExecutionsTimedOut\", \".\", \".\", {\"stat\": \"Sum\"}],\n+                    [\".\", \"ExecutionThrottled\", \".\", \".\", {\"stat\": \"Sum\"}],\n+                    [\".\", \"ExecutionsSucceeded\", \".\", \".\", {\"stat\": \"Sum\"}]\n+                ],\n+                \"region\": region,\n+                \"title\": \"Tests\",\n+                \"period\": 300\n+            }\n+        }\n+        ,\n+        {\n+            \"type\": \"metric\",\n+            \"x\": 12,\n+            \"y\": 24,\n+            \"width\": 6,\n+            \"height\": 6,\n+            \"properties\": {\n+                \"view\": \"timeSeries\",\n+                \"stacked\": False,\n+                \"metrics\": [\n+                    [\"AWS/DynamoDB\", \"ConsumedWriteCapacityUnits\", \"TableName\", \"scalability_test\"],\n+                    [\".\", \"ConsumedReadCapacityUnits\", \".\", \".\"]\n+                ],\n+                \"region\": region,\n+                \"title\": \"Dynamo DB\"\n+            }\n+        },\n+        {\n+            \"type\": \"metric\",\n+            \"x\": 0,\n+            \"y\": 9,\n+            \"width\": 24,\n+            \"height\": 3,\n+            \"properties\": {\n+                \"view\": \"timeSeries\",\n+                \"stacked\": False,\n+                \"metrics\": get_metrics_array(checkout_bundle_arn_prefix, 10),\n+                \"region\": region,\n+                \"title\": \"Checkout bundle runtime\",\n+                \"period\": 300\n+            }\n+        },\n+        {\n+            \"type\": \"metric\",\n+            \"x\": 0,\n+            \"y\": 18,\n+            \"width\": 6,\n+            \"height\": 6,\n+            \"properties\": {\n+                \"view\": \"timeSeries\",\n+                \"metrics\": [\n+                    [\"AWS/States\", \"LambdaFunctionsStarted\", \"LambdaFunctionArn\",\n+                     upload_bundle_arn_prefix,\n+                     {\"stat\": \"Sum\"}],\n+                    [\".\", \"LambdaFunctionsFailed\", \".\", \".\", {\"stat\": \"Sum\"}],\n+                    [\".\", \"LambdaFunctionsSucceeded\", \".\", \".\", {\"stat\": \"Sum\"}],\n+                    [\".\", \"LambdaFunctionsHeartbeatTimedOut\", \".\", \".\", {\"stat\": \"Sum\"}]\n+                ],\n+                \"region\": region,\n+                \"stacked\": False,\n+                \"title\": \"Upload bundle\",\n+                \"period\": 300\n+            }\n+        }\n+        ,","path":"scripts/deploy_scale_dashboard.py","position":158,"original_position":158,"commit_id":"320f6070abe00204ba101d80649095aba9ae5aec","original_commit_id":"320f6070abe00204ba101d80649095aba9ae5aec","user":{"login":"amork","id":11514707,"avatar_url":"https://avatars0.githubusercontent.com/u/11514707?v=4","gravatar_id":"","url":"https://api.github.com/users/amork","html_url":"https://github.com/amork","followers_url":"https://api.github.com/users/amork/followers","following_url":"https://api.github.com/users/amork/following{/other_user}","gists_url":"https://api.github.com/users/amork/gists{/gist_id}","starred_url":"https://api.github.com/users/amork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amork/subscriptions","organizations_url":"https://api.github.com/users/amork/orgs","repos_url":"https://api.github.com/users/amork/repos","events_url":"https://api.github.com/users/amork/events{/privacy}","received_events_url":"https://api.github.com/users/amork/received_events","type":"User","site_admin":false},"body":"fixed","created_at":"2018-03-03T01:40:48Z","updated_at":"2018-03-03T01:40:48Z","html_url":"https://github.com/HumanCellAtlas/data-store/pull/1017#discussion_r172000965","pull_request_url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/comments/172000965"},"html":{"href":"https://github.com/HumanCellAtlas/data-store/pull/1017#discussion_r172000965"},"pull_request":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017"}},"in_reply_to_id":171996693},"pull_request":{"url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017","id":172070330,"html_url":"https://github.com/HumanCellAtlas/data-store/pull/1017","diff_url":"https://github.com/HumanCellAtlas/data-store/pull/1017.diff","patch_url":"https://github.com/HumanCellAtlas/data-store/pull/1017.patch","issue_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/1017","number":1017,"state":"open","locked":false,"title":"Scalability testing framework  II","user":{"login":"amork","id":11514707,"avatar_url":"https://avatars0.githubusercontent.com/u/11514707?v=4","gravatar_id":"","url":"https://api.github.com/users/amork","html_url":"https://github.com/amork","followers_url":"https://api.github.com/users/amork/followers","following_url":"https://api.github.com/users/amork/following{/other_user}","gists_url":"https://api.github.com/users/amork/gists{/gist_id}","starred_url":"https://api.github.com/users/amork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amork/subscriptions","organizations_url":"https://api.github.com/users/amork/orgs","repos_url":"https://api.github.com/users/amork/repos","events_url":"https://api.github.com/users/amork/events{/privacy}","received_events_url":"https://api.github.com/users/amork/received_events","type":"User","site_admin":false},"body":"For prev review hisotry refer to #939\r\n#### About the scalability testing framework\r\n\r\n1. The scalability test framework is based on AWS Step Functions. Workflow definition resembles smoke test for DSS.\r\n2. The execution is triggered by sending SNS messages to dss-scalability-test-run-{STAGE} topic\r\n3. The scalability test writes results of execution of individual executions and aggregated run metrics into the \r\nfollowing DynamoDB tables: scalability_test_result, scalability_test\r\n4. The SFN execution is initiated and starts by entering WAIT step. Wait is configured to end at the 5 minute intervals \r\nto accommodate the AWS limit on starting SFN executions and enable generation of bursts of load\r\n5.  Once all parallel branches of execution are done, it writes summary of the run in DynamoDB\r\n6. DynamoDB is configured to stream new records into Lambda which aggregates the results and writes incremental metrics\r\nback into DynamoDB\r\n7. CloudWatch dashboard has been configured to display relevant execution metrics and deployed automatically. The \r\ndashboard is named as \"Scalability{stage}\" \r\n\r\n#### Running the scale test locally\r\n\r\n* Run with default configuration `make scaletest` in the top-level `data-store` directory.\r\n* Run with custom configuration './tests/scalability/scale_test_runner.py -r <rps> -d <seconds>' in the \r\ntop-level `data-store` directory. Where \"rps\" is a number of requests generated per second and \"d\" is a duration of the\r\ntest in seconds\r\n\r\n#### Adding new tests\r\n\r\nNew tests can easily be addeed to the existing step function definition at app.py\r\n\r\nPending items:\r\n\r\n- [x] automate deployment of the DynamoDB artifacts\r\n- [x] automate deployment of the CloudWatch dashboard\r\n- [x] deployment of the aggregation Lambda\r\n- [x] stream/trigger configuration\r\n- [x] get rid of Locust\r\n","created_at":"2018-02-28T20:57:03Z","updated_at":"2018-03-03T01:40:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4a3fffc8a37169c2b92b1a25ec6e02727ff3f1af","assignee":{"login":"amork","id":11514707,"avatar_url":"https://avatars0.githubusercontent.com/u/11514707?v=4","gravatar_id":"","url":"https://api.github.com/users/amork","html_url":"https://github.com/amork","followers_url":"https://api.github.com/users/amork/followers","following_url":"https://api.github.com/users/amork/following{/other_user}","gists_url":"https://api.github.com/users/amork/gists{/gist_id}","starred_url":"https://api.github.com/users/amork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amork/subscriptions","organizations_url":"https://api.github.com/users/amork/orgs","repos_url":"https://api.github.com/users/amork/repos","events_url":"https://api.github.com/users/amork/events{/privacy}","received_events_url":"https://api.github.com/users/amork/received_events","type":"User","site_admin":false},"assignees":[{"login":"amork","id":11514707,"avatar_url":"https://avatars0.githubusercontent.com/u/11514707?v=4","gravatar_id":"","url":"https://api.github.com/users/amork","html_url":"https://github.com/amork","followers_url":"https://api.github.com/users/amork/followers","following_url":"https://api.github.com/users/amork/following{/other_user}","gists_url":"https://api.github.com/users/amork/gists{/gist_id}","starred_url":"https://api.github.com/users/amork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amork/subscriptions","organizations_url":"https://api.github.com/users/amork/orgs","repos_url":"https://api.github.com/users/amork/repos","events_url":"https://api.github.com/users/amork/events{/privacy}","received_events_url":"https://api.github.com/users/amork/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":679282565,"url":"https://api.github.com/repos/HumanCellAtlas/data-store/labels/in%20progress","name":"in progress","color":"dddddd","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017/commits","review_comments_url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017/comments","review_comment_url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/comments{/number}","comments_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/1017/comments","statuses_url":"https://api.github.com/repos/HumanCellAtlas/data-store/statuses/320f6070abe00204ba101d80649095aba9ae5aec","head":{"label":"HumanCellAtlas:akislyuk-scalability-test","ref":"akislyuk-scalability-test","sha":"320f6070abe00204ba101d80649095aba9ae5aec","user":{"login":"HumanCellAtlas","id":26391798,"avatar_url":"https://avatars1.githubusercontent.com/u/26391798?v=4","gravatar_id":"","url":"https://api.github.com/users/HumanCellAtlas","html_url":"https://github.com/HumanCellAtlas","followers_url":"https://api.github.com/users/HumanCellAtlas/followers","following_url":"https://api.github.com/users/HumanCellAtlas/following{/other_user}","gists_url":"https://api.github.com/users/HumanCellAtlas/gists{/gist_id}","starred_url":"https://api.github.com/users/HumanCellAtlas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HumanCellAtlas/subscriptions","organizations_url":"https://api.github.com/users/HumanCellAtlas/orgs","repos_url":"https://api.github.com/users/HumanCellAtlas/repos","events_url":"https://api.github.com/users/HumanCellAtlas/events{/privacy}","received_events_url":"https://api.github.com/users/HumanCellAtlas/received_events","type":"Organization","site_admin":false},"repo":{"id":84872231,"name":"data-store","full_name":"HumanCellAtlas/data-store","owner":{"login":"HumanCellAtlas","id":26391798,"avatar_url":"https://avatars1.githubusercontent.com/u/26391798?v=4","gravatar_id":"","url":"https://api.github.com/users/HumanCellAtlas","html_url":"https://github.com/HumanCellAtlas","followers_url":"https://api.github.com/users/HumanCellAtlas/followers","following_url":"https://api.github.com/users/HumanCellAtlas/following{/other_user}","gists_url":"https://api.github.com/users/HumanCellAtlas/gists{/gist_id}","starred_url":"https://api.github.com/users/HumanCellAtlas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HumanCellAtlas/subscriptions","organizations_url":"https://api.github.com/users/HumanCellAtlas/orgs","repos_url":"https://api.github.com/users/HumanCellAtlas/repos","events_url":"https://api.github.com/users/HumanCellAtlas/events{/privacy}","received_events_url":"https://api.github.com/users/HumanCellAtlas/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/HumanCellAtlas/data-store","description":"Design specs and prototypes for the HCA Data Storage System (\"blue box\")","fork":false,"url":"https://api.github.com/repos/HumanCellAtlas/data-store","forks_url":"https://api.github.com/repos/HumanCellAtlas/data-store/forks","keys_url":"https://api.github.com/repos/HumanCellAtlas/data-store/keys{/key_id}","collaborators_url":"https://api.github.com/repos/HumanCellAtlas/data-store/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/HumanCellAtlas/data-store/teams","hooks_url":"https://api.github.com/repos/HumanCellAtlas/data-store/hooks","issue_events_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/events{/number}","events_url":"https://api.github.com/repos/HumanCellAtlas/data-store/events","assignees_url":"https://api.github.com/repos/HumanCellAtlas/data-store/assignees{/user}","branches_url":"https://api.github.com/repos/HumanCellAtlas/data-store/branches{/branch}","tags_url":"https://api.github.com/repos/HumanCellAtlas/data-store/tags","blobs_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/refs{/sha}","trees_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/trees{/sha}","statuses_url":"https://api.github.com/repos/HumanCellAtlas/data-store/statuses/{sha}","languages_url":"https://api.github.com/repos/HumanCellAtlas/data-store/languages","stargazers_url":"https://api.github.com/repos/HumanCellAtlas/data-store/stargazers","contributors_url":"https://api.github.com/repos/HumanCellAtlas/data-store/contributors","subscribers_url":"https://api.github.com/repos/HumanCellAtlas/data-store/subscribers","subscription_url":"https://api.github.com/repos/HumanCellAtlas/data-store/subscription","commits_url":"https://api.github.com/repos/HumanCellAtlas/data-store/commits{/sha}","git_commits_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/commits{/sha}","comments_url":"https://api.github.com/repos/HumanCellAtlas/data-store/comments{/number}","issue_comment_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/comments{/number}","contents_url":"https://api.github.com/repos/HumanCellAtlas/data-store/contents/{+path}","compare_url":"https://api.github.com/repos/HumanCellAtlas/data-store/compare/{base}...{head}","merges_url":"https://api.github.com/repos/HumanCellAtlas/data-store/merges","archive_url":"https://api.github.com/repos/HumanCellAtlas/data-store/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/HumanCellAtlas/data-store/downloads","issues_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues{/number}","pulls_url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls{/number}","milestones_url":"https://api.github.com/repos/HumanCellAtlas/data-store/milestones{/number}","notifications_url":"https://api.github.com/repos/HumanCellAtlas/data-store/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/HumanCellAtlas/data-store/labels{/name}","releases_url":"https://api.github.com/repos/HumanCellAtlas/data-store/releases{/id}","deployments_url":"https://api.github.com/repos/HumanCellAtlas/data-store/deployments","created_at":"2017-03-13T20:38:34Z","updated_at":"2018-03-01T00:55:37Z","pushed_at":"2018-03-03T01:21:15Z","git_url":"git://github.com/HumanCellAtlas/data-store.git","ssh_url":"git@github.com:HumanCellAtlas/data-store.git","clone_url":"https://github.com/HumanCellAtlas/data-store.git","svn_url":"https://github.com/HumanCellAtlas/data-store","homepage":"https://dss.staging.data.humancellatlas.org/","size":9419,"stargazers_count":18,"watchers_count":18,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":143,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":3,"open_issues":143,"watchers":18,"default_branch":"master"}},"base":{"label":"HumanCellAtlas:master","ref":"master","sha":"472899d76f3a8d6db02446e36ab584db9ebad3f5","user":{"login":"HumanCellAtlas","id":26391798,"avatar_url":"https://avatars1.githubusercontent.com/u/26391798?v=4","gravatar_id":"","url":"https://api.github.com/users/HumanCellAtlas","html_url":"https://github.com/HumanCellAtlas","followers_url":"https://api.github.com/users/HumanCellAtlas/followers","following_url":"https://api.github.com/users/HumanCellAtlas/following{/other_user}","gists_url":"https://api.github.com/users/HumanCellAtlas/gists{/gist_id}","starred_url":"https://api.github.com/users/HumanCellAtlas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HumanCellAtlas/subscriptions","organizations_url":"https://api.github.com/users/HumanCellAtlas/orgs","repos_url":"https://api.github.com/users/HumanCellAtlas/repos","events_url":"https://api.github.com/users/HumanCellAtlas/events{/privacy}","received_events_url":"https://api.github.com/users/HumanCellAtlas/received_events","type":"Organization","site_admin":false},"repo":{"id":84872231,"name":"data-store","full_name":"HumanCellAtlas/data-store","owner":{"login":"HumanCellAtlas","id":26391798,"avatar_url":"https://avatars1.githubusercontent.com/u/26391798?v=4","gravatar_id":"","url":"https://api.github.com/users/HumanCellAtlas","html_url":"https://github.com/HumanCellAtlas","followers_url":"https://api.github.com/users/HumanCellAtlas/followers","following_url":"https://api.github.com/users/HumanCellAtlas/following{/other_user}","gists_url":"https://api.github.com/users/HumanCellAtlas/gists{/gist_id}","starred_url":"https://api.github.com/users/HumanCellAtlas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HumanCellAtlas/subscriptions","organizations_url":"https://api.github.com/users/HumanCellAtlas/orgs","repos_url":"https://api.github.com/users/HumanCellAtlas/repos","events_url":"https://api.github.com/users/HumanCellAtlas/events{/privacy}","received_events_url":"https://api.github.com/users/HumanCellAtlas/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/HumanCellAtlas/data-store","description":"Design specs and prototypes for the HCA Data Storage System (\"blue box\")","fork":false,"url":"https://api.github.com/repos/HumanCellAtlas/data-store","forks_url":"https://api.github.com/repos/HumanCellAtlas/data-store/forks","keys_url":"https://api.github.com/repos/HumanCellAtlas/data-store/keys{/key_id}","collaborators_url":"https://api.github.com/repos/HumanCellAtlas/data-store/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/HumanCellAtlas/data-store/teams","hooks_url":"https://api.github.com/repos/HumanCellAtlas/data-store/hooks","issue_events_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/events{/number}","events_url":"https://api.github.com/repos/HumanCellAtlas/data-store/events","assignees_url":"https://api.github.com/repos/HumanCellAtlas/data-store/assignees{/user}","branches_url":"https://api.github.com/repos/HumanCellAtlas/data-store/branches{/branch}","tags_url":"https://api.github.com/repos/HumanCellAtlas/data-store/tags","blobs_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/refs{/sha}","trees_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/trees{/sha}","statuses_url":"https://api.github.com/repos/HumanCellAtlas/data-store/statuses/{sha}","languages_url":"https://api.github.com/repos/HumanCellAtlas/data-store/languages","stargazers_url":"https://api.github.com/repos/HumanCellAtlas/data-store/stargazers","contributors_url":"https://api.github.com/repos/HumanCellAtlas/data-store/contributors","subscribers_url":"https://api.github.com/repos/HumanCellAtlas/data-store/subscribers","subscription_url":"https://api.github.com/repos/HumanCellAtlas/data-store/subscription","commits_url":"https://api.github.com/repos/HumanCellAtlas/data-store/commits{/sha}","git_commits_url":"https://api.github.com/repos/HumanCellAtlas/data-store/git/commits{/sha}","comments_url":"https://api.github.com/repos/HumanCellAtlas/data-store/comments{/number}","issue_comment_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/comments{/number}","contents_url":"https://api.github.com/repos/HumanCellAtlas/data-store/contents/{+path}","compare_url":"https://api.github.com/repos/HumanCellAtlas/data-store/compare/{base}...{head}","merges_url":"https://api.github.com/repos/HumanCellAtlas/data-store/merges","archive_url":"https://api.github.com/repos/HumanCellAtlas/data-store/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/HumanCellAtlas/data-store/downloads","issues_url":"https://api.github.com/repos/HumanCellAtlas/data-store/issues{/number}","pulls_url":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls{/number}","milestones_url":"https://api.github.com/repos/HumanCellAtlas/data-store/milestones{/number}","notifications_url":"https://api.github.com/repos/HumanCellAtlas/data-store/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/HumanCellAtlas/data-store/labels{/name}","releases_url":"https://api.github.com/repos/HumanCellAtlas/data-store/releases{/id}","deployments_url":"https://api.github.com/repos/HumanCellAtlas/data-store/deployments","created_at":"2017-03-13T20:38:34Z","updated_at":"2018-03-01T00:55:37Z","pushed_at":"2018-03-03T01:21:15Z","git_url":"git://github.com/HumanCellAtlas/data-store.git","ssh_url":"git@github.com:HumanCellAtlas/data-store.git","clone_url":"https://github.com/HumanCellAtlas/data-store.git","svn_url":"https://github.com/HumanCellAtlas/data-store","homepage":"https://dss.staging.data.humancellatlas.org/","size":9419,"stargazers_count":18,"watchers_count":18,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":143,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":3,"open_issues":143,"watchers":18,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017"},"html":{"href":"https://github.com/HumanCellAtlas/data-store/pull/1017"},"issue":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/1017"},"comments":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/issues/1017/comments"},"review_comments":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017/comments"},"review_comment":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/pulls/1017/commits"},"statuses":{"href":"https://api.github.com/repos/HumanCellAtlas/data-store/statuses/320f6070abe00204ba101d80649095aba9ae5aec"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"amork"}}