{"action":"created","issue":{"url":"https://api.github.com/repos/docker/docker/issues/16075","labels_url":"https://api.github.com/repos/docker/docker/issues/16075/labels{/name}","comments_url":"https://api.github.com/repos/docker/docker/issues/16075/comments","events_url":"https://api.github.com/repos/docker/docker/issues/16075/events","html_url":"https://github.com/docker/docker/pull/16075","id":104811521,"number":16075,"title":"Rename volumedrivers.opts to volumedrivers.Opts to make it public","user":{"login":"peter-edge","id":4228796,"avatar_url":"https://avatars.githubusercontent.com/u/4228796?v=3","gravatar_id":"","url":"https://api.github.com/users/peter-edge","html_url":"https://github.com/peter-edge","followers_url":"https://api.github.com/users/peter-edge/followers","following_url":"https://api.github.com/users/peter-edge/following{/other_user}","gists_url":"https://api.github.com/users/peter-edge/gists{/gist_id}","starred_url":"https://api.github.com/users/peter-edge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peter-edge/subscriptions","organizations_url":"https://api.github.com/users/peter-edge/orgs","repos_url":"https://api.github.com/users/peter-edge/repos","events_url":"https://api.github.com/users/peter-edge/events{/privacy}","received_events_url":"https://api.github.com/users/peter-edge/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/docker/docker/labels/status/1-design-review","name":"status/1-design-review","color":"fef2c0"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-09-04T01:23:44Z","updated_at":"2015-09-05T00:44:56Z","closed_at":"2015-09-05T00:44:56Z","pull_request":{"url":"https://api.github.com/repos/docker/docker/pulls/16075","html_url":"https://github.com/docker/docker/pull/16075","diff_url":"https://github.com/docker/docker/pull/16075.diff","patch_url":"https://github.com/docker/docker/pull/16075.patch"},"body":"Signed-off-by: Peter Edge <peter.edge@gmail.com>\r\n\r\nThe `volumedrivers.VolumeDriver` interface is a natural interface for volume driver implementations to implement. However, with `volumedrivers.opts` being private, you can't create implementations of `volumedrivers.VolumeDriver` that conform to the interface specification outside of the `volumedrivers` package. An implementation with a function `func (v *volumeDriver) Create(name string, opts map[string]string)` does not fulfill the interface contract, and if you try to pass it as a `volumedrivers.VolumeDriver`, it will be a compile error.\r\n\r\nI have this problem with https://github.com/peter-edge/go-dockervolume/blob/master/dockervolume.go, and had to add the interface seen there because of this problem.\r\n\r\n\\cc @cpuguy83 @calavera"},"comment":{"url":"https://api.github.com/repos/docker/docker/issues/comments/137888030","html_url":"https://github.com/docker/docker/pull/16075#issuecomment-137888030","issue_url":"https://api.github.com/repos/docker/docker/issues/16075","id":137888030,"user":{"login":"calavera","id":1050,"avatar_url":"https://avatars.githubusercontent.com/u/1050?v=3","gravatar_id":"","url":"https://api.github.com/users/calavera","html_url":"https://github.com/calavera","followers_url":"https://api.github.com/users/calavera/followers","following_url":"https://api.github.com/users/calavera/following{/other_user}","gists_url":"https://api.github.com/users/calavera/gists{/gist_id}","starred_url":"https://api.github.com/users/calavera/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calavera/subscriptions","organizations_url":"https://api.github.com/users/calavera/orgs","repos_url":"https://api.github.com/users/calavera/repos","events_url":"https://api.github.com/users/calavera/events{/privacy}","received_events_url":"https://api.github.com/users/calavera/received_events","type":"User","site_admin":false},"created_at":"2015-09-05T00:44:56Z","updated_at":"2015-09-05T00:44:56Z","body":"@peter-edge sorry, but I'm going to close this PR. I don't think we should do this. I'm going to remove those structs to avoid future confusion."}}