)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"10db2dd41ccf2b4048056e284b4298c860968f7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0c4c6913_ab0a4f51","updated":"2022-02-02 15:20:20.000000000","message":"TypeError: keypairs() takes 1 positional argument but 2 were given","commit_id":"3f7086f4d243ebedacad9b97b10849cf28499fa0"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"4ac29ba710ec5984b5bbcadab05b0d5afca516df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3d7ca640_ceab8366","updated":"2022-04-20 08:59:17.000000000","message":"wip","commit_id":"4dc6315c3ef22d9a7d2d32d9875a40bc426a1442"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8efda514375bf3d5198cd24a651411c0deb6fbb1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f13a1339_6c5f0aa0","updated":"2022-05-02 12:19:29.000000000","message":"Thank you, Ananya 😊 Some comments below ^^","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"fbf90cf9f0a6614309af903a97aedb5b3631ee3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"a52ef92e_69bd84d5","updated":"2022-05-18 16:35:38.000000000","message":"I see test in CI still fails:\n\nTASK [keypair : Ensure that list of keypairs contains single element] **********\n\n","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"775020f8dc3d82956a264169f0c5e586adf772f9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"19b0717c_9d078996","in_reply_to":"a52ef92e_69bd84d5","updated":"2022-05-23 12:21:45.000000000","message":"That is a strange error... what is going on here?","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"4aeeed8943b548d107ea90db9a5539f23d00d5c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"91f43983_5fd622b3","updated":"2022-06-23 12:34:11.000000000","message":"Nice refactoring and tests, thanks Ananya ☺️\n","commit_id":"595f7d1093164418e78a8b3f9c0f4f57d46de271"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"b2d271c59dc9670020fb33591a6121aed2d23e80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"1a397920_d80ecc0b","updated":"2022-06-17 16:11:38.000000000","message":"Thanks!","commit_id":"595f7d1093164418e78a8b3f9c0f4f57d46de271"}],"ci/roles/keypair/defaults/main.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"8d91ab04a2c54773206f7dae3c02624c23394b8a","unresolved":true,"context_lines":[{"line_number":7,"context_line":"  - name"},{"line_number":8,"context_line":"  - private_key"},{"line_number":9,"context_line":"  - public_key"},{"line_number":10,"context_line":"  - type\""},{"line_number":11,"context_line":"  - user_id"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"bd37beba_14b474d3","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":9},"updated":"2022-06-16 19:13:31.000000000","message":"wow, that was tricky one 😊","commit_id":"7237a13f8036a9d734e13137d7223c82a3167b3d"}],"ci/roles/keypair/tasks/main.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"8d91ab04a2c54773206f7dae3c02624c23394b8a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Create keypair (non-existing)"},{"line_number":3,"context_line":"  openstack.cloud.keypair:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""},{"line_number":5,"context_line":"     name: \"{{ keypair_name }}\""},{"line_number":6,"context_line":"     state: present"},{"line_number":7,"context_line":"  register:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"c2fcadf8_f4692e78","line":4,"range":{"start_line":4,"start_character":2,"end_line":4,"end_character":5},"updated":"2022-06-16 19:13:31.000000000","message":"let\u0027s make please same (and sane) indentation in this whole file, because it\u0027s 2, 3, 4 and what\u0027s not.\nUsually we use 2 spaces in yaml files here.","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"975158a149081745bcc6c5833ff4a36ea49bbf76","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Create keypair (non-existing)"},{"line_number":3,"context_line":"  openstack.cloud.keypair:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""},{"line_number":5,"context_line":"     name: \"{{ keypair_name }}\""},{"line_number":6,"context_line":"     state: present"},{"line_number":7,"context_line":"  register:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"e625e868_c35aa79e","line":4,"range":{"start_line":4,"start_character":2,"end_line":4,"end_character":5},"in_reply_to":"c2fcadf8_f4692e78","updated":"2022-06-16 19:13:48.000000000","message":"Done","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"8d91ab04a2c54773206f7dae3c02624c23394b8a","unresolved":true,"context_lines":[{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""},{"line_number":5,"context_line":"     name: \"{{ keypair_name }}\""},{"line_number":6,"context_line":"     state: present"},{"line_number":7,"context_line":"  register:"},{"line_number":8,"context_line":"    keypair"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"- name: Get list of keypairs"},{"line_number":11,"context_line":"  openstack.cloud.keypair_info:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"90d21dcb_28d50282","line":8,"range":{"start_line":7,"start_character":10,"end_line":8,"end_character":11},"updated":"2022-06-16 19:13:31.000000000","message":"it should be on same line","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"975158a149081745bcc6c5833ff4a36ea49bbf76","unresolved":false,"context_lines":[{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""},{"line_number":5,"context_line":"     name: \"{{ keypair_name }}\""},{"line_number":6,"context_line":"     state: present"},{"line_number":7,"context_line":"  register:"},{"line_number":8,"context_line":"    keypair"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"- name: Get list of keypairs"},{"line_number":11,"context_line":"  openstack.cloud.keypair_info:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"35e79138_b858c614","line":8,"range":{"start_line":7,"start_character":10,"end_line":8,"end_character":11},"in_reply_to":"90d21dcb_28d50282","updated":"2022-06-16 19:13:48.000000000","message":"Done","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"}],"plugins/modules/keypair_info.py":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f25e123e5681c98fc9fb5ddaa23c8e5a1e513383","unresolved":true,"context_lines":[{"line_number":136,"context_line":"            filters[\u0027marker\u0027] \u003d marker"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        result \u003d self.conn.compute.keypairs(name_or_id\u003dname,"},{"line_number":139,"context_line":"                                            filters\u003dfilters)"},{"line_number":140,"context_line":"        raws \u003d [raw if isinstance(raw, dict) else raw.to_dict()"},{"line_number":141,"context_line":"                for raw in result]"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1dcf025d_1c08344c","line":139,"range":{"start_line":139,"start_character":44,"end_line":139,"end_character":59},"updated":"2022-02-01 15:49:13.000000000","message":"please have a look at proxy resource, it doesn\u0027t have \"filters\" and have all parameters flatten. This is the most difference from cloud resource:\nhttps://github.com/openstack/openstacksdk/blob/215403731db17e14506d2d83b17afd6df6d257d4/openstack/compute/v2/_proxy.py#L581-L589\n\nI think it should be kind of **filters","commit_id":"35fc65c2f6ede3b4a9c7395bfebc99d7af122572"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"4b141494a2a62286b29d1e8612376371222c1e22","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            filters[\u0027marker\u0027] \u003d marker"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        result \u003d self.conn.compute.keypairs(name_or_id\u003dname,"},{"line_number":139,"context_line":"                                            filters\u003dfilters)"},{"line_number":140,"context_line":"        raws \u003d [raw if isinstance(raw, dict) else raw.to_dict()"},{"line_number":141,"context_line":"                for raw in result]"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f29041ef_dc360b2b","line":139,"range":{"start_line":139,"start_character":44,"end_line":139,"end_character":59},"in_reply_to":"1dcf025d_1c08344c","updated":"2022-02-02 13:47:10.000000000","message":"ack, tried to update in patchset 3","commit_id":"35fc65c2f6ede3b4a9c7395bfebc99d7af122572"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4ef2235e9573b7a61a3c755765e76c4d4d59f25c","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        data \u003d []"},{"line_number":130,"context_line":"        params[\u0027name\u0027] \u003d params"},{"line_number":131,"context_line":"        if user_id:"},{"line_number":132,"context_line":"            params[\u0027user_id\u0027] \u003d user_id"},{"line_number":133,"context_line":"        if limit:"}],"source_content_type":"text/x-python","patch_set":4,"id":"32dacbd8_6517d590","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":31},"updated":"2022-02-02 13:52:58.000000000","message":"\u003d name probably?","commit_id":"591c15b0e8243d9fdace0e3989c2b8d0710433df"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"7837966561d577fd2afe5b40af6e716eb80f9fe2","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        data \u003d []"},{"line_number":130,"context_line":"        params[\u0027name\u0027] \u003d params"},{"line_number":131,"context_line":"        if user_id:"},{"line_number":132,"context_line":"            params[\u0027user_id\u0027] \u003d user_id"},{"line_number":133,"context_line":"        if limit:"}],"source_content_type":"text/x-python","patch_set":4,"id":"a08775be_b74f8214","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":31},"in_reply_to":"32dacbd8_6517d590","updated":"2022-02-02 14:14:49.000000000","message":"lol, yeah :D","commit_id":"591c15b0e8243d9fdace0e3989c2b8d0710433df"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"0a1f886f24a522b40f661b085a21708dfdf6da5e","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        if marker:"},{"line_number":136,"context_line":"            params[\u0027marker\u0027] \u003d marker"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        result \u003d self.conn.compute.keypairs(params)"},{"line_number":139,"context_line":"        raws \u003d [raw if isinstance(raw, dict) else raw.to_dict()"},{"line_number":140,"context_line":"                for raw in result]"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dde80254_cbd03c4b","line":138,"range":{"start_line":138,"start_character":43,"end_line":138,"end_character":44},"updated":"2022-02-03 09:01:51.000000000","message":"**params","commit_id":"3f7086f4d243ebedacad9b97b10849cf28499fa0"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"e529375f8963a53ba165690bae0daf13f0468f5d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if marker:"},{"line_number":136,"context_line":"            params[\u0027marker\u0027] \u003d marker"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        result \u003d self.conn.compute.keypairs(params)"},{"line_number":139,"context_line":"        raws \u003d [raw if isinstance(raw, dict) else raw.to_dict()"},{"line_number":140,"context_line":"                for raw in result]"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"35e0c409_040fed49","line":138,"range":{"start_line":138,"start_character":43,"end_line":138,"end_character":44},"in_reply_to":"dde80254_cbd03c4b","updated":"2022-02-07 13:51:37.000000000","message":"facepalm... updated thanks!","commit_id":"3f7086f4d243ebedacad9b97b10849cf28499fa0"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"6513cd3bd34853c93cbe683dfceef3567cbbd5ea","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def run(self):"},{"line_number":123,"context_line":"        params \u003d {}"},{"line_number":124,"context_line":"        name \u003d self.params[\u0027name\u0027]"},{"line_number":125,"context_line":"        user_id \u003d self.params[\u0027user_id\u0027]"},{"line_number":126,"context_line":"        limit \u003d self.params[\u0027limit\u0027]"},{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"38752372_698c0b2b","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":34},"updated":"2022-02-07 18:43:51.000000000","message":"\"msg\": \"Invalid query params: name\"\n\nhttps://a320aff74ddf2d2e44b6-6c26b67c11fc06a040fd3a92715b9b9e.ssl.cf2.rackcdn.com/827274/6/check/ansible-collections-openstack-functional-devstack/b03d416/controller/logs/test_output_log.txt","commit_id":"4dc6315c3ef22d9a7d2d32d9875a40bc426a1442"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"d49171eaaaab4e1a31bd9e09fb6c4d1ad551b68d","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def run(self):"},{"line_number":123,"context_line":"        params \u003d {}"},{"line_number":124,"context_line":"        name \u003d self.params[\u0027name\u0027]"},{"line_number":125,"context_line":"        user_id \u003d self.params[\u0027user_id\u0027]"},{"line_number":126,"context_line":"        limit \u003d self.params[\u0027limit\u0027]"},{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fae16bf9_baaef265","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":34},"in_reply_to":"38752372_698c0b2b","updated":"2022-02-07 18:52:29.000000000","message":"Seems like it\u0027s not supported by nova, so better to use find_keypair from https://github.com/openstack/openstacksdk/blob/215403731db17e14506d2d83b17afd6df6d257d4/openstack/compute/v2/_proxy.py#L564-L579 if \"name\" is given, but keep in mind it returns not a list, but a single keypair\nIn other cases keypairs() should work (with user_id etc) and return a list","commit_id":"4dc6315c3ef22d9a7d2d32d9875a40bc426a1442"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"2ceb8db187082f8b124c252c83274efadadbf786","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def run(self):"},{"line_number":123,"context_line":"        params \u003d {}"},{"line_number":124,"context_line":"        name \u003d self.params[\u0027name\u0027]"},{"line_number":125,"context_line":"        user_id \u003d self.params[\u0027user_id\u0027]"},{"line_number":126,"context_line":"        limit \u003d self.params[\u0027limit\u0027]"},{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"93970d96_275fda9c","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":34},"in_reply_to":"fae16bf9_baaef265","updated":"2022-04-25 16:11:49.000000000","message":"Ack","commit_id":"4dc6315c3ef22d9a7d2d32d9875a40bc426a1442"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4c967f9374241ddb63599f748f096451e37a0eef","unresolved":true,"context_lines":[{"line_number":51,"context_line":"\u0027\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":54,"context_line":"openstack_keypairs:"},{"line_number":55,"context_line":"  description:"},{"line_number":56,"context_line":"    - Lists keypairs that are associated with the account."},{"line_number":57,"context_line":"  type: complex"}],"source_content_type":"text/x-python","patch_set":12,"id":"4e460e61_25fdcffa","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":18},"updated":"2022-04-27 08:05:09.000000000","message":"I think we need to rename it to \"keypairs\", without \"openstack_\" part","commit_id":"4428d7be48873d1d418192fb6b848822ad412696"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"212b407ca85c77c1ce828c3d6ada046ae7a75852","unresolved":false,"context_lines":[{"line_number":51,"context_line":"\u0027\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":54,"context_line":"openstack_keypairs:"},{"line_number":55,"context_line":"  description:"},{"line_number":56,"context_line":"    - Lists keypairs that are associated with the account."},{"line_number":57,"context_line":"  type: complex"}],"source_content_type":"text/x-python","patch_set":12,"id":"639689ec_a67cd98b","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":18},"in_reply_to":"4e460e61_25fdcffa","updated":"2022-04-29 08:50:26.000000000","message":"Ack","commit_id":"4428d7be48873d1d418192fb6b848822ad412696"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4c967f9374241ddb63599f748f096451e37a0eef","unresolved":true,"context_lines":[{"line_number":126,"context_line":"        limit \u003d self.params[\u0027limit\u0027]"},{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        if user_id:"},{"line_number":130,"context_line":"            params[\u0027user_id\u0027] \u003d user_id"},{"line_number":131,"context_line":"        if limit:"},{"line_number":132,"context_line":"            params[\u0027limit\u0027] \u003d limit"},{"line_number":133,"context_line":"        if marker:"},{"line_number":134,"context_line":"            params[\u0027marker\u0027] \u003d marker"},{"line_number":135,"context_line":"        if name:"},{"line_number":136,"context_line":"            keypair \u003d self.conn.compute.find_keypair(name)"},{"line_number":137,"context_line":"            result \u003d [keypair.to_dict(computed\u003dFalse)] if keypair else []"}],"source_content_type":"text/x-python","patch_set":12,"id":"a4ae3207_a60b7a1e","line":134,"range":{"start_line":129,"start_character":8,"end_line":134,"end_character":37},"updated":"2022-04-27 08:05:09.000000000","message":"can we maybe combine with lines above? Like:\n\n        if user_id:\n            params[\u0027user_id\u0027] \u003d self.params[\u0027user_id\u0027]\n\nCurrently we just move values from one variable to another","commit_id":"4428d7be48873d1d418192fb6b848822ad412696"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"212b407ca85c77c1ce828c3d6ada046ae7a75852","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        limit \u003d self.params[\u0027limit\u0027]"},{"line_number":127,"context_line":"        marker \u003d self.params[\u0027marker\u0027]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        if user_id:"},{"line_number":130,"context_line":"            params[\u0027user_id\u0027] \u003d user_id"},{"line_number":131,"context_line":"        if limit:"},{"line_number":132,"context_line":"            params[\u0027limit\u0027] \u003d limit"},{"line_number":133,"context_line":"        if marker:"},{"line_number":134,"context_line":"            params[\u0027marker\u0027] \u003d marker"},{"line_number":135,"context_line":"        if name:"},{"line_number":136,"context_line":"            keypair \u003d self.conn.compute.find_keypair(name)"},{"line_number":137,"context_line":"            result \u003d [keypair.to_dict(computed\u003dFalse)] if keypair else []"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a7a9790_2bb82124","line":134,"range":{"start_line":129,"start_character":8,"end_line":134,"end_character":37},"in_reply_to":"a4ae3207_a60b7a1e","updated":"2022-04-29 08:50:26.000000000","message":"Ack","commit_id":"4428d7be48873d1d418192fb6b848822ad412696"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4c967f9374241ddb63599f748f096451e37a0eef","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        if name:"},{"line_number":136,"context_line":"            keypair \u003d self.conn.compute.find_keypair(name)"},{"line_number":137,"context_line":"            result \u003d [keypair.to_dict(computed\u003dFalse)] if keypair else []"},{"line_number":138,"context_line":"            self.exit(changed\u003dFalse, openstack_keypairs\u003dresult)"},{"line_number":139,"context_line":"        else:"},{"line_number":140,"context_line":"            keypairs \u003d self.conn.compute.keypairs(**params)"},{"line_number":141,"context_line":"            result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"}],"source_content_type":"text/x-python","patch_set":12,"id":"af6ade50_fa59fcaa","line":138,"range":{"start_line":138,"start_character":12,"end_line":138,"end_character":63},"updated":"2022-04-27 08:05:09.000000000","message":"This is duplicate with line 142, can be taken out of \"if\"","commit_id":"4428d7be48873d1d418192fb6b848822ad412696"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"212b407ca85c77c1ce828c3d6ada046ae7a75852","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if name:"},{"line_number":136,"context_line":"            keypair \u003d self.conn.compute.find_keypair(name)"},{"line_number":137,"context_line":"            result \u003d [keypair.to_dict(computed\u003dFalse)] if keypair else []"},{"line_number":138,"context_line":"            self.exit(changed\u003dFalse, openstack_keypairs\u003dresult)"},{"line_number":139,"context_line":"        else:"},{"line_number":140,"context_line":"            keypairs \u003d self.conn.compute.keypairs(**params)"},{"line_number":141,"context_line":"            result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"}],"source_content_type":"text/x-python","patch_set":12,"id":"0abdea7d_291f63ce","line":138,"range":{"start_line":138,"start_character":12,"end_line":138,"end_character":63},"in_reply_to":"af6ade50_fa59fcaa","updated":"2022-04-29 08:50:26.000000000","message":"Ack","commit_id":"4428d7be48873d1d418192fb6b848822ad412696"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8efda514375bf3d5198cd24a651411c0deb6fbb1","unresolved":true,"context_lines":[{"line_number":50,"context_line":"  register: result"},{"line_number":51,"context_line":"\u0027\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":54,"context_line":"keypairs:"},{"line_number":55,"context_line":"  description:"},{"line_number":56,"context_line":"    - Lists keypairs that are associated with the account."}],"source_content_type":"text/x-python","patch_set":13,"id":"c50b7508_a6e7bce7","line":53,"updated":"2022-05-02 12:19:29.000000000","message":"Please add assertions on return values to tests.","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"516be8f737487d5357687e04597dec51de43a0c9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"  register: result"},{"line_number":51,"context_line":"\u0027\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":54,"context_line":"keypairs:"},{"line_number":55,"context_line":"  description:"},{"line_number":56,"context_line":"    - Lists keypairs that are associated with the account."}],"source_content_type":"text/x-python","patch_set":13,"id":"ec9efcb4_f03f13cc","line":53,"in_reply_to":"c50b7508_a6e7bce7","updated":"2022-05-05 08:12:22.000000000","message":"Done","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8efda514375bf3d5198cd24a651411c0deb6fbb1","unresolved":true,"context_lines":[{"line_number":54,"context_line":"keypairs:"},{"line_number":55,"context_line":"  description:"},{"line_number":56,"context_line":"    - Lists keypairs that are associated with the account."},{"line_number":57,"context_line":"  type: complex"},{"line_number":58,"context_line":"  returned: always"},{"line_number":59,"context_line":"  contains:"},{"line_number":60,"context_line":"    created_at:"}],"source_content_type":"text/x-python","patch_set":13,"id":"e1f424a2_82102b6b","line":57,"updated":"2022-05-02 12:19:29.000000000","message":"Please change to\n\n    type: list\n    elements: dict","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"516be8f737487d5357687e04597dec51de43a0c9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"keypairs:"},{"line_number":55,"context_line":"  description:"},{"line_number":56,"context_line":"    - Lists keypairs that are associated with the account."},{"line_number":57,"context_line":"  type: complex"},{"line_number":58,"context_line":"  returned: always"},{"line_number":59,"context_line":"  contains:"},{"line_number":60,"context_line":"    created_at:"}],"source_content_type":"text/x-python","patch_set":13,"id":"8fb9e772_a598618d","line":57,"in_reply_to":"e1f424a2_82102b6b","updated":"2022-05-05 08:12:22.000000000","message":"Done","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8efda514375bf3d5198cd24a651411c0deb6fbb1","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                params[\u0027limit\u0027] \u003d self.params[\u0027limit\u0027]"},{"line_number":133,"context_line":"            if self.params[\u0027marker\u0027]:"},{"line_number":134,"context_line":"                params[\u0027marker\u0027] \u003d self.params[\u0027marker\u0027]"},{"line_number":135,"context_line":"            keypairs \u003d self.conn.compute.keypairs(**params)"},{"line_number":136,"context_line":"            result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"},{"line_number":137,"context_line":"        self.exit(changed\u003dFalse, keypairs\u003dresult)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7145b60f_f160fb94","line":135,"updated":"2022-05-02 12:19:29.000000000","message":"Without having tested it, i think this will not work. Keypair only supports the user_id parameter by default [1]. But maybe you can get around that by changing this line to\n\n  keypairs \u003d self.conn.compute.keypairs(**params, allow_unknown_params\u003dFalse)\n\nBut please add a test to verify that it works.\n\nRef.:\n[1] https://github.com/openstack/openstacksdk/blob/master/openstack/compute/v2/keypair.py","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"460bd87bf190fafb91fb37b155fa9a43b8a9c318","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                params[\u0027limit\u0027] \u003d self.params[\u0027limit\u0027]"},{"line_number":133,"context_line":"            if self.params[\u0027marker\u0027]:"},{"line_number":134,"context_line":"                params[\u0027marker\u0027] \u003d self.params[\u0027marker\u0027]"},{"line_number":135,"context_line":"            keypairs \u003d self.conn.compute.keypairs(**params)"},{"line_number":136,"context_line":"            result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"},{"line_number":137,"context_line":"        self.exit(changed\u003dFalse, keypairs\u003dresult)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"b9e6fc28_e3e58fb8","line":135,"in_reply_to":"7145b60f_f160fb94","updated":"2022-05-10 13:24:40.000000000","message":"mAYBE WE CAN DO LIKE THIS: https://review.opendev.org/c/openstack/ansible-collections-openstack/+/827274/14..15/plugins/modules/keypair_info.py ?","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"194e9c5c751ec0f66edb57fff9ee26302663af83","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                params[\u0027limit\u0027] \u003d self.params[\u0027limit\u0027]"},{"line_number":133,"context_line":"            if self.params[\u0027marker\u0027]:"},{"line_number":134,"context_line":"                params[\u0027marker\u0027] \u003d self.params[\u0027marker\u0027]"},{"line_number":135,"context_line":"            keypairs \u003d self.conn.compute.keypairs(**params)"},{"line_number":136,"context_line":"            result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"},{"line_number":137,"context_line":"        self.exit(changed\u003dFalse, keypairs\u003dresult)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"e0aa95f0_63cf7bad","line":135,"in_reply_to":"b9e6fc28_e3e58fb8","updated":"2022-05-11 09:10:19.000000000","message":"Nice idea but does not work if argument name is an id. This should do:\n\n  name_or_id \u003d self.params[\u0027name\u0027]\n  filters \u003d {k: v for k, v in self.params.items() if v is not None}\n  # filtering by name breaks if \"name\" is an id\n  filters.pop(\"name\", None)\n  keypairs \u003d [raw.to_dict(computed\u003dFalse) for raw in\n              self.conn.search_keypairs(name_or_id, filters)]\n  self.exit(changed\u003dFalse, keypairs\u003dkeypairs)","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"7751bbf1cf2a8887a2c1f3f8f86f95fe54a65e98","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                params[\u0027limit\u0027] \u003d self.params[\u0027limit\u0027]"},{"line_number":133,"context_line":"            if self.params[\u0027marker\u0027]:"},{"line_number":134,"context_line":"                params[\u0027marker\u0027] \u003d self.params[\u0027marker\u0027]"},{"line_number":135,"context_line":"            keypairs \u003d self.conn.compute.keypairs(**params)"},{"line_number":136,"context_line":"            result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"},{"line_number":137,"context_line":"        self.exit(changed\u003dFalse, keypairs\u003dresult)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3f2c99e0_382de733","line":135,"in_reply_to":"e0aa95f0_63cf7bad","updated":"2022-05-11 14:54:55.000000000","message":"True! I did not notice this. Updated.","commit_id":"40e535f3ea79b2347dedffa337f829e6e036eae7"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"90ca3e25f66e045cd4d9b6621de334d8b89dcd9e","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":127,"context_line":"            keypair \u003d self.conn.compute.find_keypair(self.params[\u0027name\u0027])"},{"line_number":128,"context_line":"            result \u003d [keypair.to_dict(computed\u003dFalse)] if keypair else []"},{"line_number":129,"context_line":"        else:"},{"line_number":130,"context_line":"            if self.params[\u0027user_id\u0027]:"},{"line_number":131,"context_line":"                params[\u0027user_id\u0027] \u003d self.params[\u0027user_id\u0027]"},{"line_number":132,"context_line":"            if self.params[\u0027limit\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"eff63a4a_9a55a11b","line":129,"updated":"2022-05-09 13:17:01.000000000","message":"I would do a loop in self.params\nparams \u003d {k: v, for k, v in self.params.items() if v is not None}","commit_id":"832eb65f1c39fae13f3db43eb8512737c89c2cd6"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"1beb53d54c566710e85ff77af8fca3b260b41ec1","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        if self.params[\u0027name\u0027]:"},{"line_number":127,"context_line":"            keypair \u003d self.conn.compute.find_keypair(self.params[\u0027name\u0027])"},{"line_number":128,"context_line":"            result \u003d [keypair.to_dict(computed\u003dFalse)] if keypair else []"},{"line_number":129,"context_line":"        else:"},{"line_number":130,"context_line":"            if self.params[\u0027user_id\u0027]:"},{"line_number":131,"context_line":"                params[\u0027user_id\u0027] \u003d self.params[\u0027user_id\u0027]"},{"line_number":132,"context_line":"            if self.params[\u0027limit\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"c80dc3a3_d459ab92","line":129,"in_reply_to":"eff63a4a_9a55a11b","updated":"2022-05-10 13:23:39.000000000","message":"ACK","commit_id":"832eb65f1c39fae13f3db43eb8512737c89c2cd6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"fbf90cf9f0a6614309af903a97aedb5b3631ee3a","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        filters \u003d {k: v for k, v in self.params.items() if v is not None}"},{"line_number":125,"context_line":"        # filtering by name breaks if \"name\" is an id"},{"line_number":126,"context_line":"        filters.pop(\"name\", None)"},{"line_number":127,"context_line":"        keypairs \u003d self.conn.search_keypairs(name_or_id\u003dself.params[\u0027name\u0027],"},{"line_number":128,"context_line":"                                             filters\u003dfilters)"},{"line_number":129,"context_line":"        result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"},{"line_number":130,"context_line":"        self.exit(changed\u003dFalse, keypairs\u003dresult)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"d19dac56_f50481fa","line":128,"range":{"start_line":127,"start_character":19,"end_line":128,"end_character":61},"updated":"2022-05-18 16:35:38.000000000","message":"just curious, didn\u0027t you want to use proxy layer like? \n  self.conn.compute.keypairs(**filters, allow_unknown_params\u003dFalse)","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"775020f8dc3d82956a264169f0c5e586adf772f9","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        filters \u003d {k: v for k, v in self.params.items() if v is not None}"},{"line_number":125,"context_line":"        # filtering by name breaks if \"name\" is an id"},{"line_number":126,"context_line":"        filters.pop(\"name\", None)"},{"line_number":127,"context_line":"        keypairs \u003d self.conn.search_keypairs(name_or_id\u003dself.params[\u0027name\u0027],"},{"line_number":128,"context_line":"                                             filters\u003dfilters)"},{"line_number":129,"context_line":"        result \u003d [raw.to_dict(computed\u003dFalse) for raw in keypairs]"},{"line_number":130,"context_line":"        self.exit(changed\u003dFalse, keypairs\u003dresult)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"884515ac_eea2ded2","line":128,"range":{"start_line":127,"start_character":19,"end_line":128,"end_character":61},"in_reply_to":"d19dac56_f50481fa","updated":"2022-05-23 12:21:45.000000000","message":"Nope, search_keypairs() allows to pass filters which will be applied after retrieving the results from OpenStack API which self.conn.compute.keypairs() does not. In this particular case the benefit might be debatable but i would prefer to follow a clean pattern across *_info modules.\n\nallow_unknown_params\u003dFalse is not required because list_keypairs takes care of it.\nRef.: https://github.com/openstack/openstacksdk/blob/ba96fe850787edff38c053b8d1c2dfde401bb81c/openstack/cloud/_compute.py#L114","commit_id":"105a31775bfcec94e38bb7b210e0acea1f4b1835"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"4aeeed8943b548d107ea90db9a5539f23d00d5c0","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    )"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def run(self):"},{"line_number":124,"context_line":"        filters \u003d {k: self.params[k] for k in"},{"line_number":125,"context_line":"                   [\u0027user_id\u0027, \u0027name\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":126,"context_line":"                   if self.params[k] is not None}"},{"line_number":127,"context_line":"        keypairs \u003d self.conn.search_keypairs(name_or_id\u003dself.params[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"a46ad4a8_a1bf1929","line":124,"updated":"2022-06-23 12:34:11.000000000","message":"Adding \u0027name\u0027 to filters works here even if \u0027name\u0027 is an id because SSH keypairs in OpenStack have no IDs, only names. openstacksdk uses the keypair name as the id.\n\nRef.: https://opendev.org/openstack/openstacksdk/src/commit/af86313c83f631d212ffc0a14e4bf00a6d058582/openstack/compute/v2/keypair.py#L47","commit_id":"595f7d1093164418e78a8b3f9c0f4f57d46de271"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"2cac7828882071a665ba9909a27963733a54b427","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    )"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def run(self):"},{"line_number":124,"context_line":"        filters \u003d {k: self.params[k] for k in"},{"line_number":125,"context_line":"                   [\u0027user_id\u0027, \u0027name\u0027, \u0027limit\u0027, \u0027marker\u0027]"},{"line_number":126,"context_line":"                   if self.params[k] is not None}"},{"line_number":127,"context_line":"        keypairs \u003d self.conn.search_keypairs(name_or_id\u003dself.params[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"b64a442d_4587c03f","line":124,"in_reply_to":"a46ad4a8_a1bf1929","updated":"2022-06-23 12:34:53.000000000","message":"Verified here: https://review.opendev.org/c/openstack/ansible-collections-openstack/+/847299","commit_id":"595f7d1093164418e78a8b3f9c0f4f57d46de271"}]}
