)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28b90ca027c540e2cce2ce1b2c3bc4148b4b4f31","unresolved":false,"context_lines":[{"line_number":13,"context_line":"New method accepts service_proxy, resource_type, resource identifier"},{"line_number":14,"context_line":"(which may be empty), filters and also possibility to pass additional"},{"line_number":15,"context_line":"args into the _get and _list calls (for unpredicted special cases). With"},{"line_number":16,"context_line":"this all search_XXX functions can be finally announched deprecated."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I375c2b625698c4920211eb6e089a1b820755be84"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3cc331f2_2eb47859","line":16,"range":{"start_line":16,"start_character":45,"end_line":16,"end_character":55},"updated":"2022-09-30 10:19:41.000000000","message":"nit: announced (or drop it - \"finally deprecated\" makes sense)","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dde8dc79e9777977da9d71446343e77a4811d346","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Implement unified search_resources method"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously we had a lot of search_XXX calls in the cloud layer that we"},{"line_number":10,"context_line":"want to get rid of. Sadly those are used in the Ansible modules and"},{"line_number":11,"context_line":"require some replacement."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"New method accepts resource_type, resource identifier (which may be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ccdfd6e7_4050a8fb","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":19},"updated":"2022-10-12 10:19:54.000000000","message":"Why do we want to do this?","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"58ab07d48caac2ff541e8e60a23d471f0f994eda","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Implement unified search_resources method"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously we had a lot of search_XXX calls in the cloud layer that we"},{"line_number":10,"context_line":"want to get rid of. Sadly those are used in the Ansible modules and"},{"line_number":11,"context_line":"require some replacement."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"New method accepts resource_type, resource identifier (which may be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"507ac50a_69b71c1e","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":19},"in_reply_to":"ccdfd6e7_4050a8fb","updated":"2022-10-12 10:25:47.000000000","message":"because even https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/cloud/_network.py#L42 states same. Those are used only by ansible and require too much maintenance for no real benefit","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28b90ca027c540e2cce2ce1b2c3bc4148b4b4f31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4ef89bb2_606cf727","updated":"2022-09-30 10:19:41.000000000","message":"Can you add a release note? Also, some questions inline","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dde8dc79e9777977da9d71446343e77a4811d346","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0d962a47_ac5c6cfd","updated":"2022-10-12 10:19:54.000000000","message":"Comments from PS2 still stand","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"03b7b309_cf907a5c","updated":"2022-11-07 16:24:03.000000000","message":"I still don\u0027t really understand the need for this functionality, but you\u0027re clearly happy that it works and I can\u0027t see anything wrong with the code itself so lgtm","commit_id":"336c6475902e75e53b926602fae084285aa0b4a0"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"73d86c06f2ad4997b026d6bbdfb42d16216d9c19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ae6c95ca_c30e4b61","updated":"2022-11-18 17:07:41.000000000","message":"nit addressed","commit_id":"c5738dd6d02b2cc6cf6784f29bbfbb379becda1e"}],"openstack/cloud/openstackcloud.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28b90ca027c540e2cce2ce1b2c3bc4148b4b4f31","unresolved":true,"context_lines":[{"line_number":754,"context_line":"            return False"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    def search_resources("},{"line_number":757,"context_line":"            self,"},{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"167a01a0_6ee09443","line":757,"range":{"start_line":757,"start_character":8,"end_line":757,"end_character":12},"updated":"2022-09-30 10:19:41.000000000","message":"nit: over indented","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"58ab07d48caac2ff541e8e60a23d471f0f994eda","unresolved":true,"context_lines":[{"line_number":754,"context_line":"            return False"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    def search_resources("},{"line_number":757,"context_line":"            self,"},{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fcfd2158_068590aa","line":757,"range":{"start_line":757,"start_character":8,"end_line":757,"end_character":12},"in_reply_to":"167a01a0_6ee09443","updated":"2022-10-12 10:25:47.000000000","message":"right","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"73d86c06f2ad4997b026d6bbdfb42d16216d9c19","unresolved":false,"context_lines":[{"line_number":754,"context_line":"            return False"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    def search_resources("},{"line_number":757,"context_line":"            self,"},{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa8b244_56e4d7db","line":757,"range":{"start_line":757,"start_character":8,"end_line":757,"end_character":12},"in_reply_to":"fcfd2158_068590aa","updated":"2022-11-18 17:07:41.000000000","message":"Done","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":false,"context_lines":[{"line_number":754,"context_line":"            return False"},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    def search_resources("},{"line_number":757,"context_line":"            self,"},{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"a8500025_7e858413","line":757,"range":{"start_line":757,"start_character":8,"end_line":757,"end_character":12},"in_reply_to":"fcfd2158_068590aa","updated":"2022-11-07 16:24:03.000000000","message":"Done","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28b90ca027c540e2cce2ce1b2c3bc4148b4b4f31","unresolved":true,"context_lines":[{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"},{"line_number":761,"context_line":"            get_args\u003dNone,"},{"line_number":762,"context_line":"            get_kwargs\u003dNone,"},{"line_number":763,"context_line":"            list_args\u003dNone,"},{"line_number":764,"context_line":"            list_kwargs\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"59ecc9b4_06d0c31c","line":761,"updated":"2022-09-30 10:19:41.000000000","message":"Are these expected to be passed as positional arguments? If not, how about marking them as kwarg-only?\n\n  def search_resources(\n      self,\n      service_proxy,\n      resource_type,\n      name_or_id,\n      *,\n      get_args\u003dNone,\n      ...\n  ):","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"58ab07d48caac2ff541e8e60a23d471f0f994eda","unresolved":true,"context_lines":[{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"},{"line_number":761,"context_line":"            get_args\u003dNone,"},{"line_number":762,"context_line":"            get_kwargs\u003dNone,"},{"line_number":763,"context_line":"            list_args\u003dNone,"},{"line_number":764,"context_line":"            list_kwargs\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fe573897_47e086fe","line":761,"in_reply_to":"59ecc9b4_06d0c31c","updated":"2022-10-12 10:25:47.000000000","message":"actually here I want to build possibility to override args and kwargs of get and find calls individually (i.e. in get user might want to use different base_url, but not in list). And kwargs themselves are what is considered as filter.","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":true,"context_lines":[{"line_number":758,"context_line":"            service_proxy,"},{"line_number":759,"context_line":"            resource_type,"},{"line_number":760,"context_line":"            name_or_id,"},{"line_number":761,"context_line":"            get_args\u003dNone,"},{"line_number":762,"context_line":"            get_kwargs\u003dNone,"},{"line_number":763,"context_line":"            list_args\u003dNone,"},{"line_number":764,"context_line":"            list_kwargs\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"70d97ad1_95b57fd8","line":761,"in_reply_to":"fe573897_47e086fe","updated":"2022-11-07 16:24:03.000000000","message":"Okay. You could still use a kwarg-only argument though. This way it\u0027d be more explicit what you\u0027re doing. For example:\n\n  search_resources(\n      conn,\n      \u0027compute.Flavor\u0027,\n      \u0027m1.\u0027,\n      list_args\u003d{\u0027detailed\u0027: True},\n  )\n\nBut it\u0027s up to you, really.","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28b90ca027c540e2cce2ce1b2c3bc4148b4b4f31","unresolved":true,"context_lines":[{"line_number":810,"context_line":"            filters[\"name\"] \u003d name_or_id"},{"line_number":811,"context_line":"        list_kwargs.update(filters)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        return list(service_proxy._list("},{"line_number":814,"context_line":"            resource_type,"},{"line_number":815,"context_line":"            *list_args,"},{"line_number":816,"context_line":"            **list_kwargs"}],"source_content_type":"text/x-python","patch_set":1,"id":"eadae413_5f09c03e","line":813,"updated":"2022-09-30 10:19:41.000000000","message":"Why do we need to cast this instead of returning a generator? Couldn\u0027t the caller do this cast if they needed to?","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":false,"context_lines":[{"line_number":810,"context_line":"            filters[\"name\"] \u003d name_or_id"},{"line_number":811,"context_line":"        list_kwargs.update(filters)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        return list(service_proxy._list("},{"line_number":814,"context_line":"            resource_type,"},{"line_number":815,"context_line":"            *list_args,"},{"line_number":816,"context_line":"            **list_kwargs"}],"source_content_type":"text/x-python","patch_set":1,"id":"bd3a3fdc_74ab2931","line":813,"in_reply_to":"07a454ba_1fc34aca","updated":"2022-11-07 16:24:03.000000000","message":"Ack","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"58ab07d48caac2ff541e8e60a23d471f0f994eda","unresolved":true,"context_lines":[{"line_number":810,"context_line":"            filters[\"name\"] \u003d name_or_id"},{"line_number":811,"context_line":"        list_kwargs.update(filters)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        return list(service_proxy._list("},{"line_number":814,"context_line":"            resource_type,"},{"line_number":815,"context_line":"            *list_args,"},{"line_number":816,"context_line":"            **list_kwargs"}],"source_content_type":"text/x-python","patch_set":1,"id":"07a454ba_1fc34aca","line":813,"in_reply_to":"eadae413_5f09c03e","updated":"2022-10-12 10:25:47.000000000","message":"sadly now cloud layer is not returning generators and everywhere we explicitly cast. Just wanted at least on that keep compatibility","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dde8dc79e9777977da9d71446343e77a4811d346","unresolved":true,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.esource` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":3,"id":"5a4fe22e_84a6deaa","line":771,"updated":"2022-10-12 10:19:54.000000000","message":"This seems a bit weird. Why can\u0027t we pass the actual object? Better yet, why can\u0027t we implement a \u0027search_foo\u0027 method for each resource type like we have \u0027get_foo\u0027 and \u0027find_foo\u0027 methods?","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dde8dc79e9777977da9d71446343e77a4811d346","unresolved":true,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.esource` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":3,"id":"1e075844_18368d54","line":771,"range":{"start_line":771,"start_character":33,"end_line":771,"end_character":40},"updated":"2022-10-12 10:19:54.000000000","message":"resource","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.esource` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":3,"id":"bdf1b260_51667308","line":771,"range":{"start_line":771,"start_character":33,"end_line":771,"end_character":40},"in_reply_to":"1e075844_18368d54","updated":"2022-11-07 16:24:03.000000000","message":"Not done but moved so new comment","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1f9549e8b46f7d5162ca732670ab4f96ca6337a9","unresolved":true,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.esource` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":3,"id":"f8b77161_25b9438d","line":771,"in_reply_to":"4fc16fe3_99f3acce","updated":"2022-10-12 10:31:00.000000000","message":"atm we do not have search_XXX for all of the supported resources. And where we have them they are also not consistent. Ansible has a very specific usecase of having name_or_id and additional filters and expect one or multiple resources. This can be only achieved like implemented here by invoking get and list. But doing same work in every ansible module is also not a very useful way, so I came with this function. It can be placed to ansible base class itself, but that would also mean that all search_XXX functions are not used by anybody at all and we should drop them. With this function we could at least have a replacement working consistently for every resource","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"58ab07d48caac2ff541e8e60a23d471f0f994eda","unresolved":true,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.esource` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":3,"id":"4fc16fe3_99f3acce","line":771,"in_reply_to":"5a4fe22e_84a6deaa","updated":"2022-10-12 10:25:47.000000000","message":"Point is that once invoked from Ansible (or honestly from anywhere) requiring passing object (or better to say class) requires explicit knowing which class it really is. In most cases this is doable, but once few API versions are available it becomes tricky. Also it requires explicit import from the code (or having \"import openstack\") - that is for ansible modules too heavy. This is an attempt to make this easy to use","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.esource` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":3,"id":"c1f73606_e4e52d26","line":771,"in_reply_to":"f8b77161_25b9438d","updated":"2022-11-07 16:24:03.000000000","message":"Ack","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f258fb749e9678e2ecda6fa928fff9b011ba2c23","unresolved":true,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.service` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":4,"id":"7d4b5e57_cea9ab40","line":771,"range":{"start_line":771,"start_character":33,"end_line":771,"end_character":40},"updated":"2022-11-07 16:24:03.000000000","message":"This should read\n\n  service.resource\n\nno?","commit_id":"336c6475902e75e53b926602fae084285aa0b4a0"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"73d86c06f2ad4997b026d6bbdfb42d16216d9c19","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        Search resources matching certain conditions"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        :param str resource_type: String representation of the expected"},{"line_number":771,"context_line":"            resource as `service.service` (i.e. \"network.security_group\")."},{"line_number":772,"context_line":"        :param str name_or_id: Name or ID of the resource"},{"line_number":773,"context_line":"        :param list get_args: Optional args to be passed to the _get call."},{"line_number":774,"context_line":"        :param dict get_kwargs: Optional kwargs to be passed to the _get call."}],"source_content_type":"text/x-python","patch_set":4,"id":"fb474a1e_1c79e189","line":771,"range":{"start_line":771,"start_character":33,"end_line":771,"end_character":40},"in_reply_to":"7d4b5e57_cea9ab40","updated":"2022-11-18 17:07:41.000000000","message":"Done","commit_id":"336c6475902e75e53b926602fae084285aa0b4a0"}],"openstack/tests/unit/cloud/test_cloud.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28b90ca027c540e2cce2ce1b2c3bc4148b4b4f31","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"de029d5d_237cc5f8","line":1,"updated":"2022-09-30 10:19:41.000000000","message":"Shouldn\u0027t this file be called \u0027test_openstackcloud.py\u0027, given the name of the file it\u0027s testing?\n\nLater: I see we\u0027re not really following that practice of 1 test module per code module in the tests for the cloud layer. We should probably start doing this though?","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"73d86c06f2ad4997b026d6bbdfb42d16216d9c19","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"5284e543_e645212f","line":1,"in_reply_to":"de029d5d_237cc5f8","updated":"2022-11-18 17:07:41.000000000","message":"Done","commit_id":"3c6fed71c40e9a4d35ac4f08f982418f0ecc4a43"}],"openstack/tests/unit/cloud/test_openstackcloud.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dde8dc79e9777977da9d71446343e77a4811d346","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        foo \u003d resource.Body(\"foo\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(TestSearch, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        self.session \u003d proxy.Proxy(self.cloud)"},{"line_number":33,"context_line":"        self.session._sdk_connection \u003d self.cloud"}],"source_content_type":"text/x-python","patch_set":3,"id":"426e4134_fa5443a0","line":30,"range":{"start_line":30,"start_character":14,"end_line":30,"end_character":30},"updated":"2022-10-12 10:19:54.000000000","message":"nit: don\u0027t need this in Python 3","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"58ab07d48caac2ff541e8e60a23d471f0f994eda","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        foo \u003d resource.Body(\"foo\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(TestSearch, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        self.session \u003d proxy.Proxy(self.cloud)"},{"line_number":33,"context_line":"        self.session._sdk_connection \u003d self.cloud"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a9ab48e_643e8c08","line":30,"range":{"start_line":30,"start_character":14,"end_line":30,"end_character":30},"in_reply_to":"426e4134_fa5443a0","updated":"2022-10-12 10:25:47.000000000","message":"yeah, copy-pasta","commit_id":"6aabf148401550303c9f2cdd8c1bf1efdce20da6"}]}
