)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ec0138a87bb7cdcf152948260668393a80943dd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4fdc211c_081125a9","updated":"2022-04-21 09:02:05.000000000","message":"Thank you, Arx 😊 Had a quick look and added some remarks.\n\n@Sagi: Please have a look at the list_router_interfaces question below.","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"75aab5abe510d96519c00662ec625d404dd600bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"337b3885_d58bf932","updated":"2022-04-26 21:12:23.000000000","message":"Thanks for the changes, looks good!","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"60171e2b_8da1aef3","updated":"2022-04-27 07:55:07.000000000","message":"Thanks, a few comments inside","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"1371617963030328dc31daf2a676956d20547a75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d040c4ee_b9b7e730","updated":"2022-05-03 16:13:49.000000000","message":"Please make a patch with running these tests, you can use \u0027tox_extra_args: router\u0027 for job vars, or just to leave this test in https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/ci/run-collection.yml","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5d5cd7b66873a99307d0068239f4c288fa0df0de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e9521b93_de61dffd","updated":"2022-05-03 16:10:44.000000000","message":"Thanks, a few comments inside, overall looks great","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"44cf4c04413a3b4b32ac3dde6c41f763be926f28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"b868f581_121e092c","updated":"2022-05-31 21:51:21.000000000","message":"Looks good functionally. Two small nits.","commit_id":"cd1b3d86357f52dabee831ab6873576b43700102"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"975ec2b6b40bf64582266a29328b24140b70dc13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"e96af57d_dfa1d32b","updated":"2022-07-06 13:03:58.000000000","message":"Nice refactoring, especially the ports retrieval part is nice ☺️ Thanks, Arx!\n\nApplied some minor changes:\n* changed code to find routers by name or id back to cloud layer as it was before because it is much shorter. you added this because search_routers() has changed its behaviour with 0.99.0 but this is a bug which has to be fixed in the sdk: https://storyboard.openstack.org/#!/story/2010112\n* moved routers_info assertion in ci tests up to fail early\n* moved list of returned keys to role defaults because we could reuse them in tests for router\n* fixed typos in return value docs\n","commit_id":"4e96518bcb52cd746be753e3d884c570b7168262"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"3608d75f68cc90ec4320695e3bc4e3e81f6e55ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"983bd4d7_5efedd42","updated":"2022-07-06 13:14:54.000000000","message":"nit: renamed admin_state_up to is_admin_state_up because this is what the sdk uses. The old name still works though.","commit_id":"cc479b2b753eeff0455b2673be3573010f16715a"}],"ci/roles/router/tasks/main.yml":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8fa47978cdf703416788e434a6c5cd02553b22cd","unresolved":true,"context_lines":[{"line_number":84,"context_line":"  assert:"},{"line_number":85,"context_line":"    that:"},{"line_number":86,"context_line":"      item in result.openstack_routers[0]"},{"line_number":87,"context_line":"    loop:"},{"line_number":88,"context_line":"      - availability_zone_hints"},{"line_number":89,"context_line":"      - availability_zones"},{"line_number":90,"context_line":"      - created_at"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"45386cd3_33060e76","line":87,"updated":"2022-04-26 03:39:08.000000000","message":"this should be indented outside the assert block","commit_id":"fe7343b5d4abfdefa3096806e7fce19d6eca6380"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"2eb8ed3ad75c6434ceb6af05fbf57dcccf37e6ac","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  assert:"},{"line_number":85,"context_line":"    that:"},{"line_number":86,"context_line":"      item in result.openstack_routers[0]"},{"line_number":87,"context_line":"    loop:"},{"line_number":88,"context_line":"      - availability_zone_hints"},{"line_number":89,"context_line":"      - availability_zones"},{"line_number":90,"context_line":"      - created_at"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"f4c8ba92_a479803b","line":87,"in_reply_to":"45386cd3_33060e76","updated":"2022-04-26 12:41:48.000000000","message":"Done","commit_id":"fe7343b5d4abfdefa3096806e7fce19d6eca6380"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5d5cd7b66873a99307d0068239f4c288fa0df0de","unresolved":true,"context_lines":[{"line_number":83,"context_line":"- name: Verify returned values"},{"line_number":84,"context_line":"  assert:"},{"line_number":85,"context_line":"    that:"},{"line_number":86,"context_line":"      item in result.routers[0]"},{"line_number":87,"context_line":"  loop:"},{"line_number":88,"context_line":"    - availability_zone_hints"},{"line_number":89,"context_line":"    - availability_zones"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9b8ba2ea_bd8e82c2","line":86,"range":{"start_line":86,"start_character":5,"end_line":86,"end_character":6},"updated":"2022-05-03 16:10:44.000000000","message":"it should be list afaik.\n  - item in result.routers[0]\n\nlike in line 80","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"c46cd1641eef1c56636dde58d18264f7c5f0baaa","unresolved":false,"context_lines":[{"line_number":83,"context_line":"- name: Verify returned values"},{"line_number":84,"context_line":"  assert:"},{"line_number":85,"context_line":"    that:"},{"line_number":86,"context_line":"      item in result.routers[0]"},{"line_number":87,"context_line":"  loop:"},{"line_number":88,"context_line":"    - availability_zone_hints"},{"line_number":89,"context_line":"    - availability_zones"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7577436c_d52e11ac","line":86,"range":{"start_line":86,"start_character":5,"end_line":86,"end_character":6},"in_reply_to":"9b8ba2ea_bd8e82c2","updated":"2022-06-15 10:10:15.000000000","message":"Done","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"}],"plugins/modules/routers_info.py":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ec0138a87bb7cdcf152948260668393a80943dd5","unresolved":true,"context_lines":[{"line_number":101,"context_line":"    msg: \"{{ result.openstack_routers }}\""},{"line_number":102,"context_line":"\u0027\u0027\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":105,"context_line":"openstack_routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"}],"source_content_type":"text/x-python","patch_set":2,"id":"a4a82bcb_00e7515e","line":104,"updated":"2022-04-21 09:02:05.000000000","message":"Please add missing fields. stable/train branch of SDK returns:\n\n [\u0027availability_zone_hints\u0027,\n  \u0027availability_zones\u0027,\n  \u0027created_at\u0027,\n  \u0027description\u0027,\n  \u0027external_gateway_info\u0027,\n  \u0027flavor_id\u0027,\n  \u0027id\u0027,\n  \u0027is_admin_state_up\u0027,\n  \u0027is_distributed\u0027,\n  \u0027is_ha\u0027,\n  \u0027name\u0027,\n  \u0027project_id\u0027,\n  \u0027revision_number\u0027,\n  \u0027routes\u0027,\n  \u0027status\u0027,\n  \u0027tags\u0027,\n  \u0027updated_at\u0027]","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"a06cade385dcaf57d86c5e6cd6719bf32037065a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    msg: \"{{ result.openstack_routers }}\""},{"line_number":102,"context_line":"\u0027\u0027\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":105,"context_line":"openstack_routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"}],"source_content_type":"text/x-python","patch_set":2,"id":"680041d4_7430e77d","line":104,"in_reply_to":"a4a82bcb_00e7515e","updated":"2022-04-25 19:27:09.000000000","message":"Done","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ec0138a87bb7cdcf152948260668393a80943dd5","unresolved":true,"context_lines":[{"line_number":102,"context_line":"\u0027\u0027\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":105,"context_line":"openstack_routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"},{"line_number":108,"context_line":"    type: complex"}],"source_content_type":"text/x-python","patch_set":2,"id":"ca16c010_e256545e","line":105,"updated":"2022-04-21 09:02:05.000000000","message":"Please also add tests, both for asserting fields but also tests which actually check some returned values!","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"a06cade385dcaf57d86c5e6cd6719bf32037065a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"\u0027\u0027\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":105,"context_line":"openstack_routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"},{"line_number":108,"context_line":"    type: complex"}],"source_content_type":"text/x-python","patch_set":2,"id":"ac472388_ee8dadec","line":105,"in_reply_to":"ca16c010_e256545e","updated":"2022-04-25 19:27:09.000000000","message":"Done","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ec0138a87bb7cdcf152948260668393a80943dd5","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":170,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":171,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":172,"context_line":"            routers \u003d [r for r in routers if"},{"line_number":173,"context_line":"                       r[\u0027id\u0027] \u003d\u003d self.params[\u0027name\u0027]"},{"line_number":174,"context_line":"                       or r[\u0027name\u0027] \u003d\u003d self.params[\u0027name\u0027]]"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"68d56d4b_62526d9d","line":172,"updated":"2022-04-21 09:02:05.000000000","message":"As noted in my other reviews, please use find_* if a name is given instead of filtering results. This will save us from retrieving a big list if a single router is requested only.","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":170,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":171,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":172,"context_line":"            routers \u003d [r for r in routers if"},{"line_number":173,"context_line":"                       r[\u0027id\u0027] \u003d\u003d self.params[\u0027name\u0027]"},{"line_number":174,"context_line":"                       or r[\u0027name\u0027] \u003d\u003d self.params[\u0027name\u0027]]"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"0153b2d4_83783261","line":172,"in_reply_to":"68d56d4b_62526d9d","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ec0138a87bb7cdcf152948260668393a80943dd5","unresolved":true,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        for router in routers:"},{"line_number":177,"context_line":"            interfaces_info \u003d []"},{"line_number":178,"context_line":"            for port in self.conn.network.ports(**{\u0027device_id\u0027: router[\u0027id\u0027]}):"},{"line_number":179,"context_line":"                if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":180,"context_line":"                    for ip_spec in port.fixed_ips:"},{"line_number":181,"context_line":"                        int_info \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"c22dbe80_4e328566","line":178,"updated":"2022-04-21 09:02:05.000000000","message":"This could return more results than before because list_router_interfaces() only returned router interface and gateway ports, but not L3 HA ports etc.\n\nSagi, what do we do?\n\nRef.: https://github.com/openstack/openstacksdk/blob/master/openstack/cloud/_network.py#L1816","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"a4666a7440f48914be0365248f04e1fe20e1c298","unresolved":true,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        for router in routers:"},{"line_number":177,"context_line":"            interfaces_info \u003d []"},{"line_number":178,"context_line":"            for port in self.conn.network.ports(**{\u0027device_id\u0027: router[\u0027id\u0027]}):"},{"line_number":179,"context_line":"                if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":180,"context_line":"                    for ip_spec in port.fixed_ips:"},{"line_number":181,"context_line":"                        int_info \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"1022e9ac_f71618df","line":178,"updated":"2022-04-25 16:05:24.000000000","message":"cleaner to do `self.conn.network.ports(device_id\u003drouter[\u0027id\u0027])`","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"a06cade385dcaf57d86c5e6cd6719bf32037065a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        for router in routers:"},{"line_number":177,"context_line":"            interfaces_info \u003d []"},{"line_number":178,"context_line":"            for port in self.conn.network.ports(**{\u0027device_id\u0027: router[\u0027id\u0027]}):"},{"line_number":179,"context_line":"                if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":180,"context_line":"                    for ip_spec in port.fixed_ips:"},{"line_number":181,"context_line":"                        int_info \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"e3e7087e_31c7fe60","line":178,"in_reply_to":"1022e9ac_f71618df","updated":"2022-04-25 19:27:09.000000000","message":"Done","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"a06cade385dcaf57d86c5e6cd6719bf32037065a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        for router in routers:"},{"line_number":177,"context_line":"            interfaces_info \u003d []"},{"line_number":178,"context_line":"            for port in self.conn.network.ports(**{\u0027device_id\u0027: router[\u0027id\u0027]}):"},{"line_number":179,"context_line":"                if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":180,"context_line":"                    for ip_spec in port.fixed_ips:"},{"line_number":181,"context_line":"                        int_info \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"a5533c7b_563382d5","line":178,"in_reply_to":"c22dbe80_4e328566","updated":"2022-04-25 19:27:09.000000000","message":"Done","commit_id":"3717d448730d91e2bbff2b531003ec11c00a4d1d"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"a4666a7440f48914be0365248f04e1fe20e1c298","unresolved":true,"context_lines":[{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d [self.conn.network.find_router(self.params[\u0027name\u0027],"},{"line_number":211,"context_line":"                       ignore_missing\u003dTrue, **kwargs.get(\u0027filters\u0027, {}))]"},{"line_number":212,"context_line":"        else:"},{"line_number":213,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":5,"id":"eea5a45f_3324b854","line":210,"updated":"2022-04-25 16:05:24.000000000","message":"this will return a list with a single None when a router is not found. Shouldn\u0027t we return either plain None or an empty list in that case?","commit_id":"183bc4f7db62ebfb8e728b85cc818fdea17fb23a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"2eb8ed3ad75c6434ceb6af05fbf57dcccf37e6ac","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d [self.conn.network.find_router(self.params[\u0027name\u0027],"},{"line_number":211,"context_line":"                       ignore_missing\u003dTrue, **kwargs.get(\u0027filters\u0027, {}))]"},{"line_number":212,"context_line":"        else:"},{"line_number":213,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":5,"id":"041ff202_dccf4d4f","line":210,"in_reply_to":"66f14448_bb19791c","updated":"2022-04-26 12:41:48.000000000","message":"Done","commit_id":"183bc4f7db62ebfb8e728b85cc818fdea17fb23a"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8fa47978cdf703416788e434a6c5cd02553b22cd","unresolved":true,"context_lines":[{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d [self.conn.network.find_router(self.params[\u0027name\u0027],"},{"line_number":211,"context_line":"                       ignore_missing\u003dTrue, **kwargs.get(\u0027filters\u0027, {}))]"},{"line_number":212,"context_line":"        else:"},{"line_number":213,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":5,"id":"66f14448_bb19791c","line":210,"in_reply_to":"8143a9f2_3ae36402","updated":"2022-04-26 03:39:08.000000000","message":"You need to check that the router is not None before putting it in the list. When I look up a router that does not exist, for example:\n```\n- name: Get unexistent router\n  openstack.cloud.routers_info:\n    cloud: \"{{ cloud }}\"\n    name: \"this_router_does_not_exist\"\n```\n\nThe module crashes with `line 215, in \u003clistcomp\u003e\\nAttributeError: \u0027NoneType\u0027 object has no attribute \u0027to_dict\u0027`","commit_id":"183bc4f7db62ebfb8e728b85cc818fdea17fb23a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"a06cade385dcaf57d86c5e6cd6719bf32037065a","unresolved":true,"context_lines":[{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d [self.conn.network.find_router(self.params[\u0027name\u0027],"},{"line_number":211,"context_line":"                       ignore_missing\u003dTrue, **kwargs.get(\u0027filters\u0027, {}))]"},{"line_number":212,"context_line":"        else:"},{"line_number":213,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":5,"id":"8143a9f2_3ae36402","line":210,"in_reply_to":"eea5a45f_3324b854","updated":"2022-04-25 19:27:09.000000000","message":"Yes, that\u0027s the idea, because on the ansible return, it will at the end be a empty list when we do on line 215 the list comprehension","commit_id":"183bc4f7db62ebfb8e728b85cc818fdea17fb23a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":true,"context_lines":[{"line_number":102,"context_line":"\u0027\u0027\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":105,"context_line":"openstack_routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"},{"line_number":108,"context_line":"    type: complex"}],"source_content_type":"text/x-python","patch_set":7,"id":"e35c4479_3acc5829","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":18},"updated":"2022-04-27 07:55:07.000000000","message":"I think we can rename it to \"routers\"","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"\u0027\u0027\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":105,"context_line":"openstack_routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"},{"line_number":108,"context_line":"    type: complex"}],"source_content_type":"text/x-python","patch_set":7,"id":"f3108f8b_4e6cc3d8","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":18},"in_reply_to":"e35c4479_3acc5829","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":true,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    argument_spec \u003d dict("},{"line_number":196,"context_line":"        name\u003ddict(required\u003dFalse, default\u003dNone),"},{"line_number":197,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone)"},{"line_number":198,"context_line":"    )"},{"line_number":199,"context_line":"    module_kwargs \u003d dict("},{"line_number":200,"context_line":"        supports_check_mode\u003dTrue"}],"source_content_type":"text/x-python","patch_set":7,"id":"04804688_7679cc7a","line":197,"range":{"start_line":197,"start_character":57,"end_line":197,"end_character":63},"updated":"2022-04-27 07:55:07.000000000","message":"here you can set them as {}","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    argument_spec \u003d dict("},{"line_number":196,"context_line":"        name\u003ddict(required\u003dFalse, default\u003dNone),"},{"line_number":197,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone)"},{"line_number":198,"context_line":"    )"},{"line_number":199,"context_line":"    module_kwargs \u003d dict("},{"line_number":200,"context_line":"        supports_check_mode\u003dTrue"}],"source_content_type":"text/x-python","patch_set":7,"id":"e8d8ca46_a226dae0","line":197,"range":{"start_line":197,"start_character":57,"end_line":197,"end_character":63},"in_reply_to":"04804688_7679cc7a","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":true,"context_lines":[{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":7,"id":"e67d5ae7_4a040365","line":212,"range":{"start_line":212,"start_character":16,"end_line":212,"end_character":43},"updated":"2022-04-27 07:55:07.000000000","message":"you don\u0027t need that, just use kwargs\nalso you can make filters\u003d{} by default to prevent \"None\"","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":7,"id":"076fa3e2_92b98340","line":212,"range":{"start_line":212,"start_character":16,"end_line":212,"end_character":43},"in_reply_to":"e67d5ae7_4a040365","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":true,"context_lines":[{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"}],"source_content_type":"text/x-python","patch_set":7,"id":"f9ad6bc7_ed390f33","line":214,"range":{"start_line":213,"start_character":22,"end_line":214,"end_character":13},"updated":"2022-04-27 07:55:07.000000000","message":"I think find_ returns a list, isn\u0027t it?","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5d5cd7b66873a99307d0068239f4c288fa0df0de","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"}],"source_content_type":"text/x-python","patch_set":7,"id":"09080c58_d49f7635","line":214,"range":{"start_line":213,"start_character":22,"end_line":214,"end_character":13},"in_reply_to":"8cbc4345_81a2b65f","updated":"2022-05-03 16:10:44.000000000","message":"Done","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"480908e3abc677c7dc3788139bdf4c9fece0a9f8","unresolved":true,"context_lines":[{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"}],"source_content_type":"text/x-python","patch_set":7,"id":"8cbc4345_81a2b65f","line":214,"range":{"start_line":213,"start_character":22,"end_line":214,"end_character":13},"in_reply_to":"f9ad6bc7_ed390f33","updated":"2022-04-27 10:42:31.000000000","message":"Actually I\u0027m wrong, it returns a single router, ignore this comment.\nhttps://opendev.org/openstack/openstacksdk/src/branch/master/openstack/network/v2/_proxy.py#L3188-L3189","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"89c49fd2_ce99c11e","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":75},"updated":"2022-04-27 07:55:07.000000000","message":"let\u0027s not use this form, see above","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                **kwargs.get(\u0027filters\u0027, {}))"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs.get(\u0027filters\u0027, {}))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"32c90d31_d6637201","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":75},"in_reply_to":"89c49fd2_ce99c11e","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f314ba46db987c5a01e91992bf7aa448266a3fa4","unresolved":true,"context_lines":[{"line_number":239,"context_line":"                        interfaces_info.append(int_info)"},{"line_number":240,"context_line":"            router[\u0027interfaces_info\u0027] \u003d interfaces_info"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        self.exit(changed\u003dFalse, openstack_routers\u003drouters)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":7,"id":"4c1336c3_3680db19","line":242,"range":{"start_line":242,"start_character":33,"end_line":242,"end_character":50},"updated":"2022-04-27 07:55:07.000000000","message":"I think we can rename it to \"routers\"","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                        interfaces_info.append(int_info)"},{"line_number":240,"context_line":"            router[\u0027interfaces_info\u0027] \u003d interfaces_info"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        self.exit(changed\u003dFalse, openstack_routers\u003drouters)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":7,"id":"aef40c47_39b8799f","line":242,"range":{"start_line":242,"start_character":33,"end_line":242,"end_character":50},"in_reply_to":"4c1336c3_3680db19","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"be76bf712d90b253c0d5edc483c74633ea17d96a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5d5cd7b66873a99307d0068239f4c288fa0df0de","unresolved":true,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def run(self):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        kwargs \u003d self.check_versioned("},{"line_number":206,"context_line":"            filters\u003dself.params[\u0027filters\u0027]"},{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a5c28d2_1b71ceff","line":207,"range":{"start_line":205,"start_character":1,"end_line":207,"end_character":9},"updated":"2022-05-03 16:10:44.000000000","message":"This is not relevant anymore for 1.0.0, we don\u0027t have here versioned attributes, because it\u0027s a completely new version of SDK. Please remove these lines.\nYou can put here:\n  filters \u003d self.params[\u0027filters\u0027]","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def run(self):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        kwargs \u003d self.check_versioned("},{"line_number":206,"context_line":"            filters\u003dself.params[\u0027filters\u0027]"},{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("}],"source_content_type":"text/x-python","patch_set":8,"id":"000de7a8_9a9d2f35","line":207,"range":{"start_line":205,"start_character":1,"end_line":207,"end_character":9},"in_reply_to":"9a5c28d2_1b71ceff","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5d5cd7b66873a99307d0068239f4c288fa0df0de","unresolved":true,"context_lines":[{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs[\u0027filters\u0027])"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs[\u0027filters\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"8c14ef7e_18db4750","line":212,"range":{"start_line":212,"start_character":16,"end_line":212,"end_character":35},"updated":"2022-05-03 16:10:44.000000000","message":"and then you can put here just **filters","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":210,"context_line":"            routers \u003d self.conn.network.find_router("},{"line_number":211,"context_line":"                self.params[\u0027name\u0027], ignore_missing\u003dTrue,"},{"line_number":212,"context_line":"                **kwargs[\u0027filters\u0027])"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs[\u0027filters\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"294483f2_3b6d7a7b","line":212,"range":{"start_line":212,"start_character":16,"end_line":212,"end_character":35},"in_reply_to":"8c14ef7e_18db4750","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5d5cd7b66873a99307d0068239f4c288fa0df0de","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                **kwargs[\u0027filters\u0027])"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs[\u0027filters\u0027])"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5cf324_bd488bd4","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":67},"updated":"2022-05-03 16:10:44.000000000","message":"ditto","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                **kwargs[\u0027filters\u0027])"},{"line_number":213,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            routers \u003d self.conn.network.routers(**kwargs[\u0027filters\u0027])"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"a226634d_1f73d3ac","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":67},"in_reply_to":"ba5cf324_bd488bd4","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"5ea7cd19c801b70dac00085505e9090cef7b51c9"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4e8305070268cc13ded82189671843bc46c5cb44","unresolved":true,"context_lines":[{"line_number":208,"context_line":"                **self.params[\u0027filters\u0027])"},{"line_number":209,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":210,"context_line":"        else:"},{"line_number":211,"context_line":"            routers \u003d self.conn.network.routers(**[\u0027filters\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"b99726c1_ab1f3eee","line":211,"range":{"start_line":211,"start_character":48,"end_line":211,"end_character":61},"updated":"2022-05-20 10:55:54.000000000","message":"I don\u0027t understand this construction.\nPlease add test for testing filters w/o \"name\" to test this line","commit_id":"edea5b715207610d365d89fb92c0211e063627d7"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"0851f43ddcaf63ca03a8bc69ca7aa678fa985265","unresolved":true,"context_lines":[{"line_number":208,"context_line":"                **self.params[\u0027filters\u0027])"},{"line_number":209,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":210,"context_line":"        else:"},{"line_number":211,"context_line":"            routers \u003d self.conn.network.routers(**[\u0027filters\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ad702f03_57ee76b7","line":211,"range":{"start_line":211,"start_character":48,"end_line":211,"end_character":61},"in_reply_to":"301f5c29_43a3d949","updated":"2022-05-30 09:12:12.000000000","message":"Thanks, now it\u0027s clear. But still, can you please add the test for this line?","commit_id":"edea5b715207610d365d89fb92c0211e063627d7"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"1608389cf0ea8216999b470306ac5c33c7b6d821","unresolved":true,"context_lines":[{"line_number":208,"context_line":"                **self.params[\u0027filters\u0027])"},{"line_number":209,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":210,"context_line":"        else:"},{"line_number":211,"context_line":"            routers \u003d self.conn.network.routers(**[\u0027filters\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"f80debc7_7d15d6fd","line":211,"range":{"start_line":211,"start_character":48,"end_line":211,"end_character":61},"in_reply_to":"ad702f03_57ee76b7","updated":"2022-05-30 10:16:44.000000000","message":"There is: https://review.opendev.org/c/openstack/ansible-collections-openstack/+/838489/10/ci/roles/router/tasks/main.yml#77","commit_id":"edea5b715207610d365d89fb92c0211e063627d7"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"320b2d22ac68953b2a2a46f83322f2b03595c658","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                **self.params[\u0027filters\u0027])"},{"line_number":209,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":210,"context_line":"        else:"},{"line_number":211,"context_line":"            routers \u003d self.conn.network.routers(**[\u0027filters\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"301f5c29_43a3d949","line":211,"range":{"start_line":211,"start_character":48,"end_line":211,"end_character":61},"in_reply_to":"b99726c1_ab1f3eee","updated":"2022-05-23 07:44:47.000000000","message":"My bad, wrong code, it was supposed to be **filters","commit_id":"edea5b715207610d365d89fb92c0211e063627d7"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                **self.params[\u0027filters\u0027])"},{"line_number":209,"context_line":"            routers \u003d [routers] if routers else []"},{"line_number":210,"context_line":"        else:"},{"line_number":211,"context_line":"            routers \u003d self.conn.network.routers(**[\u0027filters\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        routers \u003d [r.to_dict(computed\u003dFalse) for r in routers]"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"4bbf6205_90d4c5a1","line":211,"range":{"start_line":211,"start_character":48,"end_line":211,"end_character":61},"in_reply_to":"f80debc7_7d15d6fd","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"edea5b715207610d365d89fb92c0211e063627d7"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"7d89c6ec54f6430e3e0b5a9d608318cb9c7f5356","unresolved":true,"context_lines":[{"line_number":105,"context_line":"routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"},{"line_number":108,"context_line":"    type: complex"},{"line_number":109,"context_line":"    contains:"},{"line_number":110,"context_line":"        id:"},{"line_number":111,"context_line":"            description: Unique UUID."}],"source_content_type":"text/x-python","patch_set":10,"id":"7751f8db_72fbce26","line":108,"updated":"2022-05-30 14:04:32.000000000","message":"type: list\nelements: dict","commit_id":"fbb0e6a06d6b021d404f239933ae580e7ee28ae8"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"routers:"},{"line_number":106,"context_line":"    description: has all the openstack information about the routers"},{"line_number":107,"context_line":"    returned: always, but can be null"},{"line_number":108,"context_line":"    type: complex"},{"line_number":109,"context_line":"    contains:"},{"line_number":110,"context_line":"        id:"},{"line_number":111,"context_line":"            description: Unique UUID."}],"source_content_type":"text/x-python","patch_set":10,"id":"428f95dd_57aef298","line":108,"in_reply_to":"7751f8db_72fbce26","updated":"2022-06-15 10:08:58.000000000","message":"Done","commit_id":"fbb0e6a06d6b021d404f239933ae580e7ee28ae8"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"44cf4c04413a3b4b32ac3dde6c41f763be926f28","unresolved":true,"context_lines":[{"line_number":108,"context_line":"    type: list"},{"line_number":109,"context_line":"    elements: dict"},{"line_number":110,"context_line":"    contains:"},{"line_number":111,"context_line":"        id:"},{"line_number":112,"context_line":"            description: Unique UUID."},{"line_number":113,"context_line":"            returned: success"},{"line_number":114,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":11,"id":"26645cf0_169b40f8","line":111,"updated":"2022-05-31 21:51:21.000000000","message":"it\u0027d be helpful to sort the properties in the contains.","commit_id":"cd1b3d86357f52dabee831ab6873576b43700102"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"c46cd1641eef1c56636dde58d18264f7c5f0baaa","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    type: list"},{"line_number":109,"context_line":"    elements: dict"},{"line_number":110,"context_line":"    contains:"},{"line_number":111,"context_line":"        id:"},{"line_number":112,"context_line":"            description: Unique UUID."},{"line_number":113,"context_line":"            returned: success"},{"line_number":114,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":11,"id":"280be2bf_16687160","line":111,"in_reply_to":"26645cf0_169b40f8","updated":"2022-06-15 10:10:15.000000000","message":"Done","commit_id":"cd1b3d86357f52dabee831ab6873576b43700102"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"44cf4c04413a3b4b32ac3dde6c41f763be926f28","unresolved":true,"context_lines":[{"line_number":226,"context_line":"            for port in self.conn.network.ports(device_id\u003drouter[\u0027id\u0027]):"},{"line_number":227,"context_line":"                if port.device_owner not in allowed_device_owners:"},{"line_number":228,"context_line":"                    continue"},{"line_number":229,"context_line":"                if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":230,"context_line":"                    for ip_spec in port.fixed_ips:"},{"line_number":231,"context_line":"                        int_info \u003d {"},{"line_number":232,"context_line":"                            \u0027port_id\u0027: port.id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"c0ac1f69_53cbf719","line":229,"updated":"2022-05-31 21:51:21.000000000","message":"You can get rid of this if since you\u0027re checking the same condition above.","commit_id":"cd1b3d86357f52dabee831ab6873576b43700102"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"74f5d7a6cdeb7efbdb791262d5080d581739855b","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            for port in self.conn.network.ports(device_id\u003drouter[\u0027id\u0027]):"},{"line_number":227,"context_line":"                if port.device_owner not in allowed_device_owners:"},{"line_number":228,"context_line":"                    continue"},{"line_number":229,"context_line":"                if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":230,"context_line":"                    for ip_spec in port.fixed_ips:"},{"line_number":231,"context_line":"                        int_info \u003d {"},{"line_number":232,"context_line":"                            \u0027port_id\u0027: port.id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"4a8ef3f4_a57e3c5c","line":229,"in_reply_to":"c0ac1f69_53cbf719","updated":"2022-06-15 10:08:58.000000000","message":"Actually, it is the opposite, it will enter in the loop IF the device_owner is one of the above, so I need to check here, otherwise, it will return two interfaces_info, which is not what we want","commit_id":"cd1b3d86357f52dabee831ab6873576b43700102"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b71fdefbaa84f339904895c17435f38901cfa84b","unresolved":true,"context_lines":[{"line_number":221,"context_line":"                                 \u0027network_router_interface_distributed\u0027,"},{"line_number":222,"context_line":"                                 \u0027network:ha_router_replicated_interface\u0027,"},{"line_number":223,"context_line":"                                 \u0027network:router_gateway\u0027)"},{"line_number":224,"context_line":"        for router in routers:"},{"line_number":225,"context_line":"            interfaces_info \u003d []"},{"line_number":226,"context_line":"            for port in self.conn.network.ports(device_id\u003drouter[\u0027id\u0027]):"},{"line_number":227,"context_line":"                if port.device_owner not in allowed_device_owners:"}],"source_content_type":"text/x-python","patch_set":13,"id":"f8efdf01_af94facb","line":224,"updated":"2022-07-06 12:31:53.000000000","message":"For getting ports of a router we have the openstack.cloud.ports module. No need to proactively get the ports (and do extra api calls) although we dont know if the user actually cares about the ports at all.\n\nSince we change return values anyway, i would get rid of this code block completely.","commit_id":"880034b989a013a859b69f30ac298724a3e38dcf"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8e7af9800553435698f39854740791d548aa36b7","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                 \u0027network_router_interface_distributed\u0027,"},{"line_number":222,"context_line":"                                 \u0027network:ha_router_replicated_interface\u0027,"},{"line_number":223,"context_line":"                                 \u0027network:router_gateway\u0027)"},{"line_number":224,"context_line":"        for router in routers:"},{"line_number":225,"context_line":"            interfaces_info \u003d []"},{"line_number":226,"context_line":"            for port in self.conn.network.ports(device_id\u003drouter[\u0027id\u0027]):"},{"line_number":227,"context_line":"                if port.device_owner not in allowed_device_owners:"}],"source_content_type":"text/x-python","patch_set":13,"id":"32d48ee7_700e496a","line":224,"in_reply_to":"a15300da_d5c38983","updated":"2022-08-04 15:05:10.000000000","message":"Follow up patch which drops interfaces_info:\n\nhttps://review.opendev.org/c/openstack/ansible-collections-openstack/+/852179","commit_id":"880034b989a013a859b69f30ac298724a3e38dcf"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"9132570c2e05a4c04311a1e8248fb0106c74e8d6","unresolved":true,"context_lines":[{"line_number":221,"context_line":"                                 \u0027network_router_interface_distributed\u0027,"},{"line_number":222,"context_line":"                                 \u0027network:ha_router_replicated_interface\u0027,"},{"line_number":223,"context_line":"                                 \u0027network:router_gateway\u0027)"},{"line_number":224,"context_line":"        for router in routers:"},{"line_number":225,"context_line":"            interfaces_info \u003d []"},{"line_number":226,"context_line":"            for port in self.conn.network.ports(device_id\u003drouter[\u0027id\u0027]):"},{"line_number":227,"context_line":"                if port.device_owner not in allowed_device_owners:"}],"source_content_type":"text/x-python","patch_set":13,"id":"a15300da_d5c38983","line":224,"in_reply_to":"f8efdf01_af94facb","updated":"2022-07-06 12:59:03.000000000","message":"I thinks it was introduced with the module: https://review.opendev.org/c/openstack/ansible-collections-openstack/+/703927/6/plugins/modules/os_routers_info.py\n\nLooks like getting interfaces info from this module/SDK is so complex, especially with a Jinja, so it required a special treatment. I agree we don\u0027t do such things usually and just return what we get from SDK, but just looking at this code I have no idea how to get this info using pure Ansible+Jinja effort 😢","commit_id":"880034b989a013a859b69f30ac298724a3e38dcf"}]}
