)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ff95b31cccb7e524fcfb7313a3fdcda76fe42ca6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manik Bindlish \u003cmanikbindlish19@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-12-07 09:47:14 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Trivial Fix: Checking config file actually exist or not"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This PS will check config file passed from command line"},{"line_number":10,"context_line":"is actually existing or not in account generator."},{"line_number":11,"context_line":"If file exists, only then it will go for set config path"},{"line_number":12,"context_line":"otherwise will fail with error."},{"line_number":13,"context_line":"Also adding positive and negative unit test cases for same."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partially-Implements: blueprint tempest-cli-unit-test-coverage"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_2f40e032","line":13,"range":{"start_line":7,"start_character":0,"end_line":13,"end_character":58},"updated":"2018-12-10 14:53:51.000000000","message":"you need to remove the \u0027Trivial Fix\u0027 now and also update the commit msg as per latest changes","commit_id":"1bf0ff59626065dae5edaf3661e4970d93ac98a0"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"7e5c11d17b414d527a93a449b87c5f92fae6c7eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bfdc7953_870f629f","updated":"2022-07-28 08:47:45.000000000","message":"not needed anymore, account-generator will throw an error if tempest.conf specified by -c argument doesn\u0027t exist:\n\n$ tempest account-generator -c ./etc/tempesttts_fake.conf acc_test.yaml\n2022-07-28 08:46:03.308 1658540 INFO tempest [-] Using tempest config file /etc/tempest/tempest.conf\nTraceback (most recent call last):\n  File \"/home/ubuntu/tempest/tempest/cmd/account_generator.py\", line 276, in take_action\n    cred_provider \u003d get_credential_provider(parsed_args)\n  File \"/home/ubuntu/tempest/tempest/cmd/account_generator.py\", line 147, in get_credential_provider\n    return dynamic_creds.DynamicCredentialProvider(\n  File \"/home/ubuntu/tempest/tempest/lib/common/dynamic_creds.py\", line 104, in __init__\n    self.security_groups_admin_client) \u003d self._get_admin_clients(\n  File \"/home/ubuntu/tempest/tempest/lib/common/dynamic_creds.py\", line 128, in _get_admin_clients\n    os \u003d clients.ServiceClients(self.default_admin_creds,\n  File \"/home/ubuntu/tempest/.tox/py38/lib/python3.8/site-packages/debtcollector/removals.py\", line 260, in wrapper\n    return f(*args, **kwargs)\n  File \"/home/ubuntu/tempest/tempest/lib/services/clients.py\", line 328, in __init__\n    raise exceptions.InvalidCredentials(\ntempest.lib.exceptions.InvalidCredentials: Invalid Credentials\nDetails: ServiceClients requires a non-empty identity_uri.\n","commit_id":"e452a3a3db9b17defdf67bb5be3af9baa7d0f464"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"66fed0500f2e447933194d1baf8c4ecbac87e4ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"d8c19be4_7e1f6a28","updated":"2021-12-10 22:59:59.000000000","message":"please rebase if this is still needed. as there is no activity on this since long we will abandon it next week if no updates","commit_id":"e452a3a3db9b17defdf67bb5be3af9baa7d0f464"}],"releasenotes/notes/bug-1807859-811f17fd3103bb2b.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e7832b33179375e746d924062316fd4b10e157e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed bug #1807859. ``tempest account-generator`` CLI will error if wrong value"},{"line_number":5,"context_line":"    of config will be passed from command line for parameter -c/--config. Earlier this"},{"line_number":6,"context_line":"    wrong value was silently getting ignored which was wrong behavior"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_6930fcb7","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":69},"updated":"2018-12-11 13:54:45.000000000","message":"Fixed bug #1807859. ``tempest account-generator`` CLI will error if a non-exist config file is input to parameter -c/--config. Earlier non-exist config value was silently getting ignored, and the default config file was used instead which used to give false behavior to the user on using the passed config file.","commit_id":"958257841a95cbe61994613012a1064d5df186ca"}],"tempest/cmd/account_generator.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bed7aa666b16957ec2b55f0974f52c1a35e819d1","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    if os.path.exists(opts.config_file):"},{"line_number":301,"context_line":"        config.CONF.set_config_path(opts.config_file)"},{"line_number":302,"context_line":"    else:"},{"line_number":303,"context_line":"        LOG.warning(\"Config file: %s doesn\u0027t exist\", opts.config_file)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    if opts.os_tenant_name:"},{"line_number":306,"context_line":"        LOG.warning(\"\u0027os-tenant-name\u0027 and \u0027OS_TENANT_NAME\u0027 are both \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ad0d3540","line":303,"range":{"start_line":302,"start_character":0,"end_line":303,"end_character":70},"updated":"2018-12-05 12:14:21.000000000","message":"think we should throw error in this case otherwise it will give false impressions. if user pass wrong config path then, we will end up using default config and user will be in impression that passed config file is used. \n\nLet\u0027s return the error in this case.","commit_id":"20b46d97c37dda2c392c4d976d497d62a5dad3d4"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"b6315d304b6885af06b04bbdd2f3bd1015b5200f","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    if os.path.exists(opts.config_file):"},{"line_number":301,"context_line":"        config.CONF.set_config_path(opts.config_file)"},{"line_number":302,"context_line":"    else:"},{"line_number":303,"context_line":"        LOG.warning(\"Config file: %s doesn\u0027t exist\", opts.config_file)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    if opts.os_tenant_name:"},{"line_number":306,"context_line":"        LOG.warning(\"\u0027os-tenant-name\u0027 and \u0027OS_TENANT_NAME\u0027 are both \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_10b78a8a","line":303,"range":{"start_line":302,"start_character":0,"end_line":303,"end_character":70},"in_reply_to":"3f79a3b5_ad0d3540","updated":"2018-12-06 05:23:56.000000000","message":"Agreeing with your point, fixed the comment!","commit_id":"20b46d97c37dda2c392c4d976d497d62a5dad3d4"},{"author":{"_account_id":8911,"name":"Sergey Vilgelm","email":"sergey@vilgelm.info","username":"sergey.vilgelm"},"change_message_id":"96e43b5cd13823748d856a0533779bebb2c805f6","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    if opts.config_file and os.path.exists(opts.config_file):"},{"line_number":301,"context_line":"        config.CONF.set_config_path(opts.config_file)"},{"line_number":302,"context_line":"    else:"},{"line_number":303,"context_line":"        LOG.error(\"Config file: %s doesn\u0027t exist\", opts.config_file)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    if opts.os_tenant_name:"},{"line_number":306,"context_line":"        LOG.warning(\"\u0027os-tenant-name\u0027 and \u0027OS_TENANT_NAME\u0027 are both \""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_07566b5e","line":303,"updated":"2018-12-06 14:02:33.000000000","message":"We will see this error in case of opts.config_file has None value also, what is wrong.\n\nLet\u0027s use:\n\n    if opts.config_file:\n        if os.path.exists(opts.config_file):\n            config.CONF.set_config_path(opts.config_file)\n        else:\n            raise Exception(\"Config file: %s doesn\u0027t exist\" % opts.config_file)","commit_id":"7025b65e2167c97f9b03f36a6cbc3c6eb881f795"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0fd25fed0a0ebcbd983aca3256cacdce7c21a46a","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if os.path.exists(opts.config_file):"},{"line_number":302,"context_line":"            config.CONF.set_config_path(opts.config_file)"},{"line_number":303,"context_line":"        else:"},{"line_number":304,"context_line":"            raise ValueError("},{"line_number":305,"context_line":"                \"Config file: %s doesn\u0027t exist\" % opts.config_file)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    if opts.os_tenant_name:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_0ea80a20","line":304,"range":{"start_line":304,"start_character":18,"end_line":304,"end_character":28},"updated":"2018-12-16 22:56:04.000000000","message":"See comments here: https://review.openstack.org/#/c/625162/1/tempest/cmd/run.py","commit_id":"61cf3c665fbf782b2ee1db456eac6d655376e493"}],"tempest/tests/cmd/test_account_generator.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"d58f8086fe60de06420e77d6750b1d77202b9791","unresolved":false,"context_lines":[{"line_number":491,"context_line":"        self.assertTrue(account_generator.CONF._path)"},{"line_number":492,"context_line":"        self.assertEqual(self.opts.config_file, account_generator.CONF._path)"},{"line_number":493,"context_line":"        self.assertTrue(account_file_path, \"No account file found\")"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        f \u003d open(account_file_path, \u0027r\u0027)"},{"line_number":496,"context_line":"        data \u003d f.readlines()"},{"line_number":497,"context_line":"        f.close()"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        self.assertEqual(self.opts.accounts,"},{"line_number":500,"context_line":"                         os.path.basename(account_file_path))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_b9a0bea4","line":497,"range":{"start_line":494,"start_character":0,"end_line":497,"end_character":17},"updated":"2018-12-10 13:43:50.000000000","message":"Why not use:\n\n    with open(account_file_path, \u0027r\u0027) as f:\n\nwhich is the preferred way of read files in Python.","commit_id":"1bf0ff59626065dae5edaf3661e4970d93ac98a0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8f8600e3dc207b5bcd0f957d3e835e2b495ad38d","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        self.assertEqual(1, data.count(\u0027  - admin\\n\u0027))"},{"line_number":507,"context_line":"        self.assertEqual(5, data.count(\u0027  resources:\\n\u0027))"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_account_generator_wrong_config_file(self):"},{"line_number":510,"context_line":"        self._setup_test_dirs()"},{"line_number":511,"context_line":"        self.opts.concurrency \u003d 1"},{"line_number":512,"context_line":"        self.opts.config_file \u003d \u0027wrong_file.yaml\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_c26d939a","line":509,"range":{"start_line":509,"start_character":31,"end_line":509,"end_character":36},"updated":"2018-12-09 14:24:37.000000000","message":"s/wrong/non_exist/ \u0027wrong\u0027 can be exist file but with wrong content etc.","commit_id":"1bf0ff59626065dae5edaf3661e4970d93ac98a0"}]}
