GitHub PullRequestReviewCommentEvent at 2014-07-16 15:57:31
Repository: kubernetes
Actor: thockin
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/15006470","id":15006470,"diff_hunk":"@@ -69,6 +70,7 @@ type Kubelet struct {\n \tHTTPCheckFrequency time.Duration\n \tpullLock           sync.Mutex\n \tHealthChecker      HealthChecker\n+\textVolumes\t   map[string]volumes.Interface","path":"pkg/kubelet/kubelet.go","position":12,"original_position":12,"commit_id":"a98f4605032d2ecec641c4fd172597cacb19c7e8","original_commit_id":"a98f4605032d2ecec641c4fd172597cacb19c7e8","user":{"login":"thockin","id":5595220,"avatar_url":"https://avatars.githubusercontent.com/u/5595220?","gravatar_id":"6ae5ac8e0b7147021a4eaa2b9535f58d","url":"https://api.github.com/users/thockin","html_url":"https://github.com/thockin","followers_url":"https://api.github.com/users/thockin/followers","following_url":"https://api.github.com/users/thockin/following{/other_user}","gists_url":"https://api.github.com/users/thockin/gists{/gist_id}","starred_url":"https://api.github.com/users/thockin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thockin/subscriptions","organizations_url":"https://api.github.com/users/thockin/orgs","repos_url":"https://api.github.com/users/thockin/repos","events_url":"https://api.github.com/users/thockin/events{/privacy}","received_events_url":"https://api.github.com/users/thockin/received_events","type":"User","site_admin":false},"body":"On Wed, Jul 16, 2014 at 7:28 AM, Clayton Coleman <notifications@github.com>\nwrote:\n\n> In pkg/kubelet/kubelet.go:\n>\n> > @@ -69,6 +70,7 @@ type Kubelet struct {\n> >  \tHTTPCheckFrequency time.Duration\n> >  \tpullLock           sync.Mutex\n> >  \tHealthChecker      HealthChecker\n> > +\textVolumes\t   map[string]volumes.Interface\n>\n> I was missing the \"mounts shared between containers\" case, which you're\n> right needs coordination around a shared refcount. When you say \"foobar\"\n> for the shared mount name, is that a global unique name for that resource\n> such that two pods that happen to be scheduled on the same minion have\n> access to it?\n>\n\nYes.  Obviously \"foobar\" is just a placeholder for a unique name. :)\n\n\n> I *think* it's possible to isolate volume state from container state\n> changes as long as you can synchronize on the refcount (file, memory, or\n> otherwise), but you would as you say have state squirreled away on disk\n> that allows you to reconstruct their original assignees and tie them back\n> (like the docker name does for containers). One benefit of having a state\n> separation is that it potentially applies to other constructs like ports\n> and network devices - you need to block and linearize changes to certain\n> resources, but you can still drive it via a reconciliation loop. Of course\n> the reconciliation loop today still has the constraint that the longest\n> running container change still blocks the next loop iteration, so the more\n> you block the more likely you are to need to decompose the reconciliation\n> loop...\n>\n> At some point, making pod creation depend on a set of resources being\n> allocated starts to sound like the same problem at the higher apiserver\n> level when you want to wait for a set of containers to be started before\n> something else happens - you should be declarative and assume asynchronous\n> change, vs imperative and synchronously executing. But I don't have a good\n> feel for it yet so just take that as a comment on the pattern rather than a\n> concrete point.\n>\n> Snapshotting and checkpointing the container state seems to be justified\n> for other reasons than to isolate the kubelet from transient problems - so\n> that's a place to start.\n>\n\nDamn, I was hoping you had a brilliant idea that was so obviously right\nthat I just didn't see it.\n\nI don't think this should block Danny, at this point, but it's something we\ndo need to think about and come up with a plan.","created_at":"2014-07-16T15:57:31Z","updated_at":"2014-07-16T15:57:31Z","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/452#discussion_r15006470","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/15006470"},"html":{"href":"https://github.com/GoogleCloudPlatform/kubernetes/pull/452#discussion_r15006470"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452","id":18385437,"html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/452","diff_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/452.diff","patch_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/452.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/452","number":452,"state":"open","title":"Initial framework for external volumes. ","user":{"login":"Sarsate","id":3740548,"avatar_url":"https://avatars.githubusercontent.com/u/3740548?","gravatar_id":"eacb6c1e76f7e8df4c65ee4b9fa7dae5","url":"https://api.github.com/users/Sarsate","html_url":"https://github.com/Sarsate","followers_url":"https://api.github.com/users/Sarsate/followers","following_url":"https://api.github.com/users/Sarsate/following{/other_user}","gists_url":"https://api.github.com/users/Sarsate/gists{/gist_id}","starred_url":"https://api.github.com/users/Sarsate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sarsate/subscriptions","organizations_url":"https://api.github.com/users/Sarsate/orgs","repos_url":"https://api.github.com/users/Sarsate/repos","events_url":"https://api.github.com/users/Sarsate/events{/privacy}","received_events_url":"https://api.github.com/users/Sarsate/received_events","type":"User","site_admin":false},"body":"Lays the framework for external volume mounts, preparing for \r\npersistent disks and other volumes.\r\n\r\nCurrently, it only supports host directory mounts.\r\n\r\nModifies the API to support host directory mounts from Volumes\r\ninstead of VolumeMounts.\r\n","created_at":"2014-07-15T02:08:59Z","updated_at":"2014-07-16T15:57:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"90b3e74e6fae59f8f36ddf7cd9895fb1089f1225","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/{number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/452/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/a98f4605032d2ecec641c4fd172597cacb19c7e8","head":{"label":"Sarsate:extvol-hostdir","ref":"extvol-hostdir","sha":"a98f4605032d2ecec641c4fd172597cacb19c7e8","user":{"login":"Sarsate","id":3740548,"avatar_url":"https://avatars.githubusercontent.com/u/3740548?","gravatar_id":"eacb6c1e76f7e8df4c65ee4b9fa7dae5","url":"https://api.github.com/users/Sarsate","html_url":"https://github.com/Sarsate","followers_url":"https://api.github.com/users/Sarsate/followers","following_url":"https://api.github.com/users/Sarsate/following{/other_user}","gists_url":"https://api.github.com/users/Sarsate/gists{/gist_id}","starred_url":"https://api.github.com/users/Sarsate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sarsate/subscriptions","organizations_url":"https://api.github.com/users/Sarsate/orgs","repos_url":"https://api.github.com/users/Sarsate/repos","events_url":"https://api.github.com/users/Sarsate/events{/privacy}","received_events_url":"https://api.github.com/users/Sarsate/received_events","type":"User","site_admin":false},"repo":{"id":21047302,"name":"kubernetes","full_name":"Sarsate/kubernetes","owner":{"login":"Sarsate","id":3740548,"avatar_url":"https://avatars.githubusercontent.com/u/3740548?","gravatar_id":"eacb6c1e76f7e8df4c65ee4b9fa7dae5","url":"https://api.github.com/users/Sarsate","html_url":"https://github.com/Sarsate","followers_url":"https://api.github.com/users/Sarsate/followers","following_url":"https://api.github.com/users/Sarsate/following{/other_user}","gists_url":"https://api.github.com/users/Sarsate/gists{/gist_id}","starred_url":"https://api.github.com/users/Sarsate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sarsate/subscriptions","organizations_url":"https://api.github.com/users/Sarsate/orgs","repos_url":"https://api.github.com/users/Sarsate/repos","events_url":"https://api.github.com/users/Sarsate/events{/privacy}","received_events_url":"https://api.github.com/users/Sarsate/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Sarsate/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/Sarsate/kubernetes","forks_url":"https://api.github.com/repos/Sarsate/kubernetes/forks","keys_url":"https://api.github.com/repos/Sarsate/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Sarsate/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Sarsate/kubernetes/teams","hooks_url":"https://api.github.com/repos/Sarsate/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/Sarsate/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/Sarsate/kubernetes/events","assignees_url":"https://api.github.com/repos/Sarsate/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/Sarsate/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/Sarsate/kubernetes/tags","blobs_url":"https://api.github.com/repos/Sarsate/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Sarsate/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Sarsate/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/Sarsate/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Sarsate/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/Sarsate/kubernetes/languages","stargazers_url":"https://api.github.com/repos/Sarsate/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/Sarsate/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/Sarsate/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/Sarsate/kubernetes/subscription","commits_url":"https://api.github.com/repos/Sarsate/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/Sarsate/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/Sarsate/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/Sarsate/kubernetes/issues/comments/{number}","contents_url":"https://api.github.com/repos/Sarsate/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/Sarsate/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Sarsate/kubernetes/merges","archive_url":"https://api.github.com/repos/Sarsate/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Sarsate/kubernetes/downloads","issues_url":"https://api.github.com/repos/Sarsate/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/Sarsate/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/Sarsate/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/Sarsate/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Sarsate/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/Sarsate/kubernetes/releases{/id}","created_at":"2014-06-20T18:00:57Z","updated_at":"2014-07-01T18:01:06Z","pushed_at":"2014-07-15T18:15:24Z","git_url":"git://github.com/Sarsate/kubernetes.git","ssh_url":"git@github.com:Sarsate/kubernetes.git","clone_url":"https://github.com/Sarsate/kubernetes.git","svn_url":"https://github.com/Sarsate/kubernetes","homepage":null,"size":6154,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:master","ref":"master","sha":"3b6f201770e98a4c95a9a70aeb74082c545a773d","user":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?","gravatar_id":"3db02c6238c8b1fb844871330744ec5d","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"name":"kubernetes","full_name":"GoogleCloudPlatform/kubernetes","owner":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?","gravatar_id":"3db02c6238c8b1fb844871330744ec5d","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/kubernetes","description":"Container Cluster Manager","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments/{number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/releases{/id}","created_at":"2014-06-06T22:56:04Z","updated_at":"2014-07-16T15:57:29Z","pushed_at":"2014-07-16T05:12:09Z","git_url":"git://github.com/GoogleCloudPlatform/kubernetes.git","ssh_url":"git@github.com:GoogleCloudPlatform/kubernetes.git","clone_url":"https://github.com/GoogleCloudPlatform/kubernetes.git","svn_url":"https://github.com/GoogleCloudPlatform/kubernetes","homepage":null,"size":13684,"stargazers_count":2470,"watchers_count":2470,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":271,"mirror_url":null,"open_issues_count":102,"forks":271,"open_issues":102,"watchers":2470,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452"},"html":{"href":"https://github.com/GoogleCloudPlatform/kubernetes/pull/452"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/452"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/452/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/452/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/a98f4605032d2ecec641c4fd172597cacb19c7e8"}}}}