{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/openshift-ansible/pulls/comments/169166459","pull_request_review_id":97644173,"id":169166459,"diff_hunk":"@@ -0,0 +1,177 @@\n+---\n+# TODO: add ability to configure certificates given either a local file to\n+#       point to or certificate contents, set in default cert locations.\n+\n+# Authentication Variable Validation\n+# TODO: validate the different identity provider kinds as well\n+- fail:\n+    msg: >\n+      Invalid OAuth grant method: {{ openshift_master_oauth_grant_method }}\n+  when:\n+  - openshift_master_oauth_grant_method is defined\n+  - openshift_master_oauth_grant_method not in openshift_master_valid_grant_methods\n+\n+- name: Open up firewall ports\n+  import_tasks: firewall.yml\n+\n+- name: Create r_openshift_master_data_dir\n+  file:\n+    path: \"{{ r_openshift_master_data_dir }}\"\n+    state: directory\n+    mode: 0755\n+    owner: root\n+    group: root\n+\n+- name: Create config parent directory if it does not exist\n+  file:\n+    path: \"{{ openshift_master_config_dir }}\"\n+    state: directory\n+\n+- name: Create the policy file if it does not already exist\n+  command: >\n+    {{ openshift_client_binary }} adm create-bootstrap-policy-file\n+      --filename={{ openshift_master_policy }}\n+  args:\n+    creates: \"{{ openshift_master_policy }}\"\n+\n+- name: Create the scheduler config\n+  copy:\n+    content: \"{{ scheduler_config | to_nice_json }}\"\n+    dest: \"{{ openshift_master_scheduler_conf }}\"\n+    backup: true\n+\n+- name: Install httpd-tools if needed\n+  package: name=httpd-tools state=present\n+  when:\n+  - item.kind == 'HTPasswdPasswordIdentityProvider'\n+  - not openshift_is_atomic | bool\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+  register: result\n+  until: result is succeeded\n+\n+- name: Ensure htpasswd directory exists\n+  file:\n+    path: \"{{ item.filename | dirname }}\"\n+    state: directory\n+  when:\n+  - item.kind == 'HTPasswdPasswordIdentityProvider'\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+\n+- name: Create the htpasswd file if needed\n+  template:\n+    dest: \"{{ item.filename }}\"\n+    src: htpasswd.j2\n+    backup: yes\n+  when:\n+  - item.kind == 'HTPasswdPasswordIdentityProvider'\n+  - openshift.master.manage_htpasswd | bool\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+\n+- name: Ensure htpasswd file exists\n+  copy:\n+    dest: \"{{ item.filename }}\"\n+    force: no\n+    content: \"\"\n+    mode: 0600\n+  when:\n+  - item.kind == 'HTPasswdPasswordIdentityProvider'\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+\n+- name: Create the ldap ca file if needed\n+  copy:\n+    dest: \"{{ item.ca if 'ca' in item and '/' in item.ca else openshift_master_config_dir ~ '/' ~ item.ca | default('ldap_ca.crt') }}\"\n+    content: \"{{ openshift.master.ldap_ca }}\"\n+    mode: 0600\n+    backup: yes\n+  when:\n+  - openshift.master.ldap_ca is defined\n+  - item.kind == 'LDAPPasswordIdentityProvider'\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+\n+- name: Create the openid ca file if needed\n+  copy:\n+    dest: \"{{ item.ca if 'ca' in item and '/' in item.ca else openshift_master_config_dir ~ '/' ~ item.ca | default('openid_ca.crt') }}\"\n+    content: \"{{ openshift.master.openid_ca }}\"\n+    mode: 0600\n+    backup: yes\n+  when:\n+  - openshift.master.openid_ca is defined\n+  - item.kind == 'OpenIDIdentityProvider'\n+  - item.ca | default('') != ''\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+\n+- name: Create the request header ca file if needed\n+  copy:\n+    dest: \"{{ item.clientCA if 'clientCA' in item and '/' in item.clientCA else openshift_master_config_dir ~ '/' ~ item.clientCA | default('request_header_ca.crt') }}\"\n+    content: \"{{ openshift.master.request_header_ca }}\"\n+    mode: 0600\n+    backup: yes\n+  when:\n+  - openshift.master.request_header_ca is defined\n+  - item.kind == 'RequestHeaderIdentityProvider'\n+  - item.clientCA | default('') != ''\n+  with_items: \"{{ openshift.master.identity_providers }}\"\n+\n+# This is an ugly hack to verify settings are in a file without modifying them with lineinfile.\n+# The template file will stomp any other settings made.\n+- block:","path":"roles/openshift_control_plane/tasks/main.yml","position":117,"original_position":117,"commit_id":"fbf03c9ee09c0bde59b650de720c7b2dc483185d","original_commit_id":"fbf03c9ee09c0bde59b650de720c7b2dc483185d","user":{"login":"michaelgugino","id":6255238,"avatar_url":"https://avatars0.githubusercontent.com/u/6255238?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelgugino","html_url":"https://github.com/michaelgugino","followers_url":"https://api.github.com/users/michaelgugino/followers","following_url":"https://api.github.com/users/michaelgugino/following{/other_user}","gists_url":"https://api.github.com/users/michaelgugino/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelgugino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelgugino/subscriptions","organizations_url":"https://api.github.com/users/michaelgugino/orgs","repos_url":"https://api.github.com/users/michaelgugino/repos","events_url":"https://api.github.com/users/michaelgugino/events{/privacy}","received_events_url":"https://api.github.com/users/michaelgugino/received_events","type":"User","site_admin":false},"body":"Why does this block exist?  Doesn't have any boolean attached.","created_at":"2018-02-19T20:30:15Z","updated_at":"2018-02-19T20:47:30Z","html_url":"https://github.com/openshift/openshift-ansible/pull/6916#discussion_r169166459","pull_request_url":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-ansible/pulls/comments/169166459"},"html":{"href":"https://github.com/openshift/openshift-ansible/pull/6916#discussion_r169166459"},"pull_request":{"href":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916"}}},"pull_request":{"url":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916","id":165591340,"html_url":"https://github.com/openshift/openshift-ansible/pull/6916","diff_url":"https://github.com/openshift/openshift-ansible/pull/6916.diff","patch_url":"https://github.com/openshift/openshift-ansible/pull/6916.patch","issue_url":"https://api.github.com/repos/openshift/openshift-ansible/issues/6916","number":6916,"state":"open","locked":false,"title":"Make openshift-ansible use static pods to install the control plane, make nodes prefer bootstrapping","user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars0.githubusercontent.com/u/1163175?v=4","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"body":"1. Nodes continue to be configured for bootstrapping (as today)\r\n2. For bootstrap nodes, we write a generic bootstrap-node-config.yaml that contains static pod references and any bootstrap config, and then use that to start a child kubelet using `--write-flags` instead of launching the node ourselves.  If a node-config.yaml is laid down in `/etc/origin/node` it takes precedence.\r\n3. For 3.10 we want dynamic node config from Kubernetes to pull down additional files, but there are functional gaps.  For now, the openshift SDN container has a sidecar that syncs node config to disk and updates labels (kubelet doesn't update labels, https://github.com/kubernetes/kubernetes/issues/59314)\r\n4. On the masters, if openshift_master_bootstrap_enabled we generate the master-config.yaml and the etcd config, but we don't start etcd or the masters (no services installed)\r\n5. On the masters, we copy the static files into the correct pod-manifest-path (/etc/origin/node/pods) or similar\r\n6. The kubelet at that point should automatically pick up the new static files and launch the components\r\n7. We wait for them to converge\r\n8. We install openshift-sdn as the first component, which allows nodes to go ready and start installing things.  There is a gap here where the masters are up, the nodes can bootstrap, but the nodes are not ready because no network plugin is installed.\r\n\r\nChallenges at this point:\r\n\r\n* The master shims (`master-logs` and `master-restart`) need to deal with CRI-O and systemd.  Ideally this is a temporary shim until we remove systemd for these components and have cri-ctl installed.\r\n* We need to test failure modes of the static pods\r\n* Testing\r\n\r\nFurther exploration things:\r\n\r\n* need to get all the images using image streams or properly replaced into the static pods\r\n* need to look at upgrades and updates\r\n* disk locations become our API (`/var/lib/origin`, `/var/lib/etcd`) - how many customers have fiddled with this?\r\n* may need to make the kubelet halt if it hasn't been able to get server/client certs within a bounded window (5m?) so to ensure that autoheals happen (https://github.com/openshift/origin/pull/18430)\r\n* have to figure out whether dynamic kubelet config is a thing we can rely on for 3.10 (@liggitt), and what gaps there are with dynamic reconfig\r\n* client-ca.crt is not handled by bootstrapping or dynamic config.  This needs a solution unless we keep the openshift-sdn sidecar around\r\n* kubelet doesn't send sd notify to systemd (https://github.com/kubernetes/kubernetes/issues/59079)\r\n\r\n@derekwaynecarr @sdodson @liggitt @deads2k this is the core of self-hosting.","created_at":"2018-01-28T22:29:20Z","updated_at":"2018-02-19T20:47:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a42e18b1d10c8fbcf5e121843e51b3ba487b10b0","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":681652779,"url":"https://api.github.com/repos/openshift/openshift-ansible/labels/size/XXL","name":"size/XXL","color":"ee0000","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916/commits","review_comments_url":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916/comments","review_comment_url":"https://api.github.com/repos/openshift/openshift-ansible/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/openshift-ansible/issues/6916/comments","statuses_url":"https://api.github.com/repos/openshift/openshift-ansible/statuses/fbf03c9ee09c0bde59b650de720c7b2dc483185d","head":{"label":"smarterclayton:static_masters","ref":"static_masters","sha":"fbf03c9ee09c0bde59b650de720c7b2dc483185d","user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars0.githubusercontent.com/u/1163175?v=4","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"repo":{"id":36983862,"name":"openshift-ansible","full_name":"smarterclayton/openshift-ansible","owner":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars0.githubusercontent.com/u/1163175?v=4","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/smarterclayton/openshift-ansible","description":"OpenShift Ansible Code","fork":true,"url":"https://api.github.com/repos/smarterclayton/openshift-ansible","forks_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/forks","keys_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/teams","hooks_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/hooks","issue_events_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/issues/events{/number}","events_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/events","assignees_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/assignees{/user}","branches_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/branches{/branch}","tags_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/tags","blobs_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/git/refs{/sha}","trees_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/statuses/{sha}","languages_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/languages","stargazers_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/stargazers","contributors_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/contributors","subscribers_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/subscribers","subscription_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/subscription","commits_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/commits{/sha}","git_commits_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/git/commits{/sha}","comments_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/comments{/number}","issue_comment_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/issues/comments{/number}","contents_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/contents/{+path}","compare_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/merges","archive_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/downloads","issues_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/issues{/number}","pulls_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/pulls{/number}","milestones_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/milestones{/number}","notifications_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/labels{/name}","releases_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/releases{/id}","deployments_url":"https://api.github.com/repos/smarterclayton/openshift-ansible/deployments","created_at":"2015-06-06T14:56:54Z","updated_at":"2015-06-06T14:56:55Z","pushed_at":"2018-02-19T18:21:42Z","git_url":"git://github.com/smarterclayton/openshift-ansible.git","ssh_url":"git@github.com:smarterclayton/openshift-ansible.git","clone_url":"https://github.com/smarterclayton/openshift-ansible.git","svn_url":"https://github.com/smarterclayton/openshift-ansible","homepage":"","size":21061,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openshift:master","ref":"master","sha":"f4293d34754468ca85c80177d2566c7b45afceb4","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":24109199,"name":"openshift-ansible","full_name":"openshift/openshift-ansible","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-ansible","description":"OpenShift Installation and Configuration Management","fork":false,"url":"https://api.github.com/repos/openshift/openshift-ansible","forks_url":"https://api.github.com/repos/openshift/openshift-ansible/forks","keys_url":"https://api.github.com/repos/openshift/openshift-ansible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/openshift-ansible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/openshift-ansible/teams","hooks_url":"https://api.github.com/repos/openshift/openshift-ansible/hooks","issue_events_url":"https://api.github.com/repos/openshift/openshift-ansible/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/openshift-ansible/events","assignees_url":"https://api.github.com/repos/openshift/openshift-ansible/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/openshift-ansible/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/openshift-ansible/tags","blobs_url":"https://api.github.com/repos/openshift/openshift-ansible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/openshift-ansible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/openshift-ansible/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/openshift-ansible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/openshift-ansible/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/openshift-ansible/languages","stargazers_url":"https://api.github.com/repos/openshift/openshift-ansible/stargazers","contributors_url":"https://api.github.com/repos/openshift/openshift-ansible/contributors","subscribers_url":"https://api.github.com/repos/openshift/openshift-ansible/subscribers","subscription_url":"https://api.github.com/repos/openshift/openshift-ansible/subscription","commits_url":"https://api.github.com/repos/openshift/openshift-ansible/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/openshift-ansible/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/openshift-ansible/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/openshift-ansible/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/openshift-ansible/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/openshift-ansible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/openshift-ansible/merges","archive_url":"https://api.github.com/repos/openshift/openshift-ansible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/openshift-ansible/downloads","issues_url":"https://api.github.com/repos/openshift/openshift-ansible/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/openshift-ansible/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/openshift-ansible/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/openshift-ansible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/openshift-ansible/labels{/name}","releases_url":"https://api.github.com/repos/openshift/openshift-ansible/releases{/id}","deployments_url":"https://api.github.com/repos/openshift/openshift-ansible/deployments","created_at":"2014-09-16T17:07:51Z","updated_at":"2018-02-19T14:38:55Z","pushed_at":"2018-02-19T20:34:14Z","git_url":"git://github.com/openshift/openshift-ansible.git","ssh_url":"git@github.com:openshift/openshift-ansible.git","clone_url":"https://github.com/openshift/openshift-ansible.git","svn_url":"https://github.com/openshift/openshift-ansible","homepage":"https://install.openshift.com","size":24301,"stargazers_count":759,"watchers_count":759,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1169,"mirror_url":null,"archived":false,"open_issues_count":772,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1169,"open_issues":772,"watchers":759,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916"},"html":{"href":"https://github.com/openshift/openshift-ansible/pull/6916"},"issue":{"href":"https://api.github.com/repos/openshift/openshift-ansible/issues/6916"},"comments":{"href":"https://api.github.com/repos/openshift/openshift-ansible/issues/6916/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/openshift-ansible/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/openshift-ansible/pulls/6916/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/openshift-ansible/statuses/fbf03c9ee09c0bde59b650de720c7b2dc483185d"}},"author_association":"OWNER"}}
{"actor":{"display_login":"michaelgugino"}}