{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/comments/209340201","pull_request_review_id":145342409,"id":209340201,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTM0MDIwMQ==","diff_hunk":"@@ -0,0 +1,196 @@\n+/*\n+Copyright 2018 The Kubernetes Authors.\n+Licensed under the Apache License, Version 2.0 (the \"License\");\n+you may not use this file except in compliance with the License.\n+You may obtain a copy of the License at\n+    http://www.apache.org/licenses/LICENSE-2.0\n+Unless required by applicable law or agreed to in writing, software\n+distributed under the License is distributed on an \"AS IS\" BASIS,\n+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+See the License for the specific language governing permissions and\n+limitations under the License.\n+*/\n+\n+package backends\n+\n+import (\n+\t\"fmt\"\n+\t\"net/http\"\n+\t\"strings\"\n+\n+\t\"github.com/golang/glog\"\n+\t\"k8s.io/apimachinery/pkg/util/sets\"\n+\t\"k8s.io/ingress-gce/pkg/composite\"\n+\t\"k8s.io/ingress-gce/pkg/instances\"\n+\t\"k8s.io/ingress-gce/pkg/utils\"\n+\t\"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta\"\n+)\n+\n+// BalancingMode represents the loadbalancing configuration of an individual\n+// Backend in a BackendService. This is *effectively* a cluster wide setting\n+// since you can't mix modes across Backends pointing to the same IG, and you\n+// can't have a single node in more than 1 loadbalanced IG.\n+type BalancingMode string\n+\n+const (\n+\t// Rate balances incoming requests based on observed RPS.\n+\t// As of this writing, it's the only balancing mode supported by GCE's\n+\t// internal LB. This setting doesn't make sense for Kubernetes clusters\n+\t// because requests can get proxied between instance groups in different\n+\t// zones by kube-proxy without GCE even knowing it. Setting equal RPS on\n+\t// all IGs should achieve roughly equal distribution of requests.\n+\tRate BalancingMode = \"RATE\"\n+\t// Utilization balances incoming requests based on observed utilization.\n+\t// This mode is only useful if you want to divert traffic away from IGs\n+\t// running other compute intensive workloads. Utilization statistics are\n+\t// aggregated per instances, not per container, and requests can get proxied\n+\t// between instance groups in different zones by kube-proxy without GCE even\n+\t// knowing about it.\n+\tUtilization BalancingMode = \"UTILIZATION\"\n+\t// Connections balances incoming requests based on a connection counter.\n+\t// This setting currently doesn't make sense for Kubernetes clusters,\n+\t// because we use NodePort Services as HTTP LB backends, so GCE's connection\n+\t// counters don't accurately represent connections per container.\n+\tConnections BalancingMode = \"CONNECTION\"\n+)\n+\n+// maxRPS is the RPS setting for all Backends with BalancingMode RATE. The exact\n+// value doesn't matter, as long as it's the same for all Backends. Requests\n+// received by GCLB above this RPS are NOT dropped, GCLB continues to distribute\n+// them across IGs.\n+// TODO: Should this be math.MaxInt64?\n+const maxRPS = 1\n+\n+// InstanceGroupLinker handles linking backends to InstanceGroup's.\n+type InstanceGroupLinker struct {\n+\tinstancePool instances.NodePool\n+\tbackendPool  Pool\n+\tnamer        *utils.Namer\n+}\n+\n+// InstanceGroupLinker is a Linker\n+var _ Linker = (*InstanceGroupLinker)(nil)\n+\n+func NewInstanceGroupLinker(\n+\tinstancePool instances.NodePool,\n+\tbackendPool Pool,\n+\tnamer *utils.Namer) *InstanceGroupLinker {\n+\treturn &InstanceGroupLinker{\n+\t\tinstancePool: instancePool,\n+\t\tbackendPool:  backendPool,\n+\t\tnamer:        namer,\n+\t}\n+}\n+\n+// Implements Link.","path":"pkg/backends/ig_linker.go","position":85,"original_position":85,"commit_id":"7e56d869e86c75dbe4809cf9b39f2db69023e1ba","original_commit_id":"7e56d869e86c75dbe4809cf9b39f2db69023e1ba","user":{"login":"rramkumar1","id":20979322,"node_id":"MDQ6VXNlcjIwOTc5MzIy","avatar_url":"https://avatars1.githubusercontent.com/u/20979322?v=4","gravatar_id":"","url":"https://api.github.com/users/rramkumar1","html_url":"https://github.com/rramkumar1","followers_url":"https://api.github.com/users/rramkumar1/followers","following_url":"https://api.github.com/users/rramkumar1/following{/other_user}","gists_url":"https://api.github.com/users/rramkumar1/gists{/gist_id}","starred_url":"https://api.github.com/users/rramkumar1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rramkumar1/subscriptions","organizations_url":"https://api.github.com/users/rramkumar1/orgs","repos_url":"https://api.github.com/users/rramkumar1/repos","events_url":"https://api.github.com/users/rramkumar1/events{/privacy}","received_events_url":"https://api.github.com/users/rramkumar1/received_events","type":"User","site_admin":false},"body":"Done","created_at":"2018-08-10T17:59:57Z","updated_at":"2018-08-10T17:59:57Z","html_url":"https://github.com/kubernetes/ingress-gce/pull/424#discussion_r209340201","pull_request_url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/comments/209340201"},"html":{"href":"https://github.com/kubernetes/ingress-gce/pull/424#discussion_r209340201"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424"}},"in_reply_to_id":209333813},"pull_request":{"url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424","id":206843254,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2ODQzMjU0","html_url":"https://github.com/kubernetes/ingress-gce/pull/424","diff_url":"https://github.com/kubernetes/ingress-gce/pull/424.diff","patch_url":"https://github.com/kubernetes/ingress-gce/pull/424.patch","issue_url":"https://api.github.com/repos/kubernetes/ingress-gce/issues/424","number":424,"state":"open","locked":false,"title":"Extract BackendPool interface into three 3 separate interfaces","user":{"login":"rramkumar1","id":20979322,"node_id":"MDQ6VXNlcjIwOTc5MzIy","avatar_url":"https://avatars1.githubusercontent.com/u/20979322?v=4","gravatar_id":"","url":"https://api.github.com/users/rramkumar1","html_url":"https://github.com/rramkumar1","followers_url":"https://api.github.com/users/rramkumar1/followers","following_url":"https://api.github.com/users/rramkumar1/following{/other_user}","gists_url":"https://api.github.com/users/rramkumar1/gists{/gist_id}","starred_url":"https://api.github.com/users/rramkumar1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rramkumar1/subscriptions","organizations_url":"https://api.github.com/users/rramkumar1/orgs","repos_url":"https://api.github.com/users/rramkumar1/repos","events_url":"https://api.github.com/users/rramkumar1/events{/privacy}","received_events_url":"https://api.github.com/users/rramkumar1/received_events","type":"User","site_admin":false},"body":"This PR extracts the BackendPool interface into 3 separate interfaces:\r\n\r\n    1. BackendPool - Simple CRUD for backends\r\n    2. Syncer - Sync and GC backends\r\n    3. Linker - Link backends to their associated groups. \r\n\r\nThis allows us to break the current BackendPool implementation up into more manageable chunks and each chunk is much more testable. Furthermore, some implementations, namely BackendPool and Syncer, can be easily reused. \r\n\r\n/assign @bowei ","created_at":"2018-08-07T22:22:05Z","updated_at":"2018-08-10T17:59:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"20baaa088f03a46c80175bac3e3f06ef7f9e0180","assignee":{"login":"bowei","id":837034,"node_id":"MDQ6VXNlcjgzNzAzNA==","avatar_url":"https://avatars1.githubusercontent.com/u/837034?v=4","gravatar_id":"","url":"https://api.github.com/users/bowei","html_url":"https://github.com/bowei","followers_url":"https://api.github.com/users/bowei/followers","following_url":"https://api.github.com/users/bowei/following{/other_user}","gists_url":"https://api.github.com/users/bowei/gists{/gist_id}","starred_url":"https://api.github.com/users/bowei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bowei/subscriptions","organizations_url":"https://api.github.com/users/bowei/orgs","repos_url":"https://api.github.com/users/bowei/repos","events_url":"https://api.github.com/users/bowei/events{/privacy}","received_events_url":"https://api.github.com/users/bowei/received_events","type":"User","site_admin":false},"assignees":[{"login":"bowei","id":837034,"node_id":"MDQ6VXNlcjgzNzAzNA==","avatar_url":"https://avatars1.githubusercontent.com/u/837034?v=4","gravatar_id":"","url":"https://api.github.com/users/bowei","html_url":"https://github.com/bowei","followers_url":"https://api.github.com/users/bowei/followers","following_url":"https://api.github.com/users/bowei/following{/other_user}","gists_url":"https://api.github.com/users/bowei/gists{/gist_id}","starred_url":"https://api.github.com/users/bowei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bowei/subscriptions","organizations_url":"https://api.github.com/users/bowei/orgs","repos_url":"https://api.github.com/users/bowei/repos","events_url":"https://api.github.com/users/bowei/events{/privacy}","received_events_url":"https://api.github.com/users/bowei/received_events","type":"User","site_admin":false},{"login":"freehan","id":1332699,"node_id":"MDQ6VXNlcjEzMzI2OTk=","avatar_url":"https://avatars3.githubusercontent.com/u/1332699?v=4","gravatar_id":"","url":"https://api.github.com/users/freehan","html_url":"https://github.com/freehan","followers_url":"https://api.github.com/users/freehan/followers","following_url":"https://api.github.com/users/freehan/following{/other_user}","gists_url":"https://api.github.com/users/freehan/gists{/gist_id}","starred_url":"https://api.github.com/users/freehan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freehan/subscriptions","organizations_url":"https://api.github.com/users/freehan/orgs","repos_url":"https://api.github.com/users/freehan/repos","events_url":"https://api.github.com/users/freehan/events{/privacy}","received_events_url":"https://api.github.com/users/freehan/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":712525210,"node_id":"MDU6TGFiZWw3MTI1MjUyMTA=","url":"https://api.github.com/repos/kubernetes/ingress-gce/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":712575559,"node_id":"MDU6TGFiZWw3MTI1NzU1NTk=","url":"https://api.github.com/repos/kubernetes/ingress-gce/labels/size/XXL","name":"size/XXL","color":"ee0000","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424/commits","review_comments_url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424/comments","review_comment_url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/ingress-gce/issues/424/comments","statuses_url":"https://api.github.com/repos/kubernetes/ingress-gce/statuses/7e56d869e86c75dbe4809cf9b39f2db69023e1ba","head":{"label":"rramkumar1:backend-pool-changes","ref":"backend-pool-changes","sha":"7e56d869e86c75dbe4809cf9b39f2db69023e1ba","user":{"login":"rramkumar1","id":20979322,"node_id":"MDQ6VXNlcjIwOTc5MzIy","avatar_url":"https://avatars1.githubusercontent.com/u/20979322?v=4","gravatar_id":"","url":"https://api.github.com/users/rramkumar1","html_url":"https://github.com/rramkumar1","followers_url":"https://api.github.com/users/rramkumar1/followers","following_url":"https://api.github.com/users/rramkumar1/following{/other_user}","gists_url":"https://api.github.com/users/rramkumar1/gists{/gist_id}","starred_url":"https://api.github.com/users/rramkumar1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rramkumar1/subscriptions","organizations_url":"https://api.github.com/users/rramkumar1/orgs","repos_url":"https://api.github.com/users/rramkumar1/repos","events_url":"https://api.github.com/users/rramkumar1/events{/privacy}","received_events_url":"https://api.github.com/users/rramkumar1/received_events","type":"User","site_admin":false},"repo":{"id":114787128,"node_id":"MDEwOlJlcG9zaXRvcnkxMTQ3ODcxMjg=","name":"ingress-gce","full_name":"rramkumar1/ingress-gce","owner":{"login":"rramkumar1","id":20979322,"node_id":"MDQ6VXNlcjIwOTc5MzIy","avatar_url":"https://avatars1.githubusercontent.com/u/20979322?v=4","gravatar_id":"","url":"https://api.github.com/users/rramkumar1","html_url":"https://github.com/rramkumar1","followers_url":"https://api.github.com/users/rramkumar1/followers","following_url":"https://api.github.com/users/rramkumar1/following{/other_user}","gists_url":"https://api.github.com/users/rramkumar1/gists{/gist_id}","starred_url":"https://api.github.com/users/rramkumar1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rramkumar1/subscriptions","organizations_url":"https://api.github.com/users/rramkumar1/orgs","repos_url":"https://api.github.com/users/rramkumar1/repos","events_url":"https://api.github.com/users/rramkumar1/events{/privacy}","received_events_url":"https://api.github.com/users/rramkumar1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rramkumar1/ingress-gce","description":"Ingress controller for Google Cloud","fork":true,"url":"https://api.github.com/repos/rramkumar1/ingress-gce","forks_url":"https://api.github.com/repos/rramkumar1/ingress-gce/forks","keys_url":"https://api.github.com/repos/rramkumar1/ingress-gce/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rramkumar1/ingress-gce/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rramkumar1/ingress-gce/teams","hooks_url":"https://api.github.com/repos/rramkumar1/ingress-gce/hooks","issue_events_url":"https://api.github.com/repos/rramkumar1/ingress-gce/issues/events{/number}","events_url":"https://api.github.com/repos/rramkumar1/ingress-gce/events","assignees_url":"https://api.github.com/repos/rramkumar1/ingress-gce/assignees{/user}","branches_url":"https://api.github.com/repos/rramkumar1/ingress-gce/branches{/branch}","tags_url":"https://api.github.com/repos/rramkumar1/ingress-gce/tags","blobs_url":"https://api.github.com/repos/rramkumar1/ingress-gce/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rramkumar1/ingress-gce/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rramkumar1/ingress-gce/git/refs{/sha}","trees_url":"https://api.github.com/repos/rramkumar1/ingress-gce/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rramkumar1/ingress-gce/statuses/{sha}","languages_url":"https://api.github.com/repos/rramkumar1/ingress-gce/languages","stargazers_url":"https://api.github.com/repos/rramkumar1/ingress-gce/stargazers","contributors_url":"https://api.github.com/repos/rramkumar1/ingress-gce/contributors","subscribers_url":"https://api.github.com/repos/rramkumar1/ingress-gce/subscribers","subscription_url":"https://api.github.com/repos/rramkumar1/ingress-gce/subscription","commits_url":"https://api.github.com/repos/rramkumar1/ingress-gce/commits{/sha}","git_commits_url":"https://api.github.com/repos/rramkumar1/ingress-gce/git/commits{/sha}","comments_url":"https://api.github.com/repos/rramkumar1/ingress-gce/comments{/number}","issue_comment_url":"https://api.github.com/repos/rramkumar1/ingress-gce/issues/comments{/number}","contents_url":"https://api.github.com/repos/rramkumar1/ingress-gce/contents/{+path}","compare_url":"https://api.github.com/repos/rramkumar1/ingress-gce/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rramkumar1/ingress-gce/merges","archive_url":"https://api.github.com/repos/rramkumar1/ingress-gce/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rramkumar1/ingress-gce/downloads","issues_url":"https://api.github.com/repos/rramkumar1/ingress-gce/issues{/number}","pulls_url":"https://api.github.com/repos/rramkumar1/ingress-gce/pulls{/number}","milestones_url":"https://api.github.com/repos/rramkumar1/ingress-gce/milestones{/number}","notifications_url":"https://api.github.com/repos/rramkumar1/ingress-gce/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rramkumar1/ingress-gce/labels{/name}","releases_url":"https://api.github.com/repos/rramkumar1/ingress-gce/releases{/id}","deployments_url":"https://api.github.com/repos/rramkumar1/ingress-gce/deployments","created_at":"2017-12-19T16:25:49Z","updated_at":"2018-08-06T16:27:43Z","pushed_at":"2018-08-10T15:36:53Z","git_url":"git://github.com/rramkumar1/ingress-gce.git","ssh_url":"git@github.com:rramkumar1/ingress-gce.git","clone_url":"https://github.com/rramkumar1/ingress-gce.git","svn_url":"https://github.com/rramkumar1/ingress-gce","homepage":"","size":38062,"stargazers_count":1,"watchers_count":1,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"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":1,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"6dc7da6800323e2a6be62df6ca1324ed493f3eac","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":105967469,"node_id":"MDEwOlJlcG9zaXRvcnkxMDU5Njc0Njk=","name":"ingress-gce","full_name":"kubernetes/ingress-gce","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/ingress-gce","description":"Ingress controller for Google Cloud","fork":false,"url":"https://api.github.com/repos/kubernetes/ingress-gce","forks_url":"https://api.github.com/repos/kubernetes/ingress-gce/forks","keys_url":"https://api.github.com/repos/kubernetes/ingress-gce/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/ingress-gce/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/ingress-gce/teams","hooks_url":"https://api.github.com/repos/kubernetes/ingress-gce/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/ingress-gce/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/ingress-gce/events","assignees_url":"https://api.github.com/repos/kubernetes/ingress-gce/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/ingress-gce/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/ingress-gce/tags","blobs_url":"https://api.github.com/repos/kubernetes/ingress-gce/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/ingress-gce/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/ingress-gce/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/ingress-gce/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/ingress-gce/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/ingress-gce/languages","stargazers_url":"https://api.github.com/repos/kubernetes/ingress-gce/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/ingress-gce/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/ingress-gce/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/ingress-gce/subscription","commits_url":"https://api.github.com/repos/kubernetes/ingress-gce/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/ingress-gce/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/ingress-gce/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/ingress-gce/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/ingress-gce/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/ingress-gce/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/ingress-gce/merges","archive_url":"https://api.github.com/repos/kubernetes/ingress-gce/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/ingress-gce/downloads","issues_url":"https://api.github.com/repos/kubernetes/ingress-gce/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/ingress-gce/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/ingress-gce/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/ingress-gce/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/ingress-gce/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/ingress-gce/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/ingress-gce/deployments","created_at":"2017-10-06T04:32:12Z","updated_at":"2018-08-10T13:59:07Z","pushed_at":"2018-08-10T15:36:54Z","git_url":"git://github.com/kubernetes/ingress-gce.git","ssh_url":"git@github.com:kubernetes/ingress-gce.git","clone_url":"https://github.com/kubernetes/ingress-gce.git","svn_url":"https://github.com/kubernetes/ingress-gce","homepage":"","size":37928,"stargazers_count":357,"watchers_count":357,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":84,"mirror_url":null,"archived":false,"open_issues_count":46,"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":84,"open_issues":46,"watchers":357,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424"},"html":{"href":"https://github.com/kubernetes/ingress-gce/pull/424"},"issue":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/issues/424"},"comments":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/issues/424/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/pulls/424/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/ingress-gce/statuses/7e56d869e86c75dbe4809cf9b39f2db69023e1ba"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"rramkumar1"}}