)]}'
{"octavia_tempest_plugin/services/load_balancer/v2/base_client.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.timeout \u003d CONF.load_balancer.build_timeout"},{"line_number":41,"context_line":"        self.build_interval \u003d CONF.load_balancer.build_interval"},{"line_number":42,"context_line":"        self.uri \u003d self.base_uri.format(object\u003dself.list_root_tag)"},{"line_number":43,"context_line":"        setattr(self, \u0027cleanup_{}\u0027.format(self.root_tag), self._cleanup_obj)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _create_object(self, return_object_only\u003dTrue, **kwargs):"},{"line_number":46,"context_line":"        \"\"\"Create an object."}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_b3cb6a48","line":43,"updated":"2018-05-02 18:38:24.000000000","message":"This needs a comment calling out the \"virtual\" cleanup_\u003croot_tag\u003e method this creates.\nIt\u0027s confusing looking for the methods.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.timeout \u003d CONF.load_balancer.build_timeout"},{"line_number":41,"context_line":"        self.build_interval \u003d CONF.load_balancer.build_interval"},{"line_number":42,"context_line":"        self.uri \u003d self.base_uri.format(object\u003dself.list_root_tag)"},{"line_number":43,"context_line":"        setattr(self, \u0027cleanup_{}\u0027.format(self.root_tag), self._cleanup_obj)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _create_object(self, return_object_only\u003dTrue, **kwargs):"},{"line_number":46,"context_line":"        \"\"\"Create an object."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_55b7ccd9","line":43,"in_reply_to":"9f6a8fd7_b3cb6a48","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        self.expected_success(204, response.status)"},{"line_number":275,"context_line":"        return response.status"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _cleanup_obj(self, obj_id, lb_client\u003dNone, lb_id\u003dNone):"},{"line_number":278,"context_line":"        if lb_client and lb_id:"},{"line_number":279,"context_line":"            wait_id \u003d lb_id"},{"line_number":280,"context_line":"            wait_client \u003d lb_client"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_93dc2675","line":277,"updated":"2018-05-02 18:38:24.000000000","message":"Docstrings?\nAt first read I have no idea what this is for or why it is in the service client. This is not part of our API.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        self.expected_success(204, response.status)"},{"line_number":275,"context_line":"        return response.status"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _cleanup_obj(self, obj_id, lb_client\u003dNone, lb_id\u003dNone):"},{"line_number":278,"context_line":"        if lb_client and lb_id:"},{"line_number":279,"context_line":"            wait_id \u003d lb_id"},{"line_number":280,"context_line":"            wait_client \u003d lb_client"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_15b154e2","line":277,"in_reply_to":"9f6a8fd7_5cba1b0a","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        self.expected_success(204, response.status)"},{"line_number":275,"context_line":"        return response.status"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _cleanup_obj(self, obj_id, lb_client\u003dNone, lb_id\u003dNone):"},{"line_number":278,"context_line":"        if lb_client and lb_id:"},{"line_number":279,"context_line":"            wait_id \u003d lb_id"},{"line_number":280,"context_line":"            wait_client \u003d lb_client"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_5cba1b0a","line":277,"in_reply_to":"9f6a8fd7_93dc2675","updated":"2018-05-02 20:04:22.000000000","message":"Yeah I\u0027ll do a docstring. The cliffnotes is, we need to wait for the LB to be ready before doing cleanup on it or subobjects, because otherwise any cleanup will just fail... And if something breaks during a test, quite often the cleanups will start running immediately and the LB will be in a PENDING state and it\u0027ll explode everything. \nThis method lets us more carefully control object cleanup. It should generally be used rather than the \"delete\" function, for any tempest addClassResourceCleanup","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"}],"octavia_tempest_plugin/services/load_balancer/v2/listener_client.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    root_tag \u003d \u0027listener\u0027"},{"line_number":26,"context_line":"    list_root_tag \u003d \u0027listeners\u0027"},{"line_number":27,"context_line":"    resource_name \u003d \u0027listener\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def create_listener(self, return_object_only\u003dTrue, **kwargs):"},{"line_number":30,"context_line":"        \"\"\"Create a listener."}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_f3b802e6","line":27,"updated":"2018-05-02 18:38:24.000000000","message":"What is resource_name used for?\nI can\u0027t find where it\u0027s used.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    root_tag \u003d \u0027listener\u0027"},{"line_number":26,"context_line":"    list_root_tag \u003d \u0027listeners\u0027"},{"line_number":27,"context_line":"    resource_name \u003d \u0027listener\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def create_listener(self, return_object_only\u003dTrue, **kwargs):"},{"line_number":30,"context_line":"        \"\"\"Create a listener."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_35b6d0db","line":27,"in_reply_to":"9f6a8fd7_f3b802e6","updated":"2018-05-02 22:01:21.000000000","message":"Woops, was part of an earlier draft, forgot to remove. Done.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"}],"octavia_tempest_plugin/services/load_balancer/v2/loadbalancer_client.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.timeout \u003d CONF.load_balancer.lb_build_timeout"},{"line_number":34,"context_line":"        self.build_interval \u003d CONF.load_balancer.lb_build_interval"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def create_loadbalancer(self, return_object_only\u003dTrue, **kwargs):"},{"line_number":37,"context_line":"        \"\"\"Create a loadbalancer."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param return_object_only: If True, the response returns the object"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_50fd2438","line":36,"updated":"2018-05-02 18:38:24.000000000","message":"This is a huge trade-off.\nOne one side this makes maintaining the plugin easier as we don\u0027t have to make changes here to support new options, only in the tests themselves.\nOn the otherside, someone coming into this service client will have no clue what to put in as parameters.\n\nMany other client calls out the parameters in the service client to make it easier for users:\nhttps://github.com/openstack/designate-tempest-plugin/blob/master/designate_tempest_plugin/services/dns/v2/json/zones_client.py#L25\nhttps://github.com/openstack/tempest-lib/blob/master/tempest_lib/services/identity/v3/token_client.py#L39\n\nFrankly I had a real beef with Nova for doing the kwargs thing as I had to dig through api docs, deal with api versions, etc. to figure out how to use the client.\nThis was the motivation for having both in the LB patch.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.timeout \u003d CONF.load_balancer.lb_build_timeout"},{"line_number":34,"context_line":"        self.build_interval \u003d CONF.load_balancer.lb_build_interval"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def create_loadbalancer(self, return_object_only\u003dTrue, **kwargs):"},{"line_number":37,"context_line":"        \"\"\"Create a loadbalancer."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param return_object_only: If True, the response returns the object"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_d5cafc4d","line":36,"in_reply_to":"9f6a8fd7_50fd2438","updated":"2018-05-02 22:01:21.000000000","message":"This is not a difficult fix, just tedious and kinda annoying. I can do it.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"}],"octavia_tempest_plugin/tests/api/v2/test_listener.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-create\")"},{"line_number":71,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        listener_kwargs \u003d {"},{"line_number":74,"context_line":"            const.NAME: listener_name,"},{"line_number":75,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":76,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_763060e9","line":73,"updated":"2018-05-02 18:38:24.000000000","message":"Missing:\ndefault_pool_id\ndefault_tls_container_ref\nsni_container_refs\n\nWe should at least have a TODO for these parts of the listener create API that are not being tested here.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-create\")"},{"line_number":71,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        listener_kwargs \u003d {"},{"line_number":74,"context_line":"            const.NAME: listener_name,"},{"line_number":75,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":76,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_7c735f81","line":73,"in_reply_to":"9f6a8fd7_763060e9","updated":"2018-05-02 20:04:22.000000000","message":"Yep. This is before the pools patch, so ... there\u0027s no way to set a default_pool_id. I also figured TLS stuff would be a follow-on patch after we have the full basic object model.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-create\")"},{"line_number":71,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        listener_kwargs \u003d {"},{"line_number":74,"context_line":"            const.NAME: listener_name,"},{"line_number":75,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":76,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_95c48442","line":73,"in_reply_to":"9f6a8fd7_7c735f81","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            const.NAME: listener_name,"},{"line_number":75,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":76,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":77,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":78,"context_line":"            const.PROTOCOL_PORT: \u002780\u0027,"},{"line_number":79,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":80,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_164d6471","line":77,"range":{"start_line":77,"start_character":28,"end_line":77,"end_character":34},"updated":"2018-05-02 18:38:24.000000000","message":"nit: This is available in constants.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            const.NAME: listener_name,"},{"line_number":75,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":76,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":77,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":78,"context_line":"            const.PROTOCOL_PORT: \u002780\u0027,"},{"line_number":79,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":80,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_55dcac17","line":77,"range":{"start_line":77,"start_character":28,"end_line":77,"end_character":34},"in_reply_to":"9f6a8fd7_164d6471","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self.assertEqual(1000, listener[const.TIMEOUT_CLIENT_DATA])"},{"line_number":130,"context_line":"        self.assertEqual(1000, listener[const.TIMEOUT_MEMBER_CONNECT])"},{"line_number":131,"context_line":"        self.assertEqual(1000, listener[const.TIMEOUT_MEMBER_DATA])"},{"line_number":132,"context_line":"        self.assertEqual(50, listener[const.TIMEOUT_TCP_INSPECT])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @decorators.idempotent_id(\u002778ba6eb0-178c-477e-9156-b6775ca7b271\u0027)"},{"line_number":135,"context_line":"    def test_listener_list(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_96409437","line":132,"updated":"2018-05-02 18:38:24.000000000","message":"Protocol and protocol port are missing assertions.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self.assertEqual(1000, listener[const.TIMEOUT_CLIENT_DATA])"},{"line_number":130,"context_line":"        self.assertEqual(1000, listener[const.TIMEOUT_MEMBER_CONNECT])"},{"line_number":131,"context_line":"        self.assertEqual(1000, listener[const.TIMEOUT_MEMBER_DATA])"},{"line_number":132,"context_line":"        self.assertEqual(50, listener[const.TIMEOUT_TCP_INSPECT])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @decorators.idempotent_id(\u002778ba6eb0-178c-477e-9156-b6775ca7b271\u0027)"},{"line_number":135,"context_line":"    def test_listener_list(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_75e1a8d0","line":132,"in_reply_to":"9f6a8fd7_96409437","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    def test_listener_list(self):"},{"line_number":136,"context_line":"        \"\"\"Tests listener list API and field filtering."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        * Create a clean loadbalancer."},{"line_number":139,"context_line":"        * Create three listeners."},{"line_number":140,"context_line":"        * Validates that other accounts cannot list the listeners."},{"line_number":141,"context_line":"        * List the listeners using the default sort order."}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_966974bf","line":138,"updated":"2018-05-02 18:38:24.000000000","message":"Do we absolutely need to create an LB here?","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    def test_listener_list(self):"},{"line_number":136,"context_line":"        \"\"\"Tests listener list API and field filtering."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        * Create a clean loadbalancer."},{"line_number":139,"context_line":"        * Create three listeners."},{"line_number":140,"context_line":"        * Validates that other accounts cannot list the listeners."},{"line_number":141,"context_line":"        * List the listeners using the default sort order."}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_dc114b06","line":138,"in_reply_to":"9f6a8fd7_966974bf","updated":"2018-05-02 20:04:22.000000000","message":"For the list, we should. It simplifies things immensely, and removes any chance of a failure due to other issues, making this test safe to run even in parallel to other tests. This is in the API tests only, which in gates are all noop, so it shouldn\u0027t add much time.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-show\")"},{"line_number":382,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        listener_kwargs \u003d {"},{"line_number":385,"context_line":"            const.NAME: listener_name,"},{"line_number":386,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":387,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_36ec2828","line":384,"updated":"2018-05-02 18:38:24.000000000","message":"Same as create, there are a few we are not testing here that could use TODOs:\ndefault_pool_id\ndefault_tls_container_ref\nsni_container_refs","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-show\")"},{"line_number":382,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        listener_kwargs \u003d {"},{"line_number":385,"context_line":"            const.NAME: listener_name,"},{"line_number":386,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":387,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_7cf83fc3","line":384,"in_reply_to":"9f6a8fd7_36ec2828","updated":"2018-05-02 20:04:22.000000000","message":"Ah yeah, I guess they\u0027re worth some TODOs.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-show\")"},{"line_number":382,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        listener_kwargs \u003d {"},{"line_number":385,"context_line":"            const.NAME: listener_name,"},{"line_number":386,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":387,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_35eb30b1","line":384,"in_reply_to":"9f6a8fd7_7cf83fc3","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            const.NAME: listener_name,"},{"line_number":386,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":387,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":388,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":389,"context_line":"            const.PROTOCOL_PORT: \u002781\u0027,"},{"line_number":390,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":391,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_b6d7d84f","line":388,"range":{"start_line":388,"start_character":28,"end_line":388,"end_character":34},"updated":"2018-05-02 18:38:24.000000000","message":"nit: in constants","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            const.NAME: listener_name,"},{"line_number":386,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":387,"context_line":"            const.ADMIN_STATE_UP: True,"},{"line_number":388,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":389,"context_line":"            const.PROTOCOL_PORT: \u002781\u0027,"},{"line_number":390,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":391,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_15e634ea","line":388,"range":{"start_line":388,"start_character":28,"end_line":388,"end_character":34},"in_reply_to":"9f6a8fd7_b6d7d84f","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":413,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":416,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":417,"context_line":"        self.assertTrue(listener[const.ADMIN_STATE_UP])"},{"line_number":418,"context_line":"        parser.parse(listener[const.CREATED_AT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_76e1402a","line":415,"updated":"2018-05-02 18:38:24.000000000","message":"Missing assertions for protocol and protocol port","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":413,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":416,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":417,"context_line":"        self.assertTrue(listener[const.ADMIN_STATE_UP])"},{"line_number":418,"context_line":"        parser.parse(listener[const.CREATED_AT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_d5cf5c55","line":415,"in_reply_to":"9f6a8fd7_76e1402a","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            const.NAME: listener_name,"},{"line_number":482,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":483,"context_line":"            const.ADMIN_STATE_UP: False,"},{"line_number":484,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":485,"context_line":"            const.PROTOCOL_PORT: \u002782\u0027,"},{"line_number":486,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":487,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_36d50844","line":484,"range":{"start_line":484,"start_character":28,"end_line":484,"end_character":34},"updated":"2018-05-02 18:38:24.000000000","message":"nit: constants","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            const.NAME: listener_name,"},{"line_number":482,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":483,"context_line":"            const.ADMIN_STATE_UP: False,"},{"line_number":484,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":485,"context_line":"            const.PROTOCOL_PORT: \u002782\u0027,"},{"line_number":486,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":487,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_f5ccd862","line":484,"range":{"start_line":484,"start_character":28,"end_line":484,"end_character":34},"in_reply_to":"9f6a8fd7_36d50844","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":509,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":512,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":513,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_56543cca","line":511,"updated":"2018-05-02 18:38:24.000000000","message":"default_pool_id, default_tls_container_ref, sni_container_refs are missing, but updatable. At least a TODO","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":509,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":512,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":513,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_95d9e423","line":511,"in_reply_to":"9f6a8fd7_56543cca","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":512,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":513,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"},{"line_number":515,"context_line":"        parser.parse(listener[const.UPDATED_AT])"},{"line_number":516,"context_line":"        UUID(listener[const.ID])"},{"line_number":517,"context_line":"        # Operating status is a measured status, so no-op will not go online"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_76baa00a","line":514,"updated":"2018-05-02 18:38:24.000000000","message":"We don\u0027t really need to test fields that aren\u0027t going to change in this test.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"},{"line_number":515,"context_line":"        parser.parse(listener[const.UPDATED_AT])"},{"line_number":516,"context_line":"        UUID(listener[const.ID])"},{"line_number":517,"context_line":"        # Operating status is a measured status, so no-op will not go online"},{"line_number":518,"context_line":"        if CONF.load_balancer.test_with_noop:"},{"line_number":519,"context_line":"            self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_d6404c0a","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":32},"updated":"2018-05-02 18:38:24.000000000","message":"Not being tested.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"},{"line_number":515,"context_line":"        parser.parse(listener[const.UPDATED_AT])"},{"line_number":516,"context_line":"        UUID(listener[const.ID])"},{"line_number":517,"context_line":"        # Operating status is a measured status, so no-op will not go online"},{"line_number":518,"context_line":"        if CONF.load_balancer.test_with_noop:"},{"line_number":519,"context_line":"            self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_bc27b764","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":32},"in_reply_to":"9f6a8fd7_d6404c0a","updated":"2018-05-02 20:04:22.000000000","message":"This and the ones above it are copied verbatim from the LB test.\nIt makes sense to go ahead and test them.\nUUID() actually does \"test\" this, because if it fails to parse as a UUID it will raise an exception. We don\u0027t need to do anything to \"assertNotRaises\"","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"},{"line_number":515,"context_line":"        parser.parse(listener[const.UPDATED_AT])"},{"line_number":516,"context_line":"        UUID(listener[const.ID])"},{"line_number":517,"context_line":"        # Operating status is a measured status, so no-op will not go online"},{"line_number":518,"context_line":"        if CONF.load_balancer.test_with_noop:"},{"line_number":519,"context_line":"            self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS])"},{"line_number":520,"context_line":"        else:"},{"line_number":521,"context_line":"            self.assertEqual(const.ONLINE, listener[const.OPERATING_STATUS])"},{"line_number":522,"context_line":"        self.assertEqual(200, listener[const.CONNECTION_LIMIT])"},{"line_number":523,"context_line":"        insert_headers \u003d listener[const.INSERT_HEADERS]"},{"line_number":524,"context_line":"        self.assertTrue("}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_964ad424","line":521,"range":{"start_line":517,"start_character":0,"end_line":521,"end_character":76},"updated":"2018-05-02 18:38:24.000000000","message":"Not being tested.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        parser.parse(listener[const.CREATED_AT])"},{"line_number":515,"context_line":"        parser.parse(listener[const.UPDATED_AT])"},{"line_number":516,"context_line":"        UUID(listener[const.ID])"},{"line_number":517,"context_line":"        # Operating status is a measured status, so no-op will not go online"},{"line_number":518,"context_line":"        if CONF.load_balancer.test_with_noop:"},{"line_number":519,"context_line":"            self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS])"},{"line_number":520,"context_line":"        else:"},{"line_number":521,"context_line":"            self.assertEqual(const.ONLINE, listener[const.OPERATING_STATUS])"},{"line_number":522,"context_line":"        self.assertEqual(200, listener[const.CONNECTION_LIMIT])"},{"line_number":523,"context_line":"        insert_headers \u003d listener[const.INSERT_HEADERS]"},{"line_number":524,"context_line":"        self.assertTrue("}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_fcd20f34","line":521,"range":{"start_line":517,"start_character":0,"end_line":521,"end_character":76},"in_reply_to":"9f6a8fd7_964ad424","updated":"2018-05-02 20:04:22.000000000","message":"Yes it is? Am I missing something?","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                         listener_check[const.PROVISIONING_STATUS])"},{"line_number":565,"context_line":"        self.assertFalse(listener_check[const.ADMIN_STATE_UP])"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        listener_update_kwargs \u003d {"},{"line_number":568,"context_line":"            const.NAME: new_name,"},{"line_number":569,"context_line":"            const.DESCRIPTION: new_description,"},{"line_number":570,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_36d66829","line":567,"updated":"2018-05-02 18:38:24.000000000","message":"default_pool_id, default_tls_container_ref, sni_container_refs are missing, but updatable. At least a TODO","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                         listener_check[const.PROVISIONING_STATUS])"},{"line_number":565,"context_line":"        self.assertFalse(listener_check[const.ADMIN_STATE_UP])"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        listener_update_kwargs \u003d {"},{"line_number":568,"context_line":"            const.NAME: new_name,"},{"line_number":569,"context_line":"            const.DESCRIPTION: new_description,"},{"line_number":570,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_b5d660f1","line":567,"in_reply_to":"9f6a8fd7_36d66829","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        listener_kwargs \u003d {"},{"line_number":617,"context_line":"            const.NAME: listener_name,"},{"line_number":618,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":619,"context_line":"            const.PROTOCOL_PORT: \u002783\u0027,"},{"line_number":620,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":621,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_36bf48d1","line":618,"range":{"start_line":618,"start_character":28,"end_line":618,"end_character":34},"updated":"2018-05-02 18:38:24.000000000","message":"nit: constant","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        listener_kwargs \u003d {"},{"line_number":617,"context_line":"            const.NAME: listener_name,"},{"line_number":618,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":619,"context_line":"            const.PROTOCOL_PORT: \u002783\u0027,"},{"line_number":620,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":621,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_55058c79","line":618,"range":{"start_line":618,"start_character":28,"end_line":618,"end_character":34},"in_reply_to":"9f6a8fd7_36bf48d1","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"}],"octavia_tempest_plugin/tests/api/v2/test_load_balancer.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"bdd3f3874f7f47716909cb15077beecccb147ec3","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                                      const.ACTIVE,"},{"line_number":271,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":272,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":273,"context_line":"        # Time resolution for created_at is only to the second, and we need to"},{"line_number":274,"context_line":"        # ensure that each object has a distinct creation time. Delaying one"},{"line_number":275,"context_line":"        # second is both a simple and a reliable way to accomplish this."},{"line_number":276,"context_line":"        time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_ee5e1fe5","line":273,"updated":"2018-05-04 20:28:19.000000000","message":"I have seen that twice - should maybe be it\u0027s own function?","commit_id":"fbbd2b49121aaa39c2812244d557fb33aa0c541e"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"c86662f48294a38dab6219b4420e63e6e79f1713","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                                      const.ACTIVE,"},{"line_number":271,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":272,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":273,"context_line":"        # Time resolution for created_at is only to the second, and we need to"},{"line_number":274,"context_line":"        # ensure that each object has a distinct creation time. Delaying one"},{"line_number":275,"context_line":"        # second is both a simple and a reliable way to accomplish this."},{"line_number":276,"context_line":"        time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_e2dcf319","line":273,"in_reply_to":"5f7c97a3_0eb83bc6","updated":"2018-05-04 22:13:59.000000000","message":"We have 3 lines of commentary around it so it might be worthwhile. Also the 1 should probably a. constant so we can. change it in one place if that becomes 2 one day","commit_id":"fbbd2b49121aaa39c2812244d557fb33aa0c541e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"702b5b8e1a7c644bb7d5bdb2bab87b17eea02dd6","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                                      const.ACTIVE,"},{"line_number":271,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":272,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":273,"context_line":"        # Time resolution for created_at is only to the second, and we need to"},{"line_number":274,"context_line":"        # ensure that each object has a distinct creation time. Delaying one"},{"line_number":275,"context_line":"        # second is both a simple and a reliable way to accomplish this."},{"line_number":276,"context_line":"        time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_c28777d7","line":273,"in_reply_to":"5f7c97a3_e2dcf319","updated":"2018-05-04 22:26:45.000000000","message":"I\u0027d still want to put the comment here, so moving the comment to a function would be counter-productive.\n\nIt will never become a 2. We\u0027re not waiting on \"something to happen with octavia\", we\u0027re waiting for the system clock to tick over. The issue is that Octavia is actually too *fast*, and this guarantees that we have different create times with a one-second time resolution (no milliseconds on this).","commit_id":"fbbd2b49121aaa39c2812244d557fb33aa0c541e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a895565b469ef3abbd0a82d5d472285973cf6fff","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                                      const.ACTIVE,"},{"line_number":271,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":272,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":273,"context_line":"        # Time resolution for created_at is only to the second, and we need to"},{"line_number":274,"context_line":"        # ensure that each object has a distinct creation time. Delaying one"},{"line_number":275,"context_line":"        # second is both a simple and a reliable way to accomplish this."},{"line_number":276,"context_line":"        time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_0eb83bc6","line":273,"in_reply_to":"5f7c97a3_ee5e1fe5","updated":"2018-05-04 20:43:20.000000000","message":"A function for time.sleep(1)?","commit_id":"fbbd2b49121aaa39c2812244d557fb33aa0c541e"}],"octavia_tempest_plugin/tests/scenario/v2/test_listener.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # Listener create"},{"line_number":68,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-CRUD\")"},{"line_number":69,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":70,"context_line":"        listener_kwargs \u003d {"},{"line_number":71,"context_line":"            const.NAME: listener_name,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_368d0831","line":68,"updated":"2018-05-02 18:38:24.000000000","message":"default_pool_id, default_tls_container_ref, sni_container_refs are missing. At least a TODO","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # Listener create"},{"line_number":68,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1-CRUD\")"},{"line_number":69,"context_line":"        listener_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":70,"context_line":"        listener_kwargs \u003d {"},{"line_number":71,"context_line":"            const.NAME: listener_name,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_d5a19c97","line":68,"in_reply_to":"9f6a8fd7_368d0831","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            const.NAME: listener_name,"},{"line_number":72,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":73,"context_line":"            const.ADMIN_STATE_UP: False,"},{"line_number":74,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":75,"context_line":"            const.PROTOCOL_PORT: \u002780\u0027,"},{"line_number":76,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":77,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_7672a04b","line":74,"range":{"start_line":74,"start_character":28,"end_line":74,"end_character":34},"updated":"2018-05-02 18:38:24.000000000","message":"nit: constants","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            const.NAME: listener_name,"},{"line_number":72,"context_line":"            const.DESCRIPTION: listener_description,"},{"line_number":73,"context_line":"            const.ADMIN_STATE_UP: False,"},{"line_number":74,"context_line":"            const.PROTOCOL: \u0027HTTP\u0027,"},{"line_number":75,"context_line":"            const.PROTOCOL_PORT: \u002780\u0027,"},{"line_number":76,"context_line":"            const.LOADBALANCER_ID: self.lb_id,"},{"line_number":77,"context_line":"            const.CONNECTION_LIMIT: 200,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_15987468","line":74,"range":{"start_line":74,"start_character":28,"end_line":74,"end_character":34},"in_reply_to":"9f6a8fd7_7672a04b","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":98,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":101,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":102,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":103,"context_line":"        parser.parse(listener[const.CREATED_AT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_56ac3c8b","line":100,"updated":"2018-05-02 18:38:24.000000000","message":"Protocol and protocol port are missing.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":98,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.assertEqual(listener_name, listener[const.NAME])"},{"line_number":101,"context_line":"        self.assertEqual(listener_description, listener[const.DESCRIPTION])"},{"line_number":102,"context_line":"        self.assertFalse(listener[const.ADMIN_STATE_UP])"},{"line_number":103,"context_line":"        parser.parse(listener[const.CREATED_AT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_3588101e","line":100,"in_reply_to":"9f6a8fd7_56ac3c8b","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        new_name \u003d data_utils.rand_name(\"lb_member_listener1-update\")"},{"line_number":120,"context_line":"        new_description \u003d data_utils.arbitrary_string(size\u003d255,"},{"line_number":121,"context_line":"                                                      base_text\u003d\u0027new\u0027)"},{"line_number":122,"context_line":"        listener_update_kwargs \u003d {"},{"line_number":123,"context_line":"            const.NAME: new_name,"},{"line_number":124,"context_line":"            const.DESCRIPTION: new_description,"},{"line_number":125,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_16b804c6","line":122,"updated":"2018-05-02 18:38:24.000000000","message":"default_pool_id, default_tls_container_ref, sni_container_refs are missing, but updatable. At least a TODO","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        new_name \u003d data_utils.rand_name(\"lb_member_listener1-update\")"},{"line_number":120,"context_line":"        new_description \u003d data_utils.arbitrary_string(size\u003d255,"},{"line_number":121,"context_line":"                                                      base_text\u003d\u0027new\u0027)"},{"line_number":122,"context_line":"        listener_update_kwargs \u003d {"},{"line_number":123,"context_line":"            const.NAME: new_name,"},{"line_number":124,"context_line":"            const.DESCRIPTION: new_description,"},{"line_number":125,"context_line":"            const.ADMIN_STATE_UP: True,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_15839406","line":122,"in_reply_to":"9f6a8fd7_16b804c6","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":144,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        self.assertEqual(new_name, listener[const.NAME])"},{"line_number":147,"context_line":"        self.assertEqual(new_description, listener[const.DESCRIPTION])"},{"line_number":148,"context_line":"        self.assertTrue(listener[const.ADMIN_STATE_UP])"},{"line_number":149,"context_line":"        self.assertEqual(400, listener[const.CONNECTION_LIMIT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_36bbc8c4","line":146,"updated":"2018-05-02 18:38:24.000000000","message":"protocol and protocol port are missing (should not change here)","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            CONF.load_balancer.build_interval,"},{"line_number":144,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        self.assertEqual(new_name, listener[const.NAME])"},{"line_number":147,"context_line":"        self.assertEqual(new_description, listener[const.DESCRIPTION])"},{"line_number":148,"context_line":"        self.assertTrue(listener[const.ADMIN_STATE_UP])"},{"line_number":149,"context_line":"        self.assertEqual(400, listener[const.CONNECTION_LIMIT])"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_758e882f","line":146,"in_reply_to":"9f6a8fd7_36bbc8c4","updated":"2018-05-02 22:01:21.000000000","message":"Done","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c8380002a766310af3d0fd65bc51b070797b02bd","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertEqual(100, listener[const.TIMEOUT_TCP_INSPECT])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        # Listener delete"},{"line_number":161,"context_line":"        self.mem_listener_client.delete_listener(listener[const.ID])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_76c0602b","line":161,"updated":"2018-05-02 18:38:24.000000000","message":"Why not wait and verification?","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"afa6d3be6e4d6f05f5cdda6cae94749eb328a145","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertEqual(100, listener[const.TIMEOUT_TCP_INSPECT])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        # Listener delete"},{"line_number":161,"context_line":"        self.mem_listener_client.delete_listener(listener[const.ID])"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_b59ae06b","line":161,"in_reply_to":"9f6a8fd7_5cebfbda","updated":"2018-05-02 22:01:21.000000000","message":"Nevermind, it was there, just got dropped somehow. Fixed.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e2fc1351e21875cf80279bfb58f9232cea5c2c5d","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertEqual(100, listener[const.TIMEOUT_TCP_INSPECT])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        # Listener delete"},{"line_number":161,"context_line":"        self.mem_listener_client.delete_listener(listener[const.ID])"}],"source_content_type":"text/x-python","patch_set":30,"id":"9f6a8fd7_5cebfbda","line":161,"in_reply_to":"9f6a8fd7_76c0602b","updated":"2018-05-02 20:04:22.000000000","message":"Ah, yeah, probably should do that. I think this was copied verbatim from the LB test, so I should add it there too.","commit_id":"4c3fac0f85e8b8e03d6b1a93fb5abd903240d0cb"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"bdd3f3874f7f47716909cb15077beecccb147ec3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                const.X_FORWARDED_FOR: \"true\","},{"line_number":84,"context_line":"                const.X_FORWARDED_PORT: \"true\""},{"line_number":85,"context_line":"            },"},{"line_number":86,"context_line":"            # TODO(rm_work): need to finish the rest of this stuff"},{"line_number":87,"context_line":"            # const.DEFAULT_POOL_ID: \u0027\u0027,"},{"line_number":88,"context_line":"            # const.DEFAULT_TLS_CONTAINER_REF: \u0027\u0027,"},{"line_number":89,"context_line":"            # const.SNI_CONTAINER_REFS: [],"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_6e6a0f81","line":86,"updated":"2018-05-04 20:28:19.000000000","message":"why should we merge something which still has todos?","commit_id":"fbbd2b49121aaa39c2812244d557fb33aa0c541e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a895565b469ef3abbd0a82d5d472285973cf6fff","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                const.X_FORWARDED_FOR: \"true\","},{"line_number":84,"context_line":"                const.X_FORWARDED_PORT: \"true\""},{"line_number":85,"context_line":"            },"},{"line_number":86,"context_line":"            # TODO(rm_work): need to finish the rest of this stuff"},{"line_number":87,"context_line":"            # const.DEFAULT_POOL_ID: \u0027\u0027,"},{"line_number":88,"context_line":"            # const.DEFAULT_TLS_CONTAINER_REF: \u0027\u0027,"},{"line_number":89,"context_line":"            # const.SNI_CONTAINER_REFS: [],"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_eeb61fda","line":86,"in_reply_to":"5f7c97a3_6e6a0f81","updated":"2018-05-04 20:43:20.000000000","message":"Because the pool one requires the pool objects, so it\u0027s impossible to do it in this CR, and all of the TLS stuff is big enough to handle as its own CR after we\u0027ve got the rest of the objects in place.","commit_id":"fbbd2b49121aaa39c2812244d557fb33aa0c541e"}],"octavia_tempest_plugin/tests/v2/api/test_listener.py":[{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a0abf7c3c9bbadcec7fb25f19c8afe666cd041d2","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            params[\u0027vip_subnet_id\u0027] \u003d self.vip_subnet_id"},{"line_number":34,"context_line":"        self.lb_id \u003d self.create_loadbalancer(**params)[\u0027id\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002794c66b04-1ab3-4375-a921-89e48d833c1d\u0027)"},{"line_number":37,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":38,"context_line":"    def test_crud_listener(self):"},{"line_number":39,"context_line":"        # Create listener"}],"source_content_type":"text/x-python","patch_set":14,"id":"df87a7cf_c5840ad6","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":69},"updated":"2017-12-18 10:00:36.000000000","message":"can you explain this to me? why is this hardcoded?","commit_id":"8677f3fcac9b610a621a91fe848833293ff07ddb"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"704d7fcf927f54d96d3f8c9c459562f57b148a06","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            params[\u0027vip_subnet_id\u0027] \u003d self.vip_subnet_id"},{"line_number":34,"context_line":"        self.lb_id \u003d self.create_loadbalancer(**params)[\u0027id\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002794c66b04-1ab3-4375-a921-89e48d833c1d\u0027)"},{"line_number":37,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":38,"context_line":"    def test_crud_listener(self):"},{"line_number":39,"context_line":"        # Create listener"}],"source_content_type":"text/x-python","patch_set":14,"id":"df87a7cf_1a1a4ccb","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":69},"in_reply_to":"df87a7cf_00ef401e","updated":"2017-12-18 13:12:43.000000000","message":"fair enough. thanks you for the answer :)","commit_id":"8677f3fcac9b610a621a91fe848833293ff07ddb"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"ac411569b2f32b8c650a5aee4f93fa21058197cd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            params[\u0027vip_subnet_id\u0027] \u003d self.vip_subnet_id"},{"line_number":34,"context_line":"        self.lb_id \u003d self.create_loadbalancer(**params)[\u0027id\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002794c66b04-1ab3-4375-a921-89e48d833c1d\u0027)"},{"line_number":37,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":38,"context_line":"    def test_crud_listener(self):"},{"line_number":39,"context_line":"        # Create listener"}],"source_content_type":"text/x-python","patch_set":14,"id":"df87a7cf_00ef401e","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":69},"in_reply_to":"df87a7cf_c5840ad6","updated":"2017-12-18 10:22:53.000000000","message":"https://docs.openstack.org/tempest/latest/HACKING.html#test-identification-with-idempotent-id","commit_id":"8677f3fcac9b610a621a91fe848833293ff07ddb"},{"author":{"_account_id":27303,"name":"Bar Elharar","email":"elhararb@gmail.com","username":"elhararb"},"change_message_id":"33811cd144109c3bd329120066f3eca037fbd616","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        listener_id \u003d self.create_listener(self.lb_id)[\u0027id\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Get listeners"},{"line_number":43,"context_line":"        resp, body \u003d self.client.get_list_objs(\u0027listeners\u0027)"},{"line_number":44,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":45,"context_line":"        self.assertIn("},{"line_number":46,"context_line":"            listener_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf8cb3f7_6df3e50b","line":43,"range":{"start_line":43,"start_character":26,"end_line":43,"end_character":32},"updated":"2017-12-25 01:21:41.000000000","message":"lb_client","commit_id":"8ca15b23a846f19ca85b1c74918f9e97dc7ef8ab"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa64037594d228c9fb40f7b066860ab15689cba","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class ListenerTest(base.BaseLoadbalancerTest):"},{"line_number":21,"context_line":"    name_prefix \u003d \u0027Tempest-ListenerTest\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def setUp(self):"},{"line_number":24,"context_line":"        super(ListenerTest, self).setUp()"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        # Create loadbalancer for listener test, the reason we use setup()"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa0c359_2675ba32","line":23,"updated":"2018-02-09 01:01:08.000000000","message":"You should never define a setUp in a test.\n\nhttps://docs.openstack.org/tempest/latest/write_tests.html#setupclass","commit_id":"bf06a5002569f29721107280a1cf19512646fa5a"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afa64037594d228c9fb40f7b066860ab15689cba","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002794c66b04-1ab3-4375-a921-89e48d833c1d\u0027)"},{"line_number":37,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":38,"context_line":"    def test_crud_listener(self):"},{"line_number":39,"context_line":"        # Create listener"},{"line_number":40,"context_line":"        listener_id \u003d self.create_listener(self.lb_id)[\u0027id\u0027]"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa0c359_06bf5eb0","line":38,"updated":"2018-02-09 01:01:08.000000000","message":"This test is too broad.\nI think the whole tempest plugin needs some restructuring as this looks to be similar to the old and bad tests we had in neutron, neutron-lbaas, and the initial octavia tempest tests.\nPlease see the Tempest documentation for more details:\nhttps://docs.openstack.org/tempest/latest/write_tests.html\nhttps://docs.openstack.org/tempest/latest/HACKING.html\nhttps://docs.openstack.org/tempest/latest/REVIEWING.html\nhttps://docs.openstack.org/tempest/latest/plugin.html","commit_id":"bf06a5002569f29721107280a1cf19512646fa5a"}]}
