{"action":"created","comment":{"url":"https://api.github.com/repos/opensciencegrid/docs/pulls/comments/351521225","pull_request_review_id":323965506,"id":351521225,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDM1MTUyMTIyNQ==","diff_hunk":"@@ -0,0 +1,195 @@\n+Running Stashcache in a Container\n+=================================\n+\n+The OSG operates the [StashCache data federation](/data/stashcache/overview), which\n+provides organizations with a method to distribute their data in a scalable manner to thousands of jobs without needing\n+to pre-stage data across sites or operate their own scalable infrastructure.\n+\n+[Stash Caches](/data/stashcache/install-cache) transfer data to clients such as jobs or users. A set of caches are operated across the OSG for the benefit of nearby sites;\n+in addition, each site may run its own cache in order to reduce the amount of data transferred over the WAN.\n+This document outlines how to run StashCache in a Docker container.\n+\n+Before Starting\n+---------------\n+\n+Before starting the installation process, consider the following points:\n+\n+1. Docker should be running in the host you plan to install the cache\n+1. User: `user` should be in the `docker` linux group.\n+1. A port for XRootD to listen for incoming connections (over HTTP) (default 8000)\n+1. A partition on the host to store cached data\n+\n+\n+Running a Container\n+-------------------\n+\n+To run the container, use `docker run` with the following options, replacing the text within angle brackets with your\n+own values:\n+\n+```console\n+user@host $ docker run --rm --publish <HOST PORT>:8000 \\\n+             opensciencegrid/stash-cache:stable \\\n+             --volume <HOST PARTITION>:/tmp\n+```\n+\n+The `<HOST PORT>` is the port on your server which will accept caching requests and `<HOST PARTITION>` will be the mount where to store\n+\n+For example, if you've chosen `8212` as your host port, you can verify that it worked with the command:\n+\n+```console\n+user@host $ curl http://localhost:8212/user/dweitzel/public/blast/queries/query1\n+```\n+\n+Which should output:\n+\n+```\n+>Derek's first query!\n+MPVSDSGFDNSSKTMKDDTIPTEDYEEITKESEMGDATKITSKIDANVIEKKDTDSENNITIAQDDEKVSWLQRVVEFFE\n+```\n+\n+Readying for Production\n+------------------------\n+\n+Additional configuration is needed to make StashCache production-ready.\n+\n+1. Add environment variables to set the name of the cache and the directory of the persistent cache.  It is important to remember that the directory set in the environment variable points to the directory **inside** the container.  It is later mapped to a host directory with the `--volume` option.\n+\n+An example final `docker run` command:\n+```console\n+user@host $ docker run --rm --publish <HOST PORT>:8000 \\\n+             --volume <HOST PARTITION>:/cache \\\n+             --env-file=/opt/xcache/.env \\\n+             opensciencegrid/stash-cache:stable\n+```\n+\n+Where the environment file on the docker host, `/opt/xcache/.env`, has the following contents:\n+```file\n+XC_RESOURCENAME=ProductionCache\n+XC_ROOTDIR=/cache\n+```\n+\n+It is recommended to use a container orchestration service such as [docker-compose](https://docs.docker.com/compose/) or [kubernetes](https://kubernetes.io/), or start the XCache container with systemd.\n+\n+An example systemd service file for xcache.  This will require creating the environment file in the directory `/opt/xcache/.env`. \n+\n+!!! note\n+    This example systemd file assumes <HOST PORT> is `8000` and  <HOST PARTITION> is `/srv/cache`.\n+\n+```file\n+[Unit]\n+Description=XCache Container\n+After=docker.service\n+Requires=docker.service\n+\n+[Service]\n+TimeoutStartSec=0\n+Restart=always\n+ExecStartPre=-/usr/bin/docker stop %n\n+ExecStartPre=-/usr/bin/docker rm %n\n+ExecStartPre=/usr/bin/docker pull opensciencegrid/stash-cache:stable\n+ExecStart=/usr/bin/docker run --rm --name %n --publish 8000:8000 --volume /srv/cache:/cache --env-file /opt/xcache/.env opensciencegrid/stash-cache:stable\n+\n+[Install]\n+WantedBy=multi-user.target\n+```\n+\n+This systemd file can be saved to `/etc/systemd/system/docker.stash-cache.service` and started with:\n+\n+```console\n+root@host $ systemctl enable docker.stash-cache\n+root@host $ systemctl start docker.stash-cache\n+```\n+\n+!!! warning\n+    You must [register](/stashcache/install-cache/#registering-the-cache) the cache before considering it a production service.\n+\n+Additional Configuration (Optional)\n+-----------------------------------\n+\n+In addition to the required configuration above, you may also configure the behavior of your cache with the following variables in your environment file:\n+\n+- `XC_SPACE_HIGH_WM`: High watermark for disk usage;\n+      when usage goes above the high watermark, the cache deletes until it hits the low watermark\n+- `XC_SPACE_LOW_WM`: Low watermark for disk usage;\n+      when usage goes above the high watermark, the cache deletes until it hits the low watermark\n+- `XC_PORT`: TCP port that XCache listens on\n+- `XC_RAMSIZE`: Amount of memory to use for storing blocks before writting them to disk. (Use higher for slower disks).\n+- `XC_BLOCKSIZE`: The size of the blocks in the cache\n+- `XC_PREFETCH`: Number of blocks to prefetch from a file at once. \n+       This is a value of how aggressive the cache is to request portions of a file. Set to `0` to disable\n+\n+### Optimizing Stashcache ###\n+\n+#### Network Optimization ####\n+\n+For caches that are connected to NIC's over `40Gbps` we recommend to disable the virtualized network and \"bind\" the container to the host network:\n+\n+```console\n+user@host $ docker run --rm  \\\n+             --network=\"host\" \\\n+             --volume <HOST PARTITION>:/cache \\\n+             --env-file=/opt/xcache/.env \\\n+             opensciencegrid/stash-cache:stable\n+```\n+\n+#### Memory Optimization ####\n+\n+Stashcache uses the hosts memory in two ways:\n+\n+1. Uses the own linux kernel as a way to cache files read from disk\n+1. As a buffer for writting blocks of files first in memory and then in disk (to account for slow disks).\n+\n+An easy way to increase the performance of stashcache is to assign it more memory. You can use the [docker option](https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory) `--memory` and set it up to at least twice of `XC_RAMSIZE`.\n+\n+```console\n+user@host $ docker run --rm --publish <HOST PORT>:8000 \\\n+             --memory=64g \\\n+             --volume <HOST PARTITION>:/cache \\\n+             --env-file=/opt/xcache/.env \\\n+             opensciencegrid/stash-cache:stable\n+```\n+\n+\n+#### Multiple Disks ####\n+\n+For caches that store over `10 TB` or that have assigned space for storing the cached files over multiple partitions (`/partition1, /partition2, ...`) we recommend the following.\n+\n+1. Create a config file `90-my-stash-cache-disks.cfg` with the following contents\n+\n+        :::file\n+        pfc.spaces data\n+        oss.space data /data1\n+        oss.space data /data2\n+        .\n+        .\n+        .\n+\n+1. Run the container with the following options:\n+\n+        :::console\n+        user@host $ docker run --rm --publish <HOST PORT>:8000 \\\n+             --volume <HOST PARTITION>:/cache \\\n+             --volume /partition1:/data1 \\\n+             --volume /partition2:/data2 \\\n+             --volume /opt/xcache/90-my-stash-cache-disks.cfg:/etc/xrootd/config.d/90-stash-cache-disks.cfg \\\n+             --env-file=/opt/xcache/.env \\\n+             opensciencegrid/stash-cache:stable\n+\n+!!! note\n+    Under this configuration the `<HOST PARTITION>` is not used to store the files rather to store symlinks to the files in `/partition1` and `/partition2`\n+\n+!!! warning\n+    For over 100 TB of assigned space we highly encourage to use this setup and mount `<HOST PARTITION>` in solid state disks or NVME.\n+\n+### Disabling OSG monitoring ###","path":"docs/data/stashcache/run-stashcache-container.md","position":184,"original_position":184,"commit_id":"bde89056d0a57445af8cc21bd206dd7aba202ce1","original_commit_id":"bde89056d0a57445af8cc21bd206dd7aba202ce1","user":{"login":"brianhlin","id":390105,"node_id":"MDQ6VXNlcjM5MDEwNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/390105?v=4","gravatar_id":"","url":"https://api.github.com/users/brianhlin","html_url":"https://github.com/brianhlin","followers_url":"https://api.github.com/users/brianhlin/followers","following_url":"https://api.github.com/users/brianhlin/following{/other_user}","gists_url":"https://api.github.com/users/brianhlin/gists{/gist_id}","starred_url":"https://api.github.com/users/brianhlin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brianhlin/subscriptions","organizations_url":"https://api.github.com/users/brianhlin/orgs","repos_url":"https://api.github.com/users/brianhlin/repos","events_url":"https://api.github.com/users/brianhlin/events{/privacy}","received_events_url":"https://api.github.com/users/brianhlin/received_events","type":"User","site_admin":false},"body":"We should just get rid of this section since this is a Stash Cache doc.","created_at":"2019-11-27T22:28:06Z","updated_at":"2019-11-27T22:41:58Z","html_url":"https://github.com/opensciencegrid/docs/pull/641#discussion_r351521225","pull_request_url":"https://api.github.com/repos/opensciencegrid/docs/pulls/641","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/opensciencegrid/docs/pulls/comments/351521225"},"html":{"href":"https://github.com/opensciencegrid/docs/pull/641#discussion_r351521225"},"pull_request":{"href":"https://api.github.com/repos/opensciencegrid/docs/pulls/641"}}},"pull_request":{"url":"https://api.github.com/repos/opensciencegrid/docs/pulls/641","id":344277917,"node_id":"MDExOlB1bGxSZXF1ZXN0MzQ0Mjc3OTE3","html_url":"https://github.com/opensciencegrid/docs/pull/641","diff_url":"https://github.com/opensciencegrid/docs/pull/641.diff","patch_url":"https://github.com/opensciencegrid/docs/pull/641.patch","issue_url":"https://api.github.com/repos/opensciencegrid/docs/issues/641","number":641,"state":"open","locked":false,"title":"SOFTWARE-3899 Running Stashcache in a container","user":{"login":"efajardo","id":1798509,"node_id":"MDQ6VXNlcjE3OTg1MDk=","avatar_url":"https://avatars2.githubusercontent.com/u/1798509?v=4","gravatar_id":"","url":"https://api.github.com/users/efajardo","html_url":"https://github.com/efajardo","followers_url":"https://api.github.com/users/efajardo/followers","following_url":"https://api.github.com/users/efajardo/following{/other_user}","gists_url":"https://api.github.com/users/efajardo/gists{/gist_id}","starred_url":"https://api.github.com/users/efajardo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efajardo/subscriptions","organizations_url":"https://api.github.com/users/efajardo/orgs","repos_url":"https://api.github.com/users/efajardo/repos","events_url":"https://api.github.com/users/efajardo/events{/privacy}","received_events_url":"https://api.github.com/users/efajardo/received_events","type":"User","site_admin":false},"body":"","created_at":"2019-11-21T23:16:19Z","updated_at":"2019-11-27T22:41:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9c3327563d96f6e5f72507c57a2b379a943bd5d0","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/opensciencegrid/docs/pulls/641/commits","review_comments_url":"https://api.github.com/repos/opensciencegrid/docs/pulls/641/comments","review_comment_url":"https://api.github.com/repos/opensciencegrid/docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/opensciencegrid/docs/issues/641/comments","statuses_url":"https://api.github.com/repos/opensciencegrid/docs/statuses/bde89056d0a57445af8cc21bd206dd7aba202ce1","head":{"label":"efajardo:SOFTWARE-3899","ref":"SOFTWARE-3899","sha":"bde89056d0a57445af8cc21bd206dd7aba202ce1","user":{"login":"efajardo","id":1798509,"node_id":"MDQ6VXNlcjE3OTg1MDk=","avatar_url":"https://avatars2.githubusercontent.com/u/1798509?v=4","gravatar_id":"","url":"https://api.github.com/users/efajardo","html_url":"https://github.com/efajardo","followers_url":"https://api.github.com/users/efajardo/followers","following_url":"https://api.github.com/users/efajardo/following{/other_user}","gists_url":"https://api.github.com/users/efajardo/gists{/gist_id}","starred_url":"https://api.github.com/users/efajardo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efajardo/subscriptions","organizations_url":"https://api.github.com/users/efajardo/orgs","repos_url":"https://api.github.com/users/efajardo/repos","events_url":"https://api.github.com/users/efajardo/events{/privacy}","received_events_url":"https://api.github.com/users/efajardo/received_events","type":"User","site_admin":false},"repo":{"id":119866343,"node_id":"MDEwOlJlcG9zaXRvcnkxMTk4NjYzNDM=","name":"docs","full_name":"efajardo/docs","private":false,"owner":{"login":"efajardo","id":1798509,"node_id":"MDQ6VXNlcjE3OTg1MDk=","avatar_url":"https://avatars2.githubusercontent.com/u/1798509?v=4","gravatar_id":"","url":"https://api.github.com/users/efajardo","html_url":"https://github.com/efajardo","followers_url":"https://api.github.com/users/efajardo/followers","following_url":"https://api.github.com/users/efajardo/following{/other_user}","gists_url":"https://api.github.com/users/efajardo/gists{/gist_id}","starred_url":"https://api.github.com/users/efajardo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/efajardo/subscriptions","organizations_url":"https://api.github.com/users/efajardo/orgs","repos_url":"https://api.github.com/users/efajardo/repos","events_url":"https://api.github.com/users/efajardo/events{/privacy}","received_events_url":"https://api.github.com/users/efajardo/received_events","type":"User","site_admin":false},"html_url":"https://github.com/efajardo/docs","description":"Home of the OSG Site documentation","fork":true,"url":"https://api.github.com/repos/efajardo/docs","forks_url":"https://api.github.com/repos/efajardo/docs/forks","keys_url":"https://api.github.com/repos/efajardo/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/efajardo/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/efajardo/docs/teams","hooks_url":"https://api.github.com/repos/efajardo/docs/hooks","issue_events_url":"https://api.github.com/repos/efajardo/docs/issues/events{/number}","events_url":"https://api.github.com/repos/efajardo/docs/events","assignees_url":"https://api.github.com/repos/efajardo/docs/assignees{/user}","branches_url":"https://api.github.com/repos/efajardo/docs/branches{/branch}","tags_url":"https://api.github.com/repos/efajardo/docs/tags","blobs_url":"https://api.github.com/repos/efajardo/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/efajardo/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/efajardo/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/efajardo/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/efajardo/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/efajardo/docs/languages","stargazers_url":"https://api.github.com/repos/efajardo/docs/stargazers","contributors_url":"https://api.github.com/repos/efajardo/docs/contributors","subscribers_url":"https://api.github.com/repos/efajardo/docs/subscribers","subscription_url":"https://api.github.com/repos/efajardo/docs/subscription","commits_url":"https://api.github.com/repos/efajardo/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/efajardo/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/efajardo/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/efajardo/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/efajardo/docs/contents/{+path}","compare_url":"https://api.github.com/repos/efajardo/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/efajardo/docs/merges","archive_url":"https://api.github.com/repos/efajardo/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/efajardo/docs/downloads","issues_url":"https://api.github.com/repos/efajardo/docs/issues{/number}","pulls_url":"https://api.github.com/repos/efajardo/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/efajardo/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/efajardo/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/efajardo/docs/labels{/name}","releases_url":"https://api.github.com/repos/efajardo/docs/releases{/id}","deployments_url":"https://api.github.com/repos/efajardo/docs/deployments","created_at":"2018-02-01T17:01:46Z","updated_at":"2019-10-09T22:02:43Z","pushed_at":"2019-11-22T17:43:34Z","git_url":"git://github.com/efajardo/docs.git","ssh_url":"git@github.com:efajardo/docs.git","clone_url":"https://github.com/efajardo/docs.git","svn_url":"https://github.com/efajardo/docs","homepage":"https://opensciencegrid.github.io/docs","size":48856,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"cc-by-4.0","name":"Creative Commons Attribution 4.0 International","spdx_id":"CC-BY-4.0","url":"https://api.github.com/licenses/cc-by-4.0","node_id":"MDc6TGljZW5zZTI1"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"opensciencegrid:master","ref":"master","sha":"2dfc248646c03a6db2f28dec291e786d47945c7e","user":{"login":"opensciencegrid","id":3155995,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMxNTU5OTU=","avatar_url":"https://avatars0.githubusercontent.com/u/3155995?v=4","gravatar_id":"","url":"https://api.github.com/users/opensciencegrid","html_url":"https://github.com/opensciencegrid","followers_url":"https://api.github.com/users/opensciencegrid/followers","following_url":"https://api.github.com/users/opensciencegrid/following{/other_user}","gists_url":"https://api.github.com/users/opensciencegrid/gists{/gist_id}","starred_url":"https://api.github.com/users/opensciencegrid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opensciencegrid/subscriptions","organizations_url":"https://api.github.com/users/opensciencegrid/orgs","repos_url":"https://api.github.com/users/opensciencegrid/repos","events_url":"https://api.github.com/users/opensciencegrid/events{/privacy}","received_events_url":"https://api.github.com/users/opensciencegrid/received_events","type":"Organization","site_admin":false},"repo":{"id":57261971,"node_id":"MDEwOlJlcG9zaXRvcnk1NzI2MTk3MQ==","name":"docs","full_name":"opensciencegrid/docs","private":false,"owner":{"login":"opensciencegrid","id":3155995,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMxNTU5OTU=","avatar_url":"https://avatars0.githubusercontent.com/u/3155995?v=4","gravatar_id":"","url":"https://api.github.com/users/opensciencegrid","html_url":"https://github.com/opensciencegrid","followers_url":"https://api.github.com/users/opensciencegrid/followers","following_url":"https://api.github.com/users/opensciencegrid/following{/other_user}","gists_url":"https://api.github.com/users/opensciencegrid/gists{/gist_id}","starred_url":"https://api.github.com/users/opensciencegrid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opensciencegrid/subscriptions","organizations_url":"https://api.github.com/users/opensciencegrid/orgs","repos_url":"https://api.github.com/users/opensciencegrid/repos","events_url":"https://api.github.com/users/opensciencegrid/events{/privacy}","received_events_url":"https://api.github.com/users/opensciencegrid/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/opensciencegrid/docs","description":"Home of the OSG Site documentation","fork":false,"url":"https://api.github.com/repos/opensciencegrid/docs","forks_url":"https://api.github.com/repos/opensciencegrid/docs/forks","keys_url":"https://api.github.com/repos/opensciencegrid/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opensciencegrid/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opensciencegrid/docs/teams","hooks_url":"https://api.github.com/repos/opensciencegrid/docs/hooks","issue_events_url":"https://api.github.com/repos/opensciencegrid/docs/issues/events{/number}","events_url":"https://api.github.com/repos/opensciencegrid/docs/events","assignees_url":"https://api.github.com/repos/opensciencegrid/docs/assignees{/user}","branches_url":"https://api.github.com/repos/opensciencegrid/docs/branches{/branch}","tags_url":"https://api.github.com/repos/opensciencegrid/docs/tags","blobs_url":"https://api.github.com/repos/opensciencegrid/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opensciencegrid/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opensciencegrid/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/opensciencegrid/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opensciencegrid/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/opensciencegrid/docs/languages","stargazers_url":"https://api.github.com/repos/opensciencegrid/docs/stargazers","contributors_url":"https://api.github.com/repos/opensciencegrid/docs/contributors","subscribers_url":"https://api.github.com/repos/opensciencegrid/docs/subscribers","subscription_url":"https://api.github.com/repos/opensciencegrid/docs/subscription","commits_url":"https://api.github.com/repos/opensciencegrid/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/opensciencegrid/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/opensciencegrid/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/opensciencegrid/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/opensciencegrid/docs/contents/{+path}","compare_url":"https://api.github.com/repos/opensciencegrid/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opensciencegrid/docs/merges","archive_url":"https://api.github.com/repos/opensciencegrid/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opensciencegrid/docs/downloads","issues_url":"https://api.github.com/repos/opensciencegrid/docs/issues{/number}","pulls_url":"https://api.github.com/repos/opensciencegrid/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/opensciencegrid/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/opensciencegrid/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opensciencegrid/docs/labels{/name}","releases_url":"https://api.github.com/repos/opensciencegrid/docs/releases{/id}","deployments_url":"https://api.github.com/repos/opensciencegrid/docs/deployments","created_at":"2016-04-28T01:53:52Z","updated_at":"2019-11-26T20:42:22Z","pushed_at":"2019-11-26T20:47:06Z","git_url":"git://github.com/opensciencegrid/docs.git","ssh_url":"git@github.com:opensciencegrid/docs.git","clone_url":"https://github.com/opensciencegrid/docs.git","svn_url":"https://github.com/opensciencegrid/docs","homepage":"https://opensciencegrid.org/docs","size":137767,"stargazers_count":15,"watchers_count":15,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":30,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":6,"license":{"key":"cc-by-4.0","name":"Creative Commons Attribution 4.0 International","spdx_id":"CC-BY-4.0","url":"https://api.github.com/licenses/cc-by-4.0","node_id":"MDc6TGljZW5zZTI1"},"forks":30,"open_issues":6,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/opensciencegrid/docs/pulls/641"},"html":{"href":"https://github.com/opensciencegrid/docs/pull/641"},"issue":{"href":"https://api.github.com/repos/opensciencegrid/docs/issues/641"},"comments":{"href":"https://api.github.com/repos/opensciencegrid/docs/issues/641/comments"},"review_comments":{"href":"https://api.github.com/repos/opensciencegrid/docs/pulls/641/comments"},"review_comment":{"href":"https://api.github.com/repos/opensciencegrid/docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/opensciencegrid/docs/pulls/641/commits"},"statuses":{"href":"https://api.github.com/repos/opensciencegrid/docs/statuses/bde89056d0a57445af8cc21bd206dd7aba202ce1"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"brianhlin"}}