{"action":"created","comment":{"url":"https://api.github.com/repos/joyent/sdc-docker/pulls/comments/59625512","id":59625512,"diff_hunk":"@@ -17,3 +17,36 @@ different from Docker Inc's docker:\n    specified (including those that this container is sharing from others) are\n    ignored. Only volumes belonging to the specified container will be\n    considered.\n+\n+## Experimental support for NFS shared volumes\n+\n+[DOCKER-793](https://smartos.org/bugview/DOCKER-793) implements the first pass\n+for supporting NFS shared volumes. The NFS shared volumes feature is described\n+in details by its corresponding [RFD\n+document](https://github.com/joyent/rfd/blob/master/rfd/0026/README.md).\n+\n+To enable support for NFS shared volumes in Triton, run the following command\n+line from the headnode:\n+\n+```\n+sdcadm experimental volapi\n+```\n+\n+This command will create a new core zone that runs the VOLAPI service, which\n+implements the Volumes API. It will also enable the\n+`experimental_nfs_shared_volumes` metadata property in SAPI.\n+\n+At this point, all `docker volume` commands are supported but only for the\n+`'tritonnfs'` volume driver, which provies support for NFS shared volumes. Note\n+that the `'tritonnfs'` volume driver needs to be specified in the `docker volume\n+create` command for it to work.","path":"docs/api/features/volumes.md","position":26,"original_position":26,"commit_id":"158d067a5fd6fecf56e9bd6b5c04dc49d2d9b138","original_commit_id":"158d067a5fd6fecf56e9bd6b5c04dc49d2d9b138","user":{"login":"misterdjules","id":811047,"avatar_url":"https://avatars.githubusercontent.com/u/811047?v=3","gravatar_id":"","url":"https://api.github.com/users/misterdjules","html_url":"https://github.com/misterdjules","followers_url":"https://api.github.com/users/misterdjules/followers","following_url":"https://api.github.com/users/misterdjules/following{/other_user}","gists_url":"https://api.github.com/users/misterdjules/gists{/gist_id}","starred_url":"https://api.github.com/users/misterdjules/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/misterdjules/subscriptions","organizations_url":"https://api.github.com/users/misterdjules/orgs","repos_url":"https://api.github.com/users/misterdjules/repos","events_url":"https://api.github.com/users/misterdjules/events{/privacy}","received_events_url":"https://api.github.com/users/misterdjules/received_events","type":"User","site_admin":false},"body":"Good point, RFD states:\r\n\r\n> The tritonnfs driver is the default driver on Triton\r\n\r\nwhereas my thought was that in order to avoid confusion between docker/dockers' default volume driver and a default driver with a different behavior, we'd require users to specify `tritonnfs`. If that doesn't make sense, I'll make `tritonnfs` be the default driver on Triton.\r\n\r\nThanks for bringing that up!","created_at":"2016-04-13T21:06:07Z","updated_at":"2016-04-13T21:06:07Z","html_url":"https://github.com/joyent/sdc-docker/pull/78#discussion_r59625512","pull_request_url":"https://api.github.com/repos/joyent/sdc-docker/pulls/78","_links":{"self":{"href":"https://api.github.com/repos/joyent/sdc-docker/pulls/comments/59625512"},"html":{"href":"https://github.com/joyent/sdc-docker/pull/78#discussion_r59625512"},"pull_request":{"href":"https://api.github.com/repos/joyent/sdc-docker/pulls/78"}}},"pull_request":{"url":"https://api.github.com/repos/joyent/sdc-docker/pulls/78","id":66383246,"html_url":"https://github.com/joyent/sdc-docker/pull/78","diff_url":"https://github.com/joyent/sdc-docker/pull/78.diff","patch_url":"https://github.com/joyent/sdc-docker/pull/78.patch","issue_url":"https://api.github.com/repos/joyent/sdc-docker/issues/78","number":78,"state":"open","locked":false,"title":"DOCKER-793: First pass for NFS shared volumes","user":{"login":"misterdjules","id":811047,"avatar_url":"https://avatars.githubusercontent.com/u/811047?v=3","gravatar_id":"","url":"https://api.github.com/users/misterdjules","html_url":"https://github.com/misterdjules","followers_url":"https://api.github.com/users/misterdjules/followers","following_url":"https://api.github.com/users/misterdjules/following{/other_user}","gists_url":"https://api.github.com/users/misterdjules/gists{/gist_id}","starred_url":"https://api.github.com/users/misterdjules/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/misterdjules/subscriptions","organizations_url":"https://api.github.com/users/misterdjules/orgs","repos_url":"https://api.github.com/users/misterdjules/repos","events_url":"https://api.github.com/users/misterdjules/events{/privacy}","received_events_url":"https://api.github.com/users/misterdjules/received_events","type":"User","site_admin":false},"body":"As indicated by the title of this PR, this is a first pass so that we can enable experimental support for NFS shared volumes at least in COAL, and hopefully in nightly. There's a lot of naive assumptions that are in place and that will be addressed by follow-up changes, but the goal is really to get the ball rolling behind a feature flag. I would encourage reviewers to not focus on edge cases but rather on the overall design of how this experimental feature is implemented.\r\n\r\nWhen the experimental feature that this PR provides is enabled, it depends on changes in several other repositories like node-sdc-clients, a new sdc-volapi repository, sdcadm, mountain-gorilla, etc. but they should essentially have no impact when the feature is disabled, which is the default.\r\n\r\nTests that have been added are written to pass when the experimental feature is disabled. Thus, these changes could land independently of the rest of the changes needed to support NFS shared volumes.","created_at":"2016-04-13T20:08:44Z","updated_at":"2016-04-13T21:06:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ba7393f7906756da03a8e6fd9883c79eee417c66","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/joyent/sdc-docker/pulls/78/commits","review_comments_url":"https://api.github.com/repos/joyent/sdc-docker/pulls/78/comments","review_comment_url":"https://api.github.com/repos/joyent/sdc-docker/pulls/comments{/number}","comments_url":"https://api.github.com/repos/joyent/sdc-docker/issues/78/comments","statuses_url":"https://api.github.com/repos/joyent/sdc-docker/statuses/158d067a5fd6fecf56e9bd6b5c04dc49d2d9b138","head":{"label":"misterdjules:tritonnfs-proto","ref":"tritonnfs-proto","sha":"158d067a5fd6fecf56e9bd6b5c04dc49d2d9b138","user":{"login":"misterdjules","id":811047,"avatar_url":"https://avatars.githubusercontent.com/u/811047?v=3","gravatar_id":"","url":"https://api.github.com/users/misterdjules","html_url":"https://github.com/misterdjules","followers_url":"https://api.github.com/users/misterdjules/followers","following_url":"https://api.github.com/users/misterdjules/following{/other_user}","gists_url":"https://api.github.com/users/misterdjules/gists{/gist_id}","starred_url":"https://api.github.com/users/misterdjules/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/misterdjules/subscriptions","organizations_url":"https://api.github.com/users/misterdjules/orgs","repos_url":"https://api.github.com/users/misterdjules/repos","events_url":"https://api.github.com/users/misterdjules/events{/privacy}","received_events_url":"https://api.github.com/users/misterdjules/received_events","type":"User","site_admin":false},"repo":{"id":38907845,"name":"sdc-docker","full_name":"misterdjules/sdc-docker","owner":{"login":"misterdjules","id":811047,"avatar_url":"https://avatars.githubusercontent.com/u/811047?v=3","gravatar_id":"","url":"https://api.github.com/users/misterdjules","html_url":"https://github.com/misterdjules","followers_url":"https://api.github.com/users/misterdjules/followers","following_url":"https://api.github.com/users/misterdjules/following{/other_user}","gists_url":"https://api.github.com/users/misterdjules/gists{/gist_id}","starred_url":"https://api.github.com/users/misterdjules/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/misterdjules/subscriptions","organizations_url":"https://api.github.com/users/misterdjules/orgs","repos_url":"https://api.github.com/users/misterdjules/repos","events_url":"https://api.github.com/users/misterdjules/events{/privacy}","received_events_url":"https://api.github.com/users/misterdjules/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/misterdjules/sdc-docker","description":"Docker Engine for SmartDataCenter","fork":true,"url":"https://api.github.com/repos/misterdjules/sdc-docker","forks_url":"https://api.github.com/repos/misterdjules/sdc-docker/forks","keys_url":"https://api.github.com/repos/misterdjules/sdc-docker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/misterdjules/sdc-docker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/misterdjules/sdc-docker/teams","hooks_url":"https://api.github.com/repos/misterdjules/sdc-docker/hooks","issue_events_url":"https://api.github.com/repos/misterdjules/sdc-docker/issues/events{/number}","events_url":"https://api.github.com/repos/misterdjules/sdc-docker/events","assignees_url":"https://api.github.com/repos/misterdjules/sdc-docker/assignees{/user}","branches_url":"https://api.github.com/repos/misterdjules/sdc-docker/branches{/branch}","tags_url":"https://api.github.com/repos/misterdjules/sdc-docker/tags","blobs_url":"https://api.github.com/repos/misterdjules/sdc-docker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/misterdjules/sdc-docker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/misterdjules/sdc-docker/git/refs{/sha}","trees_url":"https://api.github.com/repos/misterdjules/sdc-docker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/misterdjules/sdc-docker/statuses/{sha}","languages_url":"https://api.github.com/repos/misterdjules/sdc-docker/languages","stargazers_url":"https://api.github.com/repos/misterdjules/sdc-docker/stargazers","contributors_url":"https://api.github.com/repos/misterdjules/sdc-docker/contributors","subscribers_url":"https://api.github.com/repos/misterdjules/sdc-docker/subscribers","subscription_url":"https://api.github.com/repos/misterdjules/sdc-docker/subscription","commits_url":"https://api.github.com/repos/misterdjules/sdc-docker/commits{/sha}","git_commits_url":"https://api.github.com/repos/misterdjules/sdc-docker/git/commits{/sha}","comments_url":"https://api.github.com/repos/misterdjules/sdc-docker/comments{/number}","issue_comment_url":"https://api.github.com/repos/misterdjules/sdc-docker/issues/comments{/number}","contents_url":"https://api.github.com/repos/misterdjules/sdc-docker/contents/{+path}","compare_url":"https://api.github.com/repos/misterdjules/sdc-docker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/misterdjules/sdc-docker/merges","archive_url":"https://api.github.com/repos/misterdjules/sdc-docker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/misterdjules/sdc-docker/downloads","issues_url":"https://api.github.com/repos/misterdjules/sdc-docker/issues{/number}","pulls_url":"https://api.github.com/repos/misterdjules/sdc-docker/pulls{/number}","milestones_url":"https://api.github.com/repos/misterdjules/sdc-docker/milestones{/number}","notifications_url":"https://api.github.com/repos/misterdjules/sdc-docker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/misterdjules/sdc-docker/labels{/name}","releases_url":"https://api.github.com/repos/misterdjules/sdc-docker/releases{/id}","deployments_url":"https://api.github.com/repos/misterdjules/sdc-docker/deployments","created_at":"2015-07-11T00:32:12Z","updated_at":"2015-07-11T00:32:12Z","pushed_at":"2016-04-13T20:01:36Z","git_url":"git://github.com/misterdjules/sdc-docker.git","ssh_url":"git@github.com:misterdjules/sdc-docker.git","clone_url":"https://github.com/misterdjules/sdc-docker.git","svn_url":"https://github.com/misterdjules/sdc-docker","homepage":null,"size":2109,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","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":"joyent:master","ref":"master","sha":"a41601e76a46c9fe650c222c6c54620552a6aa49","user":{"login":"joyent","id":10161,"avatar_url":"https://avatars.githubusercontent.com/u/10161?v=3","gravatar_id":"","url":"https://api.github.com/users/joyent","html_url":"https://github.com/joyent","followers_url":"https://api.github.com/users/joyent/followers","following_url":"https://api.github.com/users/joyent/following{/other_user}","gists_url":"https://api.github.com/users/joyent/gists{/gist_id}","starred_url":"https://api.github.com/users/joyent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joyent/subscriptions","organizations_url":"https://api.github.com/users/joyent/orgs","repos_url":"https://api.github.com/users/joyent/repos","events_url":"https://api.github.com/users/joyent/events{/privacy}","received_events_url":"https://api.github.com/users/joyent/received_events","type":"Organization","site_admin":false},"repo":{"id":25838887,"name":"sdc-docker","full_name":"joyent/sdc-docker","owner":{"login":"joyent","id":10161,"avatar_url":"https://avatars.githubusercontent.com/u/10161?v=3","gravatar_id":"","url":"https://api.github.com/users/joyent","html_url":"https://github.com/joyent","followers_url":"https://api.github.com/users/joyent/followers","following_url":"https://api.github.com/users/joyent/following{/other_user}","gists_url":"https://api.github.com/users/joyent/gists{/gist_id}","starred_url":"https://api.github.com/users/joyent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joyent/subscriptions","organizations_url":"https://api.github.com/users/joyent/orgs","repos_url":"https://api.github.com/users/joyent/repos","events_url":"https://api.github.com/users/joyent/events{/privacy}","received_events_url":"https://api.github.com/users/joyent/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/joyent/sdc-docker","description":"Docker Engine for SmartDataCenter","fork":false,"url":"https://api.github.com/repos/joyent/sdc-docker","forks_url":"https://api.github.com/repos/joyent/sdc-docker/forks","keys_url":"https://api.github.com/repos/joyent/sdc-docker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/joyent/sdc-docker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/joyent/sdc-docker/teams","hooks_url":"https://api.github.com/repos/joyent/sdc-docker/hooks","issue_events_url":"https://api.github.com/repos/joyent/sdc-docker/issues/events{/number}","events_url":"https://api.github.com/repos/joyent/sdc-docker/events","assignees_url":"https://api.github.com/repos/joyent/sdc-docker/assignees{/user}","branches_url":"https://api.github.com/repos/joyent/sdc-docker/branches{/branch}","tags_url":"https://api.github.com/repos/joyent/sdc-docker/tags","blobs_url":"https://api.github.com/repos/joyent/sdc-docker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/joyent/sdc-docker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/joyent/sdc-docker/git/refs{/sha}","trees_url":"https://api.github.com/repos/joyent/sdc-docker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/joyent/sdc-docker/statuses/{sha}","languages_url":"https://api.github.com/repos/joyent/sdc-docker/languages","stargazers_url":"https://api.github.com/repos/joyent/sdc-docker/stargazers","contributors_url":"https://api.github.com/repos/joyent/sdc-docker/contributors","subscribers_url":"https://api.github.com/repos/joyent/sdc-docker/subscribers","subscription_url":"https://api.github.com/repos/joyent/sdc-docker/subscription","commits_url":"https://api.github.com/repos/joyent/sdc-docker/commits{/sha}","git_commits_url":"https://api.github.com/repos/joyent/sdc-docker/git/commits{/sha}","comments_url":"https://api.github.com/repos/joyent/sdc-docker/comments{/number}","issue_comment_url":"https://api.github.com/repos/joyent/sdc-docker/issues/comments{/number}","contents_url":"https://api.github.com/repos/joyent/sdc-docker/contents/{+path}","compare_url":"https://api.github.com/repos/joyent/sdc-docker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/joyent/sdc-docker/merges","archive_url":"https://api.github.com/repos/joyent/sdc-docker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/joyent/sdc-docker/downloads","issues_url":"https://api.github.com/repos/joyent/sdc-docker/issues{/number}","pulls_url":"https://api.github.com/repos/joyent/sdc-docker/pulls{/number}","milestones_url":"https://api.github.com/repos/joyent/sdc-docker/milestones{/number}","notifications_url":"https://api.github.com/repos/joyent/sdc-docker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/joyent/sdc-docker/labels{/name}","releases_url":"https://api.github.com/repos/joyent/sdc-docker/releases{/id}","deployments_url":"https://api.github.com/repos/joyent/sdc-docker/deployments","created_at":"2014-10-27T20:59:24Z","updated_at":"2016-03-26T05:54:17Z","pushed_at":"2016-04-13T20:08:45Z","git_url":"git://github.com/joyent/sdc-docker.git","ssh_url":"git@github.com:joyent/sdc-docker.git","clone_url":"https://github.com/joyent/sdc-docker.git","svn_url":"https://github.com/joyent/sdc-docker","homepage":null,"size":2301,"stargazers_count":154,"watchers_count":154,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":32,"mirror_url":null,"open_issues_count":12,"forks":32,"open_issues":12,"watchers":154,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/joyent/sdc-docker/pulls/78"},"html":{"href":"https://github.com/joyent/sdc-docker/pull/78"},"issue":{"href":"https://api.github.com/repos/joyent/sdc-docker/issues/78"},"comments":{"href":"https://api.github.com/repos/joyent/sdc-docker/issues/78/comments"},"review_comments":{"href":"https://api.github.com/repos/joyent/sdc-docker/pulls/78/comments"},"review_comment":{"href":"https://api.github.com/repos/joyent/sdc-docker/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/joyent/sdc-docker/pulls/78/commits"},"statuses":{"href":"https://api.github.com/repos/joyent/sdc-docker/statuses/158d067a5fd6fecf56e9bd6b5c04dc49d2d9b138"}}}}