)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6ba2a48ac86700f608055982019acd037c2787f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"097eccf9_d398c887","updated":"2022-08-03 19:47:59.000000000","message":"Looks good. Some questions.","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"d2f5af9857077dc68836085e0de174be6f8dd351","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"26007186_873b49c4","updated":"2022-08-08 23:11:16.000000000","message":"recheck","commit_id":"d0eb83e9345070007e7212ea7b5d591e87b06810"}],"ci/roles/port/tasks/main.yml":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6ba2a48ac86700f608055982019acd037c2787f8","unresolved":true,"context_lines":[{"line_number":61,"context_line":"- name: Assert infos by id"},{"line_number":62,"context_line":"  assert:"},{"line_number":63,"context_line":"    that:"},{"line_number":64,"context_line":"      - info_id.ports[0].id \u003d\u003d info.ports[0].id"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- name: List port with device_id filter"},{"line_number":67,"context_line":"  openstack.cloud.port_info:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3380e243_02ed4843","line":64,"updated":"2022-08-03 19:47:59.000000000","message":"Can we have an assertion that length \u003d\u003d 1?","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"318c92ac5cce209626d9d40ece976e3686621265","unresolved":false,"context_lines":[{"line_number":61,"context_line":"- name: Assert infos by id"},{"line_number":62,"context_line":"  assert:"},{"line_number":63,"context_line":"    that:"},{"line_number":64,"context_line":"      - info_id.ports[0].id \u003d\u003d info.ports[0].id"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- name: List port with device_id filter"},{"line_number":67,"context_line":"  openstack.cloud.port_info:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"b2da7557_b450f2cb","line":64,"in_reply_to":"3380e243_02ed4843","updated":"2022-08-04 08:28:13.000000000","message":"Done","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6ba2a48ac86700f608055982019acd037c2787f8","unresolved":true,"context_lines":[{"line_number":264,"context_line":"    binding_profile: \"{{ binding_profile }}\""},{"line_number":265,"context_line":"  register: port"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"- name: Assert binding:profile exists in created port"},{"line_number":268,"context_line":"  assert:"},{"line_number":269,"context_line":"    that: \"port.port[\u0027binding_profile\u0027]\""},{"line_number":270,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"05bb2908_76fa1681","line":267,"updated":"2022-08-03 19:47:59.000000000","message":"nit: binding_profile","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"318c92ac5cce209626d9d40ece976e3686621265","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    binding_profile: \"{{ binding_profile }}\""},{"line_number":265,"context_line":"  register: port"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"- name: Assert binding:profile exists in created port"},{"line_number":268,"context_line":"  assert:"},{"line_number":269,"context_line":"    that: \"port.port[\u0027binding_profile\u0027]\""},{"line_number":270,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8e35f2d2_352a4df0","line":267,"in_reply_to":"05bb2908_76fa1681","updated":"2022-08-04 08:28:13.000000000","message":"Done","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"}],"plugins/modules/port.py":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6ba2a48ac86700f608055982019acd037c2787f8","unresolved":true,"context_lines":[{"line_number":481,"context_line":"        fixed_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027dict\u0027),"},{"line_number":482,"context_line":"        is_admin_state_up\u003ddict(type\u003d\u0027bool\u0027, aliases\u003d[\u0027admin_state_up\u0027]),"},{"line_number":483,"context_line":"        mac_address\u003ddict(),"},{"line_number":484,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":485,"context_line":"        network\u003ddict(),"},{"line_number":486,"context_line":"        no_security_groups\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027),"},{"line_number":487,"context_line":"        port_security_enabled\u003ddict(type\u003d\u0027bool\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ac680c23_4ba08ce2","line":484,"updated":"2022-08-03 19:47:59.000000000","message":"Name is not actually required to create a port. I know idempotency becomes basically impossible without this, so I\u0027m fine with not supporting it. We should probably not somewhere that we don\u0027t allow this anymore.\n\nIt definitely should be required when state is absent.","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"318c92ac5cce209626d9d40ece976e3686621265","unresolved":true,"context_lines":[{"line_number":481,"context_line":"        fixed_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027dict\u0027),"},{"line_number":482,"context_line":"        is_admin_state_up\u003ddict(type\u003d\u0027bool\u0027, aliases\u003d[\u0027admin_state_up\u0027]),"},{"line_number":483,"context_line":"        mac_address\u003ddict(),"},{"line_number":484,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":485,"context_line":"        network\u003ddict(),"},{"line_number":486,"context_line":"        no_security_groups\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027),"},{"line_number":487,"context_line":"        port_security_enabled\u003ddict(type\u003d\u0027bool\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"be2e8d5e_a00e49fc","line":484,"in_reply_to":"ac680c23_4ba08ce2","updated":"2022-08-04 08:28:13.000000000","message":"True. We require name in most (all?) other resource modules, for the reason you gave, that idempotency is not possible without a name which we use for identifying resources. I moved the \"name is now required\" to the top of the commit msg and added more rationale. Better?","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6ba2a48ac86700f608055982019acd037c2787f8","unresolved":true,"context_lines":[{"line_number":510,"context_line":"                network_name_or_id, ignore_missing\u003dFalse)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        port \u003d None"},{"line_number":513,"context_line":"        if port_name_or_id:"},{"line_number":514,"context_line":"            port \u003d self.conn.network.find_port("},{"line_number":515,"context_line":"                port_name_or_id,"},{"line_number":516,"context_line":"                # use network id in query if network parameter was specified"}],"source_content_type":"text/x-python","patch_set":4,"id":"21b100e8_35a6ca5e","line":513,"updated":"2022-08-03 19:47:59.000000000","message":"Don\u0027t need this check if name is required.","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"318c92ac5cce209626d9d40ece976e3686621265","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                network_name_or_id, ignore_missing\u003dFalse)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        port \u003d None"},{"line_number":513,"context_line":"        if port_name_or_id:"},{"line_number":514,"context_line":"            port \u003d self.conn.network.find_port("},{"line_number":515,"context_line":"                port_name_or_id,"},{"line_number":516,"context_line":"                # use network id in query if network parameter was specified"}],"source_content_type":"text/x-python","patch_set":4,"id":"3d073a7e_3a78b990","line":513,"in_reply_to":"21b100e8_35a6ca5e","updated":"2022-08-04 08:28:13.000000000","message":"Done","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6ba2a48ac86700f608055982019acd037c2787f8","unresolved":true,"context_lines":[{"line_number":596,"context_line":"            if ((not self.params[k] and port[k])"},{"line_number":597,"context_line":"                or (self.params[k] and not port[k])"},{"line_number":598,"context_line":"                or (self.params[k] and port[k]"},{"line_number":599,"context_line":"                    and (OrderedDict(sorted(self.params[k].items()))"},{"line_number":600,"context_line":"                         !\u003d OrderedDict(sorted(port[k].items())))"},{"line_number":601,"context_line":"                    )):"},{"line_number":602,"context_line":"                port_attributes[k] \u003d self.params[k]"}],"source_content_type":"text/x-python","patch_set":4,"id":"30c28ea7_9f480917","line":599,"updated":"2022-08-03 19:47:59.000000000","message":"Why do we need the ordered dict instead of just straight comparing the dicts?","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"318c92ac5cce209626d9d40ece976e3686621265","unresolved":false,"context_lines":[{"line_number":596,"context_line":"            if ((not self.params[k] and port[k])"},{"line_number":597,"context_line":"                or (self.params[k] and not port[k])"},{"line_number":598,"context_line":"                or (self.params[k] and port[k]"},{"line_number":599,"context_line":"                    and (OrderedDict(sorted(self.params[k].items()))"},{"line_number":600,"context_line":"                         !\u003d OrderedDict(sorted(port[k].items())))"},{"line_number":601,"context_line":"                    )):"},{"line_number":602,"context_line":"                port_attributes[k] \u003d self.params[k]"}],"source_content_type":"text/x-python","patch_set":4,"id":"51974ea5_4613a9da","line":599,"in_reply_to":"30c28ea7_9f480917","updated":"2022-08-04 08:28:13.000000000","message":"Good question..\n\n\u003e Dictionaries compare equal if and only if they have the same (key, value) pairs (regardless of ordering).\n\nhttps://docs.python.org/3/library/stdtypes.html#dict\n\nReplaced all OrderedDicts with dicts.","commit_id":"1a056acf80116beb2128d2c1a747c0a3e7de9174"}]}
