{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/73345597","id":73345597,"diff_hunk":"@@ -6,5 +6,355 @@ class ContainerDeployment < ApplicationRecord\n   has_many :container_volumes, :as => :parent\n   has_many :custom_attributes, :as => :resource, :dependent => :destroy\n   has_many :authentications, :as => :resource, :dependent => :destroy\n-  serialize :customize, Hash\n+  serialize :customizations, Hash\n+  AUTHENTICATIONS_NAMES = {\"AuthenticationAllowAll\" => \"AllowAllPasswordIdentityProvider\", \"AuthenticationHtpasswd\" => \"HTPasswdPasswordIdentityProvider\", \"AuthenticationLdap\" => \"LDAPPasswordIdentityProvider\", \"AuthenticationRequestHeader\" => \"RequestHeaderIdentityProvider\", \"AuthenticationOpenId\" => \"OpenIDIdentityProvider\", \"AuthenticationGoogle\" => \"GoogleIdentityProvider\", \"AuthenticationGithub\" => \"GitHubIdentityProvider\", \"AuthPrivateKey\" => \"ssh\", \"AuthenticationRhsm\" => \"rhsm\"}.freeze\n+  ANSIBLE_CONFIG_LOCATION = \"/usr/share/atomic-openshift-utils/ansible.cfg\".freeze\n+  ANSIBLE_CONFIG_LOG = \"/tmp/ansible.log\".freeze\n+  ANSIBLE_CONFIG_INVENTORY_PATH = \"/tmp/inventroy.yaml\".freeze\n+\n+  def ssh_auth\n+    authentications.find_by(:type => \"AuthPrivateKey\")\n+  end\n+\n+  def rhsm_auth\n+    authentications.find_by(:type => \"AuthenticationRhsm\")\n+  end\n+\n+  def identity_provider_auth\n+    authentications.where.not(:type => \"AuthPrivateKey\").where.not(:type => \"AuthenticationRhsm\")\n+  end\n+\n+  def roles_addresses(role)\n+    if role.include? \"deployment_master\"\n+      extract_public_ip_or_hostname container_nodes_by_role(role).first\n+    else\n+      addresses_array(container_nodes_by_role(role))\n+    end\n+  end\n+\n+  def container_nodes_by_role(role)\n+    container_deployment_nodes.find_tagged_with(:any => \"/user/#{role}\", :ns => \"*\")\n+  end\n+\n+  def num_of_nodes\n+    nodes = container_deployment_nodes.find_tagged_with(:any => \"/user/node\", :ns => \"*\")\n+    (nodes.select { |node| !node.is_tagged_with?(\"/master\") }).count\n+  end\n+\n+  def addresses_array(container_deployment_nodes)\n+    ip_array = []\n+    container_deployment_nodes.each do |container_deployment_node|\n+      ip = if container_deployment_node.vm\n+             container_deployment_node.vm.hardware.ipaddresses.last unless container_deployment_node.tags.any? { |tag| tag.name.include?(\"deployment_master\") }\n+           elsif container_deployment_node.address\n+             container_deployment_node.address unless container_deployment_node.tags.any? { |tag| tag.name.include?(\"deployment_master\") }\n+           end\n+      ip_array << ip if ip\n+    end\n+    ip_array\n+  end\n+\n+  def add_deployment_provider(options)\n+    provider = ExtManagementSystem.new(\n+      :type      => options[:provider_type],\n+      :name      => options[:provider_name],\n+      :port      => options[:provider_port],\n+      :hostname  => options[:provider_hostname],\n+      :ipaddress => options[:provider_ipaddress])\n+    provider.save!\n+    provider.update_authentication(:bearer => {:auth_key => options[:auth_key], :save => true})\n+    valid_provider = provider.authentication_check.first\n+    if valid_provider\n+      self.deployed_ems = provider\n+      save!\n+    else\n+      provider.destroy\n+    end\n+    valid_provider\n+  end\n+\n+  def generate_ansible_inventory_for_subscription\n+    template = <<EOS\n+[OSEv3:children]\n+nodes\n+#{\"masters\" unless (roles_addresses(\"master\") - [roles_addresses(\"deployment_master\")]).empty?}\n+\n+[OSEv3:vars]\n+ansible_ssh_user=#{ssh_auth.userid}\n+deployment_type=openshift-enterprise\n+rhsub_user=#{rhsm_auth.userid}\n+rhsub_pass=#{rhsm_auth.password}\n+rhsub_pool=#{rhsm_auth.rhsm_sku}\n+ansible_sudo=true\n+\n+[nodes]\n+#{(roles_addresses(\"node\") - [roles_addresses(\"deployment_master\")]).join(\"\\n\") unless roles_addresses(\"node\").empty?}\n+\n+#{\"[masters]\" unless (roles_addresses(\"master\") - [roles_addresses(\"deployment_master\")]).empty?}\n+#{(roles_addresses(\"master\") - [roles_addresses(\"deployment_master\")]).join(\"\\n\") unless (roles_addresses(\"master\") - [roles_addresses(\"deployment_master\")]).empty?}\n+EOS\n+    template\n+  end\n+\n+  def generate_roles\n+    result = {}\n+    roles = container_deployment_nodes.collect(&:roles).flatten.uniq\n+    result[\"master\"] = {\"osm_use_cockpit\"                     => \"false\",\n+                        \"openshift_master_identity_providers\" => [identity_ansible_config_format]} if roles.include? \"master\"\n+    unless identity_provider_auth.first.htpassd_users.empty?\n+      result[\"master\"][\"openshift_master_htpasswd_users\"] = identity_provider_auth.first.htpassd_users\n+    end\n+    result[\"node\"] = {} if roles.include? \"node\"\n+    result[\"storage\"] = {} if roles.include? \"storage\"\n+    result\n+  end\n+\n+  def generate_ansible_yaml\n+    {\n+      \"ansible_config\"         => ANSIBLE_CONFIG_LOCATION,\n+      \"ansible_log_path\"       => ANSIBLE_CONFIG_LOG,\n+      \"ansible_inventory_path\" => ANSIBLE_CONFIG_INVENTORY_PATH,\n+      \"ansible_ssh_user\"       => ssh_auth.userid,\n+      \"deployment\"             => {\n+        \"hosts\" => container_deployment_nodes.collect(&:to_ansible_config_format),\n+        \"roles\" => generate_roles\n+      },\n+      \"version\"                => version,\n+      \"variant_version\"        => kind.include?(\"origin\") ? '1.2' : '3.2',\n+      \"variant\"                => kind\n+    }.to_yaml.gsub(\"---\\n\", '')\n+  end\n+\n+  def identity_ansible_config_format\n+    authentication = identity_provider_auth.first\n+    options = {}\n+    case authentication.type\n+    when \"AuthenticationGithub\"\n+      options = {\n+        \"clientID\"            => authentication.userid,\n+        \"clientSecret\"        => authentication.password,\n+        \"challenge\"           => \"false\",\n+        \"githubOrganizations\" => authentication.github_organizations\n+      }\n+    when \"AuthenticationGoogle\"\n+      options = {\n+        \"clientID\"     => authentication.userid,\n+        \"clientSecret\" => authentication.password,\n+        \"hostedDomain\" => authentication.google_hosted_domain,\n+        \"challenge\"    => \"false\"\n+      }\n+    when \"AuthenticationHtpasswd\"\n+      options = {\n+        \"filename\" => \"/etc/origin/master/htpasswd\"\n+      }\n+    when \"AuthenticationLdap\"\n+      options = {\n+        \"attributes\"   => {\"id\"                => authentication.ldap_id,\n+                           \"email\"             => authentication.ldap_email,\n+                           \"name\"              => authentication.ldap_name,\n+                           \"preferredUsername\" => authentication.ldap_preferred_user_name},\n+        \"bindDN\"       => authentication.ldap_bind_dn,\n+        \"bindPassword\" => authentication.password,\n+        \"ca\"           => authentication.certificate_authority,\n+        \"insecure\"     => authentication.ldap_insecure.to_s,\n+        \"url\"          => authentication.ldap_url\n+      }\n+    when \"AuthenticationOpenId\"\n+      options = {\n+        \"clientID\"                       => authentication.userid,\n+        \"clientSecret\"                   => authentication.password,\n+        \"claims\"                         => {\"id\" => authentication.open_id_sub_claim},\n+        \"urls\"                           => {\"authorize\" => authentication.open_id_authorization_endpoint, \"toekn\" => authentication.open_id_token_endpoint},\n+        \"challenge\"                      => \"false\",\n+        \"openIdExtraAuthorizeParameters\" => authentication.open_id_extra_authorize_parameters,\n+        \"openIdExtraScopes\"              => authentication.open_id_extra_scopes\n+      }\n+    when \"AuthenticationRequestHeader\"\n+      options = {\n+        \"challengeURL\"                          => authentication.request_header_challenge_url,\n+        \"loginURL\"                              => authentication.request_header_login_url,\n+        \"clientCA\"                              => authentication.certificate_authority,\n+        \"headers\"                               => authentication.request_header_headers,\n+        \"requestHeaderPreferredUsernameHeaders\" => authentication.request_header_preferred_username_headers,\n+        \"requestHeaderNameHeaders\"              => authentication.request_header_name_headers,\n+        \"requestHeaderEmailHeaders\"             => authentication.request_header_email_headers\n+      }\n+    end\n+    {'name' => \"example_name\", 'login' => \"true\", 'challenge' => \"true\", 'kind' => authentication.authtype}.merge! options\n+  end\n+\n+  def extract_public_ip_or_hostname(deployment_node)\n+    return deployment_node.address if deployment_node.vm_id.nil?\n+    vm = deployment_node.vm\n+    hostname = vm.hostnames\n+    if hostname.empty?\n+      ips = vm.hardware.ipaddresses\n+      ips.each do |ip|\n+        return ip if public_ip? ip","path":"app/models/container_deployment.rb","position":null,"original_position":189,"commit_id":"15fee6631b80021c726c38604741eb25924e2d2a","original_commit_id":"5b93b6ee5af52fc3f032f9bbd0a953bec001d510","user":{"login":"alongoldboim","id":11405684,"avatar_url":"https://avatars.githubusercontent.com/u/11405684?v=3","gravatar_id":"","url":"https://api.github.com/users/alongoldboim","html_url":"https://github.com/alongoldboim","followers_url":"https://api.github.com/users/alongoldboim/followers","following_url":"https://api.github.com/users/alongoldboim/following{/other_user}","gists_url":"https://api.github.com/users/alongoldboim/gists{/gist_id}","starred_url":"https://api.github.com/users/alongoldboim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alongoldboim/subscriptions","organizations_url":"https://api.github.com/users/alongoldboim/orgs","repos_url":"https://api.github.com/users/alongoldboim/repos","events_url":"https://api.github.com/users/alongoldboim/events{/privacy}","received_events_url":"https://api.github.com/users/alongoldboim/received_events","type":"User","site_admin":false},"body":"fixed.","created_at":"2016-08-03T14:15:31Z","updated_at":"2016-08-03T14:15:31Z","html_url":"https://github.com/ManageIQ/manageiq/pull/7517#discussion_r73345597","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/73345597"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/7517#discussion_r73345597"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517","id":64080199,"html_url":"https://github.com/ManageIQ/manageiq/pull/7517","diff_url":"https://github.com/ManageIQ/manageiq/pull/7517.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/7517.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/7517","number":7517,"state":"open","locked":false,"title":"[WIP] Adding models controller for container-deployment","user":{"login":"alongoldboim","id":11405684,"avatar_url":"https://avatars.githubusercontent.com/u/11405684?v=3","gravatar_id":"","url":"https://api.github.com/users/alongoldboim","html_url":"https://github.com/alongoldboim","followers_url":"https://api.github.com/users/alongoldboim/followers","following_url":"https://api.github.com/users/alongoldboim/following{/other_user}","gists_url":"https://api.github.com/users/alongoldboim/gists{/gist_id}","starred_url":"https://api.github.com/users/alongoldboim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alongoldboim/subscriptions","organizations_url":"https://api.github.com/users/alongoldboim/orgs","repos_url":"https://api.github.com/users/alongoldboim/repos","events_url":"https://api.github.com/users/alongoldboim/events{/privacy}","received_events_url":"https://api.github.com/users/alongoldboim/received_events","type":"User","site_admin":false},"body":"BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1356623","created_at":"2016-03-24T18:43:41Z","updated_at":"2016-08-03T14:15:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ed2316ea76d4567f129cb61ec3b4756384b8a744","assignee":{"login":"blomquisg","id":14183,"avatar_url":"https://avatars.githubusercontent.com/u/14183?v=3","gravatar_id":"","url":"https://api.github.com/users/blomquisg","html_url":"https://github.com/blomquisg","followers_url":"https://api.github.com/users/blomquisg/followers","following_url":"https://api.github.com/users/blomquisg/following{/other_user}","gists_url":"https://api.github.com/users/blomquisg/gists{/gist_id}","starred_url":"https://api.github.com/users/blomquisg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blomquisg/subscriptions","organizations_url":"https://api.github.com/users/blomquisg/orgs","repos_url":"https://api.github.com/users/blomquisg/repos","events_url":"https://api.github.com/users/blomquisg/events{/privacy}","received_events_url":"https://api.github.com/users/blomquisg/received_events","type":"User","site_admin":false},"assignees":[{"login":"blomquisg","id":14183,"avatar_url":"https://avatars.githubusercontent.com/u/14183?v=3","gravatar_id":"","url":"https://api.github.com/users/blomquisg","html_url":"https://github.com/blomquisg","followers_url":"https://api.github.com/users/blomquisg/followers","following_url":"https://api.github.com/users/blomquisg/following{/other_user}","gists_url":"https://api.github.com/users/blomquisg/gists{/gist_id}","starred_url":"https://api.github.com/users/blomquisg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blomquisg/subscriptions","organizations_url":"https://api.github.com/users/blomquisg/orgs","repos_url":"https://api.github.com/users/blomquisg/repos","events_url":"https://api.github.com/users/blomquisg/events{/privacy}","received_events_url":"https://api.github.com/users/blomquisg/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/7517/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/15fee6631b80021c726c38604741eb25924e2d2a","head":{"label":"alongoldboim:openshift_deployment_infra","ref":"openshift_deployment_infra","sha":"15fee6631b80021c726c38604741eb25924e2d2a","user":{"login":"alongoldboim","id":11405684,"avatar_url":"https://avatars.githubusercontent.com/u/11405684?v=3","gravatar_id":"","url":"https://api.github.com/users/alongoldboim","html_url":"https://github.com/alongoldboim","followers_url":"https://api.github.com/users/alongoldboim/followers","following_url":"https://api.github.com/users/alongoldboim/following{/other_user}","gists_url":"https://api.github.com/users/alongoldboim/gists{/gist_id}","starred_url":"https://api.github.com/users/alongoldboim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alongoldboim/subscriptions","organizations_url":"https://api.github.com/users/alongoldboim/orgs","repos_url":"https://api.github.com/users/alongoldboim/repos","events_url":"https://api.github.com/users/alongoldboim/events{/privacy}","received_events_url":"https://api.github.com/users/alongoldboim/received_events","type":"User","site_admin":false},"repo":{"id":48227094,"name":"manageiq","full_name":"alongoldboim/manageiq","owner":{"login":"alongoldboim","id":11405684,"avatar_url":"https://avatars.githubusercontent.com/u/11405684?v=3","gravatar_id":"","url":"https://api.github.com/users/alongoldboim","html_url":"https://github.com/alongoldboim","followers_url":"https://api.github.com/users/alongoldboim/followers","following_url":"https://api.github.com/users/alongoldboim/following{/other_user}","gists_url":"https://api.github.com/users/alongoldboim/gists{/gist_id}","starred_url":"https://api.github.com/users/alongoldboim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alongoldboim/subscriptions","organizations_url":"https://api.github.com/users/alongoldboim/orgs","repos_url":"https://api.github.com/users/alongoldboim/repos","events_url":"https://api.github.com/users/alongoldboim/events{/privacy}","received_events_url":"https://api.github.com/users/alongoldboim/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alongoldboim/manageiq","description":"ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/alongoldboim/manageiq","forks_url":"https://api.github.com/repos/alongoldboim/manageiq/forks","keys_url":"https://api.github.com/repos/alongoldboim/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alongoldboim/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alongoldboim/manageiq/teams","hooks_url":"https://api.github.com/repos/alongoldboim/manageiq/hooks","issue_events_url":"https://api.github.com/repos/alongoldboim/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/alongoldboim/manageiq/events","assignees_url":"https://api.github.com/repos/alongoldboim/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/alongoldboim/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/alongoldboim/manageiq/tags","blobs_url":"https://api.github.com/repos/alongoldboim/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alongoldboim/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alongoldboim/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/alongoldboim/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alongoldboim/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/alongoldboim/manageiq/languages","stargazers_url":"https://api.github.com/repos/alongoldboim/manageiq/stargazers","contributors_url":"https://api.github.com/repos/alongoldboim/manageiq/contributors","subscribers_url":"https://api.github.com/repos/alongoldboim/manageiq/subscribers","subscription_url":"https://api.github.com/repos/alongoldboim/manageiq/subscription","commits_url":"https://api.github.com/repos/alongoldboim/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/alongoldboim/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/alongoldboim/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/alongoldboim/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/alongoldboim/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/alongoldboim/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alongoldboim/manageiq/merges","archive_url":"https://api.github.com/repos/alongoldboim/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alongoldboim/manageiq/downloads","issues_url":"https://api.github.com/repos/alongoldboim/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/alongoldboim/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/alongoldboim/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/alongoldboim/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alongoldboim/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/alongoldboim/manageiq/releases{/id}","deployments_url":"https://api.github.com/repos/alongoldboim/manageiq/deployments","created_at":"2015-12-18T09:42:32Z","updated_at":"2015-12-18T09:42:48Z","pushed_at":"2016-08-03T14:15:19Z","git_url":"git://github.com/alongoldboim/manageiq.git","ssh_url":"git@github.com:alongoldboim/manageiq.git","clone_url":"https://github.com/alongoldboim/manageiq.git","svn_url":"https://github.com/alongoldboim/manageiq","homepage":"manageiq.org","size":144687,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ManageIQ:master","ref":"master","sha":"9a79d590dd097eef7bc96822faf2cde213f4fcd7","user":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"repo":{"id":20789757,"name":"manageiq","full_name":"ManageIQ/manageiq","owner":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ManageIQ/manageiq","description":"ManageIQ Open-Source Management Platform","fork":false,"url":"https://api.github.com/repos/ManageIQ/manageiq","forks_url":"https://api.github.com/repos/ManageIQ/manageiq/forks","keys_url":"https://api.github.com/repos/ManageIQ/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ManageIQ/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ManageIQ/manageiq/teams","hooks_url":"https://api.github.com/repos/ManageIQ/manageiq/hooks","issue_events_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/ManageIQ/manageiq/events","assignees_url":"https://api.github.com/repos/ManageIQ/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/ManageIQ/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/ManageIQ/manageiq/tags","blobs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ManageIQ/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/ManageIQ/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/ManageIQ/manageiq/languages","stargazers_url":"https://api.github.com/repos/ManageIQ/manageiq/stargazers","contributors_url":"https://api.github.com/repos/ManageIQ/manageiq/contributors","subscribers_url":"https://api.github.com/repos/ManageIQ/manageiq/subscribers","subscription_url":"https://api.github.com/repos/ManageIQ/manageiq/subscription","commits_url":"https://api.github.com/repos/ManageIQ/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/ManageIQ/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/ManageIQ/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/ManageIQ/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ManageIQ/manageiq/merges","archive_url":"https://api.github.com/repos/ManageIQ/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ManageIQ/manageiq/downloads","issues_url":"https://api.github.com/repos/ManageIQ/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/ManageIQ/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/ManageIQ/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/ManageIQ/manageiq/releases{/id}","deployments_url":"https://api.github.com/repos/ManageIQ/manageiq/deployments","created_at":"2014-06-13T02:31:26Z","updated_at":"2016-08-02T04:31:15Z","pushed_at":"2016-08-03T14:15:20Z","git_url":"git://github.com/ManageIQ/manageiq.git","ssh_url":"git@github.com:ManageIQ/manageiq.git","clone_url":"https://github.com/ManageIQ/manageiq.git","svn_url":"https://github.com/ManageIQ/manageiq","homepage":"manageiq.org","size":191225,"stargazers_count":300,"watchers_count":300,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":332,"mirror_url":null,"open_issues_count":733,"forks":332,"open_issues":733,"watchers":300,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/7517"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/7517"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/7517/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/7517/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq/statuses/15fee6631b80021c726c38604741eb25924e2d2a"}}}}
{"actor":{"display_login":"alongoldboim"}}