{"action":"created","comment":{"url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/comments/41193467","id":41193467,"diff_hunk":"@@ -0,0 +1,3 @@\n+from robottelo.config import settings\n+\n+settings.configure()","path":"tests/foreman/__init__.py","position":3,"original_position":3,"commit_id":"aac2bb0da1c64c94bdb999373996371ee0537f7b","original_commit_id":"aac2bb0da1c64c94bdb999373996371ee0537f7b","user":{"login":"Ichimonji10","id":1012989,"avatar_url":"https://avatars.githubusercontent.com/u/1012989?v=3","gravatar_id":"","url":"https://api.github.com/users/Ichimonji10","html_url":"https://github.com/Ichimonji10","followers_url":"https://api.github.com/users/Ichimonji10/followers","following_url":"https://api.github.com/users/Ichimonji10/following{/other_user}","gists_url":"https://api.github.com/users/Ichimonji10/gists{/gist_id}","starred_url":"https://api.github.com/users/Ichimonji10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ichimonji10/subscriptions","organizations_url":"https://api.github.com/users/Ichimonji10/orgs","repos_url":"https://api.github.com/users/Ichimonji10/repos","events_url":"https://api.github.com/users/Ichimonji10/events{/privacy}","received_events_url":"https://api.github.com/users/Ichimonji10/received_events","type":"User","site_admin":false},"body":"I find it a little bit curious that `configure()` exists at all. Now take my thoughts with a grain of salt, as I've only read through the class once. But if any configuration file parsing or checking needs to happen before the `settings` object can be used at all, then shouldn't that parsing/checking be done in `Settings.__init__`? That would allow for us to write more terse client code:\r\n\r\n```python\r\nfrom robottelo.config import Settings\r\n\r\nSettings().some_setting\r\n```\r\n\r\nIf performance is a concern, we can implement caching. But let's do some proper measurements before even doing that. Any halfway decent OS will cache files that are read from disk.","created_at":"2015-10-05T20:31:14Z","updated_at":"2015-10-05T20:31:14Z","html_url":"https://github.com/SatelliteQE/robottelo/pull/2869#discussion_r41193467","pull_request_url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869","_links":{"self":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/comments/41193467"},"html":{"href":"https://github.com/SatelliteQE/robottelo/pull/2869#discussion_r41193467"},"pull_request":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869"}}},"pull_request":{"url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869","id":46805635,"html_url":"https://github.com/SatelliteQE/robottelo/pull/2869","diff_url":"https://github.com/SatelliteQE/robottelo/pull/2869.diff","patch_url":"https://github.com/SatelliteQE/robottelo/pull/2869.patch","issue_url":"https://api.github.com/repos/SatelliteQE/robottelo/issues/2869","number":2869,"state":"open","locked":false,"title":"[DONOTMERGE] Refactor Robottelo settings","user":{"login":"elyezer","id":48132,"avatar_url":"https://avatars.githubusercontent.com/u/48132?v=3","gravatar_id":"","url":"https://api.github.com/users/elyezer","html_url":"https://github.com/elyezer","followers_url":"https://api.github.com/users/elyezer/followers","following_url":"https://api.github.com/users/elyezer/following{/other_user}","gists_url":"https://api.github.com/users/elyezer/gists{/gist_id}","starred_url":"https://api.github.com/users/elyezer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elyezer/subscriptions","organizations_url":"https://api.github.com/users/elyezer/orgs","repos_url":"https://api.github.com/users/elyezer/repos","events_url":"https://api.github.com/users/elyezer/events{/privacy}","received_events_url":"https://api.github.com/users/elyezer/received_events","type":"User","site_admin":false},"body":"The main goal of this refactor is to make robottelo easier to be\r\nconfigured. With that said, the design is focused on being easier to\r\ncheck what is available on the settings object and provide useful\r\ninformation for missing settings before running anything.\r\n\r\nNow Robottelo can be configured on a selective way. Some features, like\r\ndocker or clients provisioning, require additional infrastructure to be\r\nconfigured before running the tests. Robottelo identify if a feature is\r\navailable or not by checking if the related section on the settings file\r\nis available or not.\r\n\r\nIn addition some helper methods was dropped in favor of feature related\r\nhelper methods. For example, the `settings.server` that provides some\r\nhelpers like `get_url` and `get_credentials`.\r\n\r\nThis refactor does not cover skipping tests based on the availability of\r\nthe features because this will be covered as a next step to avoid more\r\nchanges as the current changes are huge.","created_at":"2015-10-05T16:54:24Z","updated_at":"2015-10-05T20:31:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"17d4dff8b762c4ef6699cf97ddaae763986458a4","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869/commits","review_comments_url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869/comments","review_comment_url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SatelliteQE/robottelo/issues/2869/comments","statuses_url":"https://api.github.com/repos/SatelliteQE/robottelo/statuses/aac2bb0da1c64c94bdb999373996371ee0537f7b","head":{"label":"elyezer:refactor-config","ref":"refactor-config","sha":"aac2bb0da1c64c94bdb999373996371ee0537f7b","user":{"login":"elyezer","id":48132,"avatar_url":"https://avatars.githubusercontent.com/u/48132?v=3","gravatar_id":"","url":"https://api.github.com/users/elyezer","html_url":"https://github.com/elyezer","followers_url":"https://api.github.com/users/elyezer/followers","following_url":"https://api.github.com/users/elyezer/following{/other_user}","gists_url":"https://api.github.com/users/elyezer/gists{/gist_id}","starred_url":"https://api.github.com/users/elyezer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elyezer/subscriptions","organizations_url":"https://api.github.com/users/elyezer/orgs","repos_url":"https://api.github.com/users/elyezer/repos","events_url":"https://api.github.com/users/elyezer/events{/privacy}","received_events_url":"https://api.github.com/users/elyezer/received_events","type":"User","site_admin":false},"repo":{"id":14159745,"name":"robottelo","full_name":"elyezer/robottelo","owner":{"login":"elyezer","id":48132,"avatar_url":"https://avatars.githubusercontent.com/u/48132?v=3","gravatar_id":"","url":"https://api.github.com/users/elyezer","html_url":"https://github.com/elyezer","followers_url":"https://api.github.com/users/elyezer/followers","following_url":"https://api.github.com/users/elyezer/following{/other_user}","gists_url":"https://api.github.com/users/elyezer/gists{/gist_id}","starred_url":"https://api.github.com/users/elyezer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elyezer/subscriptions","organizations_url":"https://api.github.com/users/elyezer/orgs","repos_url":"https://api.github.com/users/elyezer/repos","events_url":"https://api.github.com/users/elyezer/events{/privacy}","received_events_url":"https://api.github.com/users/elyezer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/elyezer/robottelo","description":"An automation testing framework for the Foreman project.","fork":true,"url":"https://api.github.com/repos/elyezer/robottelo","forks_url":"https://api.github.com/repos/elyezer/robottelo/forks","keys_url":"https://api.github.com/repos/elyezer/robottelo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elyezer/robottelo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elyezer/robottelo/teams","hooks_url":"https://api.github.com/repos/elyezer/robottelo/hooks","issue_events_url":"https://api.github.com/repos/elyezer/robottelo/issues/events{/number}","events_url":"https://api.github.com/repos/elyezer/robottelo/events","assignees_url":"https://api.github.com/repos/elyezer/robottelo/assignees{/user}","branches_url":"https://api.github.com/repos/elyezer/robottelo/branches{/branch}","tags_url":"https://api.github.com/repos/elyezer/robottelo/tags","blobs_url":"https://api.github.com/repos/elyezer/robottelo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elyezer/robottelo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elyezer/robottelo/git/refs{/sha}","trees_url":"https://api.github.com/repos/elyezer/robottelo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elyezer/robottelo/statuses/{sha}","languages_url":"https://api.github.com/repos/elyezer/robottelo/languages","stargazers_url":"https://api.github.com/repos/elyezer/robottelo/stargazers","contributors_url":"https://api.github.com/repos/elyezer/robottelo/contributors","subscribers_url":"https://api.github.com/repos/elyezer/robottelo/subscribers","subscription_url":"https://api.github.com/repos/elyezer/robottelo/subscription","commits_url":"https://api.github.com/repos/elyezer/robottelo/commits{/sha}","git_commits_url":"https://api.github.com/repos/elyezer/robottelo/git/commits{/sha}","comments_url":"https://api.github.com/repos/elyezer/robottelo/comments{/number}","issue_comment_url":"https://api.github.com/repos/elyezer/robottelo/issues/comments{/number}","contents_url":"https://api.github.com/repos/elyezer/robottelo/contents/{+path}","compare_url":"https://api.github.com/repos/elyezer/robottelo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elyezer/robottelo/merges","archive_url":"https://api.github.com/repos/elyezer/robottelo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elyezer/robottelo/downloads","issues_url":"https://api.github.com/repos/elyezer/robottelo/issues{/number}","pulls_url":"https://api.github.com/repos/elyezer/robottelo/pulls{/number}","milestones_url":"https://api.github.com/repos/elyezer/robottelo/milestones{/number}","notifications_url":"https://api.github.com/repos/elyezer/robottelo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elyezer/robottelo/labels{/name}","releases_url":"https://api.github.com/repos/elyezer/robottelo/releases{/id}","created_at":"2013-11-06T01:31:06Z","updated_at":"2015-05-08T20:30:32Z","pushed_at":"2015-10-05T17:41:51Z","git_url":"git://github.com/elyezer/robottelo.git","ssh_url":"git@github.com:elyezer/robottelo.git","clone_url":"https://github.com/elyezer/robottelo.git","svn_url":"https://github.com/elyezer/robottelo","homepage":"","size":11479,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"SatelliteQE:master","ref":"master","sha":"e31ebbe6ab3479ea3dc9989083a267e7c260e6c5","user":{"login":"SatelliteQE","id":8754276,"avatar_url":"https://avatars.githubusercontent.com/u/8754276?v=3","gravatar_id":"","url":"https://api.github.com/users/SatelliteQE","html_url":"https://github.com/SatelliteQE","followers_url":"https://api.github.com/users/SatelliteQE/followers","following_url":"https://api.github.com/users/SatelliteQE/following{/other_user}","gists_url":"https://api.github.com/users/SatelliteQE/gists{/gist_id}","starred_url":"https://api.github.com/users/SatelliteQE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SatelliteQE/subscriptions","organizations_url":"https://api.github.com/users/SatelliteQE/orgs","repos_url":"https://api.github.com/users/SatelliteQE/repos","events_url":"https://api.github.com/users/SatelliteQE/events{/privacy}","received_events_url":"https://api.github.com/users/SatelliteQE/received_events","type":"Organization","site_admin":false},"repo":{"id":4000279,"name":"robottelo","full_name":"SatelliteQE/robottelo","owner":{"login":"SatelliteQE","id":8754276,"avatar_url":"https://avatars.githubusercontent.com/u/8754276?v=3","gravatar_id":"","url":"https://api.github.com/users/SatelliteQE","html_url":"https://github.com/SatelliteQE","followers_url":"https://api.github.com/users/SatelliteQE/followers","following_url":"https://api.github.com/users/SatelliteQE/following{/other_user}","gists_url":"https://api.github.com/users/SatelliteQE/gists{/gist_id}","starred_url":"https://api.github.com/users/SatelliteQE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SatelliteQE/subscriptions","organizations_url":"https://api.github.com/users/SatelliteQE/orgs","repos_url":"https://api.github.com/users/SatelliteQE/repos","events_url":"https://api.github.com/users/SatelliteQE/events{/privacy}","received_events_url":"https://api.github.com/users/SatelliteQE/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SatelliteQE/robottelo","description":"Robottelo is a test suite which exercises The Foreman.","fork":false,"url":"https://api.github.com/repos/SatelliteQE/robottelo","forks_url":"https://api.github.com/repos/SatelliteQE/robottelo/forks","keys_url":"https://api.github.com/repos/SatelliteQE/robottelo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SatelliteQE/robottelo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SatelliteQE/robottelo/teams","hooks_url":"https://api.github.com/repos/SatelliteQE/robottelo/hooks","issue_events_url":"https://api.github.com/repos/SatelliteQE/robottelo/issues/events{/number}","events_url":"https://api.github.com/repos/SatelliteQE/robottelo/events","assignees_url":"https://api.github.com/repos/SatelliteQE/robottelo/assignees{/user}","branches_url":"https://api.github.com/repos/SatelliteQE/robottelo/branches{/branch}","tags_url":"https://api.github.com/repos/SatelliteQE/robottelo/tags","blobs_url":"https://api.github.com/repos/SatelliteQE/robottelo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SatelliteQE/robottelo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SatelliteQE/robottelo/git/refs{/sha}","trees_url":"https://api.github.com/repos/SatelliteQE/robottelo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SatelliteQE/robottelo/statuses/{sha}","languages_url":"https://api.github.com/repos/SatelliteQE/robottelo/languages","stargazers_url":"https://api.github.com/repos/SatelliteQE/robottelo/stargazers","contributors_url":"https://api.github.com/repos/SatelliteQE/robottelo/contributors","subscribers_url":"https://api.github.com/repos/SatelliteQE/robottelo/subscribers","subscription_url":"https://api.github.com/repos/SatelliteQE/robottelo/subscription","commits_url":"https://api.github.com/repos/SatelliteQE/robottelo/commits{/sha}","git_commits_url":"https://api.github.com/repos/SatelliteQE/robottelo/git/commits{/sha}","comments_url":"https://api.github.com/repos/SatelliteQE/robottelo/comments{/number}","issue_comment_url":"https://api.github.com/repos/SatelliteQE/robottelo/issues/comments{/number}","contents_url":"https://api.github.com/repos/SatelliteQE/robottelo/contents/{+path}","compare_url":"https://api.github.com/repos/SatelliteQE/robottelo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SatelliteQE/robottelo/merges","archive_url":"https://api.github.com/repos/SatelliteQE/robottelo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SatelliteQE/robottelo/downloads","issues_url":"https://api.github.com/repos/SatelliteQE/robottelo/issues{/number}","pulls_url":"https://api.github.com/repos/SatelliteQE/robottelo/pulls{/number}","milestones_url":"https://api.github.com/repos/SatelliteQE/robottelo/milestones{/number}","notifications_url":"https://api.github.com/repos/SatelliteQE/robottelo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SatelliteQE/robottelo/labels{/name}","releases_url":"https://api.github.com/repos/SatelliteQE/robottelo/releases{/id}","created_at":"2012-04-12T01:36:39Z","updated_at":"2015-08-04T16:49:37Z","pushed_at":"2015-10-05T20:24:09Z","git_url":"git://github.com/SatelliteQE/robottelo.git","ssh_url":"git@github.com:SatelliteQE/robottelo.git","clone_url":"https://github.com/SatelliteQE/robottelo.git","svn_url":"https://github.com/SatelliteQE/robottelo","homepage":"","size":19795,"stargazers_count":23,"watchers_count":23,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":32,"mirror_url":null,"open_issues_count":248,"forks":32,"open_issues":248,"watchers":23,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869"},"html":{"href":"https://github.com/SatelliteQE/robottelo/pull/2869"},"issue":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/issues/2869"},"comments":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/issues/2869/comments"},"review_comments":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869/comments"},"review_comment":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/pulls/2869/commits"},"statuses":{"href":"https://api.github.com/repos/SatelliteQE/robottelo/statuses/aac2bb0da1c64c94bdb999373996371ee0537f7b"}}}}