{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/47086826","id":47086826,"diff_hunk":"@@ -1,2 +1,23 @@\n class ManageIQ::Providers::Openstack::CloudManager::AuthKeyPair < ManageIQ::Providers::CloudManager::AuthKeyPair\n+\n+  def self.create_keypair(ems, name, public_key)\n+    create_options = {:name => name, :public_key => public_key}\n+    connection_options = {:service => 'Compute'}\n+    ems.with_provider_connection(connection_options) do |service|\n+      service.key_pairs.create(create_options)\n+    end\n+  rescue => err\n+    _log.error \"keypair=[#{name}], error: #{err}\"\n+    raise MiqException::MiqOpenstackApiRequestError, err.to_s, err.backtrace\n+  end\n+\n+  def delete_keypair(ems)","path":"app/models/manageiq/providers/openstack/cloud_manager/auth_key_pair.rb","position":14,"original_position":14,"commit_id":"0a7db5b312c12716500f6a179715a4a57d008947","original_commit_id":"0a7db5b312c12716500f6a179715a4a57d008947","user":{"login":"Ladas","id":1737058,"avatar_url":"https://avatars.githubusercontent.com/u/1737058?v=3","gravatar_id":"","url":"https://api.github.com/users/Ladas","html_url":"https://github.com/Ladas","followers_url":"https://api.github.com/users/Ladas/followers","following_url":"https://api.github.com/users/Ladas/following{/other_user}","gists_url":"https://api.github.com/users/Ladas/gists{/gist_id}","starred_url":"https://api.github.com/users/Ladas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ladas/subscriptions","organizations_url":"https://api.github.com/users/Ladas/orgs","repos_url":"https://api.github.com/users/Ladas/repos","events_url":"https://api.github.com/users/Ladas/events{/privacy}","received_events_url":"https://api.github.com/users/Ladas/received_events","type":"User","site_admin":false},"body":"probably do a helper for the connection_options, you should always pass the correct cloud_tenant too. This tenant is used for scoping the keystone token.","created_at":"2015-12-09T13:01:25Z","updated_at":"2015-12-09T13:01:25Z","html_url":"https://github.com/ManageIQ/manageiq/pull/5696#discussion_r47086826","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/47086826"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/5696#discussion_r47086826"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696","id":52546926,"html_url":"https://github.com/ManageIQ/manageiq/pull/5696","diff_url":"https://github.com/ManageIQ/manageiq/pull/5696.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/5696.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/5696","number":5696,"state":"open","locked":false,"title":"[WIP] Add Openstack keypairs create/delete methods","user":{"login":"aufi","id":555381,"avatar_url":"https://avatars.githubusercontent.com/u/555381?v=3","gravatar_id":"","url":"https://api.github.com/users/aufi","html_url":"https://github.com/aufi","followers_url":"https://api.github.com/users/aufi/followers","following_url":"https://api.github.com/users/aufi/following{/other_user}","gists_url":"https://api.github.com/users/aufi/gists{/gist_id}","starred_url":"https://api.github.com/users/aufi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aufi/subscriptions","organizations_url":"https://api.github.com/users/aufi/orgs","repos_url":"https://api.github.com/users/aufi/repos","events_url":"https://api.github.com/users/aufi/events{/privacy}","received_events_url":"https://api.github.com/users/aufi/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-12-03T15:16:12Z","updated_at":"2015-12-09T13:01:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"724e840383e636302545e8d723b7cbd606fb437c","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/5696/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/0a7db5b312c12716500f6a179715a4a57d008947","head":{"label":"aufi:openstack_add_ssh_keypairs","ref":"openstack_add_ssh_keypairs","sha":"0a7db5b312c12716500f6a179715a4a57d008947","user":{"login":"aufi","id":555381,"avatar_url":"https://avatars.githubusercontent.com/u/555381?v=3","gravatar_id":"","url":"https://api.github.com/users/aufi","html_url":"https://github.com/aufi","followers_url":"https://api.github.com/users/aufi/followers","following_url":"https://api.github.com/users/aufi/following{/other_user}","gists_url":"https://api.github.com/users/aufi/gists{/gist_id}","starred_url":"https://api.github.com/users/aufi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aufi/subscriptions","organizations_url":"https://api.github.com/users/aufi/orgs","repos_url":"https://api.github.com/users/aufi/repos","events_url":"https://api.github.com/users/aufi/events{/privacy}","received_events_url":"https://api.github.com/users/aufi/received_events","type":"User","site_admin":false},"repo":{"id":41291772,"name":"manageiq","full_name":"aufi/manageiq","owner":{"login":"aufi","id":555381,"avatar_url":"https://avatars.githubusercontent.com/u/555381?v=3","gravatar_id":"","url":"https://api.github.com/users/aufi","html_url":"https://github.com/aufi","followers_url":"https://api.github.com/users/aufi/followers","following_url":"https://api.github.com/users/aufi/following{/other_user}","gists_url":"https://api.github.com/users/aufi/gists{/gist_id}","starred_url":"https://api.github.com/users/aufi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aufi/subscriptions","organizations_url":"https://api.github.com/users/aufi/orgs","repos_url":"https://api.github.com/users/aufi/repos","events_url":"https://api.github.com/users/aufi/events{/privacy}","received_events_url":"https://api.github.com/users/aufi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aufi/manageiq","description":"ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/aufi/manageiq","forks_url":"https://api.github.com/repos/aufi/manageiq/forks","keys_url":"https://api.github.com/repos/aufi/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aufi/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aufi/manageiq/teams","hooks_url":"https://api.github.com/repos/aufi/manageiq/hooks","issue_events_url":"https://api.github.com/repos/aufi/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/aufi/manageiq/events","assignees_url":"https://api.github.com/repos/aufi/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/aufi/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/aufi/manageiq/tags","blobs_url":"https://api.github.com/repos/aufi/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aufi/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aufi/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/aufi/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aufi/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/aufi/manageiq/languages","stargazers_url":"https://api.github.com/repos/aufi/manageiq/stargazers","contributors_url":"https://api.github.com/repos/aufi/manageiq/contributors","subscribers_url":"https://api.github.com/repos/aufi/manageiq/subscribers","subscription_url":"https://api.github.com/repos/aufi/manageiq/subscription","commits_url":"https://api.github.com/repos/aufi/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/aufi/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/aufi/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/aufi/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/aufi/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/aufi/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aufi/manageiq/merges","archive_url":"https://api.github.com/repos/aufi/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aufi/manageiq/downloads","issues_url":"https://api.github.com/repos/aufi/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/aufi/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/aufi/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/aufi/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aufi/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/aufi/manageiq/releases{/id}","created_at":"2015-08-24T08:35:49Z","updated_at":"2015-08-24T08:36:06Z","pushed_at":"2015-12-08T09:09:45Z","git_url":"git://github.com/aufi/manageiq.git","ssh_url":"git@github.com:aufi/manageiq.git","clone_url":"https://github.com/aufi/manageiq.git","svn_url":"https://github.com/aufi/manageiq","homepage":"manageiq.org","size":97806,"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":"fdd947e8a29cc68e3db80fb6c8f6a53118d0fac2","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 Cloud 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}","created_at":"2014-06-13T02:31:26Z","updated_at":"2015-12-08T16:36:03Z","pushed_at":"2015-12-09T13:00:25Z","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":132035,"stargazers_count":175,"watchers_count":175,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":192,"mirror_url":null,"open_issues_count":470,"forks":192,"open_issues":470,"watchers":175,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/5696"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/5696"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/5696/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/5696/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq/statuses/0a7db5b312c12716500f6a179715a4a57d008947"}}}}