{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments/184996493","pull_request_review_id":116299090,"id":184996493,"diff_hunk":"@@ -0,0 +1,110 @@\n+[[install-config-persistent-storage-persistent-storage-csi]]\n+= Persistent Storage Using Container Storage Interface (CSI)\n+{product-author}\n+{product-version}\n+:data-uri:\n+:icons:\n+:experimental:\n+:toc: macro\n+:toc-title:\n+:prewrap!:\n+\n+toc::[]\n+\n+== Overview\n+Container Storage Interface (CSI) allows {product-title} to consume storage from storage backends that implement the link:https://github.com/container-storage-interface/spec[CSI interface] as xref:../../architecture/additional_concepts/storage.adoc#architecture-additional-concepts-storage[persistent\n+storage].\n+\n+\n+[NOTE]\n+====\n+CSI volumes is an alpha feature and may change in a future release of {product-title}. See xref:local-volume-alpha-feature-status[Feature Status(Local Volume)] section for details on known issues and workarounds.\n+====\n+\n+[NOTE]\n+====\n+{product-title} does not ship any CSI drivers. It is recommended to use CSI drivers provided by link:https://kubernetes-csi.github.io/docs/Drivers.html[community or storage vendors].\n+====\n+\n+[NOTE]\n+====\n+{product-title} {product-version} supports version 0.2.0 of link:https://github.com/container-storage-interface/spec[CSI specification].\n+====\n+\n+\n+[[install-config-persistent-storage-csi-architecture]]\n+== Architecture\n+\n+CSI drivers are typically shipped as container images. These containers are typically not aware of {product-title} where they run. In order to use CSI-compatible storage backed in {product-title}, cluster administrator must deploy several components that sever as a bridge between {product-title} and CSI storage driver.\n+\n+Following picture provides high-level overview about these components running in pods in {product-title} cluster.\n+\n+image::csi.png[\"Architecture of CSI components\"]\n+\n+It is possible to run multiple CSI drivers for different storage backends. Each driver needs its own external attacher StatefulSet, external provisioner Deployment and DaemonSet with the driver and CSI registrar.\n+\n+=== External CSI attacher StatefulSet\n+\n+External CSI attacher is a StatefulSet that deploys a single pod with two containers:\n+\n+  * External CSI attacher container itself that translates `attach` and `detach` calls from {product-title} to respective `ControllerPublish` and `ControllerUnpublish` calls to CSI driver.\n+  * CSI driver container.\n+\n+CSI attacher container talks to CSI driver container using Unix Domain Sockets, ensuring that no CSI communication leaves the pod. CSI driver is not accessible from outside of the pod at all.\n+\n+StatefulSet is used to ensure that exactly one instance of the pod runs at any given time. External attacher pod does not scale in {product-title} {product-version}.\n+\n+[NOTE]\n+====\n+`attach` and `detach` operations typically require CSI driver to use credentials to the storage backend. It is recommended to run external attacher pod runs xref:../../install_config/install/advanced_install.adoc#configuring-dedicated-infrastructure-nodes[infrastructure nodes] so the credentials can never leak to user processes even in case of catastrophic security breach on a node.\n+====\n+\n+[NOTE]\n+====\n+External attacher must run also for CSI drivers that don't support 3rd party attach/detach operations. External attacher will not issue any `ControllerPublish` or `ControllerUnpublish` to CSI driver, however it still must run to implement necessary {product-title} attachment API.\n+====\n+\n+=== External CSI provisioner deployment\n+\n+External CSI provisioner is a Deployment that deploys single or several pods with two containers:\n+\n+  * External CSI provisioner container itself that translates `provision` and `delete` calls from {product-title} to respective `CreateVolume` and `DeleteVolume` calls to CSI driver.\n+  * CSI driver container.\n+\n+CSI provisioner container talks to CSI driver container using Unix Domain Sockets, ensuring that no CSI communication leaves the pod. CSI driver is not accessible from outside of the pod at all.\n+\n+Deployment can be used to scale up/down number of provisioners.\n+\n+[NOTE]\n+====\n+`provision` and `delete` operations typically require CSI driver to use credentials to the storage backend. It is recommended to run external provisioner pods on xref:../../install_config/install/advanced_install.adoc#configuring-dedicated-infrastructure-nodes[infrastructure nodes] so the credentials can never leak to user processes even in case of catastrophic security breach on a node.\n+====\n+\n+=== CSI driver DaemonSet\n+\n+Finally, CSI driver DaemonSet runs a pod on every node that allows {product-title} to mount storage provided by CSI driver to the node and use it in user workloads (Pods) as persistent volumes. The pod with CSI driver contains these containers:\n+\n+* CSI driver registrar, that registers the CSI driver into `openshift-node` service running on the node. `openshift-node` process running on the node then directly talks to CSI driver using Unix Domain Socket available on the node.\n+* CSI driver itself.\n+\n+CSI driver deployed on the node should have as least credentials to the storage backend as possible. {product-title} will use just Node plugin set of CSI calls such as `NodePublish`/`NodeUnpublish` and `NodeStage`/`NodeUnstage` (if implemented).\n+\n+== Example deployment\n+\n+Since {product-title} does not ship any CSI driver, this example shows how to deploy community driver for OpenStack Cinder in {product-title}.","path":"install_config/persistent_storage/persistent_storage_csi.adoc","position":94,"original_position":94,"commit_id":"1152ae174889219b654c2b99f7d8e6b4f5e31f28","original_commit_id":"1152ae174889219b654c2b99f7d8e6b4f5e31f28","user":{"login":"tmorriso-rh","id":30870881,"avatar_url":"https://avatars3.githubusercontent.com/u/30870881?v=4","gravatar_id":"","url":"https://api.github.com/users/tmorriso-rh","html_url":"https://github.com/tmorriso-rh","followers_url":"https://api.github.com/users/tmorriso-rh/followers","following_url":"https://api.github.com/users/tmorriso-rh/following{/other_user}","gists_url":"https://api.github.com/users/tmorriso-rh/gists{/gist_id}","starred_url":"https://api.github.com/users/tmorriso-rh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmorriso-rh/subscriptions","organizations_url":"https://api.github.com/users/tmorriso-rh/orgs","repos_url":"https://api.github.com/users/tmorriso-rh/repos","events_url":"https://api.github.com/users/tmorriso-rh/events{/privacy}","received_events_url":"https://api.github.com/users/tmorriso-rh/received_events","type":"User","site_admin":false},"body":"s/does not ship any/does not ship with any CSI driver installed\r\n\r\ns/shows how to deploy community driver/shows how to deploy a community driver ","created_at":"2018-04-30T14:07:33Z","updated_at":"2018-04-30T14:07:33Z","html_url":"https://github.com/openshift/openshift-docs/pull/8783#discussion_r184996493","pull_request_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments/184996493"},"html":{"href":"https://github.com/openshift/openshift-docs/pull/8783#discussion_r184996493"},"pull_request":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783"}}},"pull_request":{"url":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783","id":182513641,"html_url":"https://github.com/openshift/openshift-docs/pull/8783","diff_url":"https://github.com/openshift/openshift-docs/pull/8783.diff","patch_url":"https://github.com/openshift/openshift-docs/pull/8783.patch","issue_url":"https://api.github.com/repos/openshift/openshift-docs/issues/8783","number":8783,"state":"open","locked":false,"title":"WIP: Add documentation about CSI.","user":{"login":"jsafrane","id":1745006,"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":"This is the first draft of CSI docs, I'll finish it later with yaml files and so on.\r\n\r\n@tmorriso-rh, PTAL. I know the image is too big with too small text and very rough. Do we have any designers or artists that can make it beautiful? I am engineer, not Michelangelo nor Shakespeare :-)\r\n \r\n@humblec, can I use you as a guinea pig for proof reading? Is the Architecure understandable and complete?\r\n","created_at":"2018-04-18T15:14:59Z","updated_at":"2018-04-30T14:07:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"477323639e5ae4b8dfd7e6fa21b670e397f3e45a","assignee":{"login":"tmorriso-rh","id":30870881,"avatar_url":"https://avatars3.githubusercontent.com/u/30870881?v=4","gravatar_id":"","url":"https://api.github.com/users/tmorriso-rh","html_url":"https://github.com/tmorriso-rh","followers_url":"https://api.github.com/users/tmorriso-rh/followers","following_url":"https://api.github.com/users/tmorriso-rh/following{/other_user}","gists_url":"https://api.github.com/users/tmorriso-rh/gists{/gist_id}","starred_url":"https://api.github.com/users/tmorriso-rh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmorriso-rh/subscriptions","organizations_url":"https://api.github.com/users/tmorriso-rh/orgs","repos_url":"https://api.github.com/users/tmorriso-rh/repos","events_url":"https://api.github.com/users/tmorriso-rh/events{/privacy}","received_events_url":"https://api.github.com/users/tmorriso-rh/received_events","type":"User","site_admin":false},"assignees":[{"login":"tmorriso-rh","id":30870881,"avatar_url":"https://avatars3.githubusercontent.com/u/30870881?v=4","gravatar_id":"","url":"https://api.github.com/users/tmorriso-rh","html_url":"https://github.com/tmorriso-rh","followers_url":"https://api.github.com/users/tmorriso-rh/followers","following_url":"https://api.github.com/users/tmorriso-rh/following{/other_user}","gists_url":"https://api.github.com/users/tmorriso-rh/gists{/gist_id}","starred_url":"https://api.github.com/users/tmorriso-rh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmorriso-rh/subscriptions","organizations_url":"https://api.github.com/users/tmorriso-rh/orgs","repos_url":"https://api.github.com/users/tmorriso-rh/repos","events_url":"https://api.github.com/users/tmorriso-rh/events{/privacy}","received_events_url":"https://api.github.com/users/tmorriso-rh/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":756334595,"url":"https://api.github.com/repos/openshift/openshift-docs/labels/do-not-merge/work-in-progress","name":"do-not-merge/work-in-progress","color":"e11d21","default":false},{"id":751797317,"url":"https://api.github.com/repos/openshift/openshift-docs/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783/commits","review_comments_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783/comments","review_comment_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/openshift-docs/issues/8783/comments","statuses_url":"https://api.github.com/repos/openshift/openshift-docs/statuses/1152ae174889219b654c2b99f7d8e6b4f5e31f28","head":{"label":"jsafrane:csi","ref":"csi","sha":"1152ae174889219b654c2b99f7d8e6b4f5e31f28","user":{"login":"jsafrane","id":1745006,"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},"repo":{"id":41671857,"name":"openshift-docs","full_name":"jsafrane/openshift-docs","owner":{"login":"jsafrane","id":1745006,"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},"private":false,"html_url":"https://github.com/jsafrane/openshift-docs","description":"OpenShift Documentation","fork":true,"url":"https://api.github.com/repos/jsafrane/openshift-docs","forks_url":"https://api.github.com/repos/jsafrane/openshift-docs/forks","keys_url":"https://api.github.com/repos/jsafrane/openshift-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jsafrane/openshift-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jsafrane/openshift-docs/teams","hooks_url":"https://api.github.com/repos/jsafrane/openshift-docs/hooks","issue_events_url":"https://api.github.com/repos/jsafrane/openshift-docs/issues/events{/number}","events_url":"https://api.github.com/repos/jsafrane/openshift-docs/events","assignees_url":"https://api.github.com/repos/jsafrane/openshift-docs/assignees{/user}","branches_url":"https://api.github.com/repos/jsafrane/openshift-docs/branches{/branch}","tags_url":"https://api.github.com/repos/jsafrane/openshift-docs/tags","blobs_url":"https://api.github.com/repos/jsafrane/openshift-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jsafrane/openshift-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jsafrane/openshift-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/jsafrane/openshift-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jsafrane/openshift-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/jsafrane/openshift-docs/languages","stargazers_url":"https://api.github.com/repos/jsafrane/openshift-docs/stargazers","contributors_url":"https://api.github.com/repos/jsafrane/openshift-docs/contributors","subscribers_url":"https://api.github.com/repos/jsafrane/openshift-docs/subscribers","subscription_url":"https://api.github.com/repos/jsafrane/openshift-docs/subscription","commits_url":"https://api.github.com/repos/jsafrane/openshift-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/jsafrane/openshift-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/jsafrane/openshift-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/jsafrane/openshift-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/jsafrane/openshift-docs/contents/{+path}","compare_url":"https://api.github.com/repos/jsafrane/openshift-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jsafrane/openshift-docs/merges","archive_url":"https://api.github.com/repos/jsafrane/openshift-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jsafrane/openshift-docs/downloads","issues_url":"https://api.github.com/repos/jsafrane/openshift-docs/issues{/number}","pulls_url":"https://api.github.com/repos/jsafrane/openshift-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/jsafrane/openshift-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/jsafrane/openshift-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jsafrane/openshift-docs/labels{/name}","releases_url":"https://api.github.com/repos/jsafrane/openshift-docs/releases{/id}","deployments_url":"https://api.github.com/repos/jsafrane/openshift-docs/deployments","created_at":"2015-08-31T11:28:49Z","updated_at":"2018-04-18T14:03:38Z","pushed_at":"2018-04-25T14:13:13Z","git_url":"git://github.com/jsafrane/openshift-docs.git","ssh_url":"git@github.com:jsafrane/openshift-docs.git","clone_url":"https://github.com/jsafrane/openshift-docs.git","svn_url":"https://github.com/jsafrane/openshift-docs","homepage":null,"size":53744,"stargazers_count":0,"watchers_count":0,"language":"HTML","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":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openshift:master","ref":"master","sha":"fd537d64fa8a6afc6b0b11cf41b11f465900774f","user":{"login":"openshift","id":792337,"avatar_url":"https://avatars3.githubusercontent.com/u/792337?v=4","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"repo":{"id":21740844,"name":"openshift-docs","full_name":"openshift/openshift-docs","owner":{"login":"openshift","id":792337,"avatar_url":"https://avatars3.githubusercontent.com/u/792337?v=4","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openshift/openshift-docs","description":"OpenShift Documentation","fork":false,"url":"https://api.github.com/repos/openshift/openshift-docs","forks_url":"https://api.github.com/repos/openshift/openshift-docs/forks","keys_url":"https://api.github.com/repos/openshift/openshift-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/openshift-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/openshift-docs/teams","hooks_url":"https://api.github.com/repos/openshift/openshift-docs/hooks","issue_events_url":"https://api.github.com/repos/openshift/openshift-docs/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/openshift-docs/events","assignees_url":"https://api.github.com/repos/openshift/openshift-docs/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/openshift-docs/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/openshift-docs/tags","blobs_url":"https://api.github.com/repos/openshift/openshift-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/openshift-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/openshift-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/openshift-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/openshift-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/openshift-docs/languages","stargazers_url":"https://api.github.com/repos/openshift/openshift-docs/stargazers","contributors_url":"https://api.github.com/repos/openshift/openshift-docs/contributors","subscribers_url":"https://api.github.com/repos/openshift/openshift-docs/subscribers","subscription_url":"https://api.github.com/repos/openshift/openshift-docs/subscription","commits_url":"https://api.github.com/repos/openshift/openshift-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/openshift-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/openshift-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/openshift-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/openshift-docs/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/openshift-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/openshift-docs/merges","archive_url":"https://api.github.com/repos/openshift/openshift-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/openshift-docs/downloads","issues_url":"https://api.github.com/repos/openshift/openshift-docs/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/openshift-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/openshift-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/openshift-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/openshift-docs/labels{/name}","releases_url":"https://api.github.com/repos/openshift/openshift-docs/releases{/id}","deployments_url":"https://api.github.com/repos/openshift/openshift-docs/deployments","created_at":"2014-07-11T15:14:42Z","updated_at":"2018-04-28T21:33:09Z","pushed_at":"2018-04-30T13:56:53Z","git_url":"git://github.com/openshift/openshift-docs.git","ssh_url":"git@github.com:openshift/openshift-docs.git","clone_url":"https://github.com/openshift/openshift-docs.git","svn_url":"https://github.com/openshift/openshift-docs","homepage":"https://docs.openshift.org/latest/welcome/index.html","size":69622,"stargazers_count":157,"watchers_count":157,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":516,"mirror_url":null,"archived":false,"open_issues_count":305,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":516,"open_issues":305,"watchers":157,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783"},"html":{"href":"https://github.com/openshift/openshift-docs/pull/8783"},"issue":{"href":"https://api.github.com/repos/openshift/openshift-docs/issues/8783"},"comments":{"href":"https://api.github.com/repos/openshift/openshift-docs/issues/8783/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/8783/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/openshift-docs/statuses/1152ae174889219b654c2b99f7d8e6b4f5e31f28"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"tmorriso-rh"}}