)]}'
{"nova/objects/instance_action.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"05824c54dba98d9c9ddc43e7dd307eae57601c6a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        \u0027result\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":152,"context_line":"        \u0027traceback\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":153,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":154,"context_line":"        \u0027details\u0027: fields.StringField(nullable\u003dTrue)"},{"line_number":155,"context_line":"        }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_173434fa","line":154,"updated":"2019-11-21 22:11:48.000000000","message":"Question: why is this being added to InstanceActionEvent instead of InstanceAction which mirrors the REST API? Sorry, I don\u0027t know the different between InstanceAction and InstanceActionEvent.\n\nI\u0027m going to post a comment on the next patch related to this.","commit_id":"9c9269b022b565d11679c240a65b1627dda1d06a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"486fe51c482298f332525431ef5bcbe304381445","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        \u0027result\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":152,"context_line":"        \u0027traceback\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":153,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":154,"context_line":"        \u0027details\u0027: fields.StringField(nullable\u003dTrue)"},{"line_number":155,"context_line":"        }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4655124f","line":154,"in_reply_to":"3fa7e38b_173434fa","updated":"2019-11-22 18:37:36.000000000","message":"Because the action is made up of multiple events and some events could complete successfully (e.g. prep_resize) while others fail (e.g. resize_instance) which fails the overall action.","commit_id":"9c9269b022b565d11679c240a65b1627dda1d06a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"65f85e23b3cd297a92641afa386af8e6bc0c4ac1","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":158,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":159,"context_line":"        if target_version \u003c (1, 4) and \u0027details\u0027 in primitive:"},{"line_number":160,"context_line":"            del primitive[\u0027details\u0027]"},{"line_number":161,"context_line":"        if target_version \u003c (1, 2) and \u0027host\u0027 in primitive:"},{"line_number":162,"context_line":"            del primitive[\u0027host\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f703f474","line":159,"updated":"2019-11-14 23:32:02.000000000","message":"Need to add a test for this.","commit_id":"9c9269b022b565d11679c240a65b1627dda1d06a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5980139d819296871d6b679f8f2e6932c7b64f4e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                # so pass that as the message to exception_to_dict otherwise"},{"line_number":199,"context_line":"                # the details will just be \"str\" since it cannot format the"},{"line_number":200,"context_line":"                # message as a NovaException."},{"line_number":201,"context_line":"                # FIXME(mriedem): This is likely not the behavior we want"},{"line_number":202,"context_line":"                # because it could mean leaking non-nova error details which"},{"line_number":203,"context_line":"                # is why exception_to_dict just uses the exception type as"},{"line_number":204,"context_line":"                # the message if it cannot format the value. Need to change"},{"line_number":205,"context_line":"                # the serialize_args decorator to pass a format_exc_val kwarg."},{"line_number":206,"context_line":"                message \u003d ("},{"line_number":207,"context_line":"                    exc_val if isinstance(exc_val, six.string_types) else None)"},{"line_number":208,"context_line":"                values[\u0027details\u0027] \u003d compute_utils.exception_to_dict("}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_c1aa0a84","line":205,"range":{"start_line":201,"start_character":16,"end_line":205,"end_character":78},"updated":"2020-02-25 16:54:10.000000000","message":"IMO this change shouldn\u0027t land until this is fixed, as noted in my review comments when I abandoned this. There are some tests which I had to workaround to get things passing but it\u0027s not what we want, as noted in this comment. The problem is in the @serialize_args decorator which is going to require some work. You\u0027ll likely need to talk with dansmith about it. Not fixing this could lead to exposing sensitive details to non-admin users in the instance actions API which will then probably result in a CVE.","commit_id":"58eac29cb308cf6bbdfe19f898a372c15b17620e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0851cc7289df5df0d8560a2bfb04595aba77352a","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                # the details will just the exception class name since it"},{"line_number":200,"context_line":"                # cannot format the message as a NovaException."},{"line_number":201,"context_line":"                message \u003d ("},{"line_number":202,"context_line":"                    exc_val if isinstance(exc_val, six.string_types) else None)"},{"line_number":203,"context_line":"                values[\u0027details\u0027] \u003d compute_utils.exception_to_dict("},{"line_number":204,"context_line":"                    exc_val, message\u003dmessage)[\u0027message\u0027]"},{"line_number":205,"context_line":"            values[\u0027traceback\u0027] \u003d exc_tb"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_0114589f","line":202,"range":{"start_line":202,"start_character":51,"end_line":202,"end_character":67},"updated":"2020-03-18 18:07:38.000000000","message":"We don\u0027t need this anymore. Can you just make this \u0027str\u0027? Should let you fix this all on one line too","commit_id":"8248f2d87c2db22d0b9e6d060d57115de71886d3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73364d51e3c224292dacd56e5ad3e0ec193ad4de","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            # Store the details using the same logic as storing an instance"},{"line_number":194,"context_line":"            # fault message."},{"line_number":195,"context_line":"            if exc_val:"},{"line_number":196,"context_line":"                # If we got a string for exc_val it\u0027s probably because of"},{"line_number":197,"context_line":"                # the serialize_args decorator on event_finish_with_failure"},{"line_number":198,"context_line":"                # so pass that as the message to exception_to_dict otherwise"},{"line_number":199,"context_line":"                # the details will just the exception class name since it"},{"line_number":200,"context_line":"                # cannot format the message as a NovaException."},{"line_number":201,"context_line":"                message \u003d ("},{"line_number":202,"context_line":"                    exc_val if isinstance(exc_val, six.string_types) else None)"},{"line_number":203,"context_line":"                values[\u0027details\u0027] \u003d compute_utils.exception_to_dict("}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_5ad2de5d","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":63},"updated":"2020-03-26 17:36:15.000000000","message":"or can we just not show the non-nova exception to non-admin ? instead of showing exception name just say None or \u0027Not Known\u0027 so that we do not leak any useful information from non-nova excetion name. \n\nCurrently, we are exposing exception name (non-nova) in server fault message to non-admin but if we can hide that in this new field ?","commit_id":"a81d27beba2262ef42e63bb281ef61bbbe2dde70"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6083a29e2433b6f07fcfa4f6a125209f4c7b77ca","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            # Store the details using the same logic as storing an instance"},{"line_number":194,"context_line":"            # fault message."},{"line_number":195,"context_line":"            if exc_val:"},{"line_number":196,"context_line":"                # If we got a string for exc_val it\u0027s probably because of"},{"line_number":197,"context_line":"                # the serialize_args decorator on event_finish_with_failure"},{"line_number":198,"context_line":"                # so pass that as the message to exception_to_dict otherwise"},{"line_number":199,"context_line":"                # the details will just the exception class name since it"},{"line_number":200,"context_line":"                # cannot format the message as a NovaException."},{"line_number":201,"context_line":"                message \u003d ("},{"line_number":202,"context_line":"                    exc_val if isinstance(exc_val, six.string_types) else None)"},{"line_number":203,"context_line":"                values[\u0027details\u0027] \u003d compute_utils.exception_to_dict("}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_3a3a7a97","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":63},"in_reply_to":"df33271e_5ad2de5d","updated":"2020-03-26 17:38:13.000000000","message":"or change server fault.message also not to show non-nova exception at all to non-admin in this microversion ?","commit_id":"a81d27beba2262ef42e63bb281ef61bbbe2dde70"}],"nova/tests/unit/fake_server_actions.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0851cc7289df5df0d8560a2bfb04595aba77352a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                       \u0027deleted\u0027: False,"},{"line_number":75,"context_line":"                       \u0027host\u0027: \u0027host1\u0027,"},{"line_number":76,"context_line":"                       \u0027hostId\u0027: FAKE_HOST_ID1,"},{"line_number":77,"context_line":"                       \u0027details\u0027: None"},{"line_number":78,"context_line":"                      },"},{"line_number":79,"context_line":"                      {\u0027id\u0027: 2,"},{"line_number":80,"context_line":"                       \u0027action_id\u0027: FAKE_ACTION_ID1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_15632eb3","line":77,"updated":"2020-03-18 18:07:38.000000000","message":"nit: trailing commas are helpful in case we need to extend this further in the future","commit_id":"8248f2d87c2db22d0b9e6d060d57115de71886d3"}],"nova/tests/unit/objects/test_instance_action.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"65f85e23b3cd297a92641afa386af8e6bc0c4ac1","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        mock_tb.return_value \u003d \u0027fake-tb\u0027"},{"line_number":306,"context_line":"        self.useFixture(utils_fixture.TimeFixture(NOW))"},{"line_number":307,"context_line":"        test_class \u003d instance_action.InstanceActionEvent"},{"line_number":308,"context_line":"        # A non-NovaException will use the type for the \u0027details\u0027 field."},{"line_number":309,"context_line":"        exc_val \u003d test.TestingException(\u0027non-nova-error\u0027)"},{"line_number":310,"context_line":"        expected_packed_values \u003d test_class.pack_action_event_finish("},{"line_number":311,"context_line":"            self.context, \u0027fake-uuid\u0027, \u0027fake-event\u0027, exc_val, \u0027fake-tb\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_172c90ff","line":308,"updated":"2019-11-14 23:32:02.000000000","message":"...when exc_val is not passed as a kwarg.","commit_id":"9c9269b022b565d11679c240a65b1627dda1d06a"}]}
