{"action":"created","comment":{"url":"https://api.github.com/repos/docker/docker/pulls/comments/86432054","pull_request_review_id":7092668,"id":86432054,"diff_hunk":"@@ -175,6 +178,75 @@ func (daemon *Daemon) setupIpcDirs(c *container.Container) error {\n \treturn nil\n }\n \n+func (daemon *Daemon) setupSecretDir(c *container.Container) (setupErr error) {\n+\tif len(c.Secrets) == 0 {\n+\t\treturn nil\n+\t}\n+\n+\tlocalMountPath := c.SecretMountPath()\n+\tlogrus.Debugf(\"secrets: setting up secret dir: %s\", localMountPath)\n+\n+\tdefer func() {\n+\t\tif setupErr != nil {\n+\t\t\t// cleanup\n+\t\t\t_ = detachMounted(localMountPath)\n+\n+\t\t\tif err := os.RemoveAll(localMountPath); err != nil {\n+\t\t\t\tlog.Errorf(\"error cleaning up secret mount: %s\", err)\n+\t\t\t}\n+\t\t}\n+\t}()\n+\n+\t// create tmpfs\n+\tif err := os.MkdirAll(localMountPath, 0700); err != nil {\n+\t\treturn errors.Wrap(err, \"error creating secret local mount path\")\n+\t}\n+\tif err := mount.Mount(\"tmpfs\", localMountPath, \"tmpfs\", \"nodev,nosuid,noexec\"); err != nil {\n+\t\treturn errors.Wrap(err, \"unable to setup secret mount\")\n+\t}\n+\n+\tfor _, s := range c.Secrets {\n+\t\t// ensure that the target is a filename only; no paths allowed\n+\t\ttDir, tPath := filepath.Split(s.Target)\n+\t\tif tDir != \"\" {\n+\t\t\treturn fmt.Errorf(\"error creating secret: secret must not have a path\")\n+\t\t}\n+\n+\t\tfPath := filepath.Join(localMountPath, tPath)\n+\t\tif err := os.MkdirAll(filepath.Dir(fPath), 0700); err != nil {\n+\t\t\treturn errors.Wrap(err, \"error creating secret mount path\")\n+\t\t}\n+\n+\t\tlogrus.WithFields(logrus.Fields{\n+\t\t\t\"name\": s.Name,\n+\t\t\t\"path\": fPath,\n+\t\t}).Debug(\"injecting secret\")\n+\t\tif err := ioutil.WriteFile(fPath, s.Data, s.Mode); err != nil {\n+\t\t\treturn errors.Wrap(err, \"error injecting secret\")\n+\t\t}\n+\n+\t\tuid, err := strconv.Atoi(s.UID)\n+\t\tif err != nil {\n+\t\t\treturn err\n+\t\t}\n+\t\tgid, err := strconv.Atoi(s.GID)\n+\t\tif err != nil {\n+\t\t\treturn err\n+\t\t}\n+\n+\t\tif err := os.Chown(fPath, uid, gid); err != nil {\n+\t\t\treturn errors.Wrap(err, \"error setting ownership for secret\")\n+\t\t}\n+\t}\n+\n+\t// remount secrets ro\n+\tif err := mount.Mount(\"tmpfs\", localMountPath, \"tmpfs\", \"remount,ro\"); err != nil {","path":"daemon/container_operations_unix.go","position":90,"original_position":90,"commit_id":"bc1c8c3efdf3e98944a31b28ace6881d3f0e08f4","original_commit_id":"b189d9709e54e161ee58791554fbc18f549b9840","user":{"login":"stevvooe","id":120601,"avatar_url":"https://avatars.githubusercontent.com/u/120601?v=3","gravatar_id":"","url":"https://api.github.com/users/stevvooe","html_url":"https://github.com/stevvooe","followers_url":"https://api.github.com/users/stevvooe/followers","following_url":"https://api.github.com/users/stevvooe/following{/other_user}","gists_url":"https://api.github.com/users/stevvooe/gists{/gist_id}","starred_url":"https://api.github.com/users/stevvooe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stevvooe/subscriptions","organizations_url":"https://api.github.com/users/stevvooe/orgs","repos_url":"https://api.github.com/users/stevvooe/repos","events_url":"https://api.github.com/users/stevvooe/events{/privacy}","received_events_url":"https://api.github.com/users/stevvooe/received_events","type":"User","site_admin":false},"body":"Also, would it be better to let these mounts happen as part of `setupMounts`, rather than performing it here?","created_at":"2016-11-03T20:09:09Z","updated_at":"2016-11-03T20:09:10Z","html_url":"https://github.com/docker/docker/pull/27794#discussion_r86432054","pull_request_url":"https://api.github.com/repos/docker/docker/pulls/27794","_links":{"self":{"href":"https://api.github.com/repos/docker/docker/pulls/comments/86432054"},"html":{"href":"https://github.com/docker/docker/pull/27794#discussion_r86432054"},"pull_request":{"href":"https://api.github.com/repos/docker/docker/pulls/27794"}}},"pull_request":{"url":"https://api.github.com/repos/docker/docker/pulls/27794","id":91056325,"html_url":"https://github.com/docker/docker/pull/27794","diff_url":"https://github.com/docker/docker/pull/27794.diff","patch_url":"https://github.com/docker/docker/pull/27794.patch","issue_url":"https://api.github.com/repos/docker/docker/issues/27794","number":27794,"state":"open","locked":false,"title":"Secret Management","user":{"login":"ehazlett","id":260642,"avatar_url":"https://avatars.githubusercontent.com/u/260642?v=3","gravatar_id":"","url":"https://api.github.com/users/ehazlett","html_url":"https://github.com/ehazlett","followers_url":"https://api.github.com/users/ehazlett/followers","following_url":"https://api.github.com/users/ehazlett/following{/other_user}","gists_url":"https://api.github.com/users/ehazlett/gists{/gist_id}","starred_url":"https://api.github.com/users/ehazlett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ehazlett/subscriptions","organizations_url":"https://api.github.com/users/ehazlett/orgs","repos_url":"https://api.github.com/users/ehazlett/repos","events_url":"https://api.github.com/users/ehazlett/events{/privacy}","received_events_url":"https://api.github.com/users/ehazlett/received_events","type":"User","site_admin":false},"body":"This adds support for the new Secret API in Swarmkit (https://github.com/docker/swarmkit/pull/1567).  This adds commands (`create`, `inspect`, `ls`, `rm`) for managing secrets in a Swarm cluster.  This is currently for Swarm mode only as the backing store is Swarm and as such is only for Linux.  This is the foundation for future secret support in Docker with potential improvements such as Windows support, different backing stores, etc.\r\n\r\nThis takes the ideas and collective recommendations from #13490 to set the groundwork.  It exposes a file system based interface for secret access.  The engine creates a tmpfs and mounts it in container (`/run/secrets`).  A file is created for each secret that is assigned to the service.  For example, if a secret named \"ssh-dev\" with a target of \"id_rsa\" is assigned to the service, a file with the secret contents will be created at `/run/secrets/id_rsa`.\r\n\r\nTODO:\r\n- [x] ~~Service update support to add / rm secrets from a service~~\r\n- [x] ~~User facing docs~~\r\n- [x] ~~More tests~~\r\n- [x] ~~Depends on [https://github.com/docker/swarmkit/pull/1697](https://github.com/docker/swarmkit/pull/1697)~~\r\n\r\nExamples (these will be turned into user docs):\r\n\r\nCreate a Secret:\r\n\r\n```\r\n$> cat test_key | docker secret create ssh-dev\r\nqluh2o4xbvtu8rhvz0hueyeou\r\n```\r\n\r\nCreate a Service with a Secret\r\n\r\n```\r\n$> docker service create --name nginx --secret ssh-dev:id_rsa nginx\r\nt9kwy2v04l7zl3hl9dlvt5vq0\r\n```\r\n\r\nWe can then check the created container for the secret:\r\n\r\n```\r\n$> docker exec -ti 06 mount | grep tmpfs\r\n...\r\ntmpfs on /run/secrets type tmpfs (ro,relatime)\r\n\r\n$> docker exec -ti 06 cat /run/secrets/id_rsa\r\n-----BEGIN RSA PRIVATE KEY-----\r\nMIIEpAIBAAKCAQEA2Xz+yHs5pDgeCyv7ul10MkSYcAu79sRBh/VNGXBPMW1QbBcJ\r\n...\r\n```\r\n","created_at":"2016-10-26T18:01:54Z","updated_at":"2016-11-03T20:09:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"694fca856a3983603c592d80aef2314f681bd796","assignee":{"login":"vdemeester","id":6508,"avatar_url":"https://avatars.githubusercontent.com/u/6508?v=3","gravatar_id":"","url":"https://api.github.com/users/vdemeester","html_url":"https://github.com/vdemeester","followers_url":"https://api.github.com/users/vdemeester/followers","following_url":"https://api.github.com/users/vdemeester/following{/other_user}","gists_url":"https://api.github.com/users/vdemeester/gists{/gist_id}","starred_url":"https://api.github.com/users/vdemeester/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vdemeester/subscriptions","organizations_url":"https://api.github.com/users/vdemeester/orgs","repos_url":"https://api.github.com/users/vdemeester/repos","events_url":"https://api.github.com/users/vdemeester/events{/privacy}","received_events_url":"https://api.github.com/users/vdemeester/received_events","type":"User","site_admin":false},"assignees":[{"login":"vdemeester","id":6508,"avatar_url":"https://avatars.githubusercontent.com/u/6508?v=3","gravatar_id":"","url":"https://api.github.com/users/vdemeester","html_url":"https://github.com/vdemeester","followers_url":"https://api.github.com/users/vdemeester/followers","following_url":"https://api.github.com/users/vdemeester/following{/other_user}","gists_url":"https://api.github.com/users/vdemeester/gists{/gist_id}","starred_url":"https://api.github.com/users/vdemeester/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vdemeester/subscriptions","organizations_url":"https://api.github.com/users/vdemeester/orgs","repos_url":"https://api.github.com/users/vdemeester/repos","events_url":"https://api.github.com/users/vdemeester/events{/privacy}","received_events_url":"https://api.github.com/users/vdemeester/received_events","type":"User","site_admin":false},{"login":"crosbymichael","id":749551,"avatar_url":"https://avatars.githubusercontent.com/u/749551?v=3","gravatar_id":"","url":"https://api.github.com/users/crosbymichael","html_url":"https://github.com/crosbymichael","followers_url":"https://api.github.com/users/crosbymichael/followers","following_url":"https://api.github.com/users/crosbymichael/following{/other_user}","gists_url":"https://api.github.com/users/crosbymichael/gists{/gist_id}","starred_url":"https://api.github.com/users/crosbymichael/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crosbymichael/subscriptions","organizations_url":"https://api.github.com/users/crosbymichael/orgs","repos_url":"https://api.github.com/users/crosbymichael/repos","events_url":"https://api.github.com/users/crosbymichael/events{/privacy}","received_events_url":"https://api.github.com/users/crosbymichael/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/docker/docker/milestones/56","html_url":"https://github.com/docker/docker/milestones/1.13.0","labels_url":"https://api.github.com/repos/docker/docker/milestones/56/labels","id":1839404,"number":56,"title":"1.13.0","description":"","creator":{"login":"thaJeztah","id":1804568,"avatar_url":"https://avatars.githubusercontent.com/u/1804568?v=3","gravatar_id":"","url":"https://api.github.com/users/thaJeztah","html_url":"https://github.com/thaJeztah","followers_url":"https://api.github.com/users/thaJeztah/followers","following_url":"https://api.github.com/users/thaJeztah/following{/other_user}","gists_url":"https://api.github.com/users/thaJeztah/gists{/gist_id}","starred_url":"https://api.github.com/users/thaJeztah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thaJeztah/subscriptions","organizations_url":"https://api.github.com/users/thaJeztah/orgs","repos_url":"https://api.github.com/users/thaJeztah/repos","events_url":"https://api.github.com/users/thaJeztah/events{/privacy}","received_events_url":"https://api.github.com/users/thaJeztah/received_events","type":"User","site_admin":false},"open_issues":117,"closed_issues":572,"state":"open","created_at":"2016-06-20T22:51:25Z","updated_at":"2016-11-03T20:07:16Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/docker/docker/pulls/27794/commits","review_comments_url":"https://api.github.com/repos/docker/docker/pulls/27794/comments","review_comment_url":"https://api.github.com/repos/docker/docker/pulls/comments{/number}","comments_url":"https://api.github.com/repos/docker/docker/issues/27794/comments","statuses_url":"https://api.github.com/repos/docker/docker/statuses/bc1c8c3efdf3e98944a31b28ace6881d3f0e08f4","head":{"label":"ehazlett:secrets","ref":"secrets","sha":"bc1c8c3efdf3e98944a31b28ace6881d3f0e08f4","user":{"login":"ehazlett","id":260642,"avatar_url":"https://avatars.githubusercontent.com/u/260642?v=3","gravatar_id":"","url":"https://api.github.com/users/ehazlett","html_url":"https://github.com/ehazlett","followers_url":"https://api.github.com/users/ehazlett/followers","following_url":"https://api.github.com/users/ehazlett/following{/other_user}","gists_url":"https://api.github.com/users/ehazlett/gists{/gist_id}","starred_url":"https://api.github.com/users/ehazlett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ehazlett/subscriptions","organizations_url":"https://api.github.com/users/ehazlett/orgs","repos_url":"https://api.github.com/users/ehazlett/repos","events_url":"https://api.github.com/users/ehazlett/events{/privacy}","received_events_url":"https://api.github.com/users/ehazlett/received_events","type":"User","site_admin":false},"repo":{"id":8844921,"name":"docker","full_name":"ehazlett/docker","owner":{"login":"ehazlett","id":260642,"avatar_url":"https://avatars.githubusercontent.com/u/260642?v=3","gravatar_id":"","url":"https://api.github.com/users/ehazlett","html_url":"https://github.com/ehazlett","followers_url":"https://api.github.com/users/ehazlett/followers","following_url":"https://api.github.com/users/ehazlett/following{/other_user}","gists_url":"https://api.github.com/users/ehazlett/gists{/gist_id}","starred_url":"https://api.github.com/users/ehazlett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ehazlett/subscriptions","organizations_url":"https://api.github.com/users/ehazlett/orgs","repos_url":"https://api.github.com/users/ehazlett/repos","events_url":"https://api.github.com/users/ehazlett/events{/privacy}","received_events_url":"https://api.github.com/users/ehazlett/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ehazlett/docker","description":null,"fork":true,"url":"https://api.github.com/repos/ehazlett/docker","forks_url":"https://api.github.com/repos/ehazlett/docker/forks","keys_url":"https://api.github.com/repos/ehazlett/docker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ehazlett/docker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ehazlett/docker/teams","hooks_url":"https://api.github.com/repos/ehazlett/docker/hooks","issue_events_url":"https://api.github.com/repos/ehazlett/docker/issues/events{/number}","events_url":"https://api.github.com/repos/ehazlett/docker/events","assignees_url":"https://api.github.com/repos/ehazlett/docker/assignees{/user}","branches_url":"https://api.github.com/repos/ehazlett/docker/branches{/branch}","tags_url":"https://api.github.com/repos/ehazlett/docker/tags","blobs_url":"https://api.github.com/repos/ehazlett/docker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ehazlett/docker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ehazlett/docker/git/refs{/sha}","trees_url":"https://api.github.com/repos/ehazlett/docker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ehazlett/docker/statuses/{sha}","languages_url":"https://api.github.com/repos/ehazlett/docker/languages","stargazers_url":"https://api.github.com/repos/ehazlett/docker/stargazers","contributors_url":"https://api.github.com/repos/ehazlett/docker/contributors","subscribers_url":"https://api.github.com/repos/ehazlett/docker/subscribers","subscription_url":"https://api.github.com/repos/ehazlett/docker/subscription","commits_url":"https://api.github.com/repos/ehazlett/docker/commits{/sha}","git_commits_url":"https://api.github.com/repos/ehazlett/docker/git/commits{/sha}","comments_url":"https://api.github.com/repos/ehazlett/docker/comments{/number}","issue_comment_url":"https://api.github.com/repos/ehazlett/docker/issues/comments{/number}","contents_url":"https://api.github.com/repos/ehazlett/docker/contents/{+path}","compare_url":"https://api.github.com/repos/ehazlett/docker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ehazlett/docker/merges","archive_url":"https://api.github.com/repos/ehazlett/docker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ehazlett/docker/downloads","issues_url":"https://api.github.com/repos/ehazlett/docker/issues{/number}","pulls_url":"https://api.github.com/repos/ehazlett/docker/pulls{/number}","milestones_url":"https://api.github.com/repos/ehazlett/docker/milestones{/number}","notifications_url":"https://api.github.com/repos/ehazlett/docker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ehazlett/docker/labels{/name}","releases_url":"https://api.github.com/repos/ehazlett/docker/releases{/id}","deployments_url":"https://api.github.com/repos/ehazlett/docker/deployments","created_at":"2013-03-18T01:40:19Z","updated_at":"2016-10-24T22:38:54Z","pushed_at":"2016-11-03T20:03:13Z","git_url":"git://github.com/ehazlett/docker.git","ssh_url":"git@github.com:ehazlett/docker.git","clone_url":"https://github.com/ehazlett/docker.git","svn_url":"https://github.com/ehazlett/docker","homepage":null,"size":108357,"stargazers_count":2,"watchers_count":2,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"docker:master","ref":"master","sha":"aa90a531c598af4ace14ee9e96021743fe4cff2e","user":{"login":"docker","id":5429470,"avatar_url":"https://avatars.githubusercontent.com/u/5429470?v=3","gravatar_id":"","url":"https://api.github.com/users/docker","html_url":"https://github.com/docker","followers_url":"https://api.github.com/users/docker/followers","following_url":"https://api.github.com/users/docker/following{/other_user}","gists_url":"https://api.github.com/users/docker/gists{/gist_id}","starred_url":"https://api.github.com/users/docker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/docker/subscriptions","organizations_url":"https://api.github.com/users/docker/orgs","repos_url":"https://api.github.com/users/docker/repos","events_url":"https://api.github.com/users/docker/events{/privacy}","received_events_url":"https://api.github.com/users/docker/received_events","type":"Organization","site_admin":false},"repo":{"id":7691631,"name":"docker","full_name":"docker/docker","owner":{"login":"docker","id":5429470,"avatar_url":"https://avatars.githubusercontent.com/u/5429470?v=3","gravatar_id":"","url":"https://api.github.com/users/docker","html_url":"https://github.com/docker","followers_url":"https://api.github.com/users/docker/followers","following_url":"https://api.github.com/users/docker/following{/other_user}","gists_url":"https://api.github.com/users/docker/gists{/gist_id}","starred_url":"https://api.github.com/users/docker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/docker/subscriptions","organizations_url":"https://api.github.com/users/docker/orgs","repos_url":"https://api.github.com/users/docker/repos","events_url":"https://api.github.com/users/docker/events{/privacy}","received_events_url":"https://api.github.com/users/docker/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/docker/docker","description":"Docker - the open-source application container engine","fork":false,"url":"https://api.github.com/repos/docker/docker","forks_url":"https://api.github.com/repos/docker/docker/forks","keys_url":"https://api.github.com/repos/docker/docker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/docker/docker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/docker/docker/teams","hooks_url":"https://api.github.com/repos/docker/docker/hooks","issue_events_url":"https://api.github.com/repos/docker/docker/issues/events{/number}","events_url":"https://api.github.com/repos/docker/docker/events","assignees_url":"https://api.github.com/repos/docker/docker/assignees{/user}","branches_url":"https://api.github.com/repos/docker/docker/branches{/branch}","tags_url":"https://api.github.com/repos/docker/docker/tags","blobs_url":"https://api.github.com/repos/docker/docker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/docker/docker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/docker/docker/git/refs{/sha}","trees_url":"https://api.github.com/repos/docker/docker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/docker/docker/statuses/{sha}","languages_url":"https://api.github.com/repos/docker/docker/languages","stargazers_url":"https://api.github.com/repos/docker/docker/stargazers","contributors_url":"https://api.github.com/repos/docker/docker/contributors","subscribers_url":"https://api.github.com/repos/docker/docker/subscribers","subscription_url":"https://api.github.com/repos/docker/docker/subscription","commits_url":"https://api.github.com/repos/docker/docker/commits{/sha}","git_commits_url":"https://api.github.com/repos/docker/docker/git/commits{/sha}","comments_url":"https://api.github.com/repos/docker/docker/comments{/number}","issue_comment_url":"https://api.github.com/repos/docker/docker/issues/comments{/number}","contents_url":"https://api.github.com/repos/docker/docker/contents/{+path}","compare_url":"https://api.github.com/repos/docker/docker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/docker/docker/merges","archive_url":"https://api.github.com/repos/docker/docker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/docker/docker/downloads","issues_url":"https://api.github.com/repos/docker/docker/issues{/number}","pulls_url":"https://api.github.com/repos/docker/docker/pulls{/number}","milestones_url":"https://api.github.com/repos/docker/docker/milestones{/number}","notifications_url":"https://api.github.com/repos/docker/docker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/docker/docker/labels{/name}","releases_url":"https://api.github.com/repos/docker/docker/releases{/id}","deployments_url":"https://api.github.com/repos/docker/docker/deployments","created_at":"2013-01-18T18:10:57Z","updated_at":"2016-11-03T18:57:31Z","pushed_at":"2016-11-03T20:07:04Z","git_url":"git://github.com/docker/docker.git","ssh_url":"git@github.com:docker/docker.git","clone_url":"https://github.com/docker/docker.git","svn_url":"https://github.com/docker/docker","homepage":"http://www.docker.com","size":218154,"stargazers_count":36554,"watchers_count":36554,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":10784,"mirror_url":null,"open_issues_count":1887,"forks":10784,"open_issues":1887,"watchers":36554,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/docker/docker/pulls/27794"},"html":{"href":"https://github.com/docker/docker/pull/27794"},"issue":{"href":"https://api.github.com/repos/docker/docker/issues/27794"},"comments":{"href":"https://api.github.com/repos/docker/docker/issues/27794/comments"},"review_comments":{"href":"https://api.github.com/repos/docker/docker/pulls/27794/comments"},"review_comment":{"href":"https://api.github.com/repos/docker/docker/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/docker/docker/pulls/27794/commits"},"statuses":{"href":"https://api.github.com/repos/docker/docker/statuses/bc1c8c3efdf3e98944a31b28ace6881d3f0e08f4"}}}}
{"actor":{"display_login":"stevvooe"}}