{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/community/pulls/comments/209694060","pull_request_review_id":145757134,"id":209694060,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTY5NDA2MA==","diff_hunk":"@@ -0,0 +1,135 @@\n+# Dynamic attached volume limits\n+\n+## Goals\n+\n+Currently the number of volumes attachable to a node is either hard-coded or only configurable via an environment variable. Also\n+existing limits only apply to well known volume types like EBS, GCE and is not available to all volume plugins.\n+\n+This proposal enables any volume plugin to specify those limits and also allows same volume type to have different volume\n+limits depending on type of node.\n+\n+## Implementation Design\n+\n+### Prerequisite\n+\n+* 1.11 This feature will be protected by an alpha feature gate, so as API and CLI changes needed for it. We are planning to call\n+  the feature `AttachVolumeLimit`.\n+* 1.12 This feature will be behind a beta feature gate and enabled by default.\n+\n+### API Changes\n+\n+There is no API change needed for this feature. However existing `node.Status.Capacity` and `node.Status.Allocatable` will\n+be extended to cover volume limits available on the node too.\n+\n+The key name that will store volume will be start with prefix `attachable-volumes-`. The volume limit key will respect\n+format restrictions applied to Kubernetes Resource names. Volume limit key for existing plugins might look like:\n+\n+\n+* `attachable-volumes-aws-ebs`\n+* `attachable-volumes-gce-pd`\n+\n+`IsScalarResourceName` check will be extended to cover storage limits:\n+\n+```go\n+func IsStorageAttachLimit(name v1.ResourceName) bool {\n+    return strings.HasPrefix(string(name), v1.ResourceStoragePrefix)\n+}\n+\n+// Extended and Hugepages resources\n+func IsScalarResourceName(name v1.ResourceName) bool {\n+    return IsExtendedResourceName(name) || IsHugePageResourceName(name) ||\n+        IsPrefixedNativeResource(name) || IsStorageAttachLimit(name)\n+}\n+```\n+\n+The prefix `storage-attach-limits-*` can not be used as a resource in pods, because it does not adhere to specs defined in following function:\n+\n+\n+```go\n+func IsStandardContainerResourceName(str string) bool {\n+    return standardContainerResources.Has(str) || IsHugePageResourceName(core.ResourceName(str))\n+}\n+```\n+\n+Additional validation tests will be added to make sure we don't accidentally break this.\n+\n+#### Alternative to using \"storage-\" prefix\n+We also considered using currently defined `GetPluginName` interface(of Volume Plugins) for using as key in the `node.Status.Capacity`. Ultimately\n+we decided against using it, because most in-tree plugins start with `kubernetes.io/` and we needed a uniform way to identify storage\n+related capacity limits in `node.Status`.\n+\n+### Changes to scheduler\n+\n+Scheduler will retrieve available attachable limit on a node from `node.Status.Allocatable` and store it in `nodeInfo` cache. Volume\n+limits will be treated like any other scalar resource.\n+\n+For `AWS-EBS`, `AzureDisk` and `GCE-PD` volume types, existing `MaxPD*` predicates will be updated to use volume attach limits available\n+from node's allocatable property. To be backward compatible - the scheduler will fallback to older logic, if no limit is set in `node.Status.Allocatable` for AWS, GCE and Azure volume types.\n+\n+### Setting of limit for existing in-tree volume plugins\n+\n+The volume limit for existing volume plugins will be set by querying the volume plugin. Following function\n+will be added to volume plugin interface:\n+\n+```go\n+type VolumePluginWithAttachLimits interface {\n+    // Return key name that is used for storing volume limits inside node Capacity\n+    // must start with storage- prefix\n+    VolumeLimitKey(spec *Spec) string\n+    // Return volume limits for plugin\n+    GetVolumeLimits() (map[string]int64, error)\n+}\n+```\n+\n+When querying the plugin - plugin will use `ProviderName` function of CloudProvider to check\n+if plugin is usable on the node. For example - querying for `GetVolumeLimits` from `aws-ebs` plugin with `gce` cloudprovider\n+will result in error.\n+\n+Kubelet will query the volume plugins inside `kubelet.initialNode` function and populate `node.Status` with returned values.\n+\n+For GCE and AWS - `GetVolumeLimits` will return limits depending on node type. Plugin already has node name accessible\n+via `VolumeHost` interface and hence it will check the node type and return the volume limits.\n+\n+We do not aim to cover all in-tree volume types. We will support dynamic volume limits proposed here for following volume types:\n+\n+* GCE-PD\n+* AWS-EBS\n+* AzureDisk\n+\n+We expect to add incremental support for other volume types.\n+\n+### Changes for Kubernetes 1.12\n+\n+For Kubernetes 1.12, we are adding support for CSI and moving the feature to beta.\n+\n+#### CSI support\n+\n+A new filter type will be added to `MaxPDVolumeCountChecker` to extend support for CSI volumes.\n+\n+A new function of will be added to `pkg/volume/util/attach_limit.go` which will return CSI attach limit\n+resource name.\n+\n+The interface of function will be:\n+\n+```go\n+cost (\n+    // CSI attach prefix\n+    CSIAttachLimitPrefix = \"attachable-volumes-csi-\"\n+\n+    // Resource Name length\n+    ResourceNameLengthLimit = 63\n+)\n+\n+func GetCSIAttachLimitKey(driverName string) string {\n+    csiPrefixLength := len(CSIAttachLimitPrefix)\n+    totalkeyLength := csiPrefixLength + len(driverName)\n+    if totalkeyLength >= ResourceNameLengthLimit {\n+        // compute SHA1 of driverName and get first 36 chars","path":"contributors/design-proposals/storage/dynamic_volume_limit.md","position":127,"original_position":127,"commit_id":"d3edde3aafd59d8228cd3cf5c87a79b8589bc097","original_commit_id":"d3edde3aafd59d8228cd3cf5c87a79b8589bc097","user":{"login":"jsafrane","id":1745006,"node_id":"MDQ6VXNlcjE3NDUwMDY=","avatar_url":"https://avatars2.githubusercontent.com/u/1745006?v=4","gravatar_id":"","url":"https://api.github.com/users/jsafrane","html_url":"https://github.com/jsafrane","followers_url":"https://api.github.com/users/jsafrane/followers","following_url":"https://api.github.com/users/jsafrane/following{/other_user}","gists_url":"https://api.github.com/users/jsafrane/gists{/gist_id}","starred_url":"https://api.github.com/users/jsafrane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsafrane/subscriptions","organizations_url":"https://api.github.com/users/jsafrane/orgs","repos_url":"https://api.github.com/users/jsafrane/repos","events_url":"https://api.github.com/users/jsafrane/events{/privacy}","received_events_url":"https://api.github.com/users/jsafrane/received_events","type":"User","site_admin":false},"body":"I think that keeping some prefix with the original name would help users deciphering what the key is, e.g. `reallyreallylongcsidrivername` -> `reallyreallylongcs-19e793491b1c6`.","created_at":"2018-08-13T17:31:39Z","updated_at":"2018-08-13T17:31:39Z","html_url":"https://github.com/kubernetes/community/pull/2051#discussion_r209694060","pull_request_url":"https://api.github.com/repos/kubernetes/community/pulls/2051","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/community/pulls/comments/209694060"},"html":{"href":"https://github.com/kubernetes/community/pull/2051#discussion_r209694060"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/community/pulls/2051"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/community/pulls/2051","id":182601201,"node_id":"MDExOlB1bGxSZXF1ZXN0MTgyNjAxMjAx","html_url":"https://github.com/kubernetes/community/pull/2051","diff_url":"https://github.com/kubernetes/community/pull/2051.diff","patch_url":"https://github.com/kubernetes/community/pull/2051.patch","issue_url":"https://api.github.com/repos/kubernetes/community/issues/2051","number":2051,"state":"open","locked":false,"title":"Add a design proposal for dynamic volume limits","user":{"login":"gnufied","id":278,"node_id":"MDQ6VXNlcjI3OA==","avatar_url":"https://avatars0.githubusercontent.com/u/278?v=4","gravatar_id":"","url":"https://api.github.com/users/gnufied","html_url":"https://github.com/gnufied","followers_url":"https://api.github.com/users/gnufied/followers","following_url":"https://api.github.com/users/gnufied/following{/other_user}","gists_url":"https://api.github.com/users/gnufied/gists{/gist_id}","starred_url":"https://api.github.com/users/gnufied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnufied/subscriptions","organizations_url":"https://api.github.com/users/gnufied/orgs","repos_url":"https://api.github.com/users/gnufied/repos","events_url":"https://api.github.com/users/gnufied/events{/privacy}","received_events_url":"https://api.github.com/users/gnufied/received_events","type":"User","site_admin":false},"body":"Add a proposal for dynamic volume limits.\r\n\r\ncc @liggitt @saad-ali @derekwaynecarr \r\n\r\nxref - https://github.com/kubernetes/features/issues/554\r\n\r\n\r\n/sig storage\r\n","created_at":"2018-04-18T20:58:45Z","updated_at":"2018-08-13T17:31:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"abd35aaea9f77a5a7f502844c9cba708bf730944","assignee":null,"assignees":[],"requested_reviewers":[{"login":"saad-ali","id":10052848,"node_id":"MDQ6VXNlcjEwMDUyODQ4","avatar_url":"https://avatars1.githubusercontent.com/u/10052848?v=4","gravatar_id":"","url":"https://api.github.com/users/saad-ali","html_url":"https://github.com/saad-ali","followers_url":"https://api.github.com/users/saad-ali/followers","following_url":"https://api.github.com/users/saad-ali/following{/other_user}","gists_url":"https://api.github.com/users/saad-ali/gists{/gist_id}","starred_url":"https://api.github.com/users/saad-ali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saad-ali/subscriptions","organizations_url":"https://api.github.com/users/saad-ali/orgs","repos_url":"https://api.github.com/users/saad-ali/repos","events_url":"https://api.github.com/users/saad-ali/events{/privacy}","received_events_url":"https://api.github.com/users/saad-ali/received_events","type":"User","site_admin":false},{"login":"yujuhong","id":10524058,"node_id":"MDQ6VXNlcjEwNTI0MDU4","avatar_url":"https://avatars1.githubusercontent.com/u/10524058?v=4","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}],"requested_teams":[],"labels":[{"id":486032367,"node_id":"MDU6TGFiZWw0ODYwMzIzNjc=","url":"https://api.github.com/repos/kubernetes/community/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":653942785,"node_id":"MDU6TGFiZWw2NTM5NDI3ODU=","url":"https://api.github.com/repos/kubernetes/community/labels/kind/design","name":"kind/design","color":"c7def8","default":false},{"id":653942906,"node_id":"MDU6TGFiZWw2NTM5NDI5MDY=","url":"https://api.github.com/repos/kubernetes/community/labels/sig/storage","name":"sig/storage","color":"d2b48c","default":false},{"id":653942910,"node_id":"MDU6TGFiZWw2NTM5NDI5MTA=","url":"https://api.github.com/repos/kubernetes/community/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/community/pulls/2051/commits","review_comments_url":"https://api.github.com/repos/kubernetes/community/pulls/2051/comments","review_comment_url":"https://api.github.com/repos/kubernetes/community/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/community/issues/2051/comments","statuses_url":"https://api.github.com/repos/kubernetes/community/statuses/d3edde3aafd59d8228cd3cf5c87a79b8589bc097","head":{"label":"gnufied:dynamic-volume-attach-limit","ref":"dynamic-volume-attach-limit","sha":"d3edde3aafd59d8228cd3cf5c87a79b8589bc097","user":{"login":"gnufied","id":278,"node_id":"MDQ6VXNlcjI3OA==","avatar_url":"https://avatars0.githubusercontent.com/u/278?v=4","gravatar_id":"","url":"https://api.github.com/users/gnufied","html_url":"https://github.com/gnufied","followers_url":"https://api.github.com/users/gnufied/followers","following_url":"https://api.github.com/users/gnufied/following{/other_user}","gists_url":"https://api.github.com/users/gnufied/gists{/gist_id}","starred_url":"https://api.github.com/users/gnufied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnufied/subscriptions","organizations_url":"https://api.github.com/users/gnufied/orgs","repos_url":"https://api.github.com/users/gnufied/repos","events_url":"https://api.github.com/users/gnufied/events{/privacy}","received_events_url":"https://api.github.com/users/gnufied/received_events","type":"User","site_admin":false},"repo":{"id":78148627,"node_id":"MDEwOlJlcG9zaXRvcnk3ODE0ODYyNw==","name":"community","full_name":"gnufied/community","owner":{"login":"gnufied","id":278,"node_id":"MDQ6VXNlcjI3OA==","avatar_url":"https://avatars0.githubusercontent.com/u/278?v=4","gravatar_id":"","url":"https://api.github.com/users/gnufied","html_url":"https://github.com/gnufied","followers_url":"https://api.github.com/users/gnufied/followers","following_url":"https://api.github.com/users/gnufied/following{/other_user}","gists_url":"https://api.github.com/users/gnufied/gists{/gist_id}","starred_url":"https://api.github.com/users/gnufied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnufied/subscriptions","organizations_url":"https://api.github.com/users/gnufied/orgs","repos_url":"https://api.github.com/users/gnufied/repos","events_url":"https://api.github.com/users/gnufied/events{/privacy}","received_events_url":"https://api.github.com/users/gnufied/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gnufied/community","description":"Kubernetes community content","fork":true,"url":"https://api.github.com/repos/gnufied/community","forks_url":"https://api.github.com/repos/gnufied/community/forks","keys_url":"https://api.github.com/repos/gnufied/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gnufied/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gnufied/community/teams","hooks_url":"https://api.github.com/repos/gnufied/community/hooks","issue_events_url":"https://api.github.com/repos/gnufied/community/issues/events{/number}","events_url":"https://api.github.com/repos/gnufied/community/events","assignees_url":"https://api.github.com/repos/gnufied/community/assignees{/user}","branches_url":"https://api.github.com/repos/gnufied/community/branches{/branch}","tags_url":"https://api.github.com/repos/gnufied/community/tags","blobs_url":"https://api.github.com/repos/gnufied/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gnufied/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gnufied/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/gnufied/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gnufied/community/statuses/{sha}","languages_url":"https://api.github.com/repos/gnufied/community/languages","stargazers_url":"https://api.github.com/repos/gnufied/community/stargazers","contributors_url":"https://api.github.com/repos/gnufied/community/contributors","subscribers_url":"https://api.github.com/repos/gnufied/community/subscribers","subscription_url":"https://api.github.com/repos/gnufied/community/subscription","commits_url":"https://api.github.com/repos/gnufied/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/gnufied/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/gnufied/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/gnufied/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/gnufied/community/contents/{+path}","compare_url":"https://api.github.com/repos/gnufied/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gnufied/community/merges","archive_url":"https://api.github.com/repos/gnufied/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gnufied/community/downloads","issues_url":"https://api.github.com/repos/gnufied/community/issues{/number}","pulls_url":"https://api.github.com/repos/gnufied/community/pulls{/number}","milestones_url":"https://api.github.com/repos/gnufied/community/milestones{/number}","notifications_url":"https://api.github.com/repos/gnufied/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gnufied/community/labels{/name}","releases_url":"https://api.github.com/repos/gnufied/community/releases{/id}","deployments_url":"https://api.github.com/repos/gnufied/community/deployments","created_at":"2017-01-05T21:11:59Z","updated_at":"2018-08-02T18:59:33Z","pushed_at":"2018-08-10T21:05:23Z","git_url":"git://github.com/gnufied/community.git","ssh_url":"git@github.com:gnufied/community.git","clone_url":"https://github.com/gnufied/community.git","svn_url":"https://github.com/gnufied/community","homepage":"","size":28541,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"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":"0652693b26255cb7635b8a9bc64990c39b2d1191","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":57939112,"node_id":"MDEwOlJlcG9zaXRvcnk1NzkzOTExMg==","name":"community","full_name":"kubernetes/community","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/community","description":"Kubernetes community content","fork":false,"url":"https://api.github.com/repos/kubernetes/community","forks_url":"https://api.github.com/repos/kubernetes/community/forks","keys_url":"https://api.github.com/repos/kubernetes/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/community/teams","hooks_url":"https://api.github.com/repos/kubernetes/community/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/community/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/community/events","assignees_url":"https://api.github.com/repos/kubernetes/community/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/community/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/community/tags","blobs_url":"https://api.github.com/repos/kubernetes/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/community/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/community/languages","stargazers_url":"https://api.github.com/repos/kubernetes/community/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/community/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/community/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/community/subscription","commits_url":"https://api.github.com/repos/kubernetes/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/community/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/community/merges","archive_url":"https://api.github.com/repos/kubernetes/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/community/downloads","issues_url":"https://api.github.com/repos/kubernetes/community/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/community/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/community/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/community/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/community/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/community/deployments","created_at":"2016-05-03T03:36:05Z","updated_at":"2018-08-13T16:50:43Z","pushed_at":"2018-08-13T17:03:05Z","git_url":"git://github.com/kubernetes/community.git","ssh_url":"git@github.com:kubernetes/community.git","clone_url":"https://github.com/kubernetes/community.git","svn_url":"https://github.com/kubernetes/community","homepage":"","size":30307,"stargazers_count":2319,"watchers_count":2319,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1365,"mirror_url":null,"archived":false,"open_issues_count":240,"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":1365,"open_issues":240,"watchers":2319,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/community/pulls/2051"},"html":{"href":"https://github.com/kubernetes/community/pull/2051"},"issue":{"href":"https://api.github.com/repos/kubernetes/community/issues/2051"},"comments":{"href":"https://api.github.com/repos/kubernetes/community/issues/2051/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/community/pulls/2051/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/community/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/community/pulls/2051/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/community/statuses/d3edde3aafd59d8228cd3cf5c87a79b8589bc097"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jsafrane"}}