)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"7ef13f4192215592bcdf5ba8be764b330196be8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1c010b9a_64aa292e","updated":"2022-06-27 13:57:39.000000000","message":"recheck","commit_id":"094407c6d59917a42e4a00f79972534e2c13a072"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"71c22e00c0c632ddf8d77a476a56ea0a1b21a2d3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"15475862_662bac5f","updated":"2022-08-08 11:46:47.000000000","message":"Thank you, Ananya 😊\n\nVoted -1 simply to mark this patch as \"requires more work\".\n\nSome thoughts:\n* Version checks are no longer necessary since we globally require openstacksdk \u003e\u003d0.99.0 anyway.\n\n* When you rename option names to the attribute names that openstacksdk uses, then you can replace most of the filters code with a for loop. It is also easier to use if both inputs and outputs of a module match. But add old option names as aliases to keep backward compatibility. This has patch for floating_ip_info has some ideas for how to write those loops: https://review.opendev.org/c/openstack/ansible-collections-openstack/+/828613\n\n* Some modules have branches with special handling when a name is given. We can drop that because in most (all?) modules we can simply pass the name as a query parameter. Behind the scenes openstacksdk is doing the same api calls anyway.\n\n* Some modules do not use \"name\" for resource names, e.g. port module had an attribute called \"port\" instead of \"name\". We rename those attributes to \"name\" to be consistent in our modules and because openstacksdk doing the same. But we add the old attribute as an alias to keep backward compatibility.\n\n* Replacing self.conn.get_* with self.conn.*.find_* functions allows us to specify a \"ignore_missing\u003dFalse\" parameter. That allows us to drop our self.fail_json() calls in our modules. Less code, less to maintain ;)\n\n* Some modules pass ignore_missing\u003dTrue to self.conn.*.find_* functions and then fail if the return value is None. Most often that does not make sense and is redundant code. Just switching True to False helps us to drop code.\n\n* When you come across a module attribute that has choices, always doubt the possible values. The module code was probably written long ago and thus the choices might be horrible outdated. Sometimes it makes sense to get rid of the choices because the choices are simply to narrow and might soon be outdated again.\n\n* Check old comments and see if they are still relevant.\n\n* Do sanity check argument_spec and module_kwargs. Some modules try to be clever and add checks to fail early instead of letting openstacksdk or OpenStack API handle incompatible arguments.\n\n* When you edit a patch, first rebase your patch on top of the current branch. Sometimes we replace code in all modules which might cause merge conflicts for you otherwise. For example, we dropped all options with default values from argument_spec such as \"required\u003dFalse\".\n\n* Do sanity check existing integration tests. For example, when a module is called, then often at least basic tests should be done but existing code is sometimes missing these checks.\n\n\n\nI am trying to improve my feedback, so please share what you think about the style of my review above.\n","commit_id":"b05259003560a1096172f5b3525bf4a38f6dd252"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"d34e5e47008c1987bb30bfeeab45e705989ad4e3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9692c4ab_2707e6bc","in_reply_to":"15475862_662bac5f","updated":"2022-08-09 10:05:10.000000000","message":"Ack for removing version check, loop for filters, replacing get with find and ignore missing false, removing choices.\n\nI could not figure out these two:\n- Some modules have branches with special handling when a name is given. We can drop that because in most (all?) modules we can simply pass the name as a query parameter. Behind the scenes openstacksdk is doing the same api calls anyway.\n- Some modules do not use \"name\" for resource names, e.g. port module had an attribute called \"port\" instead of \"name\". We rename those attributes to \"name\" to be consistent in our modules and because openstacksdk doing the same. But we add the old attribute as an alias to keep backward compatibility.\n\nDoes self.conn.network.security_group_rules(**filters) take care of rule, project and security group (because in this module we have branches for these 3)?","commit_id":"b05259003560a1096172f5b3525bf4a38f6dd252"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"532578655881fe9d793995638eb8e959306a2509","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"dbe32581_16a7fd8b","in_reply_to":"3dea6ed6_2a7a93dc","updated":"2022-09-20 08:55:05.000000000","message":"Thank you 😊 i think we got them all ^^","commit_id":"b05259003560a1096172f5b3525bf4a38f6dd252"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"4ececb73f0ec6bd5bcf5e0ae3e73adc7a5723e82","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bab48197_9b3c82a3","in_reply_to":"9692c4ab_2707e6bc","updated":"2022-08-09 13:05:04.000000000","message":"Cool! \n\nFor direction and ether_type/ethertype we can keep choices since it is very unlikely those to change anytime soon. Removing choices on protocol makes sense because those choices were too narrow.\n\n\u003e - Some modules have branches with special handling when a name is given. We can drop that because in most (all?) modules we can simply pass the name as a query parameter. Behind the scenes openstacksdk is doing the same api calls anyway.\n\nThe module branches off for module attribute \u0027rule\u0027 and exits early (it will exit in middle of run()). This whole branch is not necessary because we can simply pass the contents of \u0027rule\u0027 as a query parameter \u0027id\u0027 [1] to OpenStack API.\n\n\u003e - Some modules do not use \"name\" for resource names, e.g. port module had an attribute called \"port\" instead of \"name\". We rename those attributes to \"name\" to be consistent in our modules and because openstacksdk doing the same. But we add the old attribute as an alias to keep backward compatibility.\n\nFor this module we would rename \u0027rule\u0027 to \u0027name\u0027 in order to be consistent with other modules. [Actually security group rules do not have names, only ids, but openstacksdk also has this inaccuracy, e.g. allowing to search for security group rules by name_or_id in network.find_security_group_rule().]\n\n\u003e Does self.conn.network.security_group_rules(**filters) take care of rule, project and security group (because in this module we have branches for these 3)?\n\nFor project and security group we have to keep the special handling because have to resolve names to ids for both. But \u0027rule\u0027 we can simply pass as \u0027id\u0027 in filters [1].\n\n[1] https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/network/v2/security_group_rule.py#L30\n\nPlease check your argument_spec variable for options with default values, e.g. required\u003dFalse is not necessary.","commit_id":"b05259003560a1096172f5b3525bf4a38f6dd252"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"34ee65d93a32ecc4c10e39a5910b413467993a51","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"3dea6ed6_2a7a93dc","in_reply_to":"bab48197_9b3c82a3","updated":"2022-08-11 09:45:05.000000000","message":"ack for choices, removing rule branch and removing defaults from argument spec","commit_id":"b05259003560a1096172f5b3525bf4a38f6dd252"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"de83b3be2fd4ca296d0e00d847060bdf7795c756","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"10cc9de3_0caa4c20","updated":"2022-09-20 08:01:30.000000000","message":"Last two patchsets rebase this on top of master and drop changes to galaxy.yml.","commit_id":"551f8b05ac587041bc9c2b2762bcc41e76f4f506"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"a154ecf64397380dc79bd8cfd9489393c73c64a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"5457381b_58bd7153","updated":"2022-09-20 08:16:18.000000000","message":"last patchset removes default values for argument_spec","commit_id":"c3cd604a2708c9b250e29fd0f788e4b1217173f9"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f699ac25e02891f6e44ab8b61f21152f7730e7fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"77999feb_52bcbe49","updated":"2022-09-20 08:35:36.000000000","message":"Last patchset is mostly cosmetic","commit_id":"affe03a0da30ba9f2560381c5251e9ad525787e8"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"db95c8eb029328ac611630cdb5f9a7dbab1e7ad4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"6854f369_670806fe","updated":"2022-09-20 08:43:43.000000000","message":"Last patch is for consistency with other modules, might reduce some confusion with the initial module code.","commit_id":"29cb7d8cfdede236d7bf3dd13141c02a64474359"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f893510eeeb0d5a436677c3354f5d66d02da53ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"249a4973_a0c058d7","updated":"2022-09-20 08:56:25.000000000","message":"Great refactoring, Ananya! Let us wait for CI but i think this patch is done 😎","commit_id":"2b4b706f42fb5dda5c5a4f6babc4f369ecfcc6c7"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"716fa7739b6b9314fbbb44a747b6a904016dee11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ae5bc890_b67018aa","updated":"2022-09-20 08:53:43.000000000","message":"Latest patchset synchronized examples to the ones in security_group module, added \u0027name\u0027 attribute to RETURN and did some cosmetic changes.","commit_id":"2b4b706f42fb5dda5c5a4f6babc4f369ecfcc6c7"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"6adfbd75a9314028769feec6230cf6184329d090","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"2c793e7b_3c76123f","updated":"2022-09-20 14:25:54.000000000","message":"Thanks Jakob for the updates! Looks good now.","commit_id":"2b4b706f42fb5dda5c5a4f6babc4f369ecfcc6c7"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"465f88dba396e830b5ff7c69830c510b6b6a58cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"357d4e71_01d84590","updated":"2022-09-21 00:27:44.000000000","message":"Thanks for the patch!","commit_id":"fb0fb529b7b8753cef624002b376b56bac18bf1d"}],"ci/roles/security_group_rule_info/tasks/main.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3c360d52bbb60f8a0151b1e89263a121c4da7fdf","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: get all security group"},{"line_number":3,"context_line":"  openstack.cloud.security_group_rule_info:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"45fa6c1d_f949fa71","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":3},"updated":"2022-06-16 19:16:03.000000000","message":"Let\u0027s add a test with filter","commit_id":"f5300f740ac39b62513d83ad05c325bcd39d18fc"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"2cfb4ee08de8812570e2c8d3c216981f9f0a90b9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: get all security group"},{"line_number":3,"context_line":"  openstack.cloud.security_group_rule_info:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8d2c919d_add2e2f4","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":3},"in_reply_to":"45fa6c1d_f949fa71","updated":"2022-06-16 19:20:28.000000000","message":"This is not executed.\nAll security group rules tests are anyway in ci/roles/security_group, so maybe worth to expand them there.","commit_id":"f5300f740ac39b62513d83ad05c325bcd39d18fc"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"532578655881fe9d793995638eb8e959306a2509","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: get all security group"},{"line_number":3,"context_line":"  openstack.cloud.security_group_rule_info:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5b8ff54c_c64b490b","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":3},"in_reply_to":"8d2c919d_add2e2f4","updated":"2022-09-20 08:55:05.000000000","message":"Done","commit_id":"f5300f740ac39b62513d83ad05c325bcd39d18fc"}],"galaxy.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"ab04dd882136d996dd072eafaea47532811c75c0","unresolved":true,"context_lines":[{"line_number":34,"context_line":"  - ansible_collections_openstack.egg-info"},{"line_number":35,"context_line":"  - contrib"},{"line_number":36,"context_line":"  - changelogs"},{"line_number":37,"context_line":"version: 1.7.2-dev120"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"0dd1c0b2_4d7dc607","line":37,"range":{"start_line":37,"start_character":1,"end_line":37,"end_character":21},"updated":"2022-08-16 14:18:25.000000000","message":"it shouldn\u0027t change in the patch","commit_id":"9e3a1dd3758ae48e46e7fd1e114b5c002037c448"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"4d4f47ca2880890a55c82358d2738ab419851200","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  - ansible_collections_openstack.egg-info"},{"line_number":35,"context_line":"  - contrib"},{"line_number":36,"context_line":"  - changelogs"},{"line_number":37,"context_line":"version: 1.7.2-dev120"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"cdd60780_029ad1bc","line":37,"range":{"start_line":37,"start_character":1,"end_line":37,"end_character":21},"in_reply_to":"0dd1c0b2_4d7dc607","updated":"2022-09-06 11:48:37.000000000","message":"Done","commit_id":"9e3a1dd3758ae48e46e7fd1e114b5c002037c448"}],"plugins/modules/security_group_rule_info.py":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"2cfb4ee08de8812570e2c8d3c216981f9f0a90b9","unresolved":true,"context_lines":[{"line_number":105,"context_line":"  elements: dict"},{"line_number":106,"context_line":"  returned: On Success."},{"line_number":107,"context_line":"  contains:"},{"line_number":108,"context_line":"    id:"},{"line_number":109,"context_line":"      description: Unique rule UUID."},{"line_number":110,"context_line":"      type: str"},{"line_number":111,"context_line":"    description:"},{"line_number":112,"context_line":"      description: Human-readable description of the resource."},{"line_number":113,"context_line":"      type: str"},{"line_number":114,"context_line":"      sample: \u0027My description.\u0027"},{"line_number":115,"context_line":"    direction:"},{"line_number":116,"context_line":"      description: The direction in which the security group rule is applied."},{"line_number":117,"context_line":"      type: str"},{"line_number":118,"context_line":"      sample: \u0027egress\u0027"},{"line_number":119,"context_line":"    ethertype:"},{"line_number":120,"context_line":"      description: One of IPv4 or IPv6."},{"line_number":121,"context_line":"      type: str"},{"line_number":122,"context_line":"      sample: \u0027IPv4\u0027"},{"line_number":123,"context_line":"    port_range_min:"},{"line_number":124,"context_line":"      description: The minimum port number in the range that is matched by"},{"line_number":125,"context_line":"                   the security group rule."},{"line_number":126,"context_line":"      type: int"},{"line_number":127,"context_line":"      sample: 8000"},{"line_number":128,"context_line":"    port_range_max:"},{"line_number":129,"context_line":"      description: The maximum port number in the range that is matched by"},{"line_number":130,"context_line":"                  the security group rule."},{"line_number":131,"context_line":"      type: int"},{"line_number":132,"context_line":"      sample: 8000"},{"line_number":133,"context_line":"    project:"},{"line_number":134,"context_line":"      description:"},{"line_number":135,"context_line":"        - Unique ID of the project."},{"line_number":136,"context_line":"      type: str"},{"line_number":137,"context_line":"      sample: \u002716d53a84a13b49529d2e2c3646691123\u0027"},{"line_number":138,"context_line":"    protocol:"},{"line_number":139,"context_line":"      description: The protocol that is matched by the security group rule."},{"line_number":140,"context_line":"      type: str"},{"line_number":141,"context_line":"      sample: \u0027tcp\u0027"},{"line_number":142,"context_line":"    remote_ip_prefix:"},{"line_number":143,"context_line":"      description: The remote IP prefix to be associated with this security group rule."},{"line_number":144,"context_line":"      type: str"},{"line_number":145,"context_line":"      sample: \u00270.0.0.0/0\u0027"},{"line_number":146,"context_line":"    security_group_id:"},{"line_number":147,"context_line":"      description: The security group ID to associate with this security group rule."},{"line_number":148,"context_line":"      type: str"},{"line_number":149,"context_line":"      sample: \u0027729b9660-a20a-41fe-bae6-ed8fa7f69123\u0027"},{"line_number":150,"context_line":"\u0027\u0027\u0027"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"from ansible_collections.openstack.cloud.plugins.module_utils.openstack import ("}],"source_content_type":"text/x-python","patch_set":4,"id":"34582a92_e9466f7d","line":149,"range":{"start_line":108,"start_character":3,"end_line":149,"end_character":52},"updated":"2022-06-16 19:20:28.000000000","message":"This is not what returned, should match tests as well.","commit_id":"f5300f740ac39b62513d83ad05c325bcd39d18fc"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"532578655881fe9d793995638eb8e959306a2509","unresolved":false,"context_lines":[{"line_number":105,"context_line":"  elements: dict"},{"line_number":106,"context_line":"  returned: On Success."},{"line_number":107,"context_line":"  contains:"},{"line_number":108,"context_line":"    id:"},{"line_number":109,"context_line":"      description: Unique rule UUID."},{"line_number":110,"context_line":"      type: str"},{"line_number":111,"context_line":"    description:"},{"line_number":112,"context_line":"      description: Human-readable description of the resource."},{"line_number":113,"context_line":"      type: str"},{"line_number":114,"context_line":"      sample: \u0027My description.\u0027"},{"line_number":115,"context_line":"    direction:"},{"line_number":116,"context_line":"      description: The direction in which the security group rule is applied."},{"line_number":117,"context_line":"      type: str"},{"line_number":118,"context_line":"      sample: \u0027egress\u0027"},{"line_number":119,"context_line":"    ethertype:"},{"line_number":120,"context_line":"      description: One of IPv4 or IPv6."},{"line_number":121,"context_line":"      type: str"},{"line_number":122,"context_line":"      sample: \u0027IPv4\u0027"},{"line_number":123,"context_line":"    port_range_min:"},{"line_number":124,"context_line":"      description: The minimum port number in the range that is matched by"},{"line_number":125,"context_line":"                   the security group rule."},{"line_number":126,"context_line":"      type: int"},{"line_number":127,"context_line":"      sample: 8000"},{"line_number":128,"context_line":"    port_range_max:"},{"line_number":129,"context_line":"      description: The maximum port number in the range that is matched by"},{"line_number":130,"context_line":"                  the security group rule."},{"line_number":131,"context_line":"      type: int"},{"line_number":132,"context_line":"      sample: 8000"},{"line_number":133,"context_line":"    project:"},{"line_number":134,"context_line":"      description:"},{"line_number":135,"context_line":"        - Unique ID of the project."},{"line_number":136,"context_line":"      type: str"},{"line_number":137,"context_line":"      sample: \u002716d53a84a13b49529d2e2c3646691123\u0027"},{"line_number":138,"context_line":"    protocol:"},{"line_number":139,"context_line":"      description: The protocol that is matched by the security group rule."},{"line_number":140,"context_line":"      type: str"},{"line_number":141,"context_line":"      sample: \u0027tcp\u0027"},{"line_number":142,"context_line":"    remote_ip_prefix:"},{"line_number":143,"context_line":"      description: The remote IP prefix to be associated with this security group rule."},{"line_number":144,"context_line":"      type: str"},{"line_number":145,"context_line":"      sample: \u00270.0.0.0/0\u0027"},{"line_number":146,"context_line":"    security_group_id:"},{"line_number":147,"context_line":"      description: The security group ID to associate with this security group rule."},{"line_number":148,"context_line":"      type: str"},{"line_number":149,"context_line":"      sample: \u0027729b9660-a20a-41fe-bae6-ed8fa7f69123\u0027"},{"line_number":150,"context_line":"\u0027\u0027\u0027"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"from ansible_collections.openstack.cloud.plugins.module_utils.openstack import ("}],"source_content_type":"text/x-python","patch_set":4,"id":"57bbfde6_39092061","line":149,"range":{"start_line":108,"start_character":3,"end_line":149,"end_character":52},"in_reply_to":"34582a92_e9466f7d","updated":"2022-09-20 08:55:05.000000000","message":"Done","commit_id":"f5300f740ac39b62513d83ad05c325bcd39d18fc"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"4b5c91f082bbe51a32a1df25a895cd5147d26f36","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            if sec_rule is None:"},{"line_number":230,"context_line":"                self.exit(changed\u003dchanged, security_group_rules\u003d[])"},{"line_number":231,"context_line":"            self.exit(changed\u003dchanged,"},{"line_number":232,"context_line":"                      security_group_rules\u003dsec_rule.to_dict())"},{"line_number":233,"context_line":"            # query parameter id is currently not supported"},{"line_number":234,"context_line":"            # PR is open for that."},{"line_number":235,"context_line":"            # filters[\u0027id] \u003d sec_rule.id"}],"source_content_type":"text/x-python","patch_set":13,"id":"6239f157_67428bc9","line":232,"updated":"2022-08-03 09:05:55.000000000","message":"Missing computed\u003dFalse here","commit_id":"8e9547e6b13e45e1f74a9da330b321849faab87b"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"ed4a9b7f7f6fb738d47e5283f18f621650efff3a","unresolved":true,"context_lines":[{"line_number":229,"context_line":"            if sec_rule is None:"},{"line_number":230,"context_line":"                self.exit(changed\u003dchanged, security_group_rules\u003d[])"},{"line_number":231,"context_line":"            self.exit(changed\u003dchanged,"},{"line_number":232,"context_line":"                      security_group_rules\u003dsec_rule.to_dict())"},{"line_number":233,"context_line":"            # query parameter id is currently not supported"},{"line_number":234,"context_line":"            # PR is open for that."},{"line_number":235,"context_line":"            # filters[\u0027id] \u003d sec_rule.id"}],"source_content_type":"text/x-python","patch_set":13,"id":"cebc63b3_f8499a91","line":232,"in_reply_to":"6239f157_67428bc9","updated":"2022-08-04 09:13:34.000000000","message":"yep, still need computed\u003dFalse","commit_id":"8e9547e6b13e45e1f74a9da330b321849faab87b"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"8e7b62646c05a1c1e368622762739f61ca11ce55","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            if sec_rule is None:"},{"line_number":230,"context_line":"                self.exit(changed\u003dchanged, security_group_rules\u003d[])"},{"line_number":231,"context_line":"            self.exit(changed\u003dchanged,"},{"line_number":232,"context_line":"                      security_group_rules\u003dsec_rule.to_dict())"},{"line_number":233,"context_line":"            # query parameter id is currently not supported"},{"line_number":234,"context_line":"            # PR is open for that."},{"line_number":235,"context_line":"            # filters[\u0027id] \u003d sec_rule.id"}],"source_content_type":"text/x-python","patch_set":13,"id":"e5524d2e_496bc6b8","line":232,"in_reply_to":"cebc63b3_f8499a91","updated":"2022-08-08 08:55:55.000000000","message":"Done","commit_id":"8e9547e6b13e45e1f74a9da330b321849faab87b"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"a6ad9994a9f6c65d1cca397b4bf9e334853700e5","unresolved":false,"context_lines":[{"line_number":105,"context_line":"  elements: dict"},{"line_number":106,"context_line":"  returned: On Success."},{"line_number":107,"context_line":"  contains:"},{"line_number":108,"context_line":"    id:"},{"line_number":109,"context_line":"      description: Unique rule UUID."},{"line_number":110,"context_line":"      type: str"},{"line_number":111,"context_line":"    created_at:"}],"source_content_type":"text/x-python","patch_set":14,"id":"c2ecbb3a_7862960d","line":108,"updated":"2022-08-08 09:17:25.000000000","message":"id is out of alphabetic order","commit_id":"b05259003560a1096172f5b3525bf4a38f6dd252"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"ab04dd882136d996dd072eafaea47532811c75c0","unresolved":true,"context_lines":[{"line_number":180,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":181,"context_line":"        direction\u003ddict(type\u003d\u0027str\u0027, choices\u003d[\u0027egress\u0027, \u0027ingress\u0027]),"},{"line_number":182,"context_line":"        ethertype\u003ddict(type\u003d\u0027str\u0027, choices\u003d[\u0027IPv4\u0027, \u0027IPv6\u0027]),"},{"line_number":183,"context_line":"        port_range_min\u003ddict(type\u003d\u0027int\u0027, min_ver\u003d\"0.32.0\"),"},{"line_number":184,"context_line":"        port_range_max\u003ddict(type\u003d\u0027int\u0027, min_ver\u003d\"0.32.0\"),"},{"line_number":185,"context_line":"        project\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":186,"context_line":"        protocol\u003ddict(type\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"8eee29a9_ef7f2692","line":183,"range":{"start_line":183,"start_character":40,"end_line":183,"end_character":56},"updated":"2022-08-16 14:18:25.000000000","message":"I think we can delete all \"min_ver\" or \"max_ver\".","commit_id":"9e3a1dd3758ae48e46e7fd1e114b5c002037c448"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"4d4f47ca2880890a55c82358d2738ab419851200","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":181,"context_line":"        direction\u003ddict(type\u003d\u0027str\u0027, choices\u003d[\u0027egress\u0027, \u0027ingress\u0027]),"},{"line_number":182,"context_line":"        ethertype\u003ddict(type\u003d\u0027str\u0027, choices\u003d[\u0027IPv4\u0027, \u0027IPv6\u0027]),"},{"line_number":183,"context_line":"        port_range_min\u003ddict(type\u003d\u0027int\u0027, min_ver\u003d\"0.32.0\"),"},{"line_number":184,"context_line":"        port_range_max\u003ddict(type\u003d\u0027int\u0027, min_ver\u003d\"0.32.0\"),"},{"line_number":185,"context_line":"        project\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":186,"context_line":"        protocol\u003ddict(type\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"3754eae3_35dfa0e2","line":183,"range":{"start_line":183,"start_character":40,"end_line":183,"end_character":56},"in_reply_to":"8eee29a9_ef7f2692","updated":"2022-09-06 11:48:37.000000000","message":"Done","commit_id":"9e3a1dd3758ae48e46e7fd1e114b5c002037c448"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"ab04dd882136d996dd072eafaea47532811c75c0","unresolved":true,"context_lines":[{"line_number":216,"context_line":"        if self.params[\u0027security_group\u0027]:"},{"line_number":217,"context_line":"            sec_grp \u003d self.conn.network.find_security_group("},{"line_number":218,"context_line":"                name_or_id\u003dself.params[\u0027security_group\u0027],"},{"line_number":219,"context_line":"                ignore_missing\u003dFalse)"},{"line_number":220,"context_line":"            filters[\u0027security_group_id\u0027] \u003d sec_grp.id"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        for item in self.conn.network.security_group_rules(**filters):"}],"source_content_type":"text/x-python","patch_set":19,"id":"77f25d1b_6d378c0c","line":219,"range":{"start_line":219,"start_character":31,"end_line":219,"end_character":36},"updated":"2022-08-16 14:18:25.000000000","message":"From openstacksdk:\n            :param bool ignore_missing: When set to ``False``\n            :class:`~openstack.exceptions.ResourceNotFound` will be\n            raised when the resource does not exist.\n            \nIf we set to False and don\u0027t catch it with try/except, the module will crash. So better to use ignore_missing\u003dTrue\nI see from previous comments Jakob recommends it to be \"False\", let\u0027s discuss it in our weekly meeting.","commit_id":"9e3a1dd3758ae48e46e7fd1e114b5c002037c448"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"0940948ba447df29a316c476cfb005f5ca8aa04c","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        if self.params[\u0027security_group\u0027]:"},{"line_number":217,"context_line":"            sec_grp \u003d self.conn.network.find_security_group("},{"line_number":218,"context_line":"                name_or_id\u003dself.params[\u0027security_group\u0027],"},{"line_number":219,"context_line":"                ignore_missing\u003dFalse)"},{"line_number":220,"context_line":"            filters[\u0027security_group_id\u0027] \u003d sec_grp.id"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        for item in self.conn.network.security_group_rules(**filters):"}],"source_content_type":"text/x-python","patch_set":19,"id":"817bb799_4ddba4bb","line":219,"range":{"start_line":219,"start_character":31,"end_line":219,"end_character":36},"in_reply_to":"77f25d1b_6d378c0c","updated":"2022-09-20 08:20:31.000000000","message":"As discussed in our meeting ignore_missing\u003dFalse is what we want because\n(a) \"crashing\" is how the module behaved previously and\n(b) openstacksdk will provide a reasonable error message.","commit_id":"9e3a1dd3758ae48e46e7fd1e114b5c002037c448"}]}
