)]}'
{"kuryr_tempest_plugin/tests/clients.py":[{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"58e60756beb7142ef73690164aa36ac62dbdbca7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"CONF \u003d c.CONF"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"class Manager(object):"},{"line_number":8,"context_line":"    def __init__(self, base_manager):"},{"line_number":9,"context_line":"        self.base_manager \u003d base_manager"},{"line_number":10,"context_line":"        self._setup_lb_clients()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a226d0cb","line":7,"updated":"2018-11-19 11:08:18.000000000","message":"Please inherit from ServiceClients, according the instructions laid out here:\nhttp://lists.openstack.org/pipermail/openstack-dev/2016-August/101552.html\n\nYou can see an example here:\nhttps://review.openstack.org/#/c/334596/\n\nWith that, you can probably simplify (or remove)  _setup_lb_clients","commit_id":"dc8207b00af0bec17f16ea470f4b26f1f19eb873"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"449362544bdcf6fa260b8abf0381e540a84bf7e0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import octavia_tempest_plugin.services.load_balancer.v2 as lb"},{"line_number":17,"context_line":"from tempest import config as c"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"CONF \u003d c.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_c032cf5b","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":61},"updated":"2018-11-20 11:22:44.000000000","message":"as Daniel mentioned about the ML. We should not import the octavia_tempest_plugin instead we should discover the octavia service client which should be registered by octavia plugins. \n\nTempest already provide the mechanish of registering the service client [1] so that service clients can be used accross plugins. \n\nBut that will require some amount of work on Octavia_tempest_plugin side. I can work on that on octavia side. \n\nWe can merge this as of now and later once octavia plugins makes tjeir service client as discoverable then we can modify here. or if we can wait here then it is good.","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"792ea442cb32912f794d9c3617bb79ee5fb845c4","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Manager(object):"},{"line_number":23,"context_line":"    def __init__(self, base_manager):"},{"line_number":24,"context_line":"        self.base_manager \u003d base_manager"},{"line_number":25,"context_line":"        self._setup_lb_clients()"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_00b20706","line":23,"updated":"2018-11-20 11:06:06.000000000","message":"See my previous comment about how to manage this class, and also Daniel\u0027s comment.","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"}],"kuryr_tempest_plugin/tests/scenario/test_service.py":[{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"58e60756beb7142ef73690164aa36ac62dbdbca7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def setup_clients(cls):"},{"line_number":39,"context_line":"        super(TestServiceScenario, cls).setup_clients()"},{"line_number":40,"context_line":"        manager_admin \u003d clients.Manager(cls.os_admin)"},{"line_number":41,"context_line":"        cls.loadbalancer_client \u003d manager_admin.loadbalancer_client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_5df79d29","line":40,"updated":"2018-11-19 11:08:18.000000000","message":"This code will need to change when the manager/client is implemented according the current guidelines (see my other comment)","commit_id":"dc8207b00af0bec17f16ea470f4b26f1f19eb873"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"58e60756beb7142ef73690164aa36ac62dbdbca7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    @classmethod"},{"line_number":123,"context_line":"    def setup_clients(cls):"},{"line_number":124,"context_line":"        super(TestServiceLBCreationDeletionScenario, cls).setup_clients()"},{"line_number":125,"context_line":"        manager_admin \u003d clients.Manager(cls.os_admin)"},{"line_number":126,"context_line":"        cls.loadbalancer_client \u003d manager_admin.loadbalancer_client"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_9d145544","line":125,"updated":"2018-11-19 11:08:18.000000000","message":"see above (also, why couldn\u0027t this setup_clients class be handled in the common ancestors, BaseKuryrScenarioTest?)","commit_id":"dc8207b00af0bec17f16ea470f4b26f1f19eb873"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"42fd384eb5cb2b801ac58eadc022989a5cc3d042","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        service_lb \u003d [lb for lb in lb_list if self.service_name in lb[\u0027name\u0027]]"},{"line_number":155,"context_line":"        self.assertNotEmpty(service_lb)"},{"line_number":156,"context_line":"        self.delete_service(self.service_name)"},{"line_number":157,"context_line":"        time.sleep(30)"},{"line_number":158,"context_line":"        lb_list \u003d self.loadbalancer_client.list_loadbalancers()"},{"line_number":159,"context_line":"        service_lb \u003d [lb for lb in lb_list if self.service_name in lb[\u0027name\u0027]]"},{"line_number":160,"context_line":"        self.assertEmpty(service_lb)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_20e2a337","line":160,"range":{"start_line":157,"start_character":0,"end_line":160,"end_character":36},"updated":"2018-11-20 10:50:08.000000000","message":"Let\u0027s poll for that deletion to happen with 60 seconds timeout. It\u0027s way more efficient and flexible that way.","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"}],"test-requirements.txt":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"42fd384eb5cb2b801ac58eadc022989a5cc3d042","unresolved":false,"context_lines":[{"line_number":12,"context_line":"pylint\u003d\u003d1.4.5 # GNU GPL v2"},{"line_number":13,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":14,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2 # BSD"},{"line_number":15,"context_line":"octavia-tempest-plugin"}],"source_content_type":"text/plain","patch_set":4,"id":"3f79a3b5_4080ff48","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":22},"updated":"2018-11-20 10:50:08.000000000","message":"Okay, so this definitely won\u0027t work. Plus if it would I think it should go into requirements.txt.\n\nIMO it\u0027s worth simply copying required stuff from that tempest lib.","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4ebe324bb5e89fe3ff7dceb1121d9850a8156cd0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"pylint\u003d\u003d1.4.5 # GNU GPL v2"},{"line_number":13,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":14,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2 # BSD"},{"line_number":15,"context_line":"octavia-tempest-plugin"}],"source_content_type":"text/plain","patch_set":4,"id":"3f79a3b5_5bceb0b6","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":22},"in_reply_to":"3f79a3b5_00cd272e","updated":"2018-11-20 11:45:47.000000000","message":"Okay, I think we\u0027ve discussed approach on IRC [1]. Seems like we have a feasible way forward based on tosky and gmann advices.\n\n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-kuryr/%23openstack-kuryr.2018-11-20.log.html#t2018-11-20T11:16:17","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"792ea442cb32912f794d9c3617bb79ee5fb845c4","unresolved":false,"context_lines":[{"line_number":12,"context_line":"pylint\u003d\u003d1.4.5 # GNU GPL v2"},{"line_number":13,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":14,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2 # BSD"},{"line_number":15,"context_line":"octavia-tempest-plugin"}],"source_content_type":"text/plain","patch_set":4,"id":"3f79a3b5_c0dacf46","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":22},"in_reply_to":"3f79a3b5_4080ff48","updated":"2018-11-20 11:06:06.000000000","message":"Please don\u0027t. The right path is reuse code, not duplicate it, and nothing prevents you from using that tempest plugin. Did you try to ask on #openstack-requirements about adding tempest plugin to requirements, and in general how to handle this? Asking and finding a solution would not take a lot of time (and it would establish a usage pattern).","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"449362544bdcf6fa260b8abf0381e540a84bf7e0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"pylint\u003d\u003d1.4.5 # GNU GPL v2"},{"line_number":13,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":14,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2 # BSD"},{"line_number":15,"context_line":"octavia-tempest-plugin"}],"source_content_type":"text/plain","patch_set":4,"id":"3f79a3b5_00cd272e","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":22},"in_reply_to":"3f79a3b5_c0bf2faa","updated":"2018-11-20 11:22:44.000000000","message":"this is we disucssed in Denver PTG QA sessions [1]\n\nWe need two todo for this\n- mark the external interfaces from plugins as stable interface \n- add that plugins in g-r\n\nFirst part need to start with plugins which are used outside like Octavia in this case. We can start with service clients.\n\nsecond part is secodn step of tempest plugins release we did in Rocky. Now most of the plugins are released in pypi so i think we should be good to add those in g-r. \nI am going to start that thread and work in g-r side. \n\n[1] https://etherpad.openstack.org/p/stable-interfaces-from-tempest-plugins","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7edf97662e4fce9c54d770026846d04fdee674c5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"pylint\u003d\u003d1.4.5 # GNU GPL v2"},{"line_number":13,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":14,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2 # BSD"},{"line_number":15,"context_line":"octavia-tempest-plugin"}],"source_content_type":"text/plain","patch_set":4,"id":"3f79a3b5_c0bf2faa","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":22},"in_reply_to":"3f79a3b5_c0dacf46","updated":"2018-11-20 11:11:26.000000000","message":"My issue here is that tempest plugins are not libraries. There\u0027s no guarantee of stable API. If we want to do it the right way we need to extract common parts into a library and keep API contract there. Or make sure we run all affected Kuryr-Kubernetes jobs on octavia-tempest-plugin\u0027s gate pipeline.\n\nIMO importing a tempest plugin is not a way forward, unless we accept the fact that stuff will break from time to time.","commit_id":"4a7d2f1069939ce07747842e863f54185243bd72"}]}
