)]}'
{"octavia/tests/tempest/README.rst":[{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"aeadb3f08d2a218c35f32838bf34c66891264bd9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"This directory contains Tempest tests to cover the octavia project."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dae33548_535dcd45","line":6,"updated":"2016-02-17 23:00:06.000000000","message":"Some short description on how to set up and run the tests using the plugin would be good.","commit_id":"ffe8191a7ed0ba2992a4881b096bcdccc81facd7"}],"octavia/tests/tempest/config.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"977b28169a964e3c5163bf410251c5e455524b9b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003d15,"},{"line_number":36,"context_line":"               help\u003d\u0027Time in seconds between build status checks.\u0027),"},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027lb_build_timeout\u0027,"},{"line_number":38,"context_line":"               default\u003d600,"},{"line_number":39,"context_line":"               help\u003d\u0027Timeout in seconds to wait for a \u0027"},{"line_number":40,"context_line":"                    \u0027load balancer to build.\u0027),"},{"line_number":41,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_1cf2e59a","line":38,"updated":"2016-08-24 21:33:30.000000000","message":"I think 600s actually might be borderline in devstack -- might want to up this to 800s or 900s.","commit_id":"6e8dd4321c30ca055f1909156954eb857772a237"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"cf28910f6f4afd9202f04636be51fe576af0e5b3","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003d15,"},{"line_number":36,"context_line":"               help\u003d\u0027Time in seconds between build status checks.\u0027),"},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027lb_build_timeout\u0027,"},{"line_number":38,"context_line":"               default\u003d600,"},{"line_number":39,"context_line":"               help\u003d\u0027Timeout in seconds to wait for a \u0027"},{"line_number":40,"context_line":"                    \u0027load balancer to build.\u0027),"},{"line_number":41,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_70821dca","line":38,"in_reply_to":"1ac06dbe_1cf2e59a","updated":"2016-08-24 21:48:03.000000000","message":"Done","commit_id":"6e8dd4321c30ca055f1909156954eb857772a237"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"1cef8249b315ba245081e1cb1fc65fb61c0e4c51","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"    For running Octavia tests, it  is assumed that the following option is"},{"line_number":20,"context_line":"    defined in the [service_available] section of etc/tempest.conf"},{"line_number":21,"context_line":"    octavia \u003d True"},{"line_number":22,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_e6e65743","line":19,"updated":"2016-08-24 22:11:48.000000000","message":"Two spaces","commit_id":"058dbb30971131ff382aed801873a5731973a826"}],"octavia/tests/tempest/plugin.py":[{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"7b61cb9b9e336420bc766e531cfe425b5e39abc6","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"},{"line_number":28,"context_line":"            return full_test_dir, base_path"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def register_opts(self, conf):"},{"line_number":31,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_ce2c909b","line":28,"updated":"2016-02-17 23:03:23.000000000","message":"the previous change made more logical sense; this seems to return on the first item of the list.","commit_id":"5f4b41c334c073e11318e126bbc0eb9d24843ffe"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"25439aa7a669f73ce05bfbdd63ddaaec0abb0ab4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"},{"line_number":28,"context_line":"            return full_test_dir, base_path"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def register_opts(self, conf):"},{"line_number":31,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_2ec89ca7","line":28,"in_reply_to":"dae33548_ce2c909b","updated":"2016-02-17 23:07:33.000000000","message":"Done. Thanks.","commit_id":"5f4b41c334c073e11318e126bbc0eb9d24843ffe"},{"author":{"_account_id":15226,"name":"Bharath M","email":"bharath.stacker@gmail.com","username":"bharath"},"change_message_id":"6f17d566c1ec8b0b508ab337cd5789e80a198aed","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class OctaviaTempestPlugin(plugins.TempestPlugin):"},{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_1c17c448","line":24,"range":{"start_line":23,"start_character":20,"end_line":24,"end_character":42},"updated":"2016-02-18 08:33:26.000000000","message":"Suggestion to avoid split.. os.path.abspath(os.path.dirname(__file__))","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"4015e86c346d27055694892318ad0371634c2ccf","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class OctaviaTempestPlugin(plugins.TempestPlugin):"},{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_27c24c85","line":24,"range":{"start_line":23,"start_character":20,"end_line":24,"end_character":42},"in_reply_to":"dae33548_1c17c448","updated":"2016-02-18 18:07:43.000000000","message":"This is a script developed by tempest folks :)","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":15226,"name":"Bharath M","email":"bharath.stacker@gmail.com","username":"bharath"},"change_message_id":"901e795cbe6964502424d06302111b0b06fe45fc","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class OctaviaTempestPlugin(plugins.TempestPlugin):"},{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_22387ad2","line":24,"range":{"start_line":23,"start_character":20,"end_line":24,"end_character":42},"in_reply_to":"dae33548_27c24c85","updated":"2016-02-18 18:26:44.000000000","message":"Yeah I have seen your syntax in a blogpost example on tempest plugin.. It\u0027s just reading the working directory for the loading module.. So both would work. Ideally. :-)","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":15226,"name":"Bharath M","email":"bharath.stacker@gmail.com","username":"bharath"},"change_message_id":"6f17d566c1ec8b0b508ab337cd5789e80a198aed","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"},{"line_number":28,"context_line":"        return full_test_dir, base_path"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def register_opts(self, conf):"},{"line_number":31,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_17995f7c","line":28,"range":{"start_line":25,"start_character":8,"end_line":28,"end_character":39},"updated":"2016-02-18 08:33:26.000000000","message":"I do not see the need of for loop here. This always returns \"{...}/v1/scenario\" as full_test_dir and would never invoke \"api\".\n\nIf you want to invoke both api and scenario tests then you may have to pass the full_test_dir as \"{base_path}/octavia/tests/tempest/v1/\"","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"4015e86c346d27055694892318ad0371634c2ccf","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"},{"line_number":28,"context_line":"        return full_test_dir, base_path"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def register_opts(self, conf):"},{"line_number":31,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_87e6b841","line":28,"range":{"start_line":25,"start_character":8,"end_line":28,"end_character":39},"in_reply_to":"dae33548_17995f7c","updated":"2016-02-18 18:07:43.000000000","message":"Yes. We can give the path \u0027octavia/tests/tempest/v1/\u0027 directly. But I thought to give two paths to avoid loading files from clients folder present in v1/. Hence went with \u0027for\u0027 loop. \n\nHowever, other projects doesn\u0027t use \u0027for\u0027 loop as a part of tempest plugin implementation. So will avoid for loop and go with direct path as I said above.","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"bb195d9e4a5eef0d246f72a35f391d410ba70736","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"},{"line_number":28,"context_line":"        return full_test_dir, base_path"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def register_opts(self, conf):"},{"line_number":31,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_4242deae","line":28,"range":{"start_line":25,"start_character":8,"end_line":28,"end_character":39},"in_reply_to":"dae33548_22c23a85","updated":"2016-02-18 18:35:36.000000000","message":"yep. I shall wait for his patch to be merged first and then re-propose this patch accordingly by following the above structure.","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":15226,"name":"Bharath M","email":"bharath.stacker@gmail.com","username":"bharath"},"change_message_id":"901e795cbe6964502424d06302111b0b06fe45fc","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def load_tests(self):"},{"line_number":23,"context_line":"        base_path \u003d os.path.split(os.path.dirname("},{"line_number":24,"context_line":"            os.path.abspath(__file__)))[0]"},{"line_number":25,"context_line":"        for test_dir in [\u0027octavia/tests/tempest/v1/api\u0027,"},{"line_number":26,"context_line":"                         \u0027octavia/tests/tempest/v1/scenario\u0027]:"},{"line_number":27,"context_line":"            full_test_dir \u003d os.path.join(base_path, test_dir)"},{"line_number":28,"context_line":"        return full_test_dir, base_path"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def register_opts(self, conf):"},{"line_number":31,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_22c23a85","line":28,"range":{"start_line":25,"start_character":8,"end_line":28,"end_character":39},"in_reply_to":"dae33548_87e6b841","updated":"2016-02-18 18:26:44.000000000","message":"I am not sure how the returned string is parsed by tempest. If you use the direct path, then franklin may have to update his patch to have a directory structure as,\n\n../tests\n      /api\n      /scenario\n../services\n      /clients\n\nSo, if there\u0027s no other way to over_ride load_tests returning two paths, I suggest you discuss with franklin about this.","commit_id":"dc193d4019f8cd05f12fd3073000d9194ac1844d"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"1cef8249b315ba245081e1cb1fc65fb61c0e4c51","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        conf.register_opts(octavia_config.service_option,"},{"line_number":37,"context_line":"                           group\u003d\u0027service_available\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_opt_lists(self):"},{"line_number":40,"context_line":"        return [(\u0027octavia\u0027, octavia_config.OctaviaGroup),"},{"line_number":41,"context_line":"                (\u0027service_available\u0027, [octavia_config.service_option])]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_a6e61f14","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":21},"updated":"2016-08-24 22:11:48.000000000","message":"This is really needed? Is Tempest using it internally?","commit_id":"058dbb30971131ff382aed801873a5731973a826"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4af514b44720dace59cb19cc1385d661459e285b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        conf.register_opts(octavia_config.service_option,"},{"line_number":37,"context_line":"                           group\u003d\u0027service_available\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_opt_lists(self):"},{"line_number":40,"context_line":"        return [(\u0027octavia\u0027, octavia_config.OctaviaGroup),"},{"line_number":41,"context_line":"                (\u0027service_available\u0027, [octavia_config.service_option])]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_fc853fad","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":21},"in_reply_to":"1ac06dbe_a6e61f14","updated":"2016-08-25 01:24:16.000000000","message":"It is listed as part of the plugin hooks here:\nhttp://docs.openstack.org/developer/tempest/plugin.html#abstract-plugin-class\n\nThough this raises the question for me whether we should be implementing get_service_clients, but that can be done in a later patch.","commit_id":"058dbb30971131ff382aed801873a5731973a826"}]}
