{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments/193855304","pull_request_review_id":126914588,"id":193855304,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5Mzg1NTMwNA==","diff_hunk":"@@ -17,133 +17,248 @@ limitations under the License.\n package lifecycle\n \n import (\n+\t\"fmt\"\n \t\"reflect\"\n+\t\"sort\"\n \t\"testing\"\n \t\"time\"\n \n \t\"github.com/sirupsen/logrus\"\n \n \t\"k8s.io/test-infra/prow/github\"\n+\t\"k8s.io/test-infra/prow/github/fakegithub\"\n )\n \n-type fakeClient struct {\n-\tcommented bool\n-\tadded     []string\n-\tremoved   []string\n-}\n-\n-func (c *fakeClient) CreateComment(owner, repo string, number int, comment string) error {\n-\tc.commented = true\n-\treturn nil\n-}\n-\n-func (c *fakeClient) AddLabel(owner, repo string, number int, label string) error {\n-\tc.added = append(c.added, label)\n-\treturn nil\n-}\n-\n-func (c *fakeClient) RemoveLabel(owner, repo string, number int, label string) error {\n-\tc.removed = append(c.removed, label)\n-\treturn nil\n+func formatLabels(labels ...string) []string {\n+\tr := []string{}\n+\tfor _, l := range labels {\n+\t\tr = append(r, fmt.Sprintf(\"%s/%s#%d:%s\", \"org\", \"repo\", 1, l))\n+\t}\n+\tif len(r) == 0 {\n+\t\treturn nil\n+\t}\n+\treturn r\n }\n \n func TestDeprecatedClose(t *testing.T) {\n-\tfc := &fakeClient{}\n-\tgce := &github.GenericCommentEvent{}\n+\tfc := &fakegithub.FakeClient{\n+\t\tIssues:        make([]github.Issue, 1),\n+\t\tIssueComments: make(map[int][]github.IssueComment),\n+\t}\n+\tgce := &github.GenericCommentEvent{\n+\t\tAction: github.GenericCommentActionCreated,\n+\t\tNumber: 1,\n+\t\tRepo:   github.Repo{Owner: github.User{Login: \"org\"}, Name: \"repo\"},\n+\t\tUser:   github.User{Login: \"Alice\"},\n+\t}\n \tticker := make(chan time.Time, 1)\n \tdeprecatedTick = ticker\n \terr := deprecate(fc, \"fake\", \"org\", \"repo\", 1, gce)\n \tif err != nil {\n \t\tt.Fatalf(\"unexpected error: %v\", err)\n \t}\n-\tif fc.commented {\n+\tif len(fc.IssueCommentsAdded) != 0 {\n \t\tt.Fatalf(\"should not comment on empty ticker\")\n \t}\n \tticker <- time.Now()\n \terr = deprecate(fc, \"fake\", \"org\", \"repo\", 1, gce)\n \tif err != nil {\n \t\tt.Fatalf(\"unexpected error: %v\", err)\n \t}\n-\tif !fc.commented {\n+\tif len(fc.IssueCommentsAdded) == 0 {\n \t\tt.Fatalf(\"must comment on filled timer\")\n \t}\n \n }\n \n func TestAddLifecycleLabels(t *testing.T) {\n \tvar testcases = []struct {\n-\t\tbody    string\n-\t\tadded   []string\n-\t\tremoved []string\n-\t\tcomment bool\n+\t\tname                  string\n+\t\tbody                  string\n+\t\texpectedNewLabels     []string\n+\t\texpectedRemovedLabels []string\n+\t\tissueLabels           []string\n \t}{\n \t\t{\n-\t\t\tbody: \"/random-command\",\n+\t\t\tname:                  \"random command\",\n+\t\t\tbody:                  \"/random-command\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n+\t\t},\n+\t\t{\n+\t\t\tname:                  \"remove lifecycle, but don't specify which state\",\n+\t\t\tbody:                  \"/remove-lifecycle\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n+\t\t},\n+\t\t{\n+\t\t\tname:                  \"add lifecycle, but don't specify which state\",\n+\t\t\tbody:                  \"/lifecycle\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n+\t\t},\n+\t\t{\n+\t\t\tname:                  \"add lifecycle random\",\n+\t\t\tbody:                  \"/lifecycle random\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody: \"/remove-lifecycle\",\n+\t\t\tname:                  \"remove lifecycle random\",\n+\t\t\tbody:                  \"/remove-lifecycle random\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody: \"/lifecycle\",\n+\t\t\tname:                  \"add lifecycle frozen, don't have it\",\n+\t\t\tbody:                  \"/lifecycle frozen\",\n+\t\t\texpectedNewLabels:     []string{lifecycleFrozenLabel},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody: \"/lifecycle random\",\n+\t\t\tname:                  \"add lifecycle frozen, have it\",\n+\t\t\tbody:                  \"/lifecycle frozen\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{lifecycleFrozenLabel},\n \t\t},\n \t\t{\n-\t\t\tbody: \"/remove-lifecycle random\",\n+\t\t\tname:                  \"add lifecycle stale, don't have it\",\n+\t\t\tbody:                  \"/lifecycle stale\",\n+\t\t\texpectedNewLabels:     []string{lifecycleStaleLabel},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody: \"/lifecycle frozen putrid stale\",\n+\t\t\tname:                  \"add lifecycle stale, have it\",\n+\t\t\tbody:                  \"/lifecycle stale\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{lifecycleStaleLabel},\n \t\t},\n \t\t{\n-\t\t\tbody: \"/lifecycle frozen cancel\",\n+\t\t\tname:                  \"add lifecycle rotten, don't have it\",\n+\t\t\tbody:                  \"/lifecycle rotten\",\n+\t\t\texpectedNewLabels:     []string{lifecycleRottenLabel},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody:  \"/lifecycle frozen\",\n-\t\t\tadded: []string{\"lifecycle/frozen\"},\n+\t\t\tname:                  \"add lifecycle rotten, have it\",\n+\t\t\tbody:                  \"/lifecycle rotten\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{lifecycleRottenLabel},\n \t\t},\n \t\t{\n-\t\t\tbody:  \"/lifecycle stale\",\n-\t\t\tadded: []string{\"lifecycle/stale\"},\n+\t\t\tname:                  \"remove lifecycle frozen, have it\",\n+\t\t\tbody:                  \"/remove-lifecycle frozen\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{lifecycleFrozenLabel},\n+\t\t\tissueLabels:           []string{lifecycleFrozenLabel},\n \t\t},\n \t\t{\n-\t\t\tbody:  \"/lifecycle putrid\",\n-\t\t\tadded: []string{\"lifecycle/putrid\"},\n+\t\t\tname:                  \"remove lifecycle frozen, don't have it\",\n+\t\t\tbody:                  \"/remove-lifecycle frozen\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody:  \"/lifecycle rotten\",\n-\t\t\tadded: []string{\"lifecycle/rotten\"},\n+\t\t\tname:                  \"remove lifecycle stale, have it\",\n+\t\t\tbody:                  \"/remove-lifecycle stale\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{lifecycleStaleLabel},\n+\t\t\tissueLabels:           []string{lifecycleStaleLabel},\n \t\t},\n \t\t{\n-\t\t\tbody:    \"/remove-lifecycle frozen\",\n-\t\t\tremoved: []string{\"lifecycle/frozen\"},\n+\t\t\tname:                  \"remove lifecycle stale, don't have it\",\n+\t\t\tbody:                  \"/remove-lifecycle stale\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n \t\t},\n \t\t{\n-\t\t\tbody:    \"/remove-lifecycle stale\",\n-\t\t\tremoved: []string{\"lifecycle/stale\"},\n+\t\t\tname:                  \"remove lifecycle rotten, have it\",\n+\t\t\tbody:                  \"/remove-lifecycle rotten\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{lifecycleRottenLabel},\n+\t\t\tissueLabels:           []string{lifecycleRottenLabel},\n \t\t},\n \t\t{\n-\t\t\tbody:    \"/remove-lifecycle stale\\n/remove-lifecycle putrid\\n/lifecycle frozen\",\n-\t\t\tadded:   []string{\"lifecycle/frozen\"},\n-\t\t\tremoved: []string{\"lifecycle/stale\", \"lifecycle/putrid\"},\n+\t\t\tname:                  \"remove lifecycle rotten, don't have it\",\n+\t\t\tbody:                  \"/remove-lifecycle rotten\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{},\n+\t\t\tissueLabels:           []string{},\n+\t\t},\n+\t\t{\n+\t\t\tname:                  \"add lifecycle frozen and remove stale and rotten, have stale and rotten\",\n+\t\t\tbody:                  \"/lifecycle frozen\",\n+\t\t\texpectedNewLabels:     []string{lifecycleFrozenLabel},\n+\t\t\texpectedRemovedLabels: []string{lifecycleStaleLabel, lifecycleRottenLabel},\n+\t\t\tissueLabels:           []string{lifecycleStaleLabel, lifecycleRottenLabel},\n+\t\t},\n+\t\t{\n+\t\t\tname:                  \"remove lifecycle frozen, have all\",\n+\t\t\tbody:                  \"/remove-lifecycle frozen\",\n+\t\t\texpectedNewLabels:     []string{},\n+\t\t\texpectedRemovedLabels: []string{lifecycleFrozenLabel},\n+\t\t\tissueLabels:           []string{lifecycleFrozenLabel, lifecycleStaleLabel, lifecycleRottenLabel},","path":"prow/plugins/lifecycle/lifecycle_test.go","position":246,"original_position":246,"commit_id":"7b86c9a86d249cf68f181b8426fc27a75926f333","original_commit_id":"7b86c9a86d249cf68f181b8426fc27a75926f333","user":{"login":"fejta","id":940341,"node_id":"MDQ6VXNlcjk0MDM0MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/940341?v=4","gravatar_id":"","url":"https://api.github.com/users/fejta","html_url":"https://github.com/fejta","followers_url":"https://api.github.com/users/fejta/followers","following_url":"https://api.github.com/users/fejta/following{/other_user}","gists_url":"https://api.github.com/users/fejta/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta/subscriptions","organizations_url":"https://api.github.com/users/fejta/orgs","repos_url":"https://api.github.com/users/fejta/repos","events_url":"https://api.github.com/users/fejta/events{/privacy}","received_events_url":"https://api.github.com/users/fejta/received_events","type":"User","site_admin":false},"body":"Sorry didn't see you already replied to this one","created_at":"2018-06-07T18:57:40Z","updated_at":"2018-06-07T18:57:40Z","html_url":"https://github.com/kubernetes/test-infra/pull/8283#discussion_r193855304","pull_request_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments/193855304"},"html":{"href":"https://github.com/kubernetes/test-infra/pull/8283#discussion_r193855304"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283"}},"in_reply_to_id":193837607},"pull_request":{"url":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283","id":193301034,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzMzAxMDM0","html_url":"https://github.com/kubernetes/test-infra/pull/8283","diff_url":"https://github.com/kubernetes/test-infra/pull/8283.diff","patch_url":"https://github.com/kubernetes/test-infra/pull/8283.patch","issue_url":"https://api.github.com/repos/kubernetes/test-infra/issues/8283","number":8283,"state":"open","locked":false,"title":"Allow only one lifecycle label to persist","user":{"login":"nikhita","id":16105680,"node_id":"MDQ6VXNlcjE2MTA1Njgw","avatar_url":"https://avatars1.githubusercontent.com/u/16105680?v=4","gravatar_id":"","url":"https://api.github.com/users/nikhita","html_url":"https://github.com/nikhita","followers_url":"https://api.github.com/users/nikhita/followers","following_url":"https://api.github.com/users/nikhita/following{/other_user}","gists_url":"https://api.github.com/users/nikhita/gists{/gist_id}","starred_url":"https://api.github.com/users/nikhita/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikhita/subscriptions","organizations_url":"https://api.github.com/users/nikhita/orgs","repos_url":"https://api.github.com/users/nikhita/repos","events_url":"https://api.github.com/users/nikhita/events{/privacy}","received_events_url":"https://api.github.com/users/nikhita/received_events","type":"User","site_admin":false},"body":"Fixes #8017 \r\n\r\nAll lifecycle states are mutually exclusive. If one lifecycle label is added, other lifecycle labels should be removed.\r\n\r\nThis PR also removes support for the `lifecycle/putrid` label since it is not present in [labels.md](https://github.com/kubernetes/test-infra/blob/f3787ed222bc128d06c8ed2f81f1464717133c97/label_sync/labels.md) and we don't use it anywhere.\r\n\r\n/cc fejta cblecker stevekuznetsov \r\n/area prow","created_at":"2018-06-07T12:17:10Z","updated_at":"2018-06-07T18:57:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b3c94a8c2ab64b93a9c6eb20be44c136faad7869","assignee":{"login":"fejta","id":940341,"node_id":"MDQ6VXNlcjk0MDM0MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/940341?v=4","gravatar_id":"","url":"https://api.github.com/users/fejta","html_url":"https://github.com/fejta","followers_url":"https://api.github.com/users/fejta/followers","following_url":"https://api.github.com/users/fejta/following{/other_user}","gists_url":"https://api.github.com/users/fejta/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta/subscriptions","organizations_url":"https://api.github.com/users/fejta/orgs","repos_url":"https://api.github.com/users/fejta/repos","events_url":"https://api.github.com/users/fejta/events{/privacy}","received_events_url":"https://api.github.com/users/fejta/received_events","type":"User","site_admin":false},"assignees":[{"login":"fejta","id":940341,"node_id":"MDQ6VXNlcjk0MDM0MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/940341?v=4","gravatar_id":"","url":"https://api.github.com/users/fejta","html_url":"https://github.com/fejta","followers_url":"https://api.github.com/users/fejta/followers","following_url":"https://api.github.com/users/fejta/following{/other_user}","gists_url":"https://api.github.com/users/fejta/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta/subscriptions","organizations_url":"https://api.github.com/users/fejta/orgs","repos_url":"https://api.github.com/users/fejta/repos","events_url":"https://api.github.com/users/fejta/events{/privacy}","received_events_url":"https://api.github.com/users/fejta/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"cjwagner","id":5334145,"node_id":"MDQ6VXNlcjUzMzQxNDU=","avatar_url":"https://avatars3.githubusercontent.com/u/5334145?v=4","gravatar_id":"","url":"https://api.github.com/users/cjwagner","html_url":"https://github.com/cjwagner","followers_url":"https://api.github.com/users/cjwagner/followers","following_url":"https://api.github.com/users/cjwagner/following{/other_user}","gists_url":"https://api.github.com/users/cjwagner/gists{/gist_id}","starred_url":"https://api.github.com/users/cjwagner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjwagner/subscriptions","organizations_url":"https://api.github.com/users/cjwagner/orgs","repos_url":"https://api.github.com/users/cjwagner/repos","events_url":"https://api.github.com/users/cjwagner/events{/privacy}","received_events_url":"https://api.github.com/users/cjwagner/received_events","type":"User","site_admin":false},{"login":"stevekuznetsov","id":7328370,"node_id":"MDQ6VXNlcjczMjgzNzA=","avatar_url":"https://avatars1.githubusercontent.com/u/7328370?v=4","gravatar_id":"","url":"https://api.github.com/users/stevekuznetsov","html_url":"https://github.com/stevekuznetsov","followers_url":"https://api.github.com/users/stevekuznetsov/followers","following_url":"https://api.github.com/users/stevekuznetsov/following{/other_user}","gists_url":"https://api.github.com/users/stevekuznetsov/gists{/gist_id}","starred_url":"https://api.github.com/users/stevekuznetsov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stevekuznetsov/subscriptions","organizations_url":"https://api.github.com/users/stevekuznetsov/orgs","repos_url":"https://api.github.com/users/stevekuznetsov/repos","events_url":"https://api.github.com/users/stevekuznetsov/events{/privacy}","received_events_url":"https://api.github.com/users/stevekuznetsov/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":705940018,"node_id":"MDU6TGFiZWw3MDU5NDAwMTg=","url":"https://api.github.com/repos/kubernetes/test-infra/labels/approved","name":"approved","color":"0ffa16","default":false},{"id":412127043,"node_id":"MDU6TGFiZWw0MTIxMjcwNDM=","url":"https://api.github.com/repos/kubernetes/test-infra/labels/area/prow","name":"area/prow","color":"0052cc","default":false},{"id":484580953,"node_id":"MDU6TGFiZWw0ODQ1ODA5NTM=","url":"https://api.github.com/repos/kubernetes/test-infra/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":682002555,"node_id":"MDU6TGFiZWw2ODIwMDI1NTU=","url":"https://api.github.com/repos/kubernetes/test-infra/labels/do-not-merge/hold","name":"do-not-merge/hold","color":"e11d21","default":false},{"id":366393439,"node_id":"MDU6TGFiZWwzNjYzOTM0Mzk=","url":"https://api.github.com/repos/kubernetes/test-infra/labels/lgtm","name":"lgtm","color":"15dd18","default":false},{"id":671133125,"node_id":"MDU6TGFiZWw2NzExMzMxMjU=","url":"https://api.github.com/repos/kubernetes/test-infra/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283/commits","review_comments_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283/comments","review_comment_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/test-infra/issues/8283/comments","statuses_url":"https://api.github.com/repos/kubernetes/test-infra/statuses/7b86c9a86d249cf68f181b8426fc27a75926f333","head":{"label":"nikhita:allow-only-one-lifecycle-label","ref":"allow-only-one-lifecycle-label","sha":"7b86c9a86d249cf68f181b8426fc27a75926f333","user":{"login":"nikhita","id":16105680,"node_id":"MDQ6VXNlcjE2MTA1Njgw","avatar_url":"https://avatars1.githubusercontent.com/u/16105680?v=4","gravatar_id":"","url":"https://api.github.com/users/nikhita","html_url":"https://github.com/nikhita","followers_url":"https://api.github.com/users/nikhita/followers","following_url":"https://api.github.com/users/nikhita/following{/other_user}","gists_url":"https://api.github.com/users/nikhita/gists{/gist_id}","starred_url":"https://api.github.com/users/nikhita/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikhita/subscriptions","organizations_url":"https://api.github.com/users/nikhita/orgs","repos_url":"https://api.github.com/users/nikhita/repos","events_url":"https://api.github.com/users/nikhita/events{/privacy}","received_events_url":"https://api.github.com/users/nikhita/received_events","type":"User","site_admin":false},"repo":{"id":108322162,"node_id":"MDEwOlJlcG9zaXRvcnkxMDgzMjIxNjI=","name":"test-infra","full_name":"nikhita/test-infra","owner":{"login":"nikhita","id":16105680,"node_id":"MDQ6VXNlcjE2MTA1Njgw","avatar_url":"https://avatars1.githubusercontent.com/u/16105680?v=4","gravatar_id":"","url":"https://api.github.com/users/nikhita","html_url":"https://github.com/nikhita","followers_url":"https://api.github.com/users/nikhita/followers","following_url":"https://api.github.com/users/nikhita/following{/other_user}","gists_url":"https://api.github.com/users/nikhita/gists{/gist_id}","starred_url":"https://api.github.com/users/nikhita/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikhita/subscriptions","organizations_url":"https://api.github.com/users/nikhita/orgs","repos_url":"https://api.github.com/users/nikhita/repos","events_url":"https://api.github.com/users/nikhita/events{/privacy}","received_events_url":"https://api.github.com/users/nikhita/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nikhita/test-infra","description":"Test infrastructure for the Kubernetes project.","fork":true,"url":"https://api.github.com/repos/nikhita/test-infra","forks_url":"https://api.github.com/repos/nikhita/test-infra/forks","keys_url":"https://api.github.com/repos/nikhita/test-infra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nikhita/test-infra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nikhita/test-infra/teams","hooks_url":"https://api.github.com/repos/nikhita/test-infra/hooks","issue_events_url":"https://api.github.com/repos/nikhita/test-infra/issues/events{/number}","events_url":"https://api.github.com/repos/nikhita/test-infra/events","assignees_url":"https://api.github.com/repos/nikhita/test-infra/assignees{/user}","branches_url":"https://api.github.com/repos/nikhita/test-infra/branches{/branch}","tags_url":"https://api.github.com/repos/nikhita/test-infra/tags","blobs_url":"https://api.github.com/repos/nikhita/test-infra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nikhita/test-infra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nikhita/test-infra/git/refs{/sha}","trees_url":"https://api.github.com/repos/nikhita/test-infra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nikhita/test-infra/statuses/{sha}","languages_url":"https://api.github.com/repos/nikhita/test-infra/languages","stargazers_url":"https://api.github.com/repos/nikhita/test-infra/stargazers","contributors_url":"https://api.github.com/repos/nikhita/test-infra/contributors","subscribers_url":"https://api.github.com/repos/nikhita/test-infra/subscribers","subscription_url":"https://api.github.com/repos/nikhita/test-infra/subscription","commits_url":"https://api.github.com/repos/nikhita/test-infra/commits{/sha}","git_commits_url":"https://api.github.com/repos/nikhita/test-infra/git/commits{/sha}","comments_url":"https://api.github.com/repos/nikhita/test-infra/comments{/number}","issue_comment_url":"https://api.github.com/repos/nikhita/test-infra/issues/comments{/number}","contents_url":"https://api.github.com/repos/nikhita/test-infra/contents/{+path}","compare_url":"https://api.github.com/repos/nikhita/test-infra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nikhita/test-infra/merges","archive_url":"https://api.github.com/repos/nikhita/test-infra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nikhita/test-infra/downloads","issues_url":"https://api.github.com/repos/nikhita/test-infra/issues{/number}","pulls_url":"https://api.github.com/repos/nikhita/test-infra/pulls{/number}","milestones_url":"https://api.github.com/repos/nikhita/test-infra/milestones{/number}","notifications_url":"https://api.github.com/repos/nikhita/test-infra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nikhita/test-infra/labels{/name}","releases_url":"https://api.github.com/repos/nikhita/test-infra/releases{/id}","deployments_url":"https://api.github.com/repos/nikhita/test-infra/deployments","created_at":"2017-10-25T20:25:36Z","updated_at":"2018-06-07T16:22:08Z","pushed_at":"2018-06-07T16:22:07Z","git_url":"git://github.com/nikhita/test-infra.git","ssh_url":"git@github.com:nikhita/test-infra.git","clone_url":"https://github.com/nikhita/test-infra.git","svn_url":"https://github.com/nikhita/test-infra","homepage":null,"size":53950,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"f3787ed222bc128d06c8ed2f81f1464717133c97","user":{"login":"kubernetes","id":13629408,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNjI5NDA4","avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":57333709,"node_id":"MDEwOlJlcG9zaXRvcnk1NzMzMzcwOQ==","name":"test-infra","full_name":"kubernetes/test-infra","owner":{"login":"kubernetes","id":13629408,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNjI5NDA4","avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/test-infra","description":"Test infrastructure for the Kubernetes project.","fork":false,"url":"https://api.github.com/repos/kubernetes/test-infra","forks_url":"https://api.github.com/repos/kubernetes/test-infra/forks","keys_url":"https://api.github.com/repos/kubernetes/test-infra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/test-infra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/test-infra/teams","hooks_url":"https://api.github.com/repos/kubernetes/test-infra/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/test-infra/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/test-infra/events","assignees_url":"https://api.github.com/repos/kubernetes/test-infra/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/test-infra/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/test-infra/tags","blobs_url":"https://api.github.com/repos/kubernetes/test-infra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/test-infra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/test-infra/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/test-infra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/test-infra/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/test-infra/languages","stargazers_url":"https://api.github.com/repos/kubernetes/test-infra/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/test-infra/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/test-infra/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/test-infra/subscription","commits_url":"https://api.github.com/repos/kubernetes/test-infra/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/test-infra/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/test-infra/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/test-infra/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/test-infra/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/test-infra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/test-infra/merges","archive_url":"https://api.github.com/repos/kubernetes/test-infra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/test-infra/downloads","issues_url":"https://api.github.com/repos/kubernetes/test-infra/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/test-infra/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/test-infra/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/test-infra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/test-infra/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/test-infra/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/test-infra/deployments","created_at":"2016-04-28T21:05:35Z","updated_at":"2018-06-07T18:57:08Z","pushed_at":"2018-06-07T18:44:39Z","git_url":"git://github.com/kubernetes/test-infra.git","ssh_url":"git@github.com:kubernetes/test-infra.git","clone_url":"https://github.com/kubernetes/test-infra.git","svn_url":"https://github.com/kubernetes/test-infra","homepage":null,"size":54820,"stargazers_count":402,"watchers_count":402,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":470,"mirror_url":null,"archived":false,"open_issues_count":304,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":470,"open_issues":304,"watchers":402,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283"},"html":{"href":"https://github.com/kubernetes/test-infra/pull/8283"},"issue":{"href":"https://api.github.com/repos/kubernetes/test-infra/issues/8283"},"comments":{"href":"https://api.github.com/repos/kubernetes/test-infra/issues/8283/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/8283/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/test-infra/statuses/7b86c9a86d249cf68f181b8426fc27a75926f333"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"fejta"}}