{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/27479892","id":27479892,"diff_hunk":"@@ -33,10 +33,34 @@\n \n   it \"should parse hardcoded password\" do\n     options = described_class.new.parse(%w(-P hardcoded))\n-      .options.slice(:hostname, :username, :password, :hardcode, :databases)\n+              .options.slice(:hostname, :username, :password, :hardcode, :databases)\n     expect(options).to eq(\n       :username  => \"root\",\n       :databases => %w(vmdb_production),\n       :hardcode  => \"hardcoded\")\n   end\n+\n+  it \"defaults to updating the database\" do","path":"vmdb/spec/tools/fix_auth/cli_spec.rb","position":39,"original_position":39,"commit_id":"0081500ba05ff74712b49d92fd0ad408933ff793","original_commit_id":"0081500ba05ff74712b49d92fd0ad408933ff793","user":{"login":"jrafanie","id":19339,"avatar_url":"https://avatars.githubusercontent.com/u/19339?v=3","gravatar_id":"","url":"https://api.github.com/users/jrafanie","html_url":"https://github.com/jrafanie","followers_url":"https://api.github.com/users/jrafanie/followers","following_url":"https://api.github.com/users/jrafanie/following{/other_user}","gists_url":"https://api.github.com/users/jrafanie/gists{/gist_id}","starred_url":"https://api.github.com/users/jrafanie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrafanie/subscriptions","organizations_url":"https://api.github.com/users/jrafanie/orgs","repos_url":"https://api.github.com/users/jrafanie/repos","events_url":"https://api.github.com/users/jrafanie/events{/privacy}","received_events_url":"https://api.github.com/users/jrafanie/received_events","type":"User","site_admin":false},"body":"For a follup: If these are all testing `parse`, maybe put this in the it or in a `\"#parse\"` context.  I looked up to see what this was testing and it wasn't clear.","created_at":"2015-03-31T13:50:27Z","updated_at":"2015-03-31T13:50:27Z","html_url":"https://github.com/ManageIQ/manageiq/pull/2189#discussion_r27479892","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/27479892"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/2189#discussion_r27479892"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189","id":31300945,"html_url":"https://github.com/ManageIQ/manageiq/pull/2189","diff_url":"https://github.com/ManageIQ/manageiq/pull/2189.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/2189.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/2189","number":2189,"state":"open","locked":false,"title":"Fix auth v2","user":{"login":"kbrock","id":1930,"avatar_url":"https://avatars.githubusercontent.com/u/1930?v=3","gravatar_id":"","url":"https://api.github.com/users/kbrock","html_url":"https://github.com/kbrock","followers_url":"https://api.github.com/users/kbrock/followers","following_url":"https://api.github.com/users/kbrock/following{/other_user}","gists_url":"https://api.github.com/users/kbrock/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrock/subscriptions","organizations_url":"https://api.github.com/users/kbrock/orgs","repos_url":"https://api.github.com/users/kbrock/repos","events_url":"https://api.github.com/users/kbrock/events{/privacy}","received_events_url":"https://api.github.com/users/kbrock/received_events","type":"User","site_admin":false},"body":"While working through helping a customer upgrade their database, the command line was a little confusing for them. Also found a few bugs.\r\n\r\n1. Always told users to pass in `--v2` when having key issues. It was an optimization added before and to be honest, doesn't really buy us enough. Turning this off by default. Potentially want to tear this option out.\r\n2. With `--databaseyml`, either `--hardcode` or `--password` should work. I never remember the syntax so fixed code for either to work.\r\n3. When explaining `fix_auth.rb` to the customer, it is confusing to explain the difference between the action flags. And to make matters worse, passing in no flag actually meant something. To stay backwards compatible, this still supports no flag, but now `--db` will upgrade the database. This helps them understand what they are doing.\r\n4. Never knew whether a `Configuration` table hash was updated or not. Now it is easier to spot when a key was replaces via the `--invalid` option.\r\n\r\nHope that will begin to make things easier to understand for our users.\r\n/cc @jrafanie @abellotti \r\n\r\nrelated to https://bugzilla.redhat.com/show_bug.cgi?id=1200424\r\n\r\n---\r\n**UPDATE:**\r\n\r\nRunning 2 commands\r\na) update `database.yml` with new encryption keys.\r\nb) update database with new encryption keys.\r\n\r\nbefore:\r\n```\r\n# bundle exec ruby ./tools/fix_auth.rb --databaseyml -v --password smartvm # A\r\n  /Users/kbrock/src/manageiq/vmdb/config/database.yml:\r\n      base.password: v2:{P4PLVcHJ6Sh1rG0R6CAkkA==}\r\n# bundle exec ruby ./tools/fix_auth.rb -v --v2 --invalid bogus # B\r\nfixing authentications.password, auth_key\r\n  10000000000025:\r\n    password: \"v2:{/OViaBJ0Ug+RSW9n7EFGqw==}\" (not changed)\r\n  10000000000004:\r\n    password: \"v2:{I2SQ5PdmGPwN7t5goRiyaQ==}\" => v2:{pm+OaUShlWLpGj5WUN+ZfQ==}\r\n...\r\nfixing configurations.settings\r\n  10000000000001 (vmdb.yml):\r\n      authentication.bind_pwd: \r\n      http_proxy.password: \r\n      log_depot.password: v2:{pm+OaUShlWLpGj5WUN+ZfQ==}\r\n      smtp.password: v2:{pm+OaUShlWLpGj5WUN+ZfQ==}\r\n      workers.worker_base.replication_worker.replication.destination.password: v2:{I2SQ5PdmGPwN7t5goRiyaQ==}\r\n```\r\nafter:\r\n```\r\n# bundle exec ruby ./tools/fix_auth.rb --databaseyml -v --hardcode smartvm # A\r\n  /Users/kbrock/src/manageiq/vmdb/config/database.yml:\r\n      base.password: v2:{P4PLVcHJ6Sh1rG0R6CAkkA==} HARDCODED\r\n# bundle exec ruby ./tools/fix_auth.rb --db -v --invalid bogus # B\r\nfixing authentications.password, auth_key\r\n  10000000000025:\r\n    password: \"v2:{/OViaBJ0Ug+RSW9n7EFGqw==}\" (not changed)\r\n  10000000000004:\r\n    password: \"v2:{I2SQ5PdmGPwN7t5goRiyaQ==}\" => v2:{pm+OaUShlWLpGj5WUN+ZfQ==} HARDCODED (WAS INVALID)\r\n...\r\nfixing configurations.settings\r\n  10000000000001 (vmdb.yml):\r\n      authentication.bind_pwd: \r\n      http_proxy.password: \r\n      log_depot.password: v2:{pm+OaUShlWLpGj5WUN+ZfQ==} HARDCODED (WAS INVALID)\r\n      smtp.password: v2:{pm+OaUShlWLpGj5WUN+ZfQ==} HARDCODED (WAS INVALID)\r\n      workers.worker_base.replication_worker.replication.destination.password: v2:{I2SQ5PdmGPwN7t5goRiyaQ==}\r\n```\r\n\r\nDifferences:\r\n1. The second command (B) no longer needs `--v2`. Before, if the user forgot this, the database could be still invalid. even after what looked like a successful run. After, it fixes the key correctly.\r\n2. The first command (A) works with `--password` or `--hardcode`. the database password is configured using `--password` so that may make more sense to them. On the other hand, updating the database receives `--hardcode` when you want to replace an encrypted password. It is lenient and supports either.\r\n3. The second command (B) has `--db` which lets them know they are updating the database. First command has `--databaseyml`. It is consistent. If they skip `--db` it will still update the database to be backwards compatible.\r\n4. The output from the commands tells you if keys were updated for a particular reason other than converting a key from a v1 to v2 key. Displaying `HARDCODED` and `HARDCODED (WAS INVALID)`.","created_at":"2015-03-17T01:43:47Z","updated_at":"2015-03-31T13:50:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"89fc35cee8b5370484b2f31fbbdf112452afc756","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/2189/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/0081500ba05ff74712b49d92fd0ad408933ff793","head":{"label":"kbrock:fix_auth_v2","ref":"fix_auth_v2","sha":"0081500ba05ff74712b49d92fd0ad408933ff793","user":{"login":"kbrock","id":1930,"avatar_url":"https://avatars.githubusercontent.com/u/1930?v=3","gravatar_id":"","url":"https://api.github.com/users/kbrock","html_url":"https://github.com/kbrock","followers_url":"https://api.github.com/users/kbrock/followers","following_url":"https://api.github.com/users/kbrock/following{/other_user}","gists_url":"https://api.github.com/users/kbrock/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrock/subscriptions","organizations_url":"https://api.github.com/users/kbrock/orgs","repos_url":"https://api.github.com/users/kbrock/repos","events_url":"https://api.github.com/users/kbrock/events{/privacy}","received_events_url":"https://api.github.com/users/kbrock/received_events","type":"User","site_admin":false},"repo":{"id":20886492,"name":"manageiq","full_name":"kbrock/manageiq","owner":{"login":"kbrock","id":1930,"avatar_url":"https://avatars.githubusercontent.com/u/1930?v=3","gravatar_id":"","url":"https://api.github.com/users/kbrock","html_url":"https://github.com/kbrock","followers_url":"https://api.github.com/users/kbrock/followers","following_url":"https://api.github.com/users/kbrock/following{/other_user}","gists_url":"https://api.github.com/users/kbrock/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrock/subscriptions","organizations_url":"https://api.github.com/users/kbrock/orgs","repos_url":"https://api.github.com/users/kbrock/repos","events_url":"https://api.github.com/users/kbrock/events{/privacy}","received_events_url":"https://api.github.com/users/kbrock/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kbrock/manageiq","description":"ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/kbrock/manageiq","forks_url":"https://api.github.com/repos/kbrock/manageiq/forks","keys_url":"https://api.github.com/repos/kbrock/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kbrock/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kbrock/manageiq/teams","hooks_url":"https://api.github.com/repos/kbrock/manageiq/hooks","issue_events_url":"https://api.github.com/repos/kbrock/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/kbrock/manageiq/events","assignees_url":"https://api.github.com/repos/kbrock/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/kbrock/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/kbrock/manageiq/tags","blobs_url":"https://api.github.com/repos/kbrock/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kbrock/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kbrock/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/kbrock/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kbrock/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/kbrock/manageiq/languages","stargazers_url":"https://api.github.com/repos/kbrock/manageiq/stargazers","contributors_url":"https://api.github.com/repos/kbrock/manageiq/contributors","subscribers_url":"https://api.github.com/repos/kbrock/manageiq/subscribers","subscription_url":"https://api.github.com/repos/kbrock/manageiq/subscription","commits_url":"https://api.github.com/repos/kbrock/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/kbrock/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/kbrock/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/kbrock/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/kbrock/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/kbrock/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kbrock/manageiq/merges","archive_url":"https://api.github.com/repos/kbrock/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kbrock/manageiq/downloads","issues_url":"https://api.github.com/repos/kbrock/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/kbrock/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/kbrock/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/kbrock/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kbrock/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/kbrock/manageiq/releases{/id}","created_at":"2014-06-16T13:49:17Z","updated_at":"2015-03-27T01:39:46Z","pushed_at":"2015-03-30T19:47:51Z","git_url":"git://github.com/kbrock/manageiq.git","ssh_url":"git@github.com:kbrock/manageiq.git","clone_url":"https://github.com/kbrock/manageiq.git","svn_url":"https://github.com/kbrock/manageiq","homepage":null,"size":69335,"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":"55740da77e966f8b700f059df5926abf98e484b3","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-03-31T13:30:03Z","pushed_at":"2015-03-31T13:35:26Z","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":113330,"stargazers_count":101,"watchers_count":101,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":98,"mirror_url":null,"open_issues_count":351,"forks":98,"open_issues":351,"watchers":101,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/2189"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/2189"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/2189/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/2189/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq/statuses/0081500ba05ff74712b49d92fd0ad408933ff793"}}}}