)]}'
{"nova/virt/ironic/driver.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e7a75ac489b3b779cc4d34a3cd46775ae847123b","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        node_list \u003d []"},{"line_number":639,"context_line":"        try:"},{"line_number":640,"context_line":"            node_list \u003d self.ironicconn.nodes(**kwargs)"},{"line_number":641,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":642,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":643,"context_line":"                      \"Error: %s\", e)"},{"line_number":644,"context_line":"            raise exception.VirtDriverNotReady()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fb8cfa7_c5b7c4f4","line":641,"range":{"start_line":641,"start_character":15,"end_line":641,"end_character":43},"updated":"2019-06-13 12:01:34.000000000","message":"nit: I\u0027d catch a generic SDKException, I\u0027m not sure this one will be raised (why would it?)","commit_id":"b59d3056f207f5ab9128324e3eb3396a268a1cfc"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"dca398ea13eced6535784f0a9913b765b4b41649","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        node_list \u003d []"},{"line_number":639,"context_line":"        try:"},{"line_number":640,"context_line":"            node_list \u003d self.ironicconn.nodes(**kwargs)"},{"line_number":641,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":642,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":643,"context_line":"                      \"Error: %s\", e)"},{"line_number":644,"context_line":"            raise exception.VirtDriverNotReady()"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_ae5e660f","line":641,"range":{"start_line":641,"start_character":15,"end_line":641,"end_character":43},"in_reply_to":"9fb8cfa7_c5b7c4f4","updated":"2019-07-14 01:20:17.000000000","message":"+1","commit_id":"b59d3056f207f5ab9128324e3eb3396a268a1cfc"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"dca398ea13eced6535784f0a9913b765b4b41649","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":639,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":640,"context_line":"                      \"Error: %s\", e)"},{"line_number":641,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":642,"context_line":"        except Exception as e:"},{"line_number":643,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""},{"line_number":644,"context_line":"                      \"list of nodes from the Ironic inventory. Error: %s\", e)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_ce6ba2b4","line":641,"range":{"start_line":641,"start_character":18,"end_line":641,"end_character":46},"updated":"2019-07-14 01:20:17.000000000","message":"nit: L638 except an InvalidResourceQuery, VirtDriverNotReady seems strange here.","commit_id":"2a51386a099d86de610bf0179e344f3dde3fcf13"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b6b57b0faa994937d5178342dc0c3097728074e2","unresolved":false,"context_lines":[{"line_number":764,"context_line":"        node_cache \u003d {}"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        def _get_node_list(**kwargs):"},{"line_number":767,"context_line":"            return self._get_node_list(fields\u003d_NODE_FIELDS, limit\u003d0, **kwargs)"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"        # NOTE(jroll) if partition_key is set, we need to limit nodes that"},{"line_number":770,"context_line":"        # can be managed to nodes that have a matching conductor_group"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_04900795","side":"PARENT","line":767,"range":{"start_line":767,"start_character":60,"end_line":767,"end_character":68},"updated":"2019-08-12 10:40:39.000000000","message":"I would love a note justifying this change in the git commit message, if possible. I assume this is fine, but it seems worth a comment.","commit_id":"a8b40ec664be8faea5bbfa2846f946fbb302f641"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"6a72989c1315ff4dc341a05b52db08cc8cc77877","unresolved":false,"context_lines":[{"line_number":764,"context_line":"        node_cache \u003d {}"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        def _get_node_list(**kwargs):"},{"line_number":767,"context_line":"            return self._get_node_list(fields\u003d_NODE_FIELDS, limit\u003d0, **kwargs)"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"        # NOTE(jroll) if partition_key is set, we need to limit nodes that"},{"line_number":770,"context_line":"        # can be managed to nodes that have a matching conductor_group"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_32b6978c","side":"PARENT","line":767,"range":{"start_line":767,"start_character":60,"end_line":767,"end_character":68},"in_reply_to":"7faddb67_04900795","updated":"2019-08-13 04:27:37.000000000","message":"Noted. This is because the SDK provides a generator that handles paging transparently.","commit_id":"a8b40ec664be8faea5bbfa2846f946fbb302f641"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b6b57b0faa994937d5178342dc0c3097728074e2","unresolved":false,"context_lines":[{"line_number":217,"context_line":"           actually UUID\u0027s."},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        node \u003d self.ironicconn.get_node(node_id)"},{"line_number":220,"context_line":"        # TODO(dustinc): Make consumers use the right fields and remove this"},{"line_number":221,"context_line":"        node.uuid \u003d node.id"},{"line_number":222,"context_line":"        node.instance_uuid \u003d node.instance_id"},{"line_number":223,"context_line":"        node.maintenance \u003d node.is_maintenance"},{"line_number":224,"context_line":"        return node"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def _validate_instance_and_node(self, instance):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_44c4bf92","line":223,"range":{"start_line":220,"start_character":0,"end_line":223,"end_character":46},"updated":"2019-08-12 10:40:39.000000000","message":"I know its a temp workaround, but is seems odd we don\u0027t share code between here an the list method.","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5635c63222248c4685153a26b15f6be50612f838","unresolved":false,"context_lines":[{"line_number":641,"context_line":"        node_list \u003d []"},{"line_number":642,"context_line":"        try:"},{"line_number":643,"context_line":"            node_list \u003d self.ironicconn.nodes(**kwargs)"},{"line_number":644,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":645,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":646,"context_line":"                      \"Error: %s\", e)"},{"line_number":647,"context_line":"            raise exception.VirtDriverNotReady()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_9e68e387","line":644,"range":{"start_line":644,"start_character":0,"end_line":644,"end_character":49},"updated":"2019-08-09 10:30:45.000000000","message":"Checks out [1]\n\n[1] https://github.com/openstack/openstacksdk/blob/1a4b61d51dfcf7666a32d1323c9e70e1706fa98e/openstack/baremetal/v1/_common.py#L79-L80","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b6b57b0faa994937d5178342dc0c3097728074e2","unresolved":false,"context_lines":[{"line_number":651,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":652,"context_line":"        # TODO(dustinc): Use correct values in consumers and remove this"},{"line_number":653,"context_line":"        for n in node_list:"},{"line_number":654,"context_line":"            if hasattr(n, \"id\"):"},{"line_number":655,"context_line":"                n.uuid \u003d n.id"},{"line_number":656,"context_line":"            if hasattr(n, \"instance_id\"):"},{"line_number":657,"context_line":"                n.instance_uuid \u003d n.instance_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_04e56738","line":654,"updated":"2019-08-12 10:40:39.000000000","message":"When doesn\u0027t it have this attribute? surely these are all required? I am missing something I think.\n\nWhy don\u0027t we share code with above?","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"6a72989c1315ff4dc341a05b52db08cc8cc77877","unresolved":false,"context_lines":[{"line_number":651,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":652,"context_line":"        # TODO(dustinc): Use correct values in consumers and remove this"},{"line_number":653,"context_line":"        for n in node_list:"},{"line_number":654,"context_line":"            if hasattr(n, \"id\"):"},{"line_number":655,"context_line":"                n.uuid \u003d n.id"},{"line_number":656,"context_line":"            if hasattr(n, \"instance_id\"):"},{"line_number":657,"context_line":"                n.instance_uuid \u003d n.instance_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_d2be23ad","line":654,"in_reply_to":"7faddb67_04e56738","updated":"2019-08-13 04:27:37.000000000","message":"list_instances() uses this with a field filter that does not include all of these fields. It is a bit ugly but I couldn\u0027t think of a better way to handle it. Eventually this will go away completely.","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"6a72989c1315ff4dc341a05b52db08cc8cc77877","unresolved":false,"context_lines":[{"line_number":668,"context_line":"        \"\"\""},{"line_number":669,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":670,"context_line":"        # pagination until there\u0027re no more values to be returned."},{"line_number":671,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":672,"context_line":"                                        fields\u003d[\u0027instance_id\u0027])"},{"line_number":673,"context_line":"        context \u003d nova_context.get_admin_context()"},{"line_number":674,"context_line":"        return [objects.Instance.get_by_uuid(context, i.instance_id).name"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_b24607c0","line":671,"updated":"2019-08-13 04:27:37.000000000","message":"Here is an example usage without those fields.","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7c98c26d74a360e9ba115e18071b5439caa30353","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            node_list \u003d self.ironic_connection.nodes(**kwargs)"},{"line_number":644,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":645,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":646,"context_line":"                      \"Error: %s\", e)"},{"line_number":647,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":648,"context_line":"        except Exception as e:"},{"line_number":649,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_f361b73a","line":646,"range":{"start_line":646,"start_character":35,"end_line":646,"end_character":36},"updated":"2019-08-15 02:20:09.000000000","message":"nit:s/e/six.text_type(e)","commit_id":"15d49be9ebf70041945fba5b8db15e995962a661"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"a44b59b901bdb0f75b37787f2e33053c53ef8c1e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            node_list \u003d self.ironic_connection.nodes(**kwargs)"},{"line_number":644,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":645,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":646,"context_line":"                      \"Error: %s\", e)"},{"line_number":647,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":648,"context_line":"        except Exception as e:"},{"line_number":649,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_ba946045","line":646,"range":{"start_line":646,"start_character":35,"end_line":646,"end_character":36},"in_reply_to":"7faddb67_f361b73a","updated":"2019-08-16 01:49:12.000000000","message":"Done","commit_id":"15d49be9ebf70041945fba5b8db15e995962a661"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"98c8fa44eeaee4d8aa414365cffa8cb098791275","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        :raises: VirtDriverNotReady"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        \"\"\""},{"line_number":669,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":670,"context_line":"        # pagination until there\u0027re no more values to be returned."},{"line_number":671,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":672,"context_line":"                                        fields\u003d[\u0027instance_id\u0027])"},{"line_number":673,"context_line":"        context \u003d nova_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_a021a3b6","line":670,"range":{"start_line":669,"start_character":7,"end_line":670,"end_character":66},"updated":"2019-08-15 01:32:07.000000000","message":"You were removed the limit \u003d\u003d 0, this comment can be removed or rewrite.","commit_id":"15d49be9ebf70041945fba5b8db15e995962a661"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"a44b59b901bdb0f75b37787f2e33053c53ef8c1e","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        :raises: VirtDriverNotReady"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        \"\"\""},{"line_number":669,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":670,"context_line":"        # pagination until there\u0027re no more values to be returned."},{"line_number":671,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":672,"context_line":"                                        fields\u003d[\u0027instance_id\u0027])"},{"line_number":673,"context_line":"        context \u003d nova_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_9a972446","line":670,"range":{"start_line":669,"start_character":7,"end_line":670,"end_character":66},"in_reply_to":"7faddb67_a021a3b6","updated":"2019-08-16 01:49:12.000000000","message":"Done","commit_id":"15d49be9ebf70041945fba5b8db15e995962a661"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"98c8fa44eeaee4d8aa414365cffa8cb098791275","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        :raises: VirtDriverNotReady"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        \"\"\""},{"line_number":684,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":685,"context_line":"        # pagination until there\u0027re no more values to be returned."},{"line_number":686,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":687,"context_line":"                                        fields\u003d[\u0027instance_id\u0027])"},{"line_number":688,"context_line":"        return [n.instance_id for n in node_list]"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_800d873f","line":685,"range":{"start_line":684,"start_character":8,"end_line":685,"end_character":66},"updated":"2019-08-15 01:32:07.000000000","message":"ditto.","commit_id":"15d49be9ebf70041945fba5b8db15e995962a661"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"a44b59b901bdb0f75b37787f2e33053c53ef8c1e","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        :raises: VirtDriverNotReady"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        \"\"\""},{"line_number":684,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":685,"context_line":"        # pagination until there\u0027re no more values to be returned."},{"line_number":686,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":687,"context_line":"                                        fields\u003d[\u0027instance_id\u0027])"},{"line_number":688,"context_line":"        return [n.instance_id for n in node_list]"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_fa7f3814","line":685,"range":{"start_line":684,"start_character":8,"end_line":685,"end_character":66},"in_reply_to":"7faddb67_800d873f","updated":"2019-08-16 01:49:12.000000000","message":"Done","commit_id":"15d49be9ebf70041945fba5b8db15e995962a661"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"64a0389148dab66f640a08ee52f81b89262e4251","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        :raises: VirtDriverNotReady"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        \"\"\""},{"line_number":666,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":667,"context_line":"        # pagination until there\u0027re no more values to be returned."},{"line_number":668,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":669,"context_line":"                                        fields\u003d[\u0027instance_uuid\u0027], limit\u003d0)"},{"line_number":670,"context_line":"        context \u003d nova_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":28,"id":"7faddb67_0000c5ff","side":"PARENT","line":667,"range":{"start_line":666,"start_character":0,"end_line":667,"end_character":66},"updated":"2019-08-29 15:34:13.000000000","message":"✔ sdk handles pagination for us","commit_id":"0176390531aa7bba56a12960334be4de2dd409ef"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"64a0389148dab66f640a08ee52f81b89262e4251","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        \"\"\""},{"line_number":646,"context_line":"        try:"},{"line_number":647,"context_line":"            node_list \u003d list(self.ironic_connection.nodes(**kwargs))"},{"line_number":648,"context_line":"        except sdk_exc.InvalidResourceQuery as e:"},{"line_number":649,"context_line":"            LOG.error(\"Invalid parameters in the provided search query.\""},{"line_number":650,"context_line":"                      \"Error: %s\", six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":28,"id":"7faddb67_fd1af679","line":647,"range":{"start_line":647,"start_character":24,"end_line":647,"end_character":28},"updated":"2019-08-29 15:34:13.000000000","message":"It would be nice to have a comment explaining why we need to list-ify this right away.\n\nThat can be done in a fup.","commit_id":"be0947b4038fe9b1b798532c23dabf668013a236"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"64a0389148dab66f640a08ee52f81b89262e4251","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                      six.text_type(e))"},{"line_number":656,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":657,"context_line":"        # TODO(dustinc): Use correct values in consumers and remove this"},{"line_number":658,"context_line":"        for n in node_list:"},{"line_number":659,"context_line":"            if hasattr(n, \"id\"):"},{"line_number":660,"context_line":"                n.uuid \u003d n.id"},{"line_number":661,"context_line":"            if hasattr(n, \"instance_id\"):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7faddb67_002f653e","line":658,"range":{"start_line":658,"start_character":17,"end_line":658,"end_character":26},"updated":"2019-08-29 15:34:13.000000000","message":"This is actually doing a redundant spin through the list. You could get rid of the listification on L647 and do this part like\n\n node_list \u003d []\n for n in node_generator:\n     ...","commit_id":"be0947b4038fe9b1b798532c23dabf668013a236"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bd00a3b1efc6f0d7e61f682fdaf52bd5d78f62c0","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                      six.text_type(e))"},{"line_number":656,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":657,"context_line":"        # TODO(dustinc): Use correct values in consumers and remove this"},{"line_number":658,"context_line":"        for n in node_list:"},{"line_number":659,"context_line":"            if hasattr(n, \"id\"):"},{"line_number":660,"context_line":"                n.uuid \u003d n.id"},{"line_number":661,"context_line":"            if hasattr(n, \"instance_id\"):"},{"line_number":662,"context_line":"                n.instance_uuid \u003d n.instance_id"},{"line_number":663,"context_line":"            if hasattr(n, \"is_maintenance\"):"},{"line_number":664,"context_line":"                n.maintenance \u003d n.is_maintenance"},{"line_number":665,"context_line":"        return node_list"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def list_instances(self):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7faddb67_b581f8fd","line":664,"range":{"start_line":658,"start_character":0,"end_line":664,"end_character":48},"updated":"2019-08-29 13:12:13.000000000","message":"I suspect you need to do something like this in the following patch","commit_id":"be0947b4038fe9b1b798532c23dabf668013a236"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"64a0389148dab66f640a08ee52f81b89262e4251","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":"        node_list \u003d self._get_node_list(associated\u003dTrue,"},{"line_number":688,"context_line":"                                        fields\u003d[\u0027instance_id\u0027])"},{"line_number":689,"context_line":"        return [n.instance_id for n in node_list]"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"    def node_is_available(self, nodename):"},{"line_number":692,"context_line":"        \"\"\"Confirms a Nova hypervisor node exists in the Ironic inventory."}],"source_content_type":"text/x-python","patch_set":28,"id":"7faddb67_4066bdbd","line":689,"range":{"start_line":689,"start_character":15,"end_line":689,"end_character":49},"updated":"2019-08-29 15:34:13.000000000","message":"This is a pity (spinning through the list a second time) but I don\u0027t see a non-ugly way around it.\n\nPerhaps we could make it\n\n def _get_node_list(self, return_generator\u003dFalse, **kwargs):\n     ...\n     try:\n         node_gen \u003d self.ironic_connection.nodes(**kwargs)\n     ...\n     if return_generator:\n         return node_gen\n\n     node_list \u003d []\n     for node in node_gen:\n         if hasattr...\n     return node_list\n\nThen of course you have to document that return_generator does *not* do the convenience field aliases. And as we cut consumers over to using the non-aliased fields, we cut them over to return_generator\u003dTrue. And finally when they\u0027re all doing that, we can remove the kwarg and the aliasing.","commit_id":"be0947b4038fe9b1b798532c23dabf668013a236"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3b3e349b7d5e2d89210cfd1ff69f89be39948e5a","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        \"\"\""},{"line_number":645,"context_line":"        try:"},{"line_number":646,"context_line":"            # NOTE(dustinc): The generator returned by the SDK can only be"},{"line_number":647,"context_line":"            # interated once. Since there are cases where it needs to be"},{"line_number":648,"context_line":"            # iterated more than once, we should return it as a list. In the"},{"line_number":649,"context_line":"            # future it may be worth refactoring these other usages so it can"},{"line_number":650,"context_line":"            # be returned as a generator."}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_970da490","line":647,"range":{"start_line":647,"start_character":14,"end_line":647,"end_character":23},"updated":"2019-09-03 15:34:33.000000000","message":"iterated","commit_id":"10dcee219137c754f08933a5aacd0c496eb1d3e4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3b3e349b7d5e2d89210cfd1ff69f89be39948e5a","unresolved":false,"context_lines":[{"line_number":660,"context_line":"            raise exception.VirtDriverNotReady()"},{"line_number":661,"context_line":"        if return_generator:"},{"line_number":662,"context_line":"            return node_generator"},{"line_number":663,"context_line":"        else:"},{"line_number":664,"context_line":"            node_list \u003d []"},{"line_number":665,"context_line":"            # TODO(dustinc): Update all usages to use SDK attributes then stop"},{"line_number":666,"context_line":"            #  copying values to PythonClient attributes."}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_f71bb8c7","line":663,"range":{"start_line":663,"start_character":8,"end_line":663,"end_character":12},"updated":"2019-09-03 15:34:33.000000000","message":"nit: redundant","commit_id":"10dcee219137c754f08933a5aacd0c496eb1d3e4"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"a1e05c48d7c2b684d9aa6ea313262fd00a864088","unresolved":false,"context_lines":[{"line_number":687,"context_line":"        return [objects.Instance.get_by_uuid(context, i.instance_id).name"},{"line_number":688,"context_line":"                for i in self._get_node_list(return_generator\u003dTrue,"},{"line_number":689,"context_line":"                                             associated\u003dTrue,"},{"line_number":690,"context_line":"                                             fields\u003d[\u0027instance_id\u0027])]"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def list_instance_uuids(self):"},{"line_number":693,"context_line":"        \"\"\"Return the IDs of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_c2b1f102","line":690,"range":{"start_line":690,"start_character":54,"end_line":690,"end_character":65},"updated":"2019-09-05 10:11:51.000000000","message":"shouldn\u0027t this be instance_uuid as instance_id is not node field afaic?\n\nwe are seeing errors in our jobs, for url: http://192.168.24.3:6385/v1/nodes?associated\u003dTrue\u0026fields\u003dinstance_id, Field(s) \"instance_id\" are not valid\n\nhttps://logs.rdoproject.org/openstack-periodic-master/opendev.org/openstack/tripleo-ci/master/periodic-tripleo-ci-centos-7-ovb-3ctlr_1comp-featureset001-master/62c604a/logs/undercloud/var/log/containers/nova/nova-compute.log.txt.gz#_2019-09-05_03_24_13_909\n\nhttps://logs.rdoproject.org/openstack-periodic-master/opendev.org/openstack/tripleo-ci/master/periodic-tripleo-ci-centos-7-ovb-1ctlr_2comp-featureset020-master/2b85de7/logs/undercloud/var/log/extra/errors.txt.txt.gz#_2019-09-05_02_41_26_036","commit_id":"10dcee219137c754f08933a5aacd0c496eb1d3e4"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"086af814608f70565084a77cf06da149e743e7b4","unresolved":false,"context_lines":[{"line_number":687,"context_line":"        return [objects.Instance.get_by_uuid(context, i.instance_id).name"},{"line_number":688,"context_line":"                for i in self._get_node_list(return_generator\u003dTrue,"},{"line_number":689,"context_line":"                                             associated\u003dTrue,"},{"line_number":690,"context_line":"                                             fields\u003d[\u0027instance_id\u0027])]"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def list_instance_uuids(self):"},{"line_number":693,"context_line":"        \"\"\"Return the IDs of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":29,"id":"5faad753_ebcce562","line":690,"range":{"start_line":690,"start_character":54,"end_line":690,"end_character":65},"in_reply_to":"7faddb67_c2b1f102","updated":"2019-09-05 23:53:58.000000000","message":"Thanks for that. I filed a bug and proposed a fix.\nhttps://bugs.launchpad.net/nova/+bug/1842989\nhttps://review.opendev.org/#/c/680542/","commit_id":"10dcee219137c754f08933a5aacd0c496eb1d3e4"}]}
