{"action":"created","issue":{"url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2409","labels_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2409/labels{/name}","comments_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2409/comments","events_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2409/events","html_url":"https://github.com/ClusterHQ/flocker/pull/2409","id":124827761,"number":2409,"title":"[FLOC-3795] Use symlinks for the shared paths.","user":{"login":"sarum90","id":604129,"avatar_url":"https://avatars.githubusercontent.com/u/604129?v=3","gravatar_id":"","url":"https://api.github.com/users/sarum90","html_url":"https://github.com/sarum90","followers_url":"https://api.github.com/users/sarum90/followers","following_url":"https://api.github.com/users/sarum90/following{/other_user}","gists_url":"https://api.github.com/users/sarum90/gists{/gist_id}","starred_url":"https://api.github.com/users/sarum90/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarum90/subscriptions","organizations_url":"https://api.github.com/users/sarum90/orgs","repos_url":"https://api.github.com/users/sarum90/repos","events_url":"https://api.github.com/users/sarum90/events{/privacy}","received_events_url":"https://api.github.com/users/sarum90/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2016-01-04T20:00:52Z","updated_at":"2016-01-19T22:46:04Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ClusterHQ/flocker/pulls/2409","html_url":"https://github.com/ClusterHQ/flocker/pull/2409","diff_url":"https://github.com/ClusterHQ/flocker/pull/2409.diff","patch_url":"https://github.com/ClusterHQ/flocker/pull/2409.patch"},"body":"Note that this is not up for merge with master (there needs to be better upgrade testing before it is merged). I'd still like to have the code reviewed before I land it in the branch that I am using to stage and test these changes before looking to pull them all to master.\r\n\r\nChanges the dataset agent to create mountpoints in /var/flocker/mounts, and then atomically create a symlink in /flocker/v2 once they are ready for use. This enables atomic creation and deletion of the paths that flocker hands out to its client. This aids in protecting those agents from being able to successfully write to those paths, but have the writes not persist to the backing volume.\r\n\r\nAdds 2 new IStateChanges that facilitate the symlinking and the unlink of the symlink.\r\n\r\nCombined with the bind mounting done in a previous PR (if shadow mounting is set up), this makes it so that docker cannot even start a container with a volume in /flocker/v2 unless flocker has set up a dataset there."},"comment":{"url":"https://api.github.com/repos/ClusterHQ/flocker/issues/comments/173012583","html_url":"https://github.com/ClusterHQ/flocker/pull/2409#issuecomment-173012583","issue_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2409","id":173012583,"user":{"login":"itamarst","id":3266662,"avatar_url":"https://avatars.githubusercontent.com/u/3266662?v=3","gravatar_id":"","url":"https://api.github.com/users/itamarst","html_url":"https://github.com/itamarst","followers_url":"https://api.github.com/users/itamarst/followers","following_url":"https://api.github.com/users/itamarst/following{/other_user}","gists_url":"https://api.github.com/users/itamarst/gists{/gist_id}","starred_url":"https://api.github.com/users/itamarst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itamarst/subscriptions","organizations_url":"https://api.github.com/users/itamarst/orgs","repos_url":"https://api.github.com/users/itamarst/repos","events_url":"https://api.github.com/users/itamarst/events{/privacy}","received_events_url":"https://api.github.com/users/itamarst/received_events","type":"User","site_admin":false},"created_at":"2016-01-19T22:46:04Z","updated_at":"2016-01-19T22:46:04Z","body":"OK, address and merge when happy."}}