)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"1bbb25ccf8f23565210b9507ca919db025a68923","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"afe47752_fead5b88","updated":"2021-12-29 19:46:20.000000000","message":"recheck","commit_id":"a1c95ab8a1f2d7ee2c4a00e898245774171b9a20"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"5c12498809eaf3af7c4b9a4f5c960328bcb7ecfb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6bad8f28_972e1807","updated":"2022-01-02 16:15:34.000000000","message":"recheck","commit_id":"17682b669b224cb04308c10c3d21733ac5cbbb01"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"12995ffefbaeae1ee4557238247fffd9a094b161","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f9d1a4f2_770c6ef4","updated":"2022-01-02 14:30:51.000000000","message":"recheck","commit_id":"17682b669b224cb04308c10c3d21733ac5cbbb01"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a2a62aa263d063e66be75b88f56c77109036c4d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6afd02ba_6958f833","updated":"2022-01-02 20:40:14.000000000","message":"recheck","commit_id":"51dec6ed5e02050d8a8d9bb4108185fd4faff293"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"614b20ba17d35a47bad06236bf4d12f3445b1276","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8ac1a839_9d30f532","updated":"2022-01-02 19:28:45.000000000","message":"recheck","commit_id":"51dec6ed5e02050d8a8d9bb4108185fd4faff293"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"7fdf691a3c3f4eccd742dcc59e8b2d09c0ddaceb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3f3a0e6a_d44cf3e9","updated":"2022-01-03 11:25:05.000000000","message":"recheck","commit_id":"f05306885e329fb687f71c8292065ae60d8b4d94"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0233edb328add340026c93818950287078651937","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"dcfe49df_c6190913","updated":"2022-01-07 23:06:52.000000000","message":"I wounder if this shouldn\u0027t be in it\u0027s own test suite.\nThe CLI tools may not always be installed in the same place that tempest is run from. (Like some of our downstream test systems)","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"32335ab06400de1bfe35766dfbb1d4b21090d28a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"f7464c1b_edddb886","updated":"2022-01-03 14:51:38.000000000","message":"recheck","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a0cd873df0af84d92d7632546dcb3a82ad5781d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d64a4d31_650922fb","in_reply_to":"dcfe49df_c6190913","updated":"2022-01-11 09:29:55.000000000","message":"Do you mean adding a new directory under tests (with api and scenario) called cli?\nI\u0027ll do that in my next patchset.","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a5a5f03a0fdc4179182d7a9262b52b2eafd9c5aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"5cc35de7_7f9df631","updated":"2022-05-17 00:09:26.000000000","message":"I don\u0027t think these tests should be in the main Designate tempest plugin.","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ff48d07bc16f8e5d35c8bf3634da22902d77989","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"bee305e8_7c429589","in_reply_to":"5cc35de7_7f9df631","updated":"2022-05-19 11:48:36.000000000","message":"I think that it would be great having the CLI tests included in Designate Tempest Plugin and here is why:\n1) We as QE do want the CLI tests to be covered in Downstream\n2) I also think that our potential customers will be using CLI and therefore may find the CLI tests relevant.\n\nAnyway I understand your point Michael and therefore I\u0027ve decided to add \"enable_cli_test_scenario\" parameter that is set to False by default, means that the CLI tests won\u0027t be executed if not implicitly enabled by user.","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5a3377e657abe1b7bcd9d5e3c227c8211ad465a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"0f07b95e_19739f34","updated":"2023-01-11 15:55:10.000000000","message":"I still feel that we should not be testing the CLI with tempest here. This should go into the CLI test suite.","commit_id":"9ba5e739861ddc292e01e0c8b0024f5c2cf56ad4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"2cc6f2dd3aa04ff70916c52b2c82d657475cf700","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"c09cedc6_4a42c63f","updated":"2022-12-29 08:22:26.000000000","message":"recheck","commit_id":"9ba5e739861ddc292e01e0c8b0024f5c2cf56ad4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"5581a7acfa9f8bde48cbb1bd2d7bf00e387077f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"3424b5cc_9cda1716","in_reply_to":"0f07b95e_19739f34","updated":"2023-02-06 11:54:38.000000000","message":"Hi Michael!\n\nIf it\u0027s just about the feeling,then maybe we could go ahead 😊\nA lot of work have been done here: coding + review.\nHaving the ability to run CLI tests on a real OOO setup by QE (covering CLIs in D/S CI Tempest stage sounds so good 👌) or by Customers for their needs, would be great!\n\nThanks!","commit_id":"9ba5e739861ddc292e01e0c8b0024f5c2cf56ad4"}],"designate_tempest_plugin/services/dns/v2/json/cli_client.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"2d5c7091a5c76da85bb5f5809dc8905d68292db5","unresolved":true,"context_lines":[{"line_number":35,"context_line":"            script_content \u003d \u0027#!/usr/bin/bash\\n\u0027"},{"line_number":36,"context_line":"            script_content +\u003d \u0027source {}\u0027.format(self.source_file) + \u0027\\n\u0027"},{"line_number":37,"context_line":"            script_content +\u003d command + \u0027\\n\u0027"},{"line_number":38,"context_line":"            with open(bash_script_name, \"w+\") as fh:"},{"line_number":39,"context_line":"                fh.write(script_content)"},{"line_number":40,"context_line":"            os.chmod(bash_script_name, 0o777)"},{"line_number":41,"context_line":"            subproc_check_output \u003d subprocess.check_output("}],"source_content_type":"text/x-python","patch_set":7,"id":"1b2c6b06_6fb06dfd","line":38,"updated":"2022-01-03 00:14:24.000000000","message":"Do we just want to leave the file, or delete it once we are done_ Also, probably want to put the file in a tmp folder?","commit_id":"c490eec25267250b0dafdb7f8a8edce09b11dd09"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"2fe539d2b703fa9496cf07f3b630c5d68921e8e1","unresolved":true,"context_lines":[{"line_number":35,"context_line":"            script_content \u003d \u0027#!/usr/bin/bash\\n\u0027"},{"line_number":36,"context_line":"            script_content +\u003d \u0027source {}\u0027.format(self.source_file) + \u0027\\n\u0027"},{"line_number":37,"context_line":"            script_content +\u003d command + \u0027\\n\u0027"},{"line_number":38,"context_line":"            with open(bash_script_name, \"w+\") as fh:"},{"line_number":39,"context_line":"                fh.write(script_content)"},{"line_number":40,"context_line":"            os.chmod(bash_script_name, 0o777)"},{"line_number":41,"context_line":"            subproc_check_output \u003d subprocess.check_output("}],"source_content_type":"text/x-python","patch_set":7,"id":"38e286a1_0fa88a68","line":38,"in_reply_to":"1b2c6b06_6fb06dfd","updated":"2022-01-03 07:30:40.000000000","message":"Yep, makes sense. I\u0027ll fix that.","commit_id":"c490eec25267250b0dafdb7f8a8edce09b11dd09"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0233edb328add340026c93818950287078651937","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2d14411c_6ff72911","updated":"2022-01-07 23:06:52.000000000","message":"Why do we need this? Can\u0027t the tests simply directly run the necessary CLI commands using subprocess directly?","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a0cd873df0af84d92d7632546dcb3a82ad5781d1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d93444cf_375ce410","in_reply_to":"2d14411c_6ff72911","updated":"2022-01-11 09:29:55.000000000","message":"This is what I\u0027ve done first, but then I decided to change it in a way it goes now.\nNow it applies any other test to include the cli client (if needed) and to use it just out of the box for executing openstack CLI commands.\n\nFor example, I\u0027m planning to add a new test into: https://github.com/openstack/designate-tempest-plugin/blob/master/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py\nthat will use cli client to import a zone from a real file, I mean testing the functionality of the folowing CLI command: \nopenstack zone import create \u003czone_file_patch\u003e","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0233edb328add340026c93818950287078651937","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _exec_openstack_cli_command("},{"line_number":36,"context_line":"            self, command, json_output\u003dTrue,"},{"line_number":37,"context_line":"            bash_script_path\u003d\u0027/tmp/temp_cli.sh\u0027,"},{"line_number":38,"context_line":"            std_out_err_path\u003d\u0027/tmp/output.log\u0027):"},{"line_number":39,"context_line":"        \"\"\"Executes given Openstack CLI command"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"26a2c80d_0f2e5796","line":37,"updated":"2022-01-07 23:06:52.000000000","message":"This makes me very uncomfortable. Even though this is just a test, executing anything out of /tmp is a security risk.","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a0cd873df0af84d92d7632546dcb3a82ad5781d1","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _exec_openstack_cli_command("},{"line_number":36,"context_line":"            self, command, json_output\u003dTrue,"},{"line_number":37,"context_line":"            bash_script_path\u003d\u0027/tmp/temp_cli.sh\u0027,"},{"line_number":38,"context_line":"            std_out_err_path\u003d\u0027/tmp/output.log\u0027):"},{"line_number":39,"context_line":"        \"\"\"Executes given Openstack CLI command"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"0a0a952b_c7b4b77a","line":37,"in_reply_to":"26a2c80d_0f2e5796","updated":"2022-01-11 09:29:55.000000000","message":"OK, so I\u0027ll do something similar that we have done for test_server.bin in Octavia, I mean:\n[root@undercloud-0 ~]# ll /opt/octavia-tempest-plugin/test_server.bin\n-rwxr-xr-x. 1 root root 4812800 Dec 21 05:22 /opt/octavia-tempest-plugin/test_server.bin","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0233edb328add340026c93818950287078651937","unresolved":true,"context_lines":[{"line_number":52,"context_line":"            \u0027SubProcCheckOutput\u0027\u003cRaw_Output_Data\u003e: \u0027JsonOutput:\u003cJson_Data\u003e}"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            script_content \u003d \u0027#!/usr/bin/bash\\n\u0027"},{"line_number":56,"context_line":"            script_content +\u003d \u0027source {}\u0027.format(self.source_file) + \u0027\\n\u0027"},{"line_number":57,"context_line":"            if json_output:"},{"line_number":58,"context_line":"                command +\u003d \u0027 -f json\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"20ff6a95_16b9ffaa","line":55,"updated":"2022-01-07 23:06:52.000000000","message":"This path may not be consistent across distributions.\nTypically /bin/bash is used.","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a0cd873df0af84d92d7632546dcb3a82ad5781d1","unresolved":true,"context_lines":[{"line_number":52,"context_line":"            \u0027SubProcCheckOutput\u0027\u003cRaw_Output_Data\u003e: \u0027JsonOutput:\u003cJson_Data\u003e}"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            script_content \u003d \u0027#!/usr/bin/bash\\n\u0027"},{"line_number":56,"context_line":"            script_content +\u003d \u0027source {}\u0027.format(self.source_file) + \u0027\\n\u0027"},{"line_number":57,"context_line":"            if json_output:"},{"line_number":58,"context_line":"                command +\u003d \u0027 -f json\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"86cf18e3_1f710094","line":55,"in_reply_to":"20ff6a95_16b9ffaa","updated":"2022-01-11 09:29:55.000000000","message":"OK, I\u0027ll add \"which\" to find bash exe location.","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0233edb328add340026c93818950287078651937","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            script_content +\u003d command + \u0027\\n\u0027"},{"line_number":60,"context_line":"            with open(bash_script_path, \"w+\") as fh:"},{"line_number":61,"context_line":"                fh.write(script_content)"},{"line_number":62,"context_line":"            os.chmod(bash_script_path, 0o777)"},{"line_number":63,"context_line":"            subproc_check_output \u003d subprocess.check_output("},{"line_number":64,"context_line":"                \u0027{} 2\u003e\u00261 | tee {}\u0027.format("},{"line_number":65,"context_line":"                    bash_script_path, std_out_err_path),"}],"source_content_type":"text/x-python","patch_set":10,"id":"0eb7978b_bde2d13b","line":62,"updated":"2022-01-07 23:06:52.000000000","message":"World writable?","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a0cd873df0af84d92d7632546dcb3a82ad5781d1","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            script_content +\u003d command + \u0027\\n\u0027"},{"line_number":60,"context_line":"            with open(bash_script_path, \"w+\") as fh:"},{"line_number":61,"context_line":"                fh.write(script_content)"},{"line_number":62,"context_line":"            os.chmod(bash_script_path, 0o777)"},{"line_number":63,"context_line":"            subproc_check_output \u003d subprocess.check_output("},{"line_number":64,"context_line":"                \u0027{} 2\u003e\u00261 | tee {}\u0027.format("},{"line_number":65,"context_line":"                    bash_script_path, std_out_err_path),"}],"source_content_type":"text/x-python","patch_set":10,"id":"02847c66_fc9d1ee5","line":62,"in_reply_to":"0eb7978b_bde2d13b","updated":"2022-01-11 09:29:55.000000000","message":"Yep, 755 would be much more safe :)","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"}],"designate_tempest_plugin/tests/cli/v2/test_cli.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a5a5f03a0fdc4179182d7a9262b52b2eafd9c5aa","unresolved":true,"context_lines":[{"line_number":30,"context_line":"class BaseCLITest(base.BaseDnsV2Test, CliClient):"},{"line_number":31,"context_line":"    credentials \u003d [\"admin\", \"system_admin\"]"},{"line_number":32,"context_line":"    source_file_patchs \u003d ["},{"line_number":33,"context_line":"        \u0027/opt/stack/devstack/openrc\u0027, \u0027/home/stack/overcloudrc\u0027]"},{"line_number":34,"context_line":"    source_file_patch \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"1179cacf_2fcb10b1","line":33,"updated":"2022-05-17 00:09:26.000000000","message":"This test is assuming devstack, but tempest tests are run against live clouds.","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ff48d07bc16f8e5d35c8bf3634da22902d77989","unresolved":true,"context_lines":[{"line_number":30,"context_line":"class BaseCLITest(base.BaseDnsV2Test, CliClient):"},{"line_number":31,"context_line":"    credentials \u003d [\"admin\", \"system_admin\"]"},{"line_number":32,"context_line":"    source_file_patchs \u003d ["},{"line_number":33,"context_line":"        \u0027/opt/stack/devstack/openrc\u0027, \u0027/home/stack/overcloudrc\u0027]"},{"line_number":34,"context_line":"    source_file_patch \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"44e8b0df_c25dce3d","line":33,"in_reply_to":"1179cacf_2fcb10b1","updated":"2022-05-19 11:48:36.000000000","message":"The only source file paths I\u0027m familiar with are the ones mentioned in  \"source_file_paths\", it\u0027s possible to add more paths into that list, I just need some examples (if any) :( \n\nBTW - if none of the source file provided in \"source_file_paths\" was found on file system, CLI tests will be skipped.","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"3b73189bc61c90129cf412b5938c0608d5331aea","unresolved":true,"context_lines":[{"line_number":30,"context_line":"class BaseCLITest(base.BaseDnsV2Test, CliClient):"},{"line_number":31,"context_line":"    credentials \u003d [\"admin\", \"system_admin\"]"},{"line_number":32,"context_line":"    source_file_patchs \u003d ["},{"line_number":33,"context_line":"        \u0027/opt/stack/devstack/openrc\u0027, \u0027/home/stack/overcloudrc\u0027]"},{"line_number":34,"context_line":"    source_file_patch \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"4d4065b8_6b2f25e6","line":33,"in_reply_to":"44e8b0df_c25dce3d","updated":"2022-05-19 18:01:53.000000000","message":"Maybe just move the rc file paths to the config file?","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ef0e453ff59caef5bf1a29896a87b5157bc3a8a8","unresolved":true,"context_lines":[{"line_number":30,"context_line":"class BaseCLITest(base.BaseDnsV2Test, CliClient):"},{"line_number":31,"context_line":"    credentials \u003d [\"admin\", \"system_admin\"]"},{"line_number":32,"context_line":"    source_file_patchs \u003d ["},{"line_number":33,"context_line":"        \u0027/opt/stack/devstack/openrc\u0027, \u0027/home/stack/overcloudrc\u0027]"},{"line_number":34,"context_line":"    source_file_patch \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"f3e8d884_3e374e8a","line":33,"in_reply_to":"4d4065b8_6b2f25e6","updated":"2022-05-24 09:03:46.000000000","message":"Yep, makes sense.\nThanks Erik, will do!","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a5a5f03a0fdc4179182d7a9262b52b2eafd9c5aa","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.idempotent_id(\u0027527b1084-6bb2-11ec-9576-201e8823901f\u0027)"},{"line_number":59,"context_line":"    def test_create_zone_using_openstack_cli(self):"},{"line_number":60,"context_line":"        command \u003d \u0027openstack zone create {} --email {}\u0027.format("},{"line_number":61,"context_line":"            dns_data_utils.rand_zone_name(),"},{"line_number":62,"context_line":"            dns_data_utils.rand_email())"},{"line_number":63,"context_line":"        out \u003d self.cli_client.exec_openstack_cli_command(command)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9185e215_06f0693f","line":60,"updated":"2022-05-17 00:09:26.000000000","message":"I still think this test suite should be in the python-designateclient repo and not included in the main designate test suite. The openstack client may not be installed for locations tempest may be run from.","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ff48d07bc16f8e5d35c8bf3634da22902d77989","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.idempotent_id(\u0027527b1084-6bb2-11ec-9576-201e8823901f\u0027)"},{"line_number":59,"context_line":"    def test_create_zone_using_openstack_cli(self):"},{"line_number":60,"context_line":"        command \u003d \u0027openstack zone create {} --email {}\u0027.format("},{"line_number":61,"context_line":"            dns_data_utils.rand_zone_name(),"},{"line_number":62,"context_line":"            dns_data_utils.rand_email())"},{"line_number":63,"context_line":"        out \u003d self.cli_client.exec_openstack_cli_command(command)"}],"source_content_type":"text/x-python","patch_set":11,"id":"b78da0c7_c1bf6d98","line":60,"in_reply_to":"9185e215_06f0693f","updated":"2022-05-19 11:48:36.000000000","message":"I\u0027ll add additional skip check to make sure that the \"python-designateclient\" is installed on the test environment.","commit_id":"c7bf540a4ec96fdaadeee2cad956a222de7a34e9"}],"designate_tempest_plugin/tests/scenario/v2/test_cli.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5a5b823aac8819ec33dcb4e4197946cac390033e","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        super(BaseCLITest, cls).setup_clients()"},{"line_number":47,"context_line":"        cls.client \u003d cls.os_primary.dns_v2.ZonesClient()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _is_json(self, str):"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            json_data \u003d json.loads(str.lower())"},{"line_number":52,"context_line":"            return json_data"}],"source_content_type":"text/x-python","patch_set":3,"id":"6cf075ef_29d39827","line":49,"updated":"2021-12-31 03:35:46.000000000","message":"probably don\u0027t want to re-name this to something better besides str.","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ae2b069ba4c602bee3ae61e94bd0ae2aaeef51d4","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        super(BaseCLITest, cls).setup_clients()"},{"line_number":47,"context_line":"        cls.client \u003d cls.os_primary.dns_v2.ZonesClient()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _is_json(self, str):"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            json_data \u003d json.loads(str.lower())"},{"line_number":52,"context_line":"            return json_data"}],"source_content_type":"text/x-python","patch_set":3,"id":"254078c2_6db0f5db","line":49,"in_reply_to":"6cf075ef_29d39827","updated":"2022-01-02 09:17:07.000000000","message":"Yep, that was a bad idea using python keywords, will be fixed.","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5a5b823aac8819ec33dcb4e4197946cac390033e","unresolved":true,"context_lines":[{"line_number":68,"context_line":"                shell\u003dTrue,"},{"line_number":69,"context_line":"                universal_newlines\u003dTrue)"},{"line_number":70,"context_line":"            json_str \u003d subproc_check_output[subproc_check_output.find(\u0027{\u0027):]"},{"line_number":71,"context_line":"            dic_to_return \u003d {"},{"line_number":72,"context_line":"                \u0027ReturnCode\u0027: 0, \u0027SubProcCheckOutput\u0027: subproc_check_output,"},{"line_number":73,"context_line":"                \u0027JsonOutput\u0027: None}"},{"line_number":74,"context_line":"            json_data \u003d self._is_json(json_str)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e9aff42c_94e4a0b9","line":71,"updated":"2021-12-31 03:35:46.000000000","message":"maybe dict_to_return is better","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"f27dda8e8dc07add27c1b79cf3a1844f6bf44c7c","unresolved":true,"context_lines":[{"line_number":68,"context_line":"                shell\u003dTrue,"},{"line_number":69,"context_line":"                universal_newlines\u003dTrue)"},{"line_number":70,"context_line":"            json_str \u003d subproc_check_output[subproc_check_output.find(\u0027{\u0027):]"},{"line_number":71,"context_line":"            dic_to_return \u003d {"},{"line_number":72,"context_line":"                \u0027ReturnCode\u0027: 0, \u0027SubProcCheckOutput\u0027: subproc_check_output,"},{"line_number":73,"context_line":"                \u0027JsonOutput\u0027: None}"},{"line_number":74,"context_line":"            json_data \u003d self._is_json(json_str)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff56df63_33efa932","line":71,"in_reply_to":"e9aff42c_94e4a0b9","updated":"2021-12-31 03:40:57.000000000","message":"Could be worth re-using this?\nhttps://opendev.org/x/python-don/src/branch/master/openstack_dashboard/don/ovs/collector.py#L22","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ae2b069ba4c602bee3ae61e94bd0ae2aaeef51d4","unresolved":true,"context_lines":[{"line_number":68,"context_line":"                shell\u003dTrue,"},{"line_number":69,"context_line":"                universal_newlines\u003dTrue)"},{"line_number":70,"context_line":"            json_str \u003d subproc_check_output[subproc_check_output.find(\u0027{\u0027):]"},{"line_number":71,"context_line":"            dic_to_return \u003d {"},{"line_number":72,"context_line":"                \u0027ReturnCode\u0027: 0, \u0027SubProcCheckOutput\u0027: subproc_check_output,"},{"line_number":73,"context_line":"                \u0027JsonOutput\u0027: None}"},{"line_number":74,"context_line":"            json_data \u003d self._is_json(json_str)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c86f0356_f58a6a4c","line":71,"in_reply_to":"ff56df63_33efa932","updated":"2022-01-02 09:17:07.000000000","message":"Could be great, but this function is just about parsing the provided file: https://opendev.org/x/python-don/src/branch/master/openstack_dashboard/don/ovs/collector.py#L34.\nThis can be enough when source file is just a key value lines, but for our need (openrc is a bash script) it\u0027s not enough.\n\nHere is the returned dictionary for the given oprnrc file I got by using this function:\n{\u0027OS_PROJECT_NAME\u0027: \u0027${OS_PROJECT_NAME:-demo}\u0027, \u0027OS_TENANT_NAME\u0027: \u0027$OS_PROJECT_NAME\u0027, \u0027OS_USERNAME\u0027: \u0027${OS_USERNAME:-demo}\u0027, \u0027OS_PASSWORD\u0027: \u0027${ADMIN_PASSWORD:-secret}\u0027, \u0027OS_REGION_NAME\u0027: \u0027${REGION_NAME:-RegionOne}\u0027, \u0027OS_IDENTITY_API_VERSION\u0027: \u00273\u0027, \u0027OS_AUTH_TYPE\u0027: \u0027password\u0027, \u0027OS_AUTH_URL\u0027: \u0027${OS_AUTH_URL:-$KEYSTONE_SERVICE_URI}\u0027, \u0027CINDER_VERSION\u0027: \u0027${CINDER_VERSION:-3}\u0027, \u0027OS_VOLUME_API_VERSION\u0027: \u0027${OS_VOLUME_API_VERSION:-$CINDER_VERSION}\u0027}\n\n\nand these are the correct values after actually being sourced with openrc file.\nstack@ubuntu-1215-1450:~/devstack$ echo $OS_PROJECT_NAME\ndemo\nstack@ubuntu-1215-1450:~/devstack$ echo $OS_TENANT_NAME\ndemo\nstack@ubuntu-1215-1450:~/devstack$ echo $OS_VOLUME_API_VERSION\n3","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5a5b823aac8819ec33dcb4e4197946cac390033e","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            dns_data_utils.rand_zone_name(),"},{"line_number":87,"context_line":"            dns_data_utils.rand_email())"},{"line_number":88,"context_line":"        out \u003d self._exec_openstack_cli_command(command)"},{"line_number":89,"context_line":"        self.assertTrue("},{"line_number":90,"context_line":"            out[\u0027ReturnCode\u0027] \u003d\u003d 0 and out[\u0027JsonOutput\u0027] is not None,"},{"line_number":91,"context_line":"            \u0027CLI command \"{}\" has failed with: {} \u0027.format("},{"line_number":92,"context_line":"                command, out[\u0027SubProcCheckOutput\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da96cc93_a2cb8888","line":89,"updated":"2021-12-31 03:35:46.000000000","message":"Break this into multiple asserts.","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ae2b069ba4c602bee3ae61e94bd0ae2aaeef51d4","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            dns_data_utils.rand_zone_name(),"},{"line_number":87,"context_line":"            dns_data_utils.rand_email())"},{"line_number":88,"context_line":"        out \u003d self._exec_openstack_cli_command(command)"},{"line_number":89,"context_line":"        self.assertTrue("},{"line_number":90,"context_line":"            out[\u0027ReturnCode\u0027] \u003d\u003d 0 and out[\u0027JsonOutput\u0027] is not None,"},{"line_number":91,"context_line":"            \u0027CLI command \"{}\" has failed with: {} \u0027.format("},{"line_number":92,"context_line":"                command, out[\u0027SubProcCheckOutput\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"a8142859_52c047c2","line":89,"in_reply_to":"da96cc93_a2cb8888","updated":"2022-01-02 09:17:07.000000000","message":"Agree, will do that.","commit_id":"2d6b2e3641871cec08f1a236d477e23dbee2a3b5"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0233edb328add340026c93818950287078651937","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class BaseCLITest(base.BaseDnsV2Test, CliClient):"},{"line_number":31,"context_line":"    credentials \u003d [\"admin\", \"system_admin\"]"},{"line_number":32,"context_line":"    source_file_patch \u003d \u0027/opt/stack/devstack/openrc\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"0e6babbf_66f08d36","line":32,"updated":"2022-01-07 23:06:52.000000000","message":"We can\u0027t assume the tempest test suite is running with devstack.","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a0cd873df0af84d92d7632546dcb3a82ad5781d1","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class BaseCLITest(base.BaseDnsV2Test, CliClient):"},{"line_number":31,"context_line":"    credentials \u003d [\"admin\", \"system_admin\"]"},{"line_number":32,"context_line":"    source_file_patch \u003d \u0027/opt/stack/devstack/openrc\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"712bed6d_f67555dd","line":32,"in_reply_to":"0e6babbf_66f08d36","updated":"2022-01-11 09:29:55.000000000","message":"Yep. this is something I though about, maybe adding a list of possible source file, for example: [\u0027/opt/stack/devstack/openrc\u0027, \u0027/home/stack/overcloudrc\u0027]\nI\u0027ll add this list.","commit_id":"cffa225386b6d4f4dbc48dc39a6151eb15e59213"}]}
