)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"b908b7ed_c8c4d142","updated":"2022-06-17 15:18:47.000000000","message":"Made some small fixes to address comments","commit_id":"adb8afc2a1f09ebfbf49a28bbecaa3c0f857244c"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"050f0f6946cba3b8d008049c071d76c3c627b8a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"f3c9d0ea_21d78bb4","updated":"2022-07-20 06:46:24.000000000","message":"Thank you, Arx 😊","commit_id":"94cb5df9999e07d4cfa7435318ecb152211c5320"}],"ci/roles/port_info/tasks/main.yml":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"a6d7dc1885d3a16161de498fe48b06ef8565aedf","unresolved":true,"context_lines":[{"line_number":19,"context_line":"          \"status\", \"trunk_details\", \"updated_at\", \"revision_number\","},{"line_number":20,"context_line":"          \"id\", \"tags\"] | difference(result.openstack_ports.0.keys())"},{"line_number":21,"context_line":"          | length \u003d\u003d 0\u0027"},{"line_number":22,"context_line":"  when: sdk_version is version(\u00270.62\u0027, \u0027\u003e\u003d\u0027)"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"c7ffd42d_8ac91522","line":22,"updated":"2022-05-02 10:02:29.000000000","message":"Please drop this check, 0.62 has not been released yet and your patch targets the 1.0.0 release ;)","commit_id":"1e93a5321f199029904264d3b01af4165182faa3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"aa43f6df1c8190e1fc322a205774dfe212b4801b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"          \"status\", \"trunk_details\", \"updated_at\", \"revision_number\","},{"line_number":20,"context_line":"          \"id\", \"tags\"] | difference(result.openstack_ports.0.keys())"},{"line_number":21,"context_line":"          | length \u003d\u003d 0\u0027"},{"line_number":22,"context_line":"  when: sdk_version is version(\u00270.62\u0027, \u0027\u003e\u003d\u0027)"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0f447150_e24b6f0a","line":22,"in_reply_to":"c7ffd42d_8ac91522","updated":"2022-05-10 11:59:37.000000000","message":"Done","commit_id":"1e93a5321f199029904264d3b01af4165182faa3"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"d8b1fe28af51af75dc1d3bfc0011ee9a5a579363","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: List all ports"},{"line_number":3,"context_line":"  openstack.cloud.port_info:"},{"line_number":4,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":5,"context_line":"  register: result"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Assert fields"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"1523386f_eac02dbe","line":4,"range":{"start_line":2,"start_character":1,"end_line":4,"end_character":24},"updated":"2022-05-18 16:20:27.000000000","message":"maybe worth to add task with at least one filter to test.","commit_id":"1404216566720cadaee8b8120a8962cef689a460"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: List all ports"},{"line_number":3,"context_line":"  openstack.cloud.port_info:"},{"line_number":4,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":5,"context_line":"  register: result"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Assert fields"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"0270c1a2_330e93cc","line":4,"range":{"start_line":2,"start_character":1,"end_line":4,"end_character":24},"in_reply_to":"1523386f_eac02dbe","updated":"2022-05-30 19:25:34.000000000","message":"implemented below.","commit_id":"1404216566720cadaee8b8120a8962cef689a460"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"e75e5f1dabd26b817e32766311d9205b566d909d","unresolved":true,"context_lines":[{"line_number":24,"context_line":"  openstack.cloud.port_info:"},{"line_number":25,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":26,"context_line":"    filters:"},{"line_number":27,"context_line":"      device_id: \"{{ result.ports[0].device_id }}\""},{"line_number":28,"context_line":"  register: result_filter"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- name: Assert port was returned"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"40a3b02e_0e8d7a71","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":50},"updated":"2022-05-24 10:21:06.000000000","message":"looks great, thanks!","commit_id":"47928cf2c5e409c6dce38cd4b08ba726a610177f"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  openstack.cloud.port_info:"},{"line_number":25,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":26,"context_line":"    filters:"},{"line_number":27,"context_line":"      device_id: \"{{ result.ports[0].device_id }}\""},{"line_number":28,"context_line":"  register: result_filter"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- name: Assert port was returned"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9643303c_ea8e78a4","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"0f570756_f16e18a8","updated":"2022-06-17 15:18:47.000000000","message":"Done","commit_id":"47928cf2c5e409c6dce38cd4b08ba726a610177f"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":24,"context_line":"  openstack.cloud.port_info:"},{"line_number":25,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":26,"context_line":"    filters:"},{"line_number":27,"context_line":"      device_id: \"{{ result.ports[0].device_id }}\""},{"line_number":28,"context_line":"  register: result_filter"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- name: Assert port was returned"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9bffe16a_9a393966","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"40a3b02e_0e8d7a71","updated":"2022-05-30 19:25:34.000000000","message":"The device given here (by device_id) might have more than one port since this test assumes that ANY existing port is okay to check. In case a device has more than one port the test\n\n  result_filter.ports | length \u003d\u003d 1\n\nbelow will be broken.","commit_id":"47928cf2c5e409c6dce38cd4b08ba726a610177f"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5603b146650e0cf9ae342442a8509a242dd5c914","unresolved":true,"context_lines":[{"line_number":24,"context_line":"  openstack.cloud.port_info:"},{"line_number":25,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":26,"context_line":"    filters:"},{"line_number":27,"context_line":"      device_id: \"{{ result.ports[0].device_id }}\""},{"line_number":28,"context_line":"  register: result_filter"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- name: Assert port was returned"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"0f570756_f16e18a8","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"9bffe16a_9a393966","updated":"2022-06-08 17:09:42.000000000","message":"so probably better: result_filter.ports | length \u003e\u003d 1\nand add something like:\n\nresult_filter.ports | map(attribute\u003d\u0027device_id\u0027) | list | unique \u003d\u003d [result.ports[0].device_id]","commit_id":"47928cf2c5e409c6dce38cd4b08ba726a610177f"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":7,"context_line":"- name: Assert fields"},{"line_number":8,"context_line":"  assert:"},{"line_number":9,"context_line":"    that:"},{"line_number":10,"context_line":"      - \u0027[\"allowed_address_pairs\", \"binding_host_id\", \"binding_profile\","},{"line_number":11,"context_line":"          \"binding_vif_details\", \"binding_vif_type\", \"binding_vnic_type\","},{"line_number":12,"context_line":"          \"created_at\", \"data_plane_status\", \"description\", \"device_id\","},{"line_number":13,"context_line":"          \"device_owner\", \"device_profile\", \"dns_assignment\", \"dns_domain\","}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f1a64c7_c9b8792b","line":10,"updated":"2022-05-30 19:25:34.000000000","message":"nit: please sort because its hard to check that if its not sorted. it is easy to get sorted with:\n\n  sorted(list(conn.network.ports())[0].to_dict(computed\u003dTrue).keys())\n\nyou will get this:\n\n [\u0027allowed_address_pairs\u0027,\n  \u0027binding_host_id\u0027,\n  \u0027binding_profile\u0027,\n  \u0027binding_vif_details\u0027,\n  \u0027binding_vif_type\u0027,\n  \u0027binding_vnic_type\u0027,\n  \u0027created_at\u0027,\n  \u0027data_plane_status\u0027,\n  \u0027description\u0027,\n  \u0027device_id\u0027,\n  \u0027device_owner\u0027,\n  \u0027device_profile\u0027,\n  \u0027dns_assignment\u0027,\n  \u0027dns_domain\u0027,\n  \u0027dns_name\u0027,\n  \u0027extra_dhcp_opts\u0027,\n  \u0027fixed_ips\u0027,\n  \u0027id\u0027,\n  \u0027ip_allocation\u0027,\n  \u0027is_admin_state_up\u0027,\n  \u0027is_port_security_enabled\u0027,\n  \u0027location\u0027,\n  \u0027mac_address\u0027,\n  \u0027name\u0027,\n  \u0027network_id\u0027,\n  \u0027numa_affinity_policy\u0027,\n  \u0027project_id\u0027,\n  \u0027propagate_uplink_status\u0027,\n  \u0027qos_network_policy_id\u0027,\n  \u0027qos_policy_id\u0027,\n  \u0027resource_request\u0027,\n  \u0027revision_number\u0027,\n  \u0027security_group_ids\u0027,\n  \u0027status\u0027,\n  \u0027tags\u0027,\n  \u0027tenant_id\u0027,\n  \u0027trunk_details\u0027,\n  \u0027updated_at\u0027]","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[{"line_number":7,"context_line":"- name: Assert fields"},{"line_number":8,"context_line":"  assert:"},{"line_number":9,"context_line":"    that:"},{"line_number":10,"context_line":"      - \u0027[\"allowed_address_pairs\", \"binding_host_id\", \"binding_profile\","},{"line_number":11,"context_line":"          \"binding_vif_details\", \"binding_vif_type\", \"binding_vnic_type\","},{"line_number":12,"context_line":"          \"created_at\", \"data_plane_status\", \"description\", \"device_id\","},{"line_number":13,"context_line":"          \"device_owner\", \"device_profile\", \"dns_assignment\", \"dns_domain\","}],"source_content_type":"text/x-yaml","patch_set":16,"id":"af4ba1e0_db720e36","line":10,"in_reply_to":"3f1a64c7_c9b8792b","updated":"2022-06-17 15:18:47.000000000","message":"Done","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"}],"ci/run-collection.yml":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":41,"context_line":"      tags: nova_services"},{"line_number":42,"context_line":"      when: sdk_version is version(0.44, \u0027\u003e\u003d\u0027)"},{"line_number":43,"context_line":"    - { role: object, tags: object }"},{"line_number":44,"context_line":"    - { role: port_info, tags: port_info }"},{"line_number":45,"context_line":"    - { role: port, tags: port }"},{"line_number":46,"context_line":"    - { role: project, tags: project }"},{"line_number":47,"context_line":"    - { role: router, tags: router }"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"816bfbed_cb9abc1d","line":44,"updated":"2022-05-10 12:23:39.000000000","message":"Please move one down like you did in .zuul.yaml","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"      tags: nova_services"},{"line_number":42,"context_line":"      when: sdk_version is version(0.44, \u0027\u003e\u003d\u0027)"},{"line_number":43,"context_line":"    - { role: object, tags: object }"},{"line_number":44,"context_line":"    - { role: port_info, tags: port_info }"},{"line_number":45,"context_line":"    - { role: port, tags: port }"},{"line_number":46,"context_line":"    - { role: project, tags: project }"},{"line_number":47,"context_line":"    - { role: router, tags: router }"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"dcd9cb85_313390da","line":44,"in_reply_to":"816bfbed_cb9abc1d","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"7fb273f0773b2638986189f05da0e95ae78d4b62","unresolved":true,"context_lines":[{"line_number":51,"context_line":"      when: sdk_version is version(0.44, \u0027\u003e\u003d\u0027)"},{"line_number":52,"context_line":"    - { role: object, tags: object }"},{"line_number":53,"context_line":"    - { role: port, tags: port }"},{"line_number":54,"context_line":"    - { role: port_info, tags: port_info }"},{"line_number":55,"context_line":"    - { role: project, tags: project }"},{"line_number":56,"context_line":"    - { role: recordset, tags: recordset }"},{"line_number":57,"context_line":"    - { role: role_assignment, tags: role_assignment }"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"24aa313e_b48a6cc2","line":54,"range":{"start_line":54,"start_character":14,"end_line":54,"end_character":23},"updated":"2022-06-19 09:50:21.000000000","message":"I wonder is those tests can be in \"port\" role, instead of multiplication of roles/files.","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"1277e784a8eea508837a7255acf47e7d0c011a38","unresolved":false,"context_lines":[{"line_number":51,"context_line":"      when: sdk_version is version(0.44, \u0027\u003e\u003d\u0027)"},{"line_number":52,"context_line":"    - { role: object, tags: object }"},{"line_number":53,"context_line":"    - { role: port, tags: port }"},{"line_number":54,"context_line":"    - { role: port_info, tags: port_info }"},{"line_number":55,"context_line":"    - { role: project, tags: project }"},{"line_number":56,"context_line":"    - { role: recordset, tags: recordset }"},{"line_number":57,"context_line":"    - { role: role_assignment, tags: role_assignment }"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"f174e0d9_82e4189a","line":54,"range":{"start_line":54,"start_character":14,"end_line":54,"end_character":23},"in_reply_to":"24aa313e_b48a6cc2","updated":"2022-07-20 21:55:37.000000000","message":"Agreed to do it in a followup","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"}],"plugins/modules/port_info.py":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"d6add76aa1caf9d6643b2d6b0f60fbd8fa5d34d2","unresolved":true,"context_lines":[{"line_number":197,"context_line":"        port \u003d self.params.get(\u0027port\u0027)"},{"line_number":198,"context_line":"        filters \u003d self.params.get(\u0027filters\u0027) or {}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in"},{"line_number":201,"context_line":"                 self.conn.network.ports(**filters)]"},{"line_number":202,"context_line":"        if port:"},{"line_number":203,"context_line":"            ports \u003d [p for p in ports if p[\u0027name\u0027] \u003d\u003d port or p[\u0027id\u0027] \u003d\u003d port]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba825f06_cf3b90b7","line":200,"updated":"2022-04-20 09:15:00.000000000","message":"Instead of listing all ports you can ask only for ports which have a matching port name, e.g.\n\nif port:\n    filters[\u0027name\u0027] \u003d port\nports \u003d [p.to_dict(computed\u003dFalse) for p in self.conn.network.ports(**filters)]\n\nRef.: https://github.com/openstack/openstacksdk/blob/stable/train/openstack/resource.py#L1761","commit_id":"fd17422e08eaac1947ac244eccc463c95e5b030e"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"a6d7dc1885d3a16161de498fe48b06ef8565aedf","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        port \u003d self.params.get(\u0027port\u0027)"},{"line_number":198,"context_line":"        filters \u003d self.params.get(\u0027filters\u0027) or {}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in"},{"line_number":201,"context_line":"                 self.conn.network.ports(**filters)]"},{"line_number":202,"context_line":"        if port:"},{"line_number":203,"context_line":"            ports \u003d [p for p in ports if p[\u0027name\u0027] \u003d\u003d port or p[\u0027id\u0027] \u003d\u003d port]"}],"source_content_type":"text/x-python","patch_set":6,"id":"b39025bb_963648dd","line":200,"in_reply_to":"ba825f06_cf3b90b7","updated":"2022-05-02 10:02:29.000000000","message":"Done","commit_id":"fd17422e08eaac1947ac244eccc463c95e5b030e"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f5be4925a39cf2ac1d4a7e70f46b6fa6ed2d205d","unresolved":true,"context_lines":[{"line_number":16,"context_line":"        description:"},{"line_number":17,"context_line":"            - Unique name or ID of a port."},{"line_number":18,"context_line":"        type: str"},{"line_number":19,"context_line":"    filters:"},{"line_number":20,"context_line":"        description:"},{"line_number":21,"context_line":"            - A dictionary of meta data to use for further filtering. Elements"},{"line_number":22,"context_line":"              of this dictionary will be matched against the returned port"}],"source_content_type":"text/x-python","patch_set":8,"id":"71ef9d11_5d2e9464","line":19,"updated":"2022-04-27 10:01:55.000000000","message":"Previously, filters were applied after retrieving all ports. This patch turns filters into query parameters. This changes the behavior of the module.\n\nWe could also simply stick to the old functionality (self.conn.search_ports instead of self.conn.network.ports) without loosing anything. \n\nWhat do we gain here?","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"3f12e80650e729f185c5822b014fd3a4d3b926e2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"        description:"},{"line_number":17,"context_line":"            - Unique name or ID of a port."},{"line_number":18,"context_line":"        type: str"},{"line_number":19,"context_line":"    filters:"},{"line_number":20,"context_line":"        description:"},{"line_number":21,"context_line":"            - A dictionary of meta data to use for further filtering. Elements"},{"line_number":22,"context_line":"              of this dictionary will be matched against the returned port"}],"source_content_type":"text/x-python","patch_set":8,"id":"cb3930c6_5a93c58b","line":19,"in_reply_to":"43bc1b03_f3a7a84f","updated":"2022-05-02 09:56:55.000000000","message":"We decided to stick to cloud layer functions here to not break backward compatibility. The cloud layer is not going away and proxy layer does not support filters, only query params which implement a subset of filters only.\n\nRef.: https://meetings.opendev.org/irclogs/%23openstack-sdks/%23openstack-sdks.2022-04-27.log.html","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"82f8ad09f3b97e316d846d851223ffcbaf4bc410","unresolved":true,"context_lines":[{"line_number":16,"context_line":"        description:"},{"line_number":17,"context_line":"            - Unique name or ID of a port."},{"line_number":18,"context_line":"        type: str"},{"line_number":19,"context_line":"    filters:"},{"line_number":20,"context_line":"        description:"},{"line_number":21,"context_line":"            - A dictionary of meta data to use for further filtering. Elements"},{"line_number":22,"context_line":"              of this dictionary will be matched against the returned port"}],"source_content_type":"text/x-python","patch_set":8,"id":"8601e0ef_2a606fc4","line":19,"in_reply_to":"71ef9d11_5d2e9464","updated":"2022-04-27 10:14:00.000000000","message":"If we decide to use query params instead of filters then we should probably consider to update the module argument specs. For example, we could drop the filters argument and add a new arg which resembles query args. Doing so would cause the user code to break which is what we want because then its easier for users to see that they have to update their code.","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b6b478f5a31aa92ec794b63d9c32326d288c9b46","unresolved":true,"context_lines":[{"line_number":16,"context_line":"        description:"},{"line_number":17,"context_line":"            - Unique name or ID of a port."},{"line_number":18,"context_line":"        type: str"},{"line_number":19,"context_line":"    filters:"},{"line_number":20,"context_line":"        description:"},{"line_number":21,"context_line":"            - A dictionary of meta data to use for further filtering. Elements"},{"line_number":22,"context_line":"              of this dictionary will be matched against the returned port"}],"source_content_type":"text/x-python","patch_set":8,"id":"43bc1b03_f3a7a84f","line":19,"in_reply_to":"8601e0ef_2a606fc4","updated":"2022-04-27 11:29:08.000000000","message":"The most user friendly decision would be to stick to the cloud layer function as before because search_ports() do the same as the proxy layer network.ports() plus it implements filters.\n\nhttps://opendev.org/openstack/openstacksdk/src/branch/master/openstack/cloud/_network.py#L99","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f5be4925a39cf2ac1d4a7e70f46b6fa6ed2d205d","unresolved":true,"context_lines":[{"line_number":18,"context_line":"        type: str"},{"line_number":19,"context_line":"    filters:"},{"line_number":20,"context_line":"        description:"},{"line_number":21,"context_line":"            - A dictionary of meta data to use for further filtering. Elements"},{"line_number":22,"context_line":"              of this dictionary will be matched against the returned port"},{"line_number":23,"context_line":"              dictionaries. Matching is currently limited to strings within"},{"line_number":24,"context_line":"              the port dictionary, or strings within nested dictionaries."}],"source_content_type":"text/x-python","patch_set":8,"id":"04a95f50_07ece436","line":21,"updated":"2022-04-27 10:01:55.000000000","message":"Please update description as it is no longer up to date.","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        type: str"},{"line_number":19,"context_line":"    filters:"},{"line_number":20,"context_line":"        description:"},{"line_number":21,"context_line":"            - A dictionary of meta data to use for further filtering. Elements"},{"line_number":22,"context_line":"              of this dictionary will be matched against the returned port"},{"line_number":23,"context_line":"              dictionaries. Matching is currently limited to strings within"},{"line_number":24,"context_line":"              the port dictionary, or strings within nested dictionaries."}],"source_content_type":"text/x-python","patch_set":8,"id":"952c65ca_f7f6c307","line":21,"in_reply_to":"04a95f50_07ece436","updated":"2022-06-17 15:18:47.000000000","message":"Done","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f5be4925a39cf2ac1d4a7e70f46b6fa6ed2d205d","unresolved":true,"context_lines":[{"line_number":203,"context_line":"            # than one, so we need to check, because we always return a list,"},{"line_number":204,"context_line":"            # even if it has only one element. we can\u0027t cast find_port to a"},{"line_number":205,"context_line":"            # list in this case otherwise we will have a list of lists"},{"line_number":206,"context_line":"            if not isinstance(ports, list):"},{"line_number":207,"context_line":"                ports \u003d [ports]"},{"line_number":208,"context_line":"        else:"},{"line_number":209,"context_line":"            ports \u003d self.conn.network.ports(**filters)"}],"source_content_type":"text/x-python","patch_set":8,"id":"46c38eaa_99333d5e","line":206,"updated":"2022-04-27 10:01:55.000000000","message":"According to the sdk doc, find_port will max return one port.\n\nRef.: https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/network/v2/_proxy.py#L2280","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"a6d7dc1885d3a16161de498fe48b06ef8565aedf","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            # than one, so we need to check, because we always return a list,"},{"line_number":204,"context_line":"            # even if it has only one element. we can\u0027t cast find_port to a"},{"line_number":205,"context_line":"            # list in this case otherwise we will have a list of lists"},{"line_number":206,"context_line":"            if not isinstance(ports, list):"},{"line_number":207,"context_line":"                ports \u003d [ports]"},{"line_number":208,"context_line":"        else:"},{"line_number":209,"context_line":"            ports \u003d self.conn.network.ports(**filters)"}],"source_content_type":"text/x-python","patch_set":8,"id":"8c426ceb_63319c5a","line":206,"in_reply_to":"46c38eaa_99333d5e","updated":"2022-05-02 10:02:29.000000000","message":"Done","commit_id":"40688bb56a12906ca24acafa47a65d592af16777"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":55,"context_line":"\u0027\u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":58,"context_line":"openstack_ports:"},{"line_number":59,"context_line":"    description: List of port dictionaries. A subset of the dictionary keys"},{"line_number":60,"context_line":"                 listed below may be returned, depending on your cloud provider."},{"line_number":61,"context_line":"    returned: always, but can be null"}],"source_content_type":"text/x-python","patch_set":10,"id":"35a53c52_8ae1ba62","line":58,"updated":"2022-05-10 12:23:39.000000000","message":"not documented:\n\n* device_profile\n* created_at\n* data_plane_status\n* description\n* dns_domain\n* ip_allocation\n* numa_affinity_policy\n* propagate_uplink_status\n* qos_network_policy_id\n* qos_policy_id\n* resource_request\n* trunk_details\n* updated_at\n* revision_number\n* tags","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"\u0027\u0027\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":58,"context_line":"openstack_ports:"},{"line_number":59,"context_line":"    description: List of port dictionaries. A subset of the dictionary keys"},{"line_number":60,"context_line":"                 listed below may be returned, depending on your cloud provider."},{"line_number":61,"context_line":"    returned: always, but can be null"}],"source_content_type":"text/x-python","patch_set":10,"id":"e6a4c0f1_5066495c","line":58,"in_reply_to":"35a53c52_8ae1ba62","updated":"2022-05-30 19:25:34.000000000","message":"Mostly done, added another comment with updated info.","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":58,"context_line":"openstack_ports:"},{"line_number":59,"context_line":"    description: List of port dictionaries. A subset of the dictionary keys"},{"line_number":60,"context_line":"                 listed below may be returned, depending on your cloud provider."},{"line_number":61,"context_line":"    returned: always, but can be null"},{"line_number":62,"context_line":"    type: complex"},{"line_number":63,"context_line":"    contains:"},{"line_number":64,"context_line":"        admin_state_up:"}],"source_content_type":"text/x-python","patch_set":10,"id":"eb8b66a2_18a4f470","line":61,"updated":"2022-05-10 12:23:39.000000000","message":"Change to:\n  returned: always","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"openstack_ports:"},{"line_number":59,"context_line":"    description: List of port dictionaries. A subset of the dictionary keys"},{"line_number":60,"context_line":"                 listed below may be returned, depending on your cloud provider."},{"line_number":61,"context_line":"    returned: always, but can be null"},{"line_number":62,"context_line":"    type: complex"},{"line_number":63,"context_line":"    contains:"},{"line_number":64,"context_line":"        admin_state_up:"}],"source_content_type":"text/x-python","patch_set":10,"id":"023986cf_34616c35","line":61,"in_reply_to":"eb8b66a2_18a4f470","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    description: List of port dictionaries. A subset of the dictionary keys"},{"line_number":60,"context_line":"                 listed below may be returned, depending on your cloud provider."},{"line_number":61,"context_line":"    returned: always, but can be null"},{"line_number":62,"context_line":"    type: complex"},{"line_number":63,"context_line":"    contains:"},{"line_number":64,"context_line":"        admin_state_up:"},{"line_number":65,"context_line":"            description: The administrative state of the router, which is"}],"source_content_type":"text/x-python","patch_set":10,"id":"410b51a2_115a99a8","line":62,"updated":"2022-05-10 12:23:39.000000000","message":"Please change to:\n  type: list\n  elements: dict","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    description: List of port dictionaries. A subset of the dictionary keys"},{"line_number":60,"context_line":"                 listed below may be returned, depending on your cloud provider."},{"line_number":61,"context_line":"    returned: always, but can be null"},{"line_number":62,"context_line":"    type: complex"},{"line_number":63,"context_line":"    contains:"},{"line_number":64,"context_line":"        admin_state_up:"},{"line_number":65,"context_line":"            description: The administrative state of the router, which is"}],"source_content_type":"text/x-python","patch_set":10,"id":"d39b8bd0_f872cfee","line":62,"in_reply_to":"410b51a2_115a99a8","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    returned: always, but can be null"},{"line_number":62,"context_line":"    type: complex"},{"line_number":63,"context_line":"    contains:"},{"line_number":64,"context_line":"        admin_state_up:"},{"line_number":65,"context_line":"            description: The administrative state of the router, which is"},{"line_number":66,"context_line":"                         up (true) or down (false)."},{"line_number":67,"context_line":"            returned: success"}],"source_content_type":"text/x-python","patch_set":10,"id":"7dbb818e_15c90711","line":64,"updated":"2022-05-10 12:23:39.000000000","message":"Has been renamed to is_admin_state_up","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    returned: always, but can be null"},{"line_number":62,"context_line":"    type: complex"},{"line_number":63,"context_line":"    contains:"},{"line_number":64,"context_line":"        admin_state_up:"},{"line_number":65,"context_line":"            description: The administrative state of the router, which is"},{"line_number":66,"context_line":"                         up (true) or down (false)."},{"line_number":67,"context_line":"            returned: success"}],"source_content_type":"text/x-python","patch_set":10,"id":"56e2d5bf_96da9f9e","line":64,"in_reply_to":"7dbb818e_15c90711","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":158,"context_line":"            returned: success"},{"line_number":159,"context_line":"            type: str"},{"line_number":160,"context_line":"            sample: \"dd1ede4f-3952-4131-aab6-3b8902268c7d\""},{"line_number":161,"context_line":"        port_security_enabled:"},{"line_number":162,"context_line":"            description: The port security status. The status is enabled (true) or disabled (false)."},{"line_number":163,"context_line":"            returned: success"},{"line_number":164,"context_line":"            type: bool"}],"source_content_type":"text/x-python","patch_set":10,"id":"6c25435c_f39ba850","line":161,"updated":"2022-05-10 12:23:39.000000000","message":"Has been renamed to is_port_security_enabled","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            returned: success"},{"line_number":159,"context_line":"            type: str"},{"line_number":160,"context_line":"            sample: \"dd1ede4f-3952-4131-aab6-3b8902268c7d\""},{"line_number":161,"context_line":"        port_security_enabled:"},{"line_number":162,"context_line":"            description: The port security status. The status is enabled (true) or disabled (false)."},{"line_number":163,"context_line":"            returned: success"},{"line_number":164,"context_line":"            type: bool"}],"source_content_type":"text/x-python","patch_set":10,"id":"c4aeffbb_909544cd","line":161,"in_reply_to":"6c25435c_f39ba850","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":163,"context_line":"            returned: success"},{"line_number":164,"context_line":"            type: bool"},{"line_number":165,"context_line":"            sample: false"},{"line_number":166,"context_line":"        security_groups:"},{"line_number":167,"context_line":"            description: The UUIDs of any attached security groups."},{"line_number":168,"context_line":"            returned: success"},{"line_number":169,"context_line":"            type: list"}],"source_content_type":"text/x-python","patch_set":10,"id":"c7eac18e_8e6d07ed","line":166,"updated":"2022-05-10 12:23:39.000000000","message":"has been renamed to security_group_ids","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            returned: success"},{"line_number":164,"context_line":"            type: bool"},{"line_number":165,"context_line":"            sample: false"},{"line_number":166,"context_line":"        security_groups:"},{"line_number":167,"context_line":"            description: The UUIDs of any attached security groups."},{"line_number":168,"context_line":"            returned: success"},{"line_number":169,"context_line":"            type: list"}],"source_content_type":"text/x-python","patch_set":10,"id":"6fece556_04e24359","line":166,"in_reply_to":"c7eac18e_8e6d07ed","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"76d8962a472144ab67e2bb184931da3ce26e8cca","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            returned: success"},{"line_number":173,"context_line":"            type: str"},{"line_number":174,"context_line":"            sample: \"ACTIVE\""},{"line_number":175,"context_line":"        tenant_id:"},{"line_number":176,"context_line":"            description: The UUID of the tenant who owns the network."},{"line_number":177,"context_line":"            returned: success"},{"line_number":178,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":10,"id":"01c584bc_b0904627","line":175,"updated":"2022-05-10 12:23:39.000000000","message":"Please rename to project_id because tenant_id has been deprecated","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            returned: success"},{"line_number":173,"context_line":"            type: str"},{"line_number":174,"context_line":"            sample: \"ACTIVE\""},{"line_number":175,"context_line":"        tenant_id:"},{"line_number":176,"context_line":"            description: The UUID of the tenant who owns the network."},{"line_number":177,"context_line":"            returned: success"},{"line_number":178,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":10,"id":"d97008b6_e80b6141","line":175,"in_reply_to":"01c584bc_b0904627","updated":"2022-05-30 19:25:34.000000000","message":"above comment is debatable because sdk still returns it.","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"84560935a41640a13430688cae2349e44d23761f","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            returned: success"},{"line_number":173,"context_line":"            type: str"},{"line_number":174,"context_line":"            sample: \"ACTIVE\""},{"line_number":175,"context_line":"        tenant_id:"},{"line_number":176,"context_line":"            description: The UUID of the tenant who owns the network."},{"line_number":177,"context_line":"            returned: success"},{"line_number":178,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":10,"id":"b6cdf471_2d37648c","line":175,"in_reply_to":"d96bfe01_15ba024d","updated":"2022-07-19 13:10:22.000000000","message":"Thank you, Rafael, for addressing all my comments 😊","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            returned: success"},{"line_number":173,"context_line":"            type: str"},{"line_number":174,"context_line":"            sample: \"ACTIVE\""},{"line_number":175,"context_line":"        tenant_id:"},{"line_number":176,"context_line":"            description: The UUID of the tenant who owns the network."},{"line_number":177,"context_line":"            returned: success"},{"line_number":178,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":10,"id":"d96bfe01_15ba024d","line":175,"in_reply_to":"d97008b6_e80b6141","updated":"2022-06-17 15:18:47.000000000","message":"Added a deprecation note to description.","commit_id":"62dfbcede317c9da5cdc56751ecf459941ce26b5"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"d8b1fe28af51af75dc1d3bfc0011ee9a5a579363","unresolved":true,"context_lines":[{"line_number":274,"context_line":"    def run(self):"},{"line_number":275,"context_line":"        port \u003d self.params.get(\u0027port\u0027)"},{"line_number":276,"context_line":"        filters \u003d self.params.get(\u0027filters\u0027) or {}"},{"line_number":277,"context_line":"        ports \u003d self.conn.search_ports(port, filters)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"0a68c671_cc306433","line":277,"range":{"start_line":277,"start_character":26,"end_line":277,"end_character":53},"updated":"2022-05-18 16:20:27.000000000","message":"I wonder if we can have here self.conn.network.ports(**filters)\nlike here: https://github.com/openstack/openstacksdk/blob/master/openstack/network/v2/_proxy.py#L2297","commit_id":"1404216566720cadaee8b8120a8962cef689a460"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    def run(self):"},{"line_number":275,"context_line":"        port \u003d self.params.get(\u0027port\u0027)"},{"line_number":276,"context_line":"        filters \u003d self.params.get(\u0027filters\u0027) or {}"},{"line_number":277,"context_line":"        ports \u003d self.conn.search_ports(port, filters)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"78b87798_37fcf97d","line":277,"range":{"start_line":277,"start_character":26,"end_line":277,"end_character":53},"in_reply_to":"0a68c671_cc306433","updated":"2022-05-30 19:25:34.000000000","message":"Nope because filters in SDK are applied on client-side. The code above is for server-side filtering.","commit_id":"1404216566720cadaee8b8120a8962cef689a460"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"e75e5f1dabd26b817e32766311d9205b566d909d","unresolved":true,"context_lines":[{"line_number":269,"context_line":"        supports_check_mode\u003dTrue"},{"line_number":270,"context_line":"    )"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    deprecated_names \u003d (\u0027openstack.cloud.port_facts\u0027)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def run(self):"},{"line_number":275,"context_line":"        port \u003d self.params[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"5669eb2e_deb941eb","line":272,"range":{"start_line":272,"start_character":0,"end_line":272,"end_character":3},"updated":"2022-05-24 10:21:06.000000000","message":"sorry, forgot to mention, this \"deprecated_names\" should be removed in a new version, we finally remove support for old names.","commit_id":"47928cf2c5e409c6dce38cd4b08ba726a610177f"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        supports_check_mode\u003dTrue"},{"line_number":270,"context_line":"    )"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    deprecated_names \u003d (\u0027openstack.cloud.port_facts\u0027)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def run(self):"},{"line_number":275,"context_line":"        port \u003d self.params[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"c918700b_d5ca8a78","line":272,"range":{"start_line":272,"start_character":0,"end_line":272,"end_character":3},"in_reply_to":"5669eb2e_deb941eb","updated":"2022-05-30 19:25:34.000000000","message":"Done","commit_id":"47928cf2c5e409c6dce38cd4b08ba726a610177f"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":118,"context_line":"            description: Device profile"},{"line_number":119,"context_line":"            returned: success"},{"line_number":120,"context_line":"            type: str"},{"line_number":121,"context_line":"        device_owner:"},{"line_number":122,"context_line":"            description: The UUID of the entity that uses this port."},{"line_number":123,"context_line":"            returned: success"},{"line_number":124,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":16,"id":"a63da184_1ff36ade","line":121,"updated":"2022-05-30 19:25:34.000000000","message":"nit: Please sort. device_owner \u003c device_profile.","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            description: Device profile"},{"line_number":119,"context_line":"            returned: success"},{"line_number":120,"context_line":"            type: str"},{"line_number":121,"context_line":"        device_owner:"},{"line_number":122,"context_line":"            description: The UUID of the entity that uses this port."},{"line_number":123,"context_line":"            returned: success"},{"line_number":124,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":16,"id":"869dfd30_54510982","line":121,"in_reply_to":"a63da184_1ff36ade","updated":"2022-06-17 15:18:47.000000000","message":"Done","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":151,"context_line":"            returned: success"},{"line_number":152,"context_line":"            type: str"},{"line_number":153,"context_line":"            sample: \"3ec25c97-7052-4ab8-a8ba-92faf84148de\""},{"line_number":154,"context_line":"        ip_address:"},{"line_number":155,"context_line":"            description: The IP address."},{"line_number":156,"context_line":"            returned: success"},{"line_number":157,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":16,"id":"5e885aa5_823b3adb","line":154,"updated":"2022-05-30 19:25:34.000000000","message":"Where does ip_address come from? Cannot find it in output.","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f4faacdbb95cb1c27117df9b411bd66ea52c5ecd","unresolved":true,"context_lines":[{"line_number":151,"context_line":"            returned: success"},{"line_number":152,"context_line":"            type: str"},{"line_number":153,"context_line":"            sample: \"3ec25c97-7052-4ab8-a8ba-92faf84148de\""},{"line_number":154,"context_line":"        ip_address:"},{"line_number":155,"context_line":"            description: The IP address."},{"line_number":156,"context_line":"            returned: success"},{"line_number":157,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":16,"id":"f8fd1105_a8f8c414","line":154,"in_reply_to":"5e885aa5_823b3adb","updated":"2022-06-08 21:21:20.000000000","message":"+1 It\u0027s not in this level, it\u0027s part of \"fixed_ips\"\n\n  \u0027fixed_ips\u0027: [{\u0027ip_address\u0027: \u0027172.24.5.202\u0027,\n                 \u0027subnet_id\u0027: \u002764091665-b3cc-4d13-b906-6f74e486c993\u0027},\n                {\u0027ip_address\u0027: \u00272001:db8::2d6\u0027,\n                 \u0027subnet_id\u0027: \u0027f71472d2-d4b3-48a8-802d-ed7520451057\u0027}],","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            returned: success"},{"line_number":152,"context_line":"            type: str"},{"line_number":153,"context_line":"            sample: \"3ec25c97-7052-4ab8-a8ba-92faf84148de\""},{"line_number":154,"context_line":"        ip_address:"},{"line_number":155,"context_line":"            description: The IP address."},{"line_number":156,"context_line":"            returned: success"},{"line_number":157,"context_line":"            type: str"}],"source_content_type":"text/x-python","patch_set":16,"id":"2e3191ab_f21d8fc0","line":154,"in_reply_to":"f8fd1105_a8f8c414","updated":"2022-06-17 15:18:47.000000000","message":"Done","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":187,"context_line":"            returned: success"},{"line_number":188,"context_line":"            type: str"},{"line_number":189,"context_line":"            sample: \"dd1ede4f-3952-4131-aab6-3b8902268c7d\""},{"line_number":190,"context_line":"        numa_affinity_project:"},{"line_number":191,"context_line":"            description: The port NUMA affinity policy requested during the"},{"line_number":192,"context_line":"                         virtual machine scheduling. Values are None, required,"},{"line_number":193,"context_line":"                         preferred or legacy."}],"source_content_type":"text/x-python","patch_set":16,"id":"e57d7633_ed1ecb65","line":190,"updated":"2022-05-30 19:25:34.000000000","message":"Nope, it\u0027s called numa_affinity_policy.","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"8cc5c23f651f94f26b7712944224ccdbb26b5767","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            returned: success"},{"line_number":188,"context_line":"            type: str"},{"line_number":189,"context_line":"            sample: \"dd1ede4f-3952-4131-aab6-3b8902268c7d\""},{"line_number":190,"context_line":"        numa_affinity_project:"},{"line_number":191,"context_line":"            description: The port NUMA affinity policy requested during the"},{"line_number":192,"context_line":"                         virtual machine scheduling. Values are None, required,"},{"line_number":193,"context_line":"                         preferred or legacy."}],"source_content_type":"text/x-python","patch_set":16,"id":"d4e24986_adfa7068","line":190,"in_reply_to":"e57d7633_ed1ecb65","updated":"2022-06-17 15:18:47.000000000","message":"Done","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"ee2586ddcb6b3e635fba2f055bb470c630288a7e","unresolved":true,"context_lines":[{"line_number":274,"context_line":"        filters \u003d self.params[\u0027filters\u0027]"},{"line_number":275,"context_line":"        if port:"},{"line_number":276,"context_line":"            filters[\u0027name\u0027] \u003d port"},{"line_number":277,"context_line":"        ports \u003d self.conn.network.ports(**filters)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"f9f47ae3_e10ccd9f","line":277,"updated":"2022-05-30 19:25:34.000000000","message":"Your previous code using cloud layer function self.conn.search_ports() was correct because self.conn.network.ports() only allows for server-side filtering (using query-args) while filters in cloud layer function self.conn.search_ports() are applied on client-side (once implemented correctly in newer versions. it had been in older version).","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"050f0f6946cba3b8d008049c071d76c3c627b8a5","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        filters \u003d self.params[\u0027filters\u0027]"},{"line_number":275,"context_line":"        if port:"},{"line_number":276,"context_line":"            filters[\u0027name\u0027] \u003d port"},{"line_number":277,"context_line":"        ports \u003d self.conn.network.ports(**filters)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"2eee66cf_86a9cf97","line":277,"in_reply_to":"f9f47ae3_e10ccd9f","updated":"2022-07-20 06:46:24.000000000","message":"Done","commit_id":"9777c0427e961300a04cd183c6d4b34aee1f1947"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"84560935a41640a13430688cae2349e44d23761f","unresolved":true,"context_lines":[{"line_number":268,"context_line":"        filters \u003d self.params[\u0027filters\u0027]"},{"line_number":269,"context_line":"        ports \u003d []"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if port is not None:"},{"line_number":272,"context_line":"            port_by_id \u003d self.conn.network.find_port(port, **filters)"},{"line_number":273,"context_line":"            if port_by_id:"},{"line_number":274,"context_line":"                ports.append(port_by_id)"}],"source_content_type":"text/x-python","patch_set":22,"id":"771ab41a_c3955a3d","line":271,"updated":"2022-07-19 13:10:22.000000000","message":"The previous code aka self.conn.search_ports() was perfectly fine [1], there is no need to replicate functionality from openstacksdk here.\n\n[1] https://review.opendev.org/c/openstack/ansible-collections-openstack/+/833083/comments/f9f47ae3_e10ccd9f","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"050f0f6946cba3b8d008049c071d76c3c627b8a5","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        filters \u003d self.params[\u0027filters\u0027]"},{"line_number":269,"context_line":"        ports \u003d []"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if port is not None:"},{"line_number":272,"context_line":"            port_by_id \u003d self.conn.network.find_port(port, **filters)"},{"line_number":273,"context_line":"            if port_by_id:"},{"line_number":274,"context_line":"                ports.append(port_by_id)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fc31c2e_ead95511","line":271,"in_reply_to":"771ab41a_c3955a3d","updated":"2022-07-20 06:46:24.000000000","message":"Done","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cd65d44f01ed9421e05e543cdacea71e1a10a458","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        self.exit_json(changed\u003dFalse, ports\u003dports)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aec1e3f_b1d3d37c","line":280,"updated":"2022-06-20 11:57:19.000000000","message":"My information may be somewhat outdated, is there an argreement to drop the openstack_ prefix?","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"710286f44cf641bc55189c82d428d8291f482e61","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        self.exit_json(changed\u003dFalse, ports\u003dports)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":22,"id":"a1a33ee0_5a4f7494","line":280,"in_reply_to":"2b20d173_3f2947dd","updated":"2022-07-06 14:48:50.000000000","message":"We agreed to drop the \u0027openstack_*\u0027 prefix because (a) it was not consistently used across modules in the past, (b) its less to type without the prefix and (c) to signal to users that they have to adopt their code to the updated return values. A lot of modules have different return values with openstacksdk\u003e\u003d0.99.0 because openstacksdk consistently uses resource proxies now.","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"9a67d613e00c5886c79b7ba6c260ceca1d072edf","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        ports \u003d [p.to_dict(computed\u003dFalse) for p in ports]"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        self.exit_json(changed\u003dFalse, ports\u003dports)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":22,"id":"2b20d173_3f2947dd","line":280,"in_reply_to":"9aec1e3f_b1d3d37c","updated":"2022-06-20 16:49:59.000000000","message":"We didn\u0027t note it down somewhere, but yes, that\u0027s the plan for 2.0.0. I\u0027m thinking it might be a bit more sensible to keep the openstack_* fields around but deprecated for 2.0.0 and remove them in a (maybe) distant 3.0.0","commit_id":"688bba809856c470f992e4a469c17ddba28cef15"}]}
