{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/comments/238488653","pull_request_review_id":181042334,"id":238488653,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzODQ4ODY1Mw==","diff_hunk":"@@ -0,0 +1,92 @@\n+-- Consistent hashing to a subset of nodes. Instead of returning the same node\n+-- always, we return the same subset always.\n+\n+local resty_chash = require(\"resty.chash\")\n+local util = require(\"util\")\n+\n+local _M = { name = \"chashsubset\" }\n+\n+local function build_nodeset_map(backend)\n+  local nodes = {}\n+  local nodeset_map = {}\n+  local node_sets = {}\n+  local subset_size = 3\n+\n+  if backend[\"upstream-hash-subset-size\"] == 0 then\n+    subset_size = tonumber(backend[\"upstream-hash-subset-size\"])\n+  end\n+\n+  for _, endpoint in pairs(backend.endpoints) do\n+    local endpoint_string = endpoint.address .. \":\" .. endpoint.port\n+    table.insert(nodes, endpoint_string)\n+  end\n+\n+  local set_count = math.ceil(#nodes/subset_size)\n+  local node_count = set_count * subset_size\n+\n+  -- if we don't have enough nodes, we use reuse nodes in the last set to\n+  -- keep the same same on all of them.\n+  if #nodes < node_count then\n+    local j = 1\n+    for _ = #nodes+1, node_count do\n+      table.insert(nodes, nodes[j])\n+      j = j+1\n+    end\n+  end\n+\n+  local k = 1\n+  for i = 1, set_count do\n+    local nodeset = {}\n+    local nodeset_id = \"set\" .. tostring(i)\n+    for _ = 1, subset_size do\n+      table.insert(nodeset, nodes[k])\n+      k = k+1\n+    end\n+    node_sets[nodeset_id] = nodeset\n+    nodeset_map[nodeset_id] = 1\n+  end\n+\n+  return nodeset_map, node_sets\n+end\n+\n+function _M.new(self, backend)\n+  local nodeset_map, node_sets = build_nodeset_map(backend)\n+\n+  local o = {\n+    instance = resty_chash:new(nodeset_map),\n+    hash_by = backend[\"upstream-hash-by\"],\n+    node_sets = node_sets,\n+    current_endpoints = backend.endpoints\n+  }\n+  setmetatable(o, self)\n+  self.__index = self\n+  return o\n+end\n+\n+math.randomseed(os.time())\n+function _M.balance(self)\n+  local key = util.lua_ngx_var(self.hash_by)\n+  local nodeset_id = self.instance:find(key)\n+  local nodes = self.node_sets[nodeset_id]\n+  local node = nodes[math.random(#nodes)]\n+  return node\n+end\n+\n+function _M.sync(self, backend)\n+  local nodeset_map\n+\n+  local changed = not util.deep_compare(self.current_endpoints, backend.endpoints)\n+  if not changed then\n+    return\n+  end\n+\n+  self.peers = backend.endpoints","path":"rootfs/etc/nginx/lua/balancer/chashsubset.lua","position":79,"original_position":83,"commit_id":"e3d9aa9bf8cdbe93a23e6ce1aeb35b3643edaa54","original_commit_id":"f39be90c41113eec32e1b55646960e63d19598eb","user":{"login":"diegows","id":234554,"node_id":"MDQ6VXNlcjIzNDU1NA==","avatar_url":"https://avatars1.githubusercontent.com/u/234554?v=4","gravatar_id":"","url":"https://api.github.com/users/diegows","html_url":"https://github.com/diegows","followers_url":"https://api.github.com/users/diegows/followers","following_url":"https://api.github.com/users/diegows/following{/other_user}","gists_url":"https://api.github.com/users/diegows/gists{/gist_id}","starred_url":"https://api.github.com/users/diegows/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/diegows/subscriptions","organizations_url":"https://api.github.com/users/diegows/orgs","repos_url":"https://api.github.com/users/diegows/repos","events_url":"https://api.github.com/users/diegows/events{/privacy}","received_events_url":"https://api.github.com/users/diegows/received_events","type":"User","site_admin":false},"body":"fixed.","created_at":"2018-12-04T00:16:23Z","updated_at":"2018-12-04T00:16:23Z","html_url":"https://github.com/kubernetes/ingress-nginx/pull/3396#discussion_r238488653","pull_request_url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/comments/238488653"},"html":{"href":"https://github.com/kubernetes/ingress-nginx/pull/3396#discussion_r238488653"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396"}},"in_reply_to_id":232548320},"pull_request":{"url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396","id":229928085,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI5OTI4MDg1","html_url":"https://github.com/kubernetes/ingress-nginx/pull/3396","diff_url":"https://github.com/kubernetes/ingress-nginx/pull/3396.diff","patch_url":"https://github.com/kubernetes/ingress-nginx/pull/3396.patch","issue_url":"https://api.github.com/repos/kubernetes/ingress-nginx/issues/3396","number":3396,"state":"open","locked":false,"title":"New balancer implementation: consistent hash subset","user":{"login":"diegows","id":234554,"node_id":"MDQ6VXNlcjIzNDU1NA==","avatar_url":"https://avatars1.githubusercontent.com/u/234554?v=4","gravatar_id":"","url":"https://api.github.com/users/diegows","html_url":"https://github.com/diegows","followers_url":"https://api.github.com/users/diegows/followers","following_url":"https://api.github.com/users/diegows/following{/other_user}","gists_url":"https://api.github.com/users/diegows/gists{/gist_id}","starred_url":"https://api.github.com/users/diegows/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/diegows/subscriptions","organizations_url":"https://api.github.com/users/diegows/orgs","repos_url":"https://api.github.com/users/diegows/repos","events_url":"https://api.github.com/users/diegows/events{/privacy}","received_events_url":"https://api.github.com/users/diegows/received_events","type":"User","site_admin":false},"body":"<!--  Thanks for sending a pull request!  Here are some tips for you:\r\n1. If this is your first time, read our contributor guidelines https://git.k8s.io/community/contributors/guide/pull-requests.md#the-pull-request-submit-process and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide\r\n2. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews\r\n-->\r\n\r\n**What this PR does / why we need it**:\r\nAdd Consistent hash balancing to a subset of nodes. It provides the benefits of consistent hashing, but also providing some load balance between some nodes.\r\n\r\n","created_at":"2018-11-11T03:09:04Z","updated_at":"2018-12-04T00:16:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bf84735459fa1b13bb98d7e1089cc1e22e9b2235","assignee":{"login":"ElvinEfendi","id":1150042,"node_id":"MDQ6VXNlcjExNTAwNDI=","avatar_url":"https://avatars0.githubusercontent.com/u/1150042?v=4","gravatar_id":"","url":"https://api.github.com/users/ElvinEfendi","html_url":"https://github.com/ElvinEfendi","followers_url":"https://api.github.com/users/ElvinEfendi/followers","following_url":"https://api.github.com/users/ElvinEfendi/following{/other_user}","gists_url":"https://api.github.com/users/ElvinEfendi/gists{/gist_id}","starred_url":"https://api.github.com/users/ElvinEfendi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElvinEfendi/subscriptions","organizations_url":"https://api.github.com/users/ElvinEfendi/orgs","repos_url":"https://api.github.com/users/ElvinEfendi/repos","events_url":"https://api.github.com/users/ElvinEfendi/events{/privacy}","received_events_url":"https://api.github.com/users/ElvinEfendi/received_events","type":"User","site_admin":false},"assignees":[{"login":"ElvinEfendi","id":1150042,"node_id":"MDQ6VXNlcjExNTAwNDI=","avatar_url":"https://avatars0.githubusercontent.com/u/1150042?v=4","gravatar_id":"","url":"https://api.github.com/users/ElvinEfendi","html_url":"https://github.com/ElvinEfendi","followers_url":"https://api.github.com/users/ElvinEfendi/followers","following_url":"https://api.github.com/users/ElvinEfendi/following{/other_user}","gists_url":"https://api.github.com/users/ElvinEfendi/gists{/gist_id}","starred_url":"https://api.github.com/users/ElvinEfendi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElvinEfendi/subscriptions","organizations_url":"https://api.github.com/users/ElvinEfendi/orgs","repos_url":"https://api.github.com/users/ElvinEfendi/repos","events_url":"https://api.github.com/users/ElvinEfendi/events{/privacy}","received_events_url":"https://api.github.com/users/ElvinEfendi/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"aledbf","id":161571,"node_id":"MDQ6VXNlcjE2MTU3MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/161571?v=4","gravatar_id":"","url":"https://api.github.com/users/aledbf","html_url":"https://github.com/aledbf","followers_url":"https://api.github.com/users/aledbf/followers","following_url":"https://api.github.com/users/aledbf/following{/other_user}","gists_url":"https://api.github.com/users/aledbf/gists{/gist_id}","starred_url":"https://api.github.com/users/aledbf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aledbf/subscriptions","organizations_url":"https://api.github.com/users/aledbf/orgs","repos_url":"https://api.github.com/users/aledbf/repos","events_url":"https://api.github.com/users/aledbf/events{/privacy}","received_events_url":"https://api.github.com/users/aledbf/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":486873161,"node_id":"MDU6TGFiZWw0ODY4NzMxNjE=","url":"https://api.github.com/repos/kubernetes/ingress-nginx/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":676097629,"node_id":"MDU6TGFiZWw2NzYwOTc2Mjk=","url":"https://api.github.com/repos/kubernetes/ingress-nginx/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396/commits","review_comments_url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396/comments","review_comment_url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/ingress-nginx/issues/3396/comments","statuses_url":"https://api.github.com/repos/kubernetes/ingress-nginx/statuses/e3d9aa9bf8cdbe93a23e6ce1aeb35b3643edaa54","head":{"label":"flugel-it:master","ref":"master","sha":"e3d9aa9bf8cdbe93a23e6ce1aeb35b3643edaa54","user":{"login":"flugel-it","id":8408683,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg0MDg2ODM=","avatar_url":"https://avatars2.githubusercontent.com/u/8408683?v=4","gravatar_id":"","url":"https://api.github.com/users/flugel-it","html_url":"https://github.com/flugel-it","followers_url":"https://api.github.com/users/flugel-it/followers","following_url":"https://api.github.com/users/flugel-it/following{/other_user}","gists_url":"https://api.github.com/users/flugel-it/gists{/gist_id}","starred_url":"https://api.github.com/users/flugel-it/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flugel-it/subscriptions","organizations_url":"https://api.github.com/users/flugel-it/orgs","repos_url":"https://api.github.com/users/flugel-it/repos","events_url":"https://api.github.com/users/flugel-it/events{/privacy}","received_events_url":"https://api.github.com/users/flugel-it/received_events","type":"Organization","site_admin":false},"repo":{"id":150911637,"node_id":"MDEwOlJlcG9zaXRvcnkxNTA5MTE2Mzc=","name":"ingress-nginx","full_name":"flugel-it/ingress-nginx","private":false,"owner":{"login":"flugel-it","id":8408683,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg0MDg2ODM=","avatar_url":"https://avatars2.githubusercontent.com/u/8408683?v=4","gravatar_id":"","url":"https://api.github.com/users/flugel-it","html_url":"https://github.com/flugel-it","followers_url":"https://api.github.com/users/flugel-it/followers","following_url":"https://api.github.com/users/flugel-it/following{/other_user}","gists_url":"https://api.github.com/users/flugel-it/gists{/gist_id}","starred_url":"https://api.github.com/users/flugel-it/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flugel-it/subscriptions","organizations_url":"https://api.github.com/users/flugel-it/orgs","repos_url":"https://api.github.com/users/flugel-it/repos","events_url":"https://api.github.com/users/flugel-it/events{/privacy}","received_events_url":"https://api.github.com/users/flugel-it/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/flugel-it/ingress-nginx","description":"NGINX Ingress Controller for Kubernetes","fork":true,"url":"https://api.github.com/repos/flugel-it/ingress-nginx","forks_url":"https://api.github.com/repos/flugel-it/ingress-nginx/forks","keys_url":"https://api.github.com/repos/flugel-it/ingress-nginx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flugel-it/ingress-nginx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flugel-it/ingress-nginx/teams","hooks_url":"https://api.github.com/repos/flugel-it/ingress-nginx/hooks","issue_events_url":"https://api.github.com/repos/flugel-it/ingress-nginx/issues/events{/number}","events_url":"https://api.github.com/repos/flugel-it/ingress-nginx/events","assignees_url":"https://api.github.com/repos/flugel-it/ingress-nginx/assignees{/user}","branches_url":"https://api.github.com/repos/flugel-it/ingress-nginx/branches{/branch}","tags_url":"https://api.github.com/repos/flugel-it/ingress-nginx/tags","blobs_url":"https://api.github.com/repos/flugel-it/ingress-nginx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flugel-it/ingress-nginx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flugel-it/ingress-nginx/git/refs{/sha}","trees_url":"https://api.github.com/repos/flugel-it/ingress-nginx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flugel-it/ingress-nginx/statuses/{sha}","languages_url":"https://api.github.com/repos/flugel-it/ingress-nginx/languages","stargazers_url":"https://api.github.com/repos/flugel-it/ingress-nginx/stargazers","contributors_url":"https://api.github.com/repos/flugel-it/ingress-nginx/contributors","subscribers_url":"https://api.github.com/repos/flugel-it/ingress-nginx/subscribers","subscription_url":"https://api.github.com/repos/flugel-it/ingress-nginx/subscription","commits_url":"https://api.github.com/repos/flugel-it/ingress-nginx/commits{/sha}","git_commits_url":"https://api.github.com/repos/flugel-it/ingress-nginx/git/commits{/sha}","comments_url":"https://api.github.com/repos/flugel-it/ingress-nginx/comments{/number}","issue_comment_url":"https://api.github.com/repos/flugel-it/ingress-nginx/issues/comments{/number}","contents_url":"https://api.github.com/repos/flugel-it/ingress-nginx/contents/{+path}","compare_url":"https://api.github.com/repos/flugel-it/ingress-nginx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flugel-it/ingress-nginx/merges","archive_url":"https://api.github.com/repos/flugel-it/ingress-nginx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flugel-it/ingress-nginx/downloads","issues_url":"https://api.github.com/repos/flugel-it/ingress-nginx/issues{/number}","pulls_url":"https://api.github.com/repos/flugel-it/ingress-nginx/pulls{/number}","milestones_url":"https://api.github.com/repos/flugel-it/ingress-nginx/milestones{/number}","notifications_url":"https://api.github.com/repos/flugel-it/ingress-nginx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flugel-it/ingress-nginx/labels{/name}","releases_url":"https://api.github.com/repos/flugel-it/ingress-nginx/releases{/id}","deployments_url":"https://api.github.com/repos/flugel-it/ingress-nginx/deployments","created_at":"2018-09-29T23:40:01Z","updated_at":"2018-12-01T03:44:25Z","pushed_at":"2018-12-01T03:44:22Z","git_url":"git://github.com/flugel-it/ingress-nginx.git","ssh_url":"git@github.com:flugel-it/ingress-nginx.git","clone_url":"https://github.com/flugel-it/ingress-nginx.git","svn_url":"https://github.com/flugel-it/ingress-nginx","homepage":"https://kubernetes.github.io/ingress-nginx/","size":75965,"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":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":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"fdeeac360629bb3aa887f0dcec55a40ead6cb28d","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":72891330,"node_id":"MDEwOlJlcG9zaXRvcnk3Mjg5MTMzMA==","name":"ingress-nginx","full_name":"kubernetes/ingress-nginx","private":false,"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},"html_url":"https://github.com/kubernetes/ingress-nginx","description":"NGINX Ingress Controller for Kubernetes","fork":false,"url":"https://api.github.com/repos/kubernetes/ingress-nginx","forks_url":"https://api.github.com/repos/kubernetes/ingress-nginx/forks","keys_url":"https://api.github.com/repos/kubernetes/ingress-nginx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/ingress-nginx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/ingress-nginx/teams","hooks_url":"https://api.github.com/repos/kubernetes/ingress-nginx/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/ingress-nginx/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/ingress-nginx/events","assignees_url":"https://api.github.com/repos/kubernetes/ingress-nginx/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/ingress-nginx/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/ingress-nginx/tags","blobs_url":"https://api.github.com/repos/kubernetes/ingress-nginx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/ingress-nginx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/ingress-nginx/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/ingress-nginx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/ingress-nginx/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/ingress-nginx/languages","stargazers_url":"https://api.github.com/repos/kubernetes/ingress-nginx/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/ingress-nginx/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/ingress-nginx/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/ingress-nginx/subscription","commits_url":"https://api.github.com/repos/kubernetes/ingress-nginx/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/ingress-nginx/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/ingress-nginx/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/ingress-nginx/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/ingress-nginx/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/ingress-nginx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/ingress-nginx/merges","archive_url":"https://api.github.com/repos/kubernetes/ingress-nginx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/ingress-nginx/downloads","issues_url":"https://api.github.com/repos/kubernetes/ingress-nginx/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/ingress-nginx/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/ingress-nginx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/ingress-nginx/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/ingress-nginx/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/ingress-nginx/deployments","created_at":"2016-11-04T22:54:14Z","updated_at":"2018-12-03T22:07:58Z","pushed_at":"2018-12-03T22:54:55Z","git_url":"git://github.com/kubernetes/ingress-nginx.git","ssh_url":"git@github.com:kubernetes/ingress-nginx.git","clone_url":"https://github.com/kubernetes/ingress-nginx.git","svn_url":"https://github.com/kubernetes/ingress-nginx","homepage":"https://kubernetes.github.io/ingress-nginx/","size":86817,"stargazers_count":3420,"watchers_count":3420,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":1713,"mirror_url":null,"archived":false,"open_issues_count":157,"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":1713,"open_issues":157,"watchers":3420,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396"},"html":{"href":"https://github.com/kubernetes/ingress-nginx/pull/3396"},"issue":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/issues/3396"},"comments":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/issues/3396/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/pulls/3396/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/ingress-nginx/statuses/e3d9aa9bf8cdbe93a23e6ce1aeb35b3643edaa54"}},"author_association":"NONE"}}
{"actor":{"display_login":"diegows"}}