{"action":"opened","number":32,"pull_request":{"url":"https://api.github.com/repos/twitter-fabric/galley/pulls/32","id":56672326,"html_url":"https://github.com/twitter-fabric/galley/pull/32","diff_url":"https://github.com/twitter-fabric/galley/pull/32.diff","patch_url":"https://github.com/twitter-fabric/galley/pull/32.patch","issue_url":"https://api.github.com/repos/twitter-fabric/galley/issues/32","number":32,"state":"open","locked":false,"title":"support udp port mappings","user":{"login":"adamvduke","id":94930,"avatar_url":"https://avatars.githubusercontent.com/u/94930?v=3","gravatar_id":"","url":"https://api.github.com/users/adamvduke","html_url":"https://github.com/adamvduke","followers_url":"https://api.github.com/users/adamvduke/followers","following_url":"https://api.github.com/users/adamvduke/following{/other_user}","gists_url":"https://api.github.com/users/adamvduke/gists{/gist_id}","starred_url":"https://api.github.com/users/adamvduke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamvduke/subscriptions","organizations_url":"https://api.github.com/users/adamvduke/orgs","repos_url":"https://api.github.com/users/adamvduke/repos","events_url":"https://api.github.com/users/adamvduke/events{/privacy}","received_events_url":"https://api.github.com/users/adamvduke/received_events","type":"User","site_admin":false},"body":"in order to communicate with services like riemann or statsd, port mappings need to support udp as well as tcp\r\n\r\nI seem to have a failing acceptance test, but the same test fails on master for me.\r\n\r\n```\r\n~/src/galley (adamvduke/add-udp-port-mapping-support)$ gulp compile && gulp test && gulp acceptance\r\n[16:46:38] Using gulpfile /crashlytics/galley/gulpfile.js\r\n[16:46:38] Starting 'compile'...\r\n[16:46:39] Finished 'compile' after 454 ms\r\n[16:46:40] Using gulpfile /crashlytics/galley/gulpfile.js\r\n[16:46:40] Starting 'test'...\r\n\r\n\r\n  DockerArgs\r\n    formatEnvVariables\r\n      ✓ should be a list for Docker\r\n      ✓ excludes nulls but includes empty strings\r\n    formatLinks\r\n      ✓ should format links, looking up container names\r\n    formatPortBindings\r\n      ✓ should return portBindings and exposedPorts\r\n    formatVolumes\r\n      ✓ should return volumes\r\n    formatVolumesFrom\r\n      ✓ looks up some services but not others\r\n\r\n  PromiseUtils\r\n    promiseEach\r\n      ✓ resolves after each promise resolves\r\n      ✓ rejects if a value rejects\r\n\r\n  parseArgs\r\n    addons option support\r\n      with a single value\r\n        ✓ should generate addon options with an array with one value\r\n      with a multiple values through multiple params\r\n        ✓ should generate addon options with an array with multiple values\r\n      with a multiple values through a single delimited param\r\n        ✓ should generate addon options with an array with multiple values\r\n      with a trailing comma\r\n        ✓ should generate addon options that do not include an empty string\r\n      with a mix of delimited and non-delimited params\r\n        ✓ should generate addon options with an array with multiple values\r\n      with the long param name\r\n        ✓ should generate the addon options as usual\r\n      with the parameter not specified\r\n        ✓ should generate an empty array of addons\r\n\r\n  normalizeMultiArgs\r\n    with a non-delimited string\r\n      ✓ should be an array with one value\r\n    with a delimited string with two values\r\n      ✓ should be an array with two values\r\n    with a delimited string with a bad leading comma\r\n      ✓ should be an array with one value\r\n    with a delimited string with a bad trailing comma\r\n      ✓ should be an array with one value\r\n    with an array with one value\r\n      ✓ should be an array with one value\r\n    with an array with one value\r\n      ✓ should be an array with one value\r\n    with an array with two values\r\n      ✓ should be an array with two values\r\n    with an array with two values, one of which is delimited\r\n      ✓ should be an array with three values\r\n\r\n  normalizeVolumeArgs\r\n    ✓ handles a single value\r\n    ✓ handles multiple values\r\n    ✓ resolves relative paths\r\n\r\n  generatePrereqServices\r\n    generates simple dependency chain\r\n      ✓ should generate correctly ordered list\r\n    does not have duplicate service entries, keeps the earliest\r\n      ✓ should generate correctly ordered list\r\n    fails on circular dependency\r\n      ✓ should throw\r\n\r\n  collapseEnvironment\r\n    not parameterized\r\n      ✓ does not modify a string\r\n      ✓ does not modify an array\r\n    parameterized\r\n      ✓ returns defaultValue when env is missing\r\n      ✓ finds named environment\r\n      ✓ finds namespaced environment\r\n      ✓ falls back when namespace is missing\r\n\r\n  collapseServiceConfigEnv\r\n    array parameterization\r\n      ✓ collapses down to just the environment\r\n    env parameterization\r\n      ✓ paramerizes the env variables\r\n\r\n  combineAddons\r\n    addons\r\n      array parameter merging\r\n        without env\r\n          ✓ merges addons array parameters with addon\r\n        with addon env\r\n          ✓ merges addons array parameters with addon env\r\n        with addon namespaced env\r\n          ✓ merges addons array parameters with namespaced addon env\r\n      env parameter merging\r\n        with no base env\r\n          ✓ parametrizes the env variables\r\n        with a base env\r\n          ✓ parametrizes the env variables\r\n        with multiple addons\r\n          ✓ paramerizes the env variables\r\n\r\n  addDefaultNames\r\n    ✓ preserves existing image name\r\n    ✓ adds missing image name\r\n    ✓ tolerates no registry\r\n\r\n  envsByService\r\n    envs\r\n      ✓ processes services\r\n\r\n  addonsByService\r\n    envs\r\n      ✓ processes addons\r\n\r\n  processConfig\r\n    naming\r\n      ✓ processes services\r\n      ✓ returns global config\r\n\r\n\r\n  50 passing (42ms)\r\n\r\n[16:46:40] Finished 'test' after 221 ms\r\n[16:46:40] Using gulpfile /crashlytics/galley/gulpfile.js\r\n[16:46:40] Starting 'acceptance'...\r\n[16:46:40] Starting 'acceptance:build'...\r\nSending build context to Docker daemon 2.048 kB\r\nStep 0 : FROM ubuntu:14.04\r\n ---> 8693db7e8a00\r\nStep 1 : RUN apt-get update && apt-get install -y   curl   nodejs   npm\r\n ---> Using cache\r\n ---> 4e8c24344e5e\r\nStep 2 : RUN ln -s /usr/bin/nodejs /usr/bin/node\r\n ---> Using cache\r\n ---> ab7811af2fcb\r\nStep 3 : RUN npm install -g http-server@0.7.4\r\n ---> Using cache\r\n ---> 8a8f996c2b70\r\nSuccessfully built 8a8f996c2b70\r\nSending build context to Docker daemon 6.144 kB\r\nStep 0 : FROM galley-integration-base\r\n ---> 8a8f996c2b70\r\nStep 1 : COPY src /src\r\n ---> Using cache\r\n ---> 4991f8db616c\r\nStep 2 : WORKDIR /src\r\n ---> Using cache\r\n ---> 67f1b1e3acf1\r\nStep 3 : CMD /usr/bin/node server.js\r\n ---> Using cache\r\n ---> 7d7867436f31\r\nStep 4 : EXPOSE 9615\r\n ---> Using cache\r\n ---> fc6b46311c23\r\nSuccessfully built fc6b46311c23\r\nSending build context to Docker daemon 2.048 kB\r\nStep 0 : FROM galley-integration-base\r\n ---> 8a8f996c2b70\r\nStep 1 : CMD curl http://backend:9615/\r\n ---> Using cache\r\n ---> 1621c7713485\r\nSuccessfully built 1621c7713485\r\nSending build context to Docker daemon 3.584 kB\r\nStep 0 : FROM galley-integration-base\r\n ---> 8a8f996c2b70\r\nStep 1 : COPY config /config\r\n ---> Using cache\r\n ---> 3b8215eac958\r\nStep 2 : VOLUME /config\r\n ---> Using cache\r\n ---> c355bc2b2a0f\r\nSuccessfully built c355bc2b2a0f\r\nSending build context to Docker daemon 3.584 kB\r\nStep 0 : FROM galley-integration-base\r\n ---> 8a8f996c2b70\r\nStep 1 : COPY data /data\r\n ---> Using cache\r\n ---> 8282ab48b41d\r\nStep 2 : CMD /usr/local/bin/http-server /data\r\n ---> Using cache\r\n ---> ab3c0dcf329d\r\nStep 3 : EXPOSE 8080\r\n ---> Using cache\r\n ---> 3b87d7f3e27a\r\nSuccessfully built 3b87d7f3e27a\r\nSending build context to Docker daemon 3.584 kB\r\nStep 0 : FROM galley-integration-base\r\n ---> 8a8f996c2b70\r\nStep 1 : RUN apt-get update && apt-get install -y   rsync\r\n ---> Using cache\r\n ---> c6d0a847449a\r\nStep 2 : COPY etc /etc\r\n ---> Using cache\r\n ---> dfc89a34c0b5\r\nStep 3 : EXPOSE 873\r\n ---> Using cache\r\n ---> 9c9a0bd7d995\r\nStep 4 : CMD /usr/bin/rsync --no-detach --daemon\r\n ---> Using cache\r\n ---> 4c1024498a76\r\nSuccessfully built 4c1024498a76\r\n[16:46:42] Finished 'acceptance:build' after 1.96 s\r\n[16:46:42] Starting 'acceptance:test'...\r\n\r\n\r\n  galley\r\n    cleanup\r\n      ✓ removes everything except stateful (1297ms)\r\n    list\r\n      ✓ prints addons and services with environments\r\n    basics\r\n      ✓ starts up prereq services (664ms)\r\n      ✓ preserves running services (1768ms)\r\n    commands\r\n      1) allows source, entrypoint, and new command\r\n      ✓ sets env variables, pipes stdin through correctly (631ms)\r\n    links\r\n      ✓ creates removed linked-to services (1528ms)\r\n      ✓ recreates services with removed linked-to services (1075ms)\r\n      ✓ uses existing backend container (2036ms)\r\n    volumes\r\n      ✓ recreates after volume is deleted (875ms)\r\n\r\n\r\n  9 passing (17s)\r\n  1 failing\r\n\r\n  1) galley commands allows source, entrypoint, and new command:\r\n     Error: /src/code.txt failed with exit code 1\r\n    at build/acceptance/test_commands.js:63:23\r\n    at build/lib/commands/run.js:922:12\r\n    at lib$rsvp$$internal$$tryCatch (node_modules/rsvp/dist/rsvp.js:493:16)\r\n    at lib$rsvp$$internal$$invokeCallback (node_modules/rsvp/dist/rsvp.js:505:17)\r\n    at lib$rsvp$$internal$$publish (node_modules/rsvp/dist/rsvp.js:476:11)\r\n    at lib$rsvp$asap$$flush (node_modules/rsvp/dist/rsvp.js:1198:9)\r\n  \r\n\r\n\r\n\r\n[16:46:59] 'acceptance:test' errored after 17 s\r\n[16:46:59] Error in plugin 'gulp-mocha'\r\nMessage:\r\n    1 test failed.\r\n[16:46:59] 'acceptance' errored after 19 s\r\n[16:46:59] Error in plugin 'run-sequence'\r\nMessage:\r\n    An error occured in task 'acceptance:test'.\r\n```","created_at":"2016-01-20T21:48:50Z","updated_at":"2016-01-20T21:48:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/twitter-fabric/galley/pulls/32/commits","review_comments_url":"https://api.github.com/repos/twitter-fabric/galley/pulls/32/comments","review_comment_url":"https://api.github.com/repos/twitter-fabric/galley/pulls/comments{/number}","comments_url":"https://api.github.com/repos/twitter-fabric/galley/issues/32/comments","statuses_url":"https://api.github.com/repos/twitter-fabric/galley/statuses/655736bb835c6d7c70623e13c9e9c2811261bd13","head":{"label":"adamvduke:adamvduke/add-udp-port-mapping-support","ref":"adamvduke/add-udp-port-mapping-support","sha":"655736bb835c6d7c70623e13c9e9c2811261bd13","user":{"login":"adamvduke","id":94930,"avatar_url":"https://avatars.githubusercontent.com/u/94930?v=3","gravatar_id":"","url":"https://api.github.com/users/adamvduke","html_url":"https://github.com/adamvduke","followers_url":"https://api.github.com/users/adamvduke/followers","following_url":"https://api.github.com/users/adamvduke/following{/other_user}","gists_url":"https://api.github.com/users/adamvduke/gists{/gist_id}","starred_url":"https://api.github.com/users/adamvduke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamvduke/subscriptions","organizations_url":"https://api.github.com/users/adamvduke/orgs","repos_url":"https://api.github.com/users/adamvduke/repos","events_url":"https://api.github.com/users/adamvduke/events{/privacy}","received_events_url":"https://api.github.com/users/adamvduke/received_events","type":"User","site_admin":false},"repo":{"id":50061983,"name":"galley","full_name":"adamvduke/galley","owner":{"login":"adamvduke","id":94930,"avatar_url":"https://avatars.githubusercontent.com/u/94930?v=3","gravatar_id":"","url":"https://api.github.com/users/adamvduke","html_url":"https://github.com/adamvduke","followers_url":"https://api.github.com/users/adamvduke/followers","following_url":"https://api.github.com/users/adamvduke/following{/other_user}","gists_url":"https://api.github.com/users/adamvduke/gists{/gist_id}","starred_url":"https://api.github.com/users/adamvduke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamvduke/subscriptions","organizations_url":"https://api.github.com/users/adamvduke/orgs","repos_url":"https://api.github.com/users/adamvduke/repos","events_url":"https://api.github.com/users/adamvduke/events{/privacy}","received_events_url":"https://api.github.com/users/adamvduke/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/adamvduke/galley","description":"Orchestrator for local Docker containers","fork":true,"url":"https://api.github.com/repos/adamvduke/galley","forks_url":"https://api.github.com/repos/adamvduke/galley/forks","keys_url":"https://api.github.com/repos/adamvduke/galley/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adamvduke/galley/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adamvduke/galley/teams","hooks_url":"https://api.github.com/repos/adamvduke/galley/hooks","issue_events_url":"https://api.github.com/repos/adamvduke/galley/issues/events{/number}","events_url":"https://api.github.com/repos/adamvduke/galley/events","assignees_url":"https://api.github.com/repos/adamvduke/galley/assignees{/user}","branches_url":"https://api.github.com/repos/adamvduke/galley/branches{/branch}","tags_url":"https://api.github.com/repos/adamvduke/galley/tags","blobs_url":"https://api.github.com/repos/adamvduke/galley/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adamvduke/galley/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adamvduke/galley/git/refs{/sha}","trees_url":"https://api.github.com/repos/adamvduke/galley/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adamvduke/galley/statuses/{sha}","languages_url":"https://api.github.com/repos/adamvduke/galley/languages","stargazers_url":"https://api.github.com/repos/adamvduke/galley/stargazers","contributors_url":"https://api.github.com/repos/adamvduke/galley/contributors","subscribers_url":"https://api.github.com/repos/adamvduke/galley/subscribers","subscription_url":"https://api.github.com/repos/adamvduke/galley/subscription","commits_url":"https://api.github.com/repos/adamvduke/galley/commits{/sha}","git_commits_url":"https://api.github.com/repos/adamvduke/galley/git/commits{/sha}","comments_url":"https://api.github.com/repos/adamvduke/galley/comments{/number}","issue_comment_url":"https://api.github.com/repos/adamvduke/galley/issues/comments{/number}","contents_url":"https://api.github.com/repos/adamvduke/galley/contents/{+path}","compare_url":"https://api.github.com/repos/adamvduke/galley/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adamvduke/galley/merges","archive_url":"https://api.github.com/repos/adamvduke/galley/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adamvduke/galley/downloads","issues_url":"https://api.github.com/repos/adamvduke/galley/issues{/number}","pulls_url":"https://api.github.com/repos/adamvduke/galley/pulls{/number}","milestones_url":"https://api.github.com/repos/adamvduke/galley/milestones{/number}","notifications_url":"https://api.github.com/repos/adamvduke/galley/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adamvduke/galley/labels{/name}","releases_url":"https://api.github.com/repos/adamvduke/galley/releases{/id}","created_at":"2016-01-20T21:36:08Z","updated_at":"2016-01-20T21:36:09Z","pushed_at":"2016-01-20T21:44:44Z","git_url":"git://github.com/adamvduke/galley.git","ssh_url":"git@github.com:adamvduke/galley.git","clone_url":"https://github.com/adamvduke/galley.git","svn_url":"https://github.com/adamvduke/galley","homepage":null,"size":201,"stargazers_count":0,"watchers_count":0,"language":"CoffeeScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"twitter-fabric:master","ref":"master","sha":"74e8778f63b97fcf764760e59258677436a2729b","user":{"login":"twitter-fabric","id":14279844,"avatar_url":"https://avatars.githubusercontent.com/u/14279844?v=3","gravatar_id":"","url":"https://api.github.com/users/twitter-fabric","html_url":"https://github.com/twitter-fabric","followers_url":"https://api.github.com/users/twitter-fabric/followers","following_url":"https://api.github.com/users/twitter-fabric/following{/other_user}","gists_url":"https://api.github.com/users/twitter-fabric/gists{/gist_id}","starred_url":"https://api.github.com/users/twitter-fabric/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twitter-fabric/subscriptions","organizations_url":"https://api.github.com/users/twitter-fabric/orgs","repos_url":"https://api.github.com/users/twitter-fabric/repos","events_url":"https://api.github.com/users/twitter-fabric/events{/privacy}","received_events_url":"https://api.github.com/users/twitter-fabric/received_events","type":"Organization","site_admin":false},"repo":{"id":42675994,"name":"galley","full_name":"twitter-fabric/galley","owner":{"login":"twitter-fabric","id":14279844,"avatar_url":"https://avatars.githubusercontent.com/u/14279844?v=3","gravatar_id":"","url":"https://api.github.com/users/twitter-fabric","html_url":"https://github.com/twitter-fabric","followers_url":"https://api.github.com/users/twitter-fabric/followers","following_url":"https://api.github.com/users/twitter-fabric/following{/other_user}","gists_url":"https://api.github.com/users/twitter-fabric/gists{/gist_id}","starred_url":"https://api.github.com/users/twitter-fabric/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twitter-fabric/subscriptions","organizations_url":"https://api.github.com/users/twitter-fabric/orgs","repos_url":"https://api.github.com/users/twitter-fabric/repos","events_url":"https://api.github.com/users/twitter-fabric/events{/privacy}","received_events_url":"https://api.github.com/users/twitter-fabric/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/twitter-fabric/galley","description":"Orchestrator for local Docker containers","fork":false,"url":"https://api.github.com/repos/twitter-fabric/galley","forks_url":"https://api.github.com/repos/twitter-fabric/galley/forks","keys_url":"https://api.github.com/repos/twitter-fabric/galley/keys{/key_id}","collaborators_url":"https://api.github.com/repos/twitter-fabric/galley/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/twitter-fabric/galley/teams","hooks_url":"https://api.github.com/repos/twitter-fabric/galley/hooks","issue_events_url":"https://api.github.com/repos/twitter-fabric/galley/issues/events{/number}","events_url":"https://api.github.com/repos/twitter-fabric/galley/events","assignees_url":"https://api.github.com/repos/twitter-fabric/galley/assignees{/user}","branches_url":"https://api.github.com/repos/twitter-fabric/galley/branches{/branch}","tags_url":"https://api.github.com/repos/twitter-fabric/galley/tags","blobs_url":"https://api.github.com/repos/twitter-fabric/galley/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/twitter-fabric/galley/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/twitter-fabric/galley/git/refs{/sha}","trees_url":"https://api.github.com/repos/twitter-fabric/galley/git/trees{/sha}","statuses_url":"https://api.github.com/repos/twitter-fabric/galley/statuses/{sha}","languages_url":"https://api.github.com/repos/twitter-fabric/galley/languages","stargazers_url":"https://api.github.com/repos/twitter-fabric/galley/stargazers","contributors_url":"https://api.github.com/repos/twitter-fabric/galley/contributors","subscribers_url":"https://api.github.com/repos/twitter-fabric/galley/subscribers","subscription_url":"https://api.github.com/repos/twitter-fabric/galley/subscription","commits_url":"https://api.github.com/repos/twitter-fabric/galley/commits{/sha}","git_commits_url":"https://api.github.com/repos/twitter-fabric/galley/git/commits{/sha}","comments_url":"https://api.github.com/repos/twitter-fabric/galley/comments{/number}","issue_comment_url":"https://api.github.com/repos/twitter-fabric/galley/issues/comments{/number}","contents_url":"https://api.github.com/repos/twitter-fabric/galley/contents/{+path}","compare_url":"https://api.github.com/repos/twitter-fabric/galley/compare/{base}...{head}","merges_url":"https://api.github.com/repos/twitter-fabric/galley/merges","archive_url":"https://api.github.com/repos/twitter-fabric/galley/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/twitter-fabric/galley/downloads","issues_url":"https://api.github.com/repos/twitter-fabric/galley/issues{/number}","pulls_url":"https://api.github.com/repos/twitter-fabric/galley/pulls{/number}","milestones_url":"https://api.github.com/repos/twitter-fabric/galley/milestones{/number}","notifications_url":"https://api.github.com/repos/twitter-fabric/galley/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/twitter-fabric/galley/labels{/name}","releases_url":"https://api.github.com/repos/twitter-fabric/galley/releases{/id}","created_at":"2015-09-17T19:05:12Z","updated_at":"2016-01-12T07:09:52Z","pushed_at":"2016-01-20T21:48:50Z","git_url":"git://github.com/twitter-fabric/galley.git","ssh_url":"git@github.com:twitter-fabric/galley.git","clone_url":"https://github.com/twitter-fabric/galley.git","svn_url":"https://github.com/twitter-fabric/galley","homepage":null,"size":228,"stargazers_count":125,"watchers_count":125,"language":"CoffeeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":1,"forks":6,"open_issues":1,"watchers":125,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/twitter-fabric/galley/pulls/32"},"html":{"href":"https://github.com/twitter-fabric/galley/pull/32"},"issue":{"href":"https://api.github.com/repos/twitter-fabric/galley/issues/32"},"comments":{"href":"https://api.github.com/repos/twitter-fabric/galley/issues/32/comments"},"review_comments":{"href":"https://api.github.com/repos/twitter-fabric/galley/pulls/32/comments"},"review_comment":{"href":"https://api.github.com/repos/twitter-fabric/galley/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/twitter-fabric/galley/pulls/32/commits"},"statuses":{"href":"https://api.github.com/repos/twitter-fabric/galley/statuses/655736bb835c6d7c70623e13c9e9c2811261bd13"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":6,"deletions":5,"changed_files":2}}