{"action":"created","comment":{"url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/comments/174537942","pull_request_review_id":103913693,"id":174537942,"diff_hunk":"@@ -12,37 +12,131 @@\n import gzip\n from bd2k.util.exceptions import require\n from toil.lib.bioio import addLoggingOptions, setLoggingFromOptions\n+import time\n+import virtualenv\n+import re\n+from itertools import chain\n+\n+from shutil import copyfile\n+#import ConfigParser\n+\n+import socket\n \n logging.basicConfig(level=logging.INFO)\n log = logging.getLogger()\n \n-\n def call_pipeline(mount, args):\n-    work_dir = os.path.join(mount, 'Toil-RNAseq-' + str(uuid4()))\n+\n+    #Activate the virtual environment where the toil rnaseq pipeline is installed\n+    activate_this = '/opt/rnaseq-pipeline/toil_venv/bin/activate_this.py'\n+    execfile(activate_this, dict(__file__=activate_this))\n+\n+    if args.auto_scale:\n+        #Run the meoso-master process\n+        #Run it in the background by using Popen instead of check_call \n+        #https://stackoverflow.com/questions/32577071/execute-subprocess-in-background\n+        command = ('mesos-master --log_dir=/var/lib/mesos --registry=in_memory --cluster=' + args.cluster_name)\n+        command = command.split()\n+        try:\n+            log.info('Executing mesos command: ' + str(command))\n+            p = subprocess.Popen(command)\n+        except OSError as e:\n+            print(e.message, file=sys.stderr)\n+            exit(e.returncode)\n+        else:\n+            log.info('mesos-master process running in background')\n+\n+\n+    unique_toil_dir = 'Toil-RNAseq-' + str(uuid4())\n+    work_dir = os.path.join(mount, unique_toil_dir)\n+\n     os.makedirs(work_dir)\n     log.info('Temporary directory created: {}'.format(work_dir))\n     config_path = os.path.join(work_dir, 'toil-rnaseq.config')\n-    job_store = os.path.join(args.resume, 'jobStore') if args.resume else os.path.join(work_dir, 'jobStore')\n+\n+    output_dir = mount\n+    if args.auto_scale:\n+        #set job store to be clould URL, e.g. S3 bucket\n+        job_store = os.path.join(args.resume, 'jobStore') if args.resume else args.job_store\n+        output_dir = args.output_location\n+    else:\n+        job_store = os.path.join(args.resume, 'jobStore') if args.resume else os.path.join(work_dir, 'jobStore')\n+   \n+\n     with open(config_path, 'w') as f:\n-        f.write(generate_config(args.star, args.rsem, args.kallisto, mount,\n+        f.write(generate_config(args.star, args.rsem, args.kallisto, args.hera, output_dir,\n                                 args.disable_cutadapt, args.save_bam, args.save_wiggle,\n-                                args.bamqc))\n+                                args.bamqc, args.max_sample_size))\n     loglevel = log.getEffectiveLevel()\n \n-    command = ['toil-rnaseq', 'run',\n+    if args.auto_scale:\n+        #Pick the working directory carefully; it must exist on the workers\n+        #Do not let Toil pick the directory because this will not work when\n+        #launching the workflow with Dockstore because dockstore uses cwltool\n+        #which makes the file system read only which will prevent Toil from \n+        #creating the directory. We cannot use a directory like\n+        #/home/ubunut/... becuase that does not exist on coreos which is what\n+        #the worker nodes use for an OS; '/tmp' will usually already be \n+        #created on most Linux distributions","path":"docker/wrapper.py","position":75,"original_position":75,"commit_id":"9706b7c0bbf190ef7dbd46e99ad3c2d637ded045","original_commit_id":"9706b7c0bbf190ef7dbd46e99ad3c2d637ded045","user":{"login":"wshands","id":3650921,"avatar_url":"https://avatars2.githubusercontent.com/u/3650921?v=4","gravatar_id":"","url":"https://api.github.com/users/wshands","html_url":"https://github.com/wshands","followers_url":"https://api.github.com/users/wshands/followers","following_url":"https://api.github.com/users/wshands/following{/other_user}","gists_url":"https://api.github.com/users/wshands/gists{/gist_id}","starred_url":"https://api.github.com/users/wshands/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wshands/subscriptions","organizations_url":"https://api.github.com/users/wshands/orgs","repos_url":"https://api.github.com/users/wshands/repos","events_url":"https://api.github.com/users/wshands/events{/privacy}","received_events_url":"https://api.github.com/users/wshands/received_events","type":"User","site_admin":false},"body":"Not sure how to check if /tmp exists because this would be on a worker node that will be created by the Toil provisioner.","created_at":"2018-03-14T17:10:53Z","updated_at":"2018-03-14T17:10:53Z","html_url":"https://github.com/BD2KGenomics/toil-rnaseq/pull/139#discussion_r174537942","pull_request_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/comments/174537942"},"html":{"href":"https://github.com/BD2KGenomics/toil-rnaseq/pull/139#discussion_r174537942"},"pull_request":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139"}},"in_reply_to_id":173977753},"pull_request":{"url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139","id":174211217,"html_url":"https://github.com/BD2KGenomics/toil-rnaseq/pull/139","diff_url":"https://github.com/BD2KGenomics/toil-rnaseq/pull/139.diff","patch_url":"https://github.com/BD2KGenomics/toil-rnaseq/pull/139.patch","issue_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/139","number":139,"state":"open","locked":false,"title":"Auto scaling in the pipeline without having to create a leader and rsync files","user":{"login":"wshands","id":3650921,"avatar_url":"https://avatars2.githubusercontent.com/u/3650921?v=4","gravatar_id":"","url":"https://api.github.com/users/wshands","html_url":"https://github.com/wshands","followers_url":"https://api.github.com/users/wshands/followers","following_url":"https://api.github.com/users/wshands/following{/other_user}","gists_url":"https://api.github.com/users/wshands/gists{/gist_id}","starred_url":"https://api.github.com/users/wshands/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wshands/subscriptions","organizations_url":"https://api.github.com/users/wshands/orgs","repos_url":"https://api.github.com/users/wshands/repos","events_url":"https://api.github.com/users/wshands/events{/privacy}","received_events_url":"https://api.github.com/users/wshands/received_events","type":"User","site_admin":false},"body":"Enables autoscaling on the current VM, so that the leader does not have to be created.\r\nUser must input several extra parameters to enable autoscaling.\r\nThe users AWS VM 'Name tag' and security group name must match.\r\nThe docker option '--net=host ' must be used.\r\nAWS credentials must be input.\r\nThe cluster name must be input; this must match the VM 'Name' tag which must match the security group name.\r\n\r\nExample command to run with auto scaling:\r\ndocker run --net=host -v /var/run/docker.sock:/var/run/docker.sock quay.io/ucsc_cgl/rnaseq-cgl-pipeline:3.4.0a1-1.12.3 --output-basenames 'autoscale_test' 'autoscale_test2'  --sample-paired 's3://toil-rnaseq-cloud-staging-area/TEST_R1.fastq.gz,s3://toil-rnaseq-cloud-staging-area/TEST_R2.fastq.gz' 's3://toil-rnaseq-cloud-staging-area/TEST_2_R1.fastq.gz,s3://toil-rnaseq-cloud-staging-area/TEST_2_R2.fastq.gz'  --kallisto s3://toil-rnaseq-cloud-staging-area/kallisto_hg38.idx --logDebug --star \"\" --rsem \"\" --hera \"\" --work_mount /home/ubuntu/toil-rnaseq-work/myworkdir --no-clean --auto-scale --output-location s3://toil-rnaseq-cloud-staging-area --credentials-id <id> --credentials-secret-key <key> --cluster-name walt-dev-security-group","created_at":"2018-03-11T08:59:58Z","updated_at":"2018-03-14T17:10:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6ebcdbe20b271d48a13c4249da228987b35255eb","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":443616958,"url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/labels/in%20progress","name":"in progress","color":"ededed","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139/commits","review_comments_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139/comments","review_comment_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/139/comments","statuses_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/statuses/9706b7c0bbf190ef7dbd46e99ad3c2d637ded045","head":{"label":"BD2KGenomics:auto-scale-docker","ref":"auto-scale-docker","sha":"9706b7c0bbf190ef7dbd46e99ad3c2d637ded045","user":{"login":"BD2KGenomics","id":8701293,"avatar_url":"https://avatars0.githubusercontent.com/u/8701293?v=4","gravatar_id":"","url":"https://api.github.com/users/BD2KGenomics","html_url":"https://github.com/BD2KGenomics","followers_url":"https://api.github.com/users/BD2KGenomics/followers","following_url":"https://api.github.com/users/BD2KGenomics/following{/other_user}","gists_url":"https://api.github.com/users/BD2KGenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/BD2KGenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BD2KGenomics/subscriptions","organizations_url":"https://api.github.com/users/BD2KGenomics/orgs","repos_url":"https://api.github.com/users/BD2KGenomics/repos","events_url":"https://api.github.com/users/BD2KGenomics/events{/privacy}","received_events_url":"https://api.github.com/users/BD2KGenomics/received_events","type":"Organization","site_admin":false},"repo":{"id":68046216,"name":"toil-rnaseq","full_name":"BD2KGenomics/toil-rnaseq","owner":{"login":"BD2KGenomics","id":8701293,"avatar_url":"https://avatars0.githubusercontent.com/u/8701293?v=4","gravatar_id":"","url":"https://api.github.com/users/BD2KGenomics","html_url":"https://github.com/BD2KGenomics","followers_url":"https://api.github.com/users/BD2KGenomics/followers","following_url":"https://api.github.com/users/BD2KGenomics/following{/other_user}","gists_url":"https://api.github.com/users/BD2KGenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/BD2KGenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BD2KGenomics/subscriptions","organizations_url":"https://api.github.com/users/BD2KGenomics/orgs","repos_url":"https://api.github.com/users/BD2KGenomics/repos","events_url":"https://api.github.com/users/BD2KGenomics/events{/privacy}","received_events_url":"https://api.github.com/users/BD2KGenomics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BD2KGenomics/toil-rnaseq","description":"UC Santa Cruz Computational Genomics Lab's Toil-based RNA-seq pipeline","fork":false,"url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq","forks_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/forks","keys_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/teams","hooks_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/hooks","issue_events_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/events{/number}","events_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/events","assignees_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/assignees{/user}","branches_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/branches{/branch}","tags_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/tags","blobs_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/refs{/sha}","trees_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/statuses/{sha}","languages_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/languages","stargazers_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/stargazers","contributors_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/contributors","subscribers_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/subscribers","subscription_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/subscription","commits_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/commits{/sha}","git_commits_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/commits{/sha}","comments_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/comments{/number}","issue_comment_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/comments{/number}","contents_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/contents/{+path}","compare_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/merges","archive_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/downloads","issues_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues{/number}","pulls_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls{/number}","milestones_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/milestones{/number}","notifications_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/labels{/name}","releases_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/releases{/id}","deployments_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/deployments","created_at":"2016-09-12T20:45:24Z","updated_at":"2018-03-12T23:12:04Z","pushed_at":"2018-03-12T22:58:12Z","git_url":"git://github.com/BD2KGenomics/toil-rnaseq.git","ssh_url":"git@github.com:BD2KGenomics/toil-rnaseq.git","clone_url":"https://github.com/BD2KGenomics/toil-rnaseq.git","svn_url":"https://github.com/BD2KGenomics/toil-rnaseq","homepage":"","size":1046,"stargazers_count":16,"watchers_count":16,"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":8,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":2,"open_issues":8,"watchers":16,"default_branch":"master"}},"base":{"label":"BD2KGenomics:master","ref":"master","sha":"b97dbed9a416e51b8e13226ab2f4acd0726ea7f8","user":{"login":"BD2KGenomics","id":8701293,"avatar_url":"https://avatars0.githubusercontent.com/u/8701293?v=4","gravatar_id":"","url":"https://api.github.com/users/BD2KGenomics","html_url":"https://github.com/BD2KGenomics","followers_url":"https://api.github.com/users/BD2KGenomics/followers","following_url":"https://api.github.com/users/BD2KGenomics/following{/other_user}","gists_url":"https://api.github.com/users/BD2KGenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/BD2KGenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BD2KGenomics/subscriptions","organizations_url":"https://api.github.com/users/BD2KGenomics/orgs","repos_url":"https://api.github.com/users/BD2KGenomics/repos","events_url":"https://api.github.com/users/BD2KGenomics/events{/privacy}","received_events_url":"https://api.github.com/users/BD2KGenomics/received_events","type":"Organization","site_admin":false},"repo":{"id":68046216,"name":"toil-rnaseq","full_name":"BD2KGenomics/toil-rnaseq","owner":{"login":"BD2KGenomics","id":8701293,"avatar_url":"https://avatars0.githubusercontent.com/u/8701293?v=4","gravatar_id":"","url":"https://api.github.com/users/BD2KGenomics","html_url":"https://github.com/BD2KGenomics","followers_url":"https://api.github.com/users/BD2KGenomics/followers","following_url":"https://api.github.com/users/BD2KGenomics/following{/other_user}","gists_url":"https://api.github.com/users/BD2KGenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/BD2KGenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BD2KGenomics/subscriptions","organizations_url":"https://api.github.com/users/BD2KGenomics/orgs","repos_url":"https://api.github.com/users/BD2KGenomics/repos","events_url":"https://api.github.com/users/BD2KGenomics/events{/privacy}","received_events_url":"https://api.github.com/users/BD2KGenomics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BD2KGenomics/toil-rnaseq","description":"UC Santa Cruz Computational Genomics Lab's Toil-based RNA-seq pipeline","fork":false,"url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq","forks_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/forks","keys_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/teams","hooks_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/hooks","issue_events_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/events{/number}","events_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/events","assignees_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/assignees{/user}","branches_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/branches{/branch}","tags_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/tags","blobs_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/refs{/sha}","trees_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/statuses/{sha}","languages_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/languages","stargazers_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/stargazers","contributors_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/contributors","subscribers_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/subscribers","subscription_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/subscription","commits_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/commits{/sha}","git_commits_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/git/commits{/sha}","comments_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/comments{/number}","issue_comment_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/comments{/number}","contents_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/contents/{+path}","compare_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/merges","archive_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/downloads","issues_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues{/number}","pulls_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls{/number}","milestones_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/milestones{/number}","notifications_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/labels{/name}","releases_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/releases{/id}","deployments_url":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/deployments","created_at":"2016-09-12T20:45:24Z","updated_at":"2018-03-12T23:12:04Z","pushed_at":"2018-03-12T22:58:12Z","git_url":"git://github.com/BD2KGenomics/toil-rnaseq.git","ssh_url":"git@github.com:BD2KGenomics/toil-rnaseq.git","clone_url":"https://github.com/BD2KGenomics/toil-rnaseq.git","svn_url":"https://github.com/BD2KGenomics/toil-rnaseq","homepage":"","size":1046,"stargazers_count":16,"watchers_count":16,"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":8,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":2,"open_issues":8,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139"},"html":{"href":"https://github.com/BD2KGenomics/toil-rnaseq/pull/139"},"issue":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/139"},"comments":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/issues/139/comments"},"review_comments":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139/comments"},"review_comment":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/pulls/139/commits"},"statuses":{"href":"https://api.github.com/repos/BD2KGenomics/toil-rnaseq/statuses/9706b7c0bbf190ef7dbd46e99ad3c2d637ded045"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"wshands"}}