{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/comments/117596447","pull_request_review_id":39322527,"id":117596447,"diff_hunk":"@@ -17,14 +17,106 @@ limitations under the License.\n package server\n \n import (\n-\t\"errors\"\n+\t\"fmt\"\n+\t\"time\"\n \n+\t\"github.com/golang/glog\"\n \t\"golang.org/x/net/context\"\n+\t\"golang.org/x/sys/unix\"\n+\n+\t\"github.com/containerd/containerd/api/services/execution\"\n \n \t\"k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/runtime\"\n+\n+\t\"github.com/kubernetes-incubator/cri-containerd/pkg/metadata\"\n )\n \n+// stopCheckPollInterval is the the interval to check whether a container\n+// is stopped successfully.\n+const stopCheckPollInterval = 100 * time.Millisecond\n+\n // StopContainer stops a running container with a grace period (i.e., timeout).\n-func (c *criContainerdService) StopContainer(ctx context.Context, r *runtime.StopContainerRequest) (*runtime.StopContainerResponse, error) {\n-\treturn nil, errors.New(\"not implemented\")\n+func (c *criContainerdService) StopContainer(ctx context.Context, r *runtime.StopContainerRequest) (retRes *runtime.StopContainerResponse, retErr error) {\n+\tglog.V(2).Infof(\"StopContainer for %q with timeout %d (s)\", r.GetContainerId(), r.GetTimeout())\n+\tdefer func() {\n+\t\tif retErr == nil {\n+\t\t\tglog.V(2).Infof(\"StopContainer returns successfully\")\n+\t\t}\n+\t}()\n+\n+\t// Get container config from container store.\n+\tmeta, err := c.containerStore.Get(r.GetContainerId())\n+\tif err != nil {\n+\t\treturn nil, fmt.Errorf(\"failed to find container %q: %v\", r.GetContainerId(), err)\n+\t}\n+\tid := r.GetContainerId()\n+\n+\t// Return without error if container is not running. This makes sure that\n+\t// stop only takes real action after the container is started.\n+\tif meta.State() != runtime.ContainerState_CONTAINER_RUNNING {\n+\t\treturn &runtime.StopContainerResponse{}, nil\n+\t}\n+\n+\t// TODO(random-liu): [P1] Get stop signal from image config.\n+\tstopSignal := unix.SIGTERM\n+\tglog.V(2).Infof(\"Stop container %q with signal %v\", id, stopSignal)\n+\t_, err = c.containerService.Kill(ctx, &execution.KillRequest{ID: id, Signal: uint32(stopSignal)})\n+\tif err != nil && !isContainerdContainerNotExistError(err) {\n+\t\treturn nil, fmt.Errorf(\"failed to stop container %q: %v\", id, err)\n+\t}\n+\tif isContainerdContainerNotExistError(err) {\n+\t\treturn &runtime.StopContainerResponse{}, nil\n+\t}\n+\n+\terr = c.waitContainerStop(id, time.Duration(r.GetTimeout())*time.Second)\n+\tif err == nil {\n+\t\treturn &runtime.StopContainerResponse{}, nil\n+\t}\n+\tglog.Errorf(\"Stop container %q timed out: %v\", id, err)\n+\n+\tglog.V(2).Infof(\"Delete container from containerd %q\", id)\n+\t_, err = c.containerService.Delete(ctx, &execution.DeleteRequest{ID: id})\n+\tif err != nil && !isContainerdContainerNotExistError(err) {\n+\t\treturn nil, fmt.Errorf(\"failed to delete container %q: %v\", id, err)\n+\t}\n+\tif isContainerdContainerNotExistError(err) {\n+\t\treturn &runtime.StopContainerResponse{}, nil\n+\t}\n+\n+\t// Wait forever until container stop is observed by event monitor.","path":"pkg/server/container_stop.go","position":null,"original_position":73,"commit_id":"e1e30b171b670889ef07ca53d522fa08d6f5e82c","original_commit_id":"a2e6d850749e6554b55f6a21a20309ab18b1db93","user":{"login":"Random-Liu","id":5821883,"avatar_url":"https://avatars0.githubusercontent.com/u/5821883?v=3","gravatar_id":"","url":"https://api.github.com/users/Random-Liu","html_url":"https://github.com/Random-Liu","followers_url":"https://api.github.com/users/Random-Liu/followers","following_url":"https://api.github.com/users/Random-Liu/following{/other_user}","gists_url":"https://api.github.com/users/Random-Liu/gists{/gist_id}","starred_url":"https://api.github.com/users/Random-Liu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Random-Liu/subscriptions","organizations_url":"https://api.github.com/users/Random-Liu/orgs","repos_url":"https://api.github.com/users/Random-Liu/repos","events_url":"https://api.github.com/users/Random-Liu/events{/privacy}","received_events_url":"https://api.github.com/users/Random-Liu/received_events","type":"User","site_admin":false},"body":"Done. Set default timeout to 2 minutes.","created_at":"2017-05-20T00:25:00Z","updated_at":"2017-05-20T00:25:00Z","html_url":"https://github.com/kubernetes-incubator/cri-containerd/pull/22#discussion_r117596447","pull_request_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22","_links":{"self":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/comments/117596447"},"html":{"href":"https://github.com/kubernetes-incubator/cri-containerd/pull/22#discussion_r117596447"},"pull_request":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22","id":118655952,"html_url":"https://github.com/kubernetes-incubator/cri-containerd/pull/22","diff_url":"https://github.com/kubernetes-incubator/cri-containerd/pull/22.diff","patch_url":"https://github.com/kubernetes-incubator/cri-containerd/pull/22.patch","issue_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues/22","number":22,"state":"open","locked":false,"title":"Add container implementation","user":{"login":"Random-Liu","id":5821883,"avatar_url":"https://avatars0.githubusercontent.com/u/5821883?v=3","gravatar_id":"","url":"https://api.github.com/users/Random-Liu","html_url":"https://github.com/Random-Liu","followers_url":"https://api.github.com/users/Random-Liu/followers","following_url":"https://api.github.com/users/Random-Liu/following{/other_user}","gists_url":"https://api.github.com/users/Random-Liu/gists{/gist_id}","starred_url":"https://api.github.com/users/Random-Liu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Random-Liu/subscriptions","organizations_url":"https://api.github.com/users/Random-Liu/orgs","repos_url":"https://api.github.com/users/Random-Liu/repos","events_url":"https://api.github.com/users/Random-Liu/events{/privacy}","received_events_url":"https://api.github.com/users/Random-Liu/received_events","type":"User","site_admin":false},"body":"Based on https://github.com/kubernetes-incubator/cri-containerd/pull/9 and https://github.com/kubernetes-incubator/cri-containerd/pull/19.\r\n\r\nPlease only review the last 2 commits. Will add unit test after the code looks good overall.\r\n\r\n@kubernetes-incubator/maintainers-cri-containerd ","created_at":"2017-05-02T21:58:17Z","updated_at":"2017-05-20T00:25:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9cd406fc360a5046719f3e5e1294be4b18087af2","assignee":{"login":"yujuhong","id":10524058,"avatar_url":"https://avatars2.githubusercontent.com/u/10524058?v=3","gravatar_id":"","url":"https://api.github.com/users/yujuhong","html_url":"https://github.com/yujuhong","followers_url":"https://api.github.com/users/yujuhong/followers","following_url":"https://api.github.com/users/yujuhong/following{/other_user}","gists_url":"https://api.github.com/users/yujuhong/gists{/gist_id}","starred_url":"https://api.github.com/users/yujuhong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yujuhong/subscriptions","organizations_url":"https://api.github.com/users/yujuhong/orgs","repos_url":"https://api.github.com/users/yujuhong/repos","events_url":"https://api.github.com/users/yujuhong/events{/privacy}","received_events_url":"https://api.github.com/users/yujuhong/received_events","type":"User","site_admin":false},"assignees":[{"login":"yujuhong","id":10524058,"avatar_url":"https://avatars2.githubusercontent.com/u/10524058?v=3","gravatar_id":"","url":"https://api.github.com/users/yujuhong","html_url":"https://github.com/yujuhong","followers_url":"https://api.github.com/users/yujuhong/followers","following_url":"https://api.github.com/users/yujuhong/following{/other_user}","gists_url":"https://api.github.com/users/yujuhong/gists{/gist_id}","starred_url":"https://api.github.com/users/yujuhong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yujuhong/subscriptions","organizations_url":"https://api.github.com/users/yujuhong/orgs","repos_url":"https://api.github.com/users/yujuhong/repos","events_url":"https://api.github.com/users/yujuhong/events{/privacy}","received_events_url":"https://api.github.com/users/yujuhong/received_events","type":"User","site_admin":false},{"login":"mikebrow","id":12767641,"avatar_url":"https://avatars3.githubusercontent.com/u/12767641?v=3","gravatar_id":"","url":"https://api.github.com/users/mikebrow","html_url":"https://github.com/mikebrow","followers_url":"https://api.github.com/users/mikebrow/followers","following_url":"https://api.github.com/users/mikebrow/following{/other_user}","gists_url":"https://api.github.com/users/mikebrow/gists{/gist_id}","starred_url":"https://api.github.com/users/mikebrow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikebrow/subscriptions","organizations_url":"https://api.github.com/users/mikebrow/orgs","repos_url":"https://api.github.com/users/mikebrow/repos","events_url":"https://api.github.com/users/mikebrow/events{/privacy}","received_events_url":"https://api.github.com/users/mikebrow/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22/commits","review_comments_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22/comments","review_comment_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues/22/comments","statuses_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/statuses/e1e30b171b670889ef07ca53d522fa08d6f5e82c","head":{"label":"Random-Liu:add-container-implementation","ref":"add-container-implementation","sha":"e1e30b171b670889ef07ca53d522fa08d6f5e82c","user":{"login":"Random-Liu","id":5821883,"avatar_url":"https://avatars0.githubusercontent.com/u/5821883?v=3","gravatar_id":"","url":"https://api.github.com/users/Random-Liu","html_url":"https://github.com/Random-Liu","followers_url":"https://api.github.com/users/Random-Liu/followers","following_url":"https://api.github.com/users/Random-Liu/following{/other_user}","gists_url":"https://api.github.com/users/Random-Liu/gists{/gist_id}","starred_url":"https://api.github.com/users/Random-Liu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Random-Liu/subscriptions","organizations_url":"https://api.github.com/users/Random-Liu/orgs","repos_url":"https://api.github.com/users/Random-Liu/repos","events_url":"https://api.github.com/users/Random-Liu/events{/privacy}","received_events_url":"https://api.github.com/users/Random-Liu/received_events","type":"User","site_admin":false},"repo":{"id":88243482,"name":"cri-containerd","full_name":"Random-Liu/cri-containerd","owner":{"login":"Random-Liu","id":5821883,"avatar_url":"https://avatars0.githubusercontent.com/u/5821883?v=3","gravatar_id":"","url":"https://api.github.com/users/Random-Liu","html_url":"https://github.com/Random-Liu","followers_url":"https://api.github.com/users/Random-Liu/followers","following_url":"https://api.github.com/users/Random-Liu/following{/other_user}","gists_url":"https://api.github.com/users/Random-Liu/gists{/gist_id}","starred_url":"https://api.github.com/users/Random-Liu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Random-Liu/subscriptions","organizations_url":"https://api.github.com/users/Random-Liu/orgs","repos_url":"https://api.github.com/users/Random-Liu/repos","events_url":"https://api.github.com/users/Random-Liu/events{/privacy}","received_events_url":"https://api.github.com/users/Random-Liu/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Random-Liu/cri-containerd","description":"Containerd-based implementation of Kubernetes Container Runtime Interface","fork":true,"url":"https://api.github.com/repos/Random-Liu/cri-containerd","forks_url":"https://api.github.com/repos/Random-Liu/cri-containerd/forks","keys_url":"https://api.github.com/repos/Random-Liu/cri-containerd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Random-Liu/cri-containerd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Random-Liu/cri-containerd/teams","hooks_url":"https://api.github.com/repos/Random-Liu/cri-containerd/hooks","issue_events_url":"https://api.github.com/repos/Random-Liu/cri-containerd/issues/events{/number}","events_url":"https://api.github.com/repos/Random-Liu/cri-containerd/events","assignees_url":"https://api.github.com/repos/Random-Liu/cri-containerd/assignees{/user}","branches_url":"https://api.github.com/repos/Random-Liu/cri-containerd/branches{/branch}","tags_url":"https://api.github.com/repos/Random-Liu/cri-containerd/tags","blobs_url":"https://api.github.com/repos/Random-Liu/cri-containerd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Random-Liu/cri-containerd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Random-Liu/cri-containerd/git/refs{/sha}","trees_url":"https://api.github.com/repos/Random-Liu/cri-containerd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Random-Liu/cri-containerd/statuses/{sha}","languages_url":"https://api.github.com/repos/Random-Liu/cri-containerd/languages","stargazers_url":"https://api.github.com/repos/Random-Liu/cri-containerd/stargazers","contributors_url":"https://api.github.com/repos/Random-Liu/cri-containerd/contributors","subscribers_url":"https://api.github.com/repos/Random-Liu/cri-containerd/subscribers","subscription_url":"https://api.github.com/repos/Random-Liu/cri-containerd/subscription","commits_url":"https://api.github.com/repos/Random-Liu/cri-containerd/commits{/sha}","git_commits_url":"https://api.github.com/repos/Random-Liu/cri-containerd/git/commits{/sha}","comments_url":"https://api.github.com/repos/Random-Liu/cri-containerd/comments{/number}","issue_comment_url":"https://api.github.com/repos/Random-Liu/cri-containerd/issues/comments{/number}","contents_url":"https://api.github.com/repos/Random-Liu/cri-containerd/contents/{+path}","compare_url":"https://api.github.com/repos/Random-Liu/cri-containerd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Random-Liu/cri-containerd/merges","archive_url":"https://api.github.com/repos/Random-Liu/cri-containerd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Random-Liu/cri-containerd/downloads","issues_url":"https://api.github.com/repos/Random-Liu/cri-containerd/issues{/number}","pulls_url":"https://api.github.com/repos/Random-Liu/cri-containerd/pulls{/number}","milestones_url":"https://api.github.com/repos/Random-Liu/cri-containerd/milestones{/number}","notifications_url":"https://api.github.com/repos/Random-Liu/cri-containerd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Random-Liu/cri-containerd/labels{/name}","releases_url":"https://api.github.com/repos/Random-Liu/cri-containerd/releases{/id}","deployments_url":"https://api.github.com/repos/Random-Liu/cri-containerd/deployments","created_at":"2017-04-14T07:18:02Z","updated_at":"2017-04-14T07:08:52Z","pushed_at":"2017-05-20T00:24:31Z","git_url":"git://github.com/Random-Liu/cri-containerd.git","ssh_url":"git@github.com:Random-Liu/cri-containerd.git","clone_url":"https://github.com/Random-Liu/cri-containerd.git","svn_url":"https://github.com/Random-Liu/cri-containerd","homepage":"","size":1757,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"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":"kubernetes-incubator:master","ref":"master","sha":"dea7ed3fcce6c6aacad3efe1bff99d82fb62d7dd","user":{"login":"kubernetes-incubator","id":20862812,"avatar_url":"https://avatars1.githubusercontent.com/u/20862812?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes-incubator","html_url":"https://github.com/kubernetes-incubator","followers_url":"https://api.github.com/users/kubernetes-incubator/followers","following_url":"https://api.github.com/users/kubernetes-incubator/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes-incubator/subscriptions","organizations_url":"https://api.github.com/users/kubernetes-incubator/orgs","repos_url":"https://api.github.com/users/kubernetes-incubator/repos","events_url":"https://api.github.com/users/kubernetes-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes-incubator/received_events","type":"Organization","site_admin":false},"repo":{"id":88211060,"name":"cri-containerd","full_name":"kubernetes-incubator/cri-containerd","owner":{"login":"kubernetes-incubator","id":20862812,"avatar_url":"https://avatars1.githubusercontent.com/u/20862812?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes-incubator","html_url":"https://github.com/kubernetes-incubator","followers_url":"https://api.github.com/users/kubernetes-incubator/followers","following_url":"https://api.github.com/users/kubernetes-incubator/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes-incubator/subscriptions","organizations_url":"https://api.github.com/users/kubernetes-incubator/orgs","repos_url":"https://api.github.com/users/kubernetes-incubator/repos","events_url":"https://api.github.com/users/kubernetes-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes-incubator/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes-incubator/cri-containerd","description":"Containerd-based implementation of Kubernetes Container Runtime Interface","fork":false,"url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd","forks_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/forks","keys_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/teams","hooks_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/hooks","issue_events_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/events","assignees_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/tags","blobs_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/languages","stargazers_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/stargazers","contributors_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/contributors","subscribers_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/subscribers","subscription_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/subscription","commits_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/merges","archive_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/downloads","issues_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/deployments","created_at":"2017-04-13T22:20:24Z","updated_at":"2017-05-19T02:31:55Z","pushed_at":"2017-05-20T00:24:32Z","git_url":"git://github.com/kubernetes-incubator/cri-containerd.git","ssh_url":"git@github.com:kubernetes-incubator/cri-containerd.git","clone_url":"https://github.com/kubernetes-incubator/cri-containerd.git","svn_url":"https://github.com/kubernetes-incubator/cri-containerd","homepage":"","size":1699,"stargazers_count":27,"watchers_count":27,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":14,"forks":11,"open_issues":14,"watchers":27,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22"},"html":{"href":"https://github.com/kubernetes-incubator/cri-containerd/pull/22"},"issue":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues/22"},"comments":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/issues/22/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/pulls/22/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes-incubator/cri-containerd/statuses/e1e30b171b670889ef07ca53d522fa08d6f5e82c"}}}}
{"actor":{"display_login":"Random-Liu"}}