{"action":"closed","number":1619,"pull_request":{"url":"https://api.github.com/repos/snapcore/snapd/pulls/1619","id":79783477,"html_url":"https://github.com/snapcore/snapd/pull/1619","diff_url":"https://github.com/snapcore/snapd/pull/1619.diff","patch_url":"https://github.com/snapcore/snapd/pull/1619.patch","issue_url":"https://api.github.com/repos/snapcore/snapd/issues/1619","number":1619,"state":"closed","locked":false,"title":"interfaces/builtin: add initial docker interface","user":{"login":"tianon","id":161631,"avatar_url":"https://avatars.githubusercontent.com/u/161631?v=3","gravatar_id":"","url":"https://api.github.com/users/tianon","html_url":"https://github.com/tianon","followers_url":"https://api.github.com/users/tianon/followers","following_url":"https://api.github.com/users/tianon/following{/other_user}","gists_url":"https://api.github.com/users/tianon/gists{/gist_id}","starred_url":"https://api.github.com/users/tianon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tianon/subscriptions","organizations_url":"https://api.github.com/users/tianon/orgs","repos_url":"https://api.github.com/users/tianon/repos","events_url":"https://api.github.com/users/tianon/events{/privacy}","received_events_url":"https://api.github.com/users/tianon/received_events","type":"User","site_admin":false},"body":"This is a first pass on adding a `docker` interface to `snapd`.  I've been discussing this off-and-on with @jdstrand on IRC, so hopefully it's at least an OK start, but if not, I'm happy to amend, rebase, refactor, etc as necessary or desired. :+1:\r\n\r\nOne main question I've still got is around slot/plug overlap.  With the way this is currently implemented, by `docker` snap includes both the `docker` and the `network` plugs on the Docker client command, and the `docker` slot plus the `network-bind` and `firewall-control` plugs on the Docker daemon.  My question is whether that's the correct way to be thinking about this, or whether those overlapping privileges should be rolled into the `docker` interface directly?\r\n\r\nTo be more precise, here's the exact `snapcraft.yml` snippet:\r\n```yaml\r\napps:\r\n  docker:\r\n    command: docker-wrapper docker\r\n    plugs:\r\n      - docker\r\n      - network\r\n\r\n  dockerd:\r\n    command: dockerd-wrapper\r\n    daemon: simple\r\n    plugs:\r\n      - network-bind\r\n      - firewall-control\r\n    slots:\r\n      - docker\r\n```\r\n\r\nAnd the interfaces I've got to have connected for it to function appropriately: (as one would expect)\r\n```console\r\n$ snap interfaces | grep docker\r\ndocker:docker        docker\r\n:firewall-control    docker\r\n:network             docker\r\n:network-bind        docker\r\n```","created_at":"2016-08-02T18:20:55Z","updated_at":"2016-09-19T22:04:18Z","closed_at":"2016-09-19T22:04:18Z","merged_at":null,"merge_commit_sha":"48ea97d264c1e3c8d626b8f2d604ad9277745582","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/snapcore/snapd/pulls/1619/commits","review_comments_url":"https://api.github.com/repos/snapcore/snapd/pulls/1619/comments","review_comment_url":"https://api.github.com/repos/snapcore/snapd/pulls/comments{/number}","comments_url":"https://api.github.com/repos/snapcore/snapd/issues/1619/comments","statuses_url":"https://api.github.com/repos/snapcore/snapd/statuses/05bf4211e988ad872bd9a8d4f9bbb8c0bc54bdee","head":{"label":"infosiftr:docker","ref":"docker","sha":"05bf4211e988ad872bd9a8d4f9bbb8c0bc54bdee","user":{"login":"infosiftr","id":894614,"avatar_url":"https://avatars.githubusercontent.com/u/894614?v=3","gravatar_id":"","url":"https://api.github.com/users/infosiftr","html_url":"https://github.com/infosiftr","followers_url":"https://api.github.com/users/infosiftr/followers","following_url":"https://api.github.com/users/infosiftr/following{/other_user}","gists_url":"https://api.github.com/users/infosiftr/gists{/gist_id}","starred_url":"https://api.github.com/users/infosiftr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/infosiftr/subscriptions","organizations_url":"https://api.github.com/users/infosiftr/orgs","repos_url":"https://api.github.com/users/infosiftr/repos","events_url":"https://api.github.com/users/infosiftr/events{/privacy}","received_events_url":"https://api.github.com/users/infosiftr/received_events","type":"Organization","site_admin":false},"repo":{"id":64344938,"name":"snapd","full_name":"infosiftr/snapd","owner":{"login":"infosiftr","id":894614,"avatar_url":"https://avatars.githubusercontent.com/u/894614?v=3","gravatar_id":"","url":"https://api.github.com/users/infosiftr","html_url":"https://github.com/infosiftr","followers_url":"https://api.github.com/users/infosiftr/followers","following_url":"https://api.github.com/users/infosiftr/following{/other_user}","gists_url":"https://api.github.com/users/infosiftr/gists{/gist_id}","starred_url":"https://api.github.com/users/infosiftr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/infosiftr/subscriptions","organizations_url":"https://api.github.com/users/infosiftr/orgs","repos_url":"https://api.github.com/users/infosiftr/repos","events_url":"https://api.github.com/users/infosiftr/events{/privacy}","received_events_url":"https://api.github.com/users/infosiftr/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/infosiftr/snapd","description":"The snapd and snap tools enable systems to work with .snap files.","fork":true,"url":"https://api.github.com/repos/infosiftr/snapd","forks_url":"https://api.github.com/repos/infosiftr/snapd/forks","keys_url":"https://api.github.com/repos/infosiftr/snapd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/infosiftr/snapd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/infosiftr/snapd/teams","hooks_url":"https://api.github.com/repos/infosiftr/snapd/hooks","issue_events_url":"https://api.github.com/repos/infosiftr/snapd/issues/events{/number}","events_url":"https://api.github.com/repos/infosiftr/snapd/events","assignees_url":"https://api.github.com/repos/infosiftr/snapd/assignees{/user}","branches_url":"https://api.github.com/repos/infosiftr/snapd/branches{/branch}","tags_url":"https://api.github.com/repos/infosiftr/snapd/tags","blobs_url":"https://api.github.com/repos/infosiftr/snapd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/infosiftr/snapd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/infosiftr/snapd/git/refs{/sha}","trees_url":"https://api.github.com/repos/infosiftr/snapd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/infosiftr/snapd/statuses/{sha}","languages_url":"https://api.github.com/repos/infosiftr/snapd/languages","stargazers_url":"https://api.github.com/repos/infosiftr/snapd/stargazers","contributors_url":"https://api.github.com/repos/infosiftr/snapd/contributors","subscribers_url":"https://api.github.com/repos/infosiftr/snapd/subscribers","subscription_url":"https://api.github.com/repos/infosiftr/snapd/subscription","commits_url":"https://api.github.com/repos/infosiftr/snapd/commits{/sha}","git_commits_url":"https://api.github.com/repos/infosiftr/snapd/git/commits{/sha}","comments_url":"https://api.github.com/repos/infosiftr/snapd/comments{/number}","issue_comment_url":"https://api.github.com/repos/infosiftr/snapd/issues/comments{/number}","contents_url":"https://api.github.com/repos/infosiftr/snapd/contents/{+path}","compare_url":"https://api.github.com/repos/infosiftr/snapd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/infosiftr/snapd/merges","archive_url":"https://api.github.com/repos/infosiftr/snapd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/infosiftr/snapd/downloads","issues_url":"https://api.github.com/repos/infosiftr/snapd/issues{/number}","pulls_url":"https://api.github.com/repos/infosiftr/snapd/pulls{/number}","milestones_url":"https://api.github.com/repos/infosiftr/snapd/milestones{/number}","notifications_url":"https://api.github.com/repos/infosiftr/snapd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/infosiftr/snapd/labels{/name}","releases_url":"https://api.github.com/repos/infosiftr/snapd/releases{/id}","deployments_url":"https://api.github.com/repos/infosiftr/snapd/deployments","created_at":"2016-07-27T22:08:41Z","updated_at":"2016-07-27T22:08:43Z","pushed_at":"2016-09-02T19:51:37Z","git_url":"git://github.com/infosiftr/snapd.git","ssh_url":"git@github.com:infosiftr/snapd.git","clone_url":"https://github.com/infosiftr/snapd.git","svn_url":"https://github.com/infosiftr/snapd","homepage":"","size":33347,"stargazers_count":0,"watchers_count":0,"language":"Go","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":"snapcore:master","ref":"master","sha":"caceb48db88ed8a1c98288e96e496a0596f07300","user":{"login":"snapcore","id":19532717,"avatar_url":"https://avatars.githubusercontent.com/u/19532717?v=3","gravatar_id":"","url":"https://api.github.com/users/snapcore","html_url":"https://github.com/snapcore","followers_url":"https://api.github.com/users/snapcore/followers","following_url":"https://api.github.com/users/snapcore/following{/other_user}","gists_url":"https://api.github.com/users/snapcore/gists{/gist_id}","starred_url":"https://api.github.com/users/snapcore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snapcore/subscriptions","organizations_url":"https://api.github.com/users/snapcore/orgs","repos_url":"https://api.github.com/users/snapcore/repos","events_url":"https://api.github.com/users/snapcore/events{/privacy}","received_events_url":"https://api.github.com/users/snapcore/received_events","type":"Organization","site_admin":false},"repo":{"id":44672744,"name":"snapd","full_name":"snapcore/snapd","owner":{"login":"snapcore","id":19532717,"avatar_url":"https://avatars.githubusercontent.com/u/19532717?v=3","gravatar_id":"","url":"https://api.github.com/users/snapcore","html_url":"https://github.com/snapcore","followers_url":"https://api.github.com/users/snapcore/followers","following_url":"https://api.github.com/users/snapcore/following{/other_user}","gists_url":"https://api.github.com/users/snapcore/gists{/gist_id}","starred_url":"https://api.github.com/users/snapcore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snapcore/subscriptions","organizations_url":"https://api.github.com/users/snapcore/orgs","repos_url":"https://api.github.com/users/snapcore/repos","events_url":"https://api.github.com/users/snapcore/events{/privacy}","received_events_url":"https://api.github.com/users/snapcore/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/snapcore/snapd","description":"The snapd and snap tools enable systems to work with .snap files.","fork":false,"url":"https://api.github.com/repos/snapcore/snapd","forks_url":"https://api.github.com/repos/snapcore/snapd/forks","keys_url":"https://api.github.com/repos/snapcore/snapd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/snapcore/snapd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/snapcore/snapd/teams","hooks_url":"https://api.github.com/repos/snapcore/snapd/hooks","issue_events_url":"https://api.github.com/repos/snapcore/snapd/issues/events{/number}","events_url":"https://api.github.com/repos/snapcore/snapd/events","assignees_url":"https://api.github.com/repos/snapcore/snapd/assignees{/user}","branches_url":"https://api.github.com/repos/snapcore/snapd/branches{/branch}","tags_url":"https://api.github.com/repos/snapcore/snapd/tags","blobs_url":"https://api.github.com/repos/snapcore/snapd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/snapcore/snapd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/snapcore/snapd/git/refs{/sha}","trees_url":"https://api.github.com/repos/snapcore/snapd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/snapcore/snapd/statuses/{sha}","languages_url":"https://api.github.com/repos/snapcore/snapd/languages","stargazers_url":"https://api.github.com/repos/snapcore/snapd/stargazers","contributors_url":"https://api.github.com/repos/snapcore/snapd/contributors","subscribers_url":"https://api.github.com/repos/snapcore/snapd/subscribers","subscription_url":"https://api.github.com/repos/snapcore/snapd/subscription","commits_url":"https://api.github.com/repos/snapcore/snapd/commits{/sha}","git_commits_url":"https://api.github.com/repos/snapcore/snapd/git/commits{/sha}","comments_url":"https://api.github.com/repos/snapcore/snapd/comments{/number}","issue_comment_url":"https://api.github.com/repos/snapcore/snapd/issues/comments{/number}","contents_url":"https://api.github.com/repos/snapcore/snapd/contents/{+path}","compare_url":"https://api.github.com/repos/snapcore/snapd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/snapcore/snapd/merges","archive_url":"https://api.github.com/repos/snapcore/snapd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/snapcore/snapd/downloads","issues_url":"https://api.github.com/repos/snapcore/snapd/issues{/number}","pulls_url":"https://api.github.com/repos/snapcore/snapd/pulls{/number}","milestones_url":"https://api.github.com/repos/snapcore/snapd/milestones{/number}","notifications_url":"https://api.github.com/repos/snapcore/snapd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/snapcore/snapd/labels{/name}","releases_url":"https://api.github.com/repos/snapcore/snapd/releases{/id}","deployments_url":"https://api.github.com/repos/snapcore/snapd/deployments","created_at":"2015-10-21T11:51:46Z","updated_at":"2016-09-19T09:06:28Z","pushed_at":"2016-09-19T22:03:16Z","git_url":"git://github.com/snapcore/snapd.git","ssh_url":"git@github.com:snapcore/snapd.git","clone_url":"https://github.com/snapcore/snapd.git","svn_url":"https://github.com/snapcore/snapd","homepage":"","size":38263,"stargazers_count":394,"watchers_count":394,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":105,"mirror_url":null,"open_issues_count":33,"forks":105,"open_issues":33,"watchers":394,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/snapcore/snapd/pulls/1619"},"html":{"href":"https://github.com/snapcore/snapd/pull/1619"},"issue":{"href":"https://api.github.com/repos/snapcore/snapd/issues/1619"},"comments":{"href":"https://api.github.com/repos/snapcore/snapd/issues/1619/comments"},"review_comments":{"href":"https://api.github.com/repos/snapcore/snapd/pulls/1619/comments"},"review_comment":{"href":"https://api.github.com/repos/snapcore/snapd/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/snapcore/snapd/pulls/1619/commits"},"statuses":{"href":"https://api.github.com/repos/snapcore/snapd/statuses/05bf4211e988ad872bd9a8d4f9bbb8c0bc54bdee"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":32,"review_comments":115,"commits":17,"additions":722,"deletions":0,"changed_files":4}}
{"actor":{"display_login":"jdstrand"}}