)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a1a7d17d17287ff27c0534caeac3ec2fe064dd82","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The block is applied to primary operations, such as pause"},{"line_number":10,"context_line":"or shelve, but not to their reverse operations, like"},{"line_number":11,"context_line":"unpause or unshelve, because that is not necessary."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I016bc1812404ce1019c71b7a3363f34acc3f8aed"},{"line_number":14,"context_line":"Blueprint: nova-cyborg-interaction"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1fa4df85_f8c7d544","line":11,"range":{"start_line":11,"start_character":21,"end_line":11,"end_character":50},"updated":"2020-02-24 09:36:14.000000000","message":"nit: If you can explain more of why not necessary, it will be better for the reviewer to unstand the unnecessary reason.\n\nsuch as you descripbe in \"To elaborate, when you take a backup, that includes the state of the accelerator-related buffers in the VM. On a restore, the VM\u0027s buffers are restored but the accelerator has most likely lost its old state -- for a variety of reasons: it went through an automatic reset, or it was assigned to another VM, etc.\", but maybe need to be simple of this.","commit_id":"7fbb00dfca4cb323dce77aa813104f1329b9df76"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"92943ffaf08ffc6ddbc28563e422d21bc3a0e462","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The block is applied to primary operations, such as pause"},{"line_number":10,"context_line":"or shelve, but not to their reverse operations, like"},{"line_number":11,"context_line":"unpause or unshelve, because that is not necessary."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I016bc1812404ce1019c71b7a3363f34acc3f8aed"},{"line_number":14,"context_line":"Blueprint: nova-cyborg-interaction"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1fa4df85_dfdac315","line":11,"range":{"start_line":11,"start_character":21,"end_line":11,"end_character":50},"in_reply_to":"1fa4df85_f8c7d544","updated":"2020-02-27 06:43:14.000000000","message":"If a VM cannot be paused, then unpause cannot be applied to it. So, it is enough to block the pause but not the unpause. Same for unshelve, etc.","commit_id":"7fbb00dfca4cb323dce77aa813104f1329b9df76"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a9b201fde3a5134666b9f5153e2f41f253c66ccc","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                exception.DeviceProfileError,"},{"line_number":758,"context_line":"                exception.ForbiddenWithAccelerators,"},{"line_number":759,"context_line":"                exception.ComputeHostNotFound) as error:"},{"line_number":760,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":761,"context_line":"        except INVALID_FLAVOR_IMAGE_EXCEPTIONS as error:"},{"line_number":762,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":763,"context_line":"        except (exception.PortInUse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_f910adaa","line":760,"range":{"start_line":760,"start_character":12,"end_line":760,"end_character":72},"updated":"2020-03-03 23:59:33.000000000","message":"yes, this is 400, I prefer the 400.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                exception.CertificateValidationFailed,"},{"line_number":756,"context_line":"                exception.CreateWithPortResourceRequestOldVersion,"},{"line_number":757,"context_line":"                exception.DeviceProfileError,"},{"line_number":758,"context_line":"                exception.ForbiddenWithAccelerators,"},{"line_number":759,"context_line":"                exception.ComputeHostNotFound) as error:"},{"line_number":760,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":761,"context_line":"        except INVALID_FLAVOR_IMAGE_EXCEPTIONS as error:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_c2a06c45","line":758,"updated":"2020-03-19 14:35:37.000000000","message":"When this is thrown for server create? \nDo we need to catch this for migrate, resize, live migrate, suspend, sleve, and evacuate instead?","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                exception.CertificateValidationFailed,"},{"line_number":756,"context_line":"                exception.CreateWithPortResourceRequestOldVersion,"},{"line_number":757,"context_line":"                exception.DeviceProfileError,"},{"line_number":758,"context_line":"                exception.ForbiddenWithAccelerators,"},{"line_number":759,"context_line":"                exception.ComputeHostNotFound) as error:"},{"line_number":760,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":761,"context_line":"        except INVALID_FLAVOR_IMAGE_EXCEPTIONS as error:"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_3e4f60be","line":758,"in_reply_to":"1fa4df85_c2a06c45","updated":"2020-03-22 01:30:00.000000000","message":"In retrospect, you are right -- this should be for other ops, not create. Fixed.","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"            context, filters\u003dfilters, limit\u003dlimit, marker\u003dmarker,"},{"line_number":2840,"context_line":"            expected_attrs\u003dfields, sort_keys\u003dsort_keys, sort_dirs\u003dsort_dirs)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"    @block_accelerators"},{"line_number":2843,"context_line":"    def update_instance(self, context, instance, updates):"},{"line_number":2844,"context_line":"        \"\"\"Updates a single Instance object with some updates dict."},{"line_number":2845,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b84dfa9a","line":2842,"range":{"start_line":2842,"start_character":3,"end_line":2842,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"i dont think this should be applied here","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"            context, filters\u003dfilters, limit\u003dlimit, marker\u003dmarker,"},{"line_number":2840,"context_line":"            expected_attrs\u003dfields, sort_keys\u003dsort_keys, sort_dirs\u003dsort_dirs)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"    @block_accelerators"},{"line_number":2843,"context_line":"    def update_instance(self, context, instance, updates):"},{"line_number":2844,"context_line":"        \"\"\"Updates a single Instance object with some updates dict."},{"line_number":2845,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_81d86623","line":2842,"range":{"start_line":2842,"start_character":3,"end_line":2842,"end_character":23},"in_reply_to":"7faddb67_b84dfa9a","updated":"2020-02-21 09:59:20.000000000","message":"Done","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":2904,"context_line":""},{"line_number":2905,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for backup because lock is"},{"line_number":2906,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":2907,"context_line":"    @block_accelerators"},{"line_number":2908,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":2909,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":2910,"context_line":"    def backup(self, context, instance, name, backup_type, rotation,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_9846fe7a","line":2907,"range":{"start_line":2907,"start_character":3,"end_line":2907,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"why would we block backups it just a periodic snapshot","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":2904,"context_line":""},{"line_number":2905,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for backup because lock is"},{"line_number":2906,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":2907,"context_line":"    @block_accelerators"},{"line_number":2908,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":2909,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":2910,"context_line":"    def backup(self, context, instance, name, backup_type, rotation,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c1e65edc","line":2907,"range":{"start_line":2907,"start_character":3,"end_line":2907,"end_character":23},"in_reply_to":"7faddb67_9846fe7a","updated":"2020-02-21 09:59:20.000000000","message":"This introduces the danger that the accelerator state may not match the VM state after restoration following a backup. To elaborate, when you take a backup, that includes the state of the accelerator-related buffers in the VM. On a restore, the VM\u0027s buffers are restored but the accelerator has most likely lost its old state -- for a variety of reasons: it went through an automatic reset, or it was assigned to another VM, etc.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":2946,"context_line":""},{"line_number":2947,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":2948,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":2949,"context_line":"    @block_accelerators"},{"line_number":2950,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":2951,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":2952,"context_line":"    def snapshot(self, context, instance, name, extra_properties\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_7838e2ec","line":2949,"range":{"start_line":2949,"start_character":3,"end_line":2949,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"same quest why woudl we block snapshots\n\nwe allow snapshots of vms with pci passthough and for v1 that is all that cyborg resocues are doing.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":2946,"context_line":""},{"line_number":2947,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":2948,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":2949,"context_line":"    @block_accelerators"},{"line_number":2950,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":2951,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":2952,"context_line":"    def snapshot(self, context, instance, name, extra_properties\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e1f11a99","line":2949,"range":{"start_line":2949,"start_character":3,"end_line":2949,"end_character":23},"in_reply_to":"7faddb67_7838e2ec","updated":"2020-02-21 09:59:20.000000000","message":"This introduces the danger that the accelerator state may not match the VM state after restoration following a snapshot. Please see earlier response.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3004,"context_line":""},{"line_number":3005,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":3006,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3007,"context_line":"    @block_accelerators"},{"line_number":3008,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3009,"context_line":"                                    vm_states.SUSPENDED])"},{"line_number":3010,"context_line":"    def snapshot_volume_backed(self, context, instance, name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_983b5ee8","line":3007,"range":{"start_line":3007,"start_character":3,"end_line":3007,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"again i dont see any reason to block this","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3004,"context_line":""},{"line_number":3005,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":3006,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3007,"context_line":"    @block_accelerators"},{"line_number":3008,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3009,"context_line":"                                    vm_states.SUSPENDED])"},{"line_number":3010,"context_line":"    def snapshot_volume_backed(self, context, instance, name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_0132365c","line":3007,"range":{"start_line":3007,"start_character":3,"end_line":3007,"end_character":23},"in_reply_to":"7faddb67_983b5ee8","updated":"2020-02-21 09:59:20.000000000","message":"ditto","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3098,"context_line":"                              instance\u003dinstance)"},{"line_number":3099,"context_line":"                    self.compute_rpcapi.unquiesce_instance(context, instance,"},{"line_number":3100,"context_line":"                                                           mapping\u003dNone)"},{"line_number":3101,"context_line":""},{"line_number":3102,"context_line":"        @block_accelerators"},{"line_number":3103,"context_line":"        @wrap_instance_event(prefix\u003d\u0027api\u0027)"},{"line_number":3104,"context_line":"        def snapshot_instance(self, context, instance, bdms):"},{"line_number":3105,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3826eacf","line":3102,"range":{"start_line":3101,"start_character":0,"end_line":3102,"end_character":27},"updated":"2019-08-06 12:10:29.000000000","message":"same as above","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3098,"context_line":"                              instance\u003dinstance)"},{"line_number":3099,"context_line":"                    self.compute_rpcapi.unquiesce_instance(context, instance,"},{"line_number":3100,"context_line":"                                                           mapping\u003dNone)"},{"line_number":3101,"context_line":""},{"line_number":3102,"context_line":"        @block_accelerators"},{"line_number":3103,"context_line":"        @wrap_instance_event(prefix\u003d\u0027api\u0027)"},{"line_number":3104,"context_line":"        def snapshot_instance(self, context, instance, bdms):"},{"line_number":3105,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a14002a5","line":3102,"range":{"start_line":3101,"start_character":0,"end_line":3102,"end_character":27},"in_reply_to":"7faddb67_3826eacf","updated":"2020-02-21 09:59:20.000000000","message":"ditto","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3181,"context_line":"                                            reboot_type\u003d\u0027HARD\u0027)"},{"line_number":3182,"context_line":""},{"line_number":3183,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3184,"context_line":"    @block_accelerators"},{"line_number":3185,"context_line":"    @check_instance_lock"},{"line_number":3186,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3187,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_d81eb66e","line":3184,"range":{"start_line":3184,"start_character":3,"end_line":3184,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"a rebuild just reimages the root disk and can never migrate to a different host. we may want to reimage the fpga if the bitstream was stored in the image properties but i think we should require rebuild to be supported.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3181,"context_line":"                                            reboot_type\u003d\u0027HARD\u0027)"},{"line_number":3182,"context_line":""},{"line_number":3183,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3184,"context_line":"    @block_accelerators"},{"line_number":3185,"context_line":"    @check_instance_lock"},{"line_number":3186,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3187,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_011b16cc","line":3184,"range":{"start_line":3184,"start_character":3,"end_line":3184,"end_character":23},"in_reply_to":"7faddb67_d81eb66e","updated":"2020-02-21 09:59:20.000000000","message":"Since the root disk has changed, we may not have the device drivers in the new image for the accelerators, right? So, we\u0027d have to release the accelerator resources.\n\nI think that is doable. But it is not implemented yet.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3485,"context_line":"    # TODO(mriedem): It looks like for resize (not cold migrate) the only"},{"line_number":3486,"context_line":"    # possible kwarg here is auto_disk_config. Drop this dumb **kwargs and make"},{"line_number":3487,"context_line":"    # it explicitly an auto_disk_config param"},{"line_number":3488,"context_line":"    @block_accelerators"},{"line_number":3489,"context_line":"    @check_instance_lock"},{"line_number":3490,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"},{"line_number":3491,"context_line":"    def resize(self, context, instance, flavor_id\u003dNone, clean_shutdown\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_380fca37","line":3488,"range":{"start_line":3488,"start_character":5,"end_line":3488,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"resize should work in the initall version.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3485,"context_line":"    # TODO(mriedem): It looks like for resize (not cold migrate) the only"},{"line_number":3486,"context_line":"    # possible kwarg here is auto_disk_config. Drop this dumb **kwargs and make"},{"line_number":3487,"context_line":"    # it explicitly an auto_disk_config param"},{"line_number":3488,"context_line":"    @block_accelerators"},{"line_number":3489,"context_line":"    @check_instance_lock"},{"line_number":3490,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"},{"line_number":3491,"context_line":"    def resize(self, context, instance, flavor_id\u003dNone, clean_shutdown\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a16ec22a","line":3488,"range":{"start_line":3488,"start_character":5,"end_line":3488,"end_character":23},"in_reply_to":"7faddb67_380fca37","updated":"2020-02-21 09:59:20.000000000","message":"Why? I asked a few potential users of Cyborg+FPGAs, and I didn\u0027t hear this as a priority. I have nothing against it, but it may be better to converge on the current series before taking up new ops.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3620,"context_line":"            clean_shutdown\u003dclean_shutdown,"},{"line_number":3621,"context_line":"            request_spec\u003drequest_spec)"},{"line_number":3622,"context_line":""},{"line_number":3623,"context_line":"    @block_accelerators"},{"line_number":3624,"context_line":"    @check_instance_lock"},{"line_number":3625,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3626,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3314cb43","line":3623,"range":{"start_line":3623,"start_character":3,"end_line":3623,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"if we support snappshots then shelve should just work\n\nwe will not be snapshoting the state of the acclerator but i think that is fine. if the vm rebooted i cant rely on the state still exeising and from a vm perspective a shelve and unshelve is the same as a reboot. the os and any deployed applciation in the vm need to reinitaise the device as if it was the first boot.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3620,"context_line":"            clean_shutdown\u003dclean_shutdown,"},{"line_number":3621,"context_line":"            request_spec\u003drequest_spec)"},{"line_number":3622,"context_line":""},{"line_number":3623,"context_line":"    @block_accelerators"},{"line_number":3624,"context_line":"    @check_instance_lock"},{"line_number":3625,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3626,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_815dc67c","line":3623,"range":{"start_line":3623,"start_character":3,"end_line":3623,"end_character":23},"in_reply_to":"7faddb67_3314cb43","updated":"2020-02-21 09:59:20.000000000","message":"Please see the earlier response.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3646,"context_line":"            self.compute_rpcapi.shelve_offload_instance(context,"},{"line_number":3647,"context_line":"                    instance\u003dinstance, clean_shutdown\u003dclean_shutdown)"},{"line_number":3648,"context_line":""},{"line_number":3649,"context_line":"    @block_accelerators"},{"line_number":3650,"context_line":"    @check_instance_lock"},{"line_number":3651,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.SHELVED])"},{"line_number":3652,"context_line":"    def shelve_offload(self, context, instance, clean_shutdown\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_530f072d","line":3649,"range":{"start_line":3649,"start_character":3,"end_line":3649,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"if we block shelve that would prevent this from ever being called","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3646,"context_line":"            self.compute_rpcapi.shelve_offload_instance(context,"},{"line_number":3647,"context_line":"                    instance\u003dinstance, clean_shutdown\u003dclean_shutdown)"},{"line_number":3648,"context_line":""},{"line_number":3649,"context_line":"    @block_accelerators"},{"line_number":3650,"context_line":"    @check_instance_lock"},{"line_number":3651,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.SHELVED])"},{"line_number":3652,"context_line":"    def shelve_offload(self, context, instance, clean_shutdown\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4157ce5a","line":3649,"range":{"start_line":3649,"start_character":3,"end_line":3649,"end_character":23},"in_reply_to":"7faddb67_530f072d","updated":"2020-02-21 09:59:20.000000000","message":"Done","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3688,"context_line":"        self.compute_rpcapi.remove_fixed_ip_from_instance(context,"},{"line_number":3689,"context_line":"                instance\u003dinstance, address\u003daddress)"},{"line_number":3690,"context_line":""},{"line_number":3691,"context_line":"    @block_accelerators"},{"line_number":3692,"context_line":"    @check_instance_lock"},{"line_number":3693,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"},{"line_number":3694,"context_line":"    def pause(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_731fa35a","line":3691,"range":{"start_line":3691,"start_character":3,"end_line":3691,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"pause is suspend to ram. e.g. we just stop the execution of insturciont in the qemu cpus. we do not release any resouces or unmap any devices or memory form the guest.\n\ni dont see any reason not to support pause","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3688,"context_line":"        self.compute_rpcapi.remove_fixed_ip_from_instance(context,"},{"line_number":3689,"context_line":"                instance\u003dinstance, address\u003daddress)"},{"line_number":3690,"context_line":""},{"line_number":3691,"context_line":"    @block_accelerators"},{"line_number":3692,"context_line":"    @check_instance_lock"},{"line_number":3693,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"},{"line_number":3694,"context_line":"    def pause(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c142de93","line":3691,"range":{"start_line":3691,"start_character":3,"end_line":3691,"end_character":23},"in_reply_to":"7faddb67_731fa35a","updated":"2020-02-21 09:59:20.000000000","message":"Yup, it does work today. Done.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3718,"context_line":"        return self.compute_rpcapi.get_instance_diagnostics(context,"},{"line_number":3719,"context_line":"                                                            instance\u003dinstance)"},{"line_number":3720,"context_line":""},{"line_number":3721,"context_line":"    @block_accelerators"},{"line_number":3722,"context_line":"    @check_instance_lock"},{"line_number":3723,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"},{"line_number":3724,"context_line":"    def suspend(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b3775ba0","line":3721,"range":{"start_line":3721,"start_character":3,"end_line":3721,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"suspend is a suspend to disk.\n\nin the case of libvirt this is a managed_save.\nwhen we call suspend we first detach all passthough devices then we save to disk on resumes we restore the vm state then after it starts executing we reattach its pci passthough devices.\n\nwe can and should do the same thing for all cyborg devices.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a1a7d17d17287ff27c0534caeac3ec2fe064dd82","unresolved":false,"context_lines":[{"line_number":3718,"context_line":"        return self.compute_rpcapi.get_instance_diagnostics(context,"},{"line_number":3719,"context_line":"                                                            instance\u003dinstance)"},{"line_number":3720,"context_line":""},{"line_number":3721,"context_line":"    @block_accelerators"},{"line_number":3722,"context_line":"    @check_instance_lock"},{"line_number":3723,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"},{"line_number":3724,"context_line":"    def suspend(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_8cd78624","line":3721,"range":{"start_line":3721,"start_character":3,"end_line":3721,"end_character":23},"in_reply_to":"3fa7e38b_61bf6a79","updated":"2020-02-24 09:36:14.000000000","message":"Yes, an instance of suppend status should restore its original PCI device when replying, unless it cannot be found.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3718,"context_line":"        return self.compute_rpcapi.get_instance_diagnostics(context,"},{"line_number":3719,"context_line":"                                                            instance\u003dinstance)"},{"line_number":3720,"context_line":""},{"line_number":3721,"context_line":"    @block_accelerators"},{"line_number":3722,"context_line":"    @check_instance_lock"},{"line_number":3723,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"},{"line_number":3724,"context_line":"    def suspend(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_61bf6a79","line":3721,"range":{"start_line":3721,"start_character":3,"end_line":3721,"end_character":23},"in_reply_to":"7faddb67_b3775ba0","updated":"2020-02-21 09:59:20.000000000","message":"We could take this up in a future effort, based on operator feedback, after the current series has merged.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3737,"context_line":"        self._record_action_start(context, instance, instance_actions.RESUME)"},{"line_number":3738,"context_line":"        self.compute_rpcapi.resume_instance(context, instance)"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"    @block_accelerators"},{"line_number":3741,"context_line":"    @check_instance_lock"},{"line_number":3742,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3743,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_336b6bb7","line":3740,"range":{"start_line":3740,"start_character":5,"end_line":3740,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"for rescue we just boot the vm with a different disk image temporailly i dont think there is a valid reason not to support this.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3737,"context_line":"        self._record_action_start(context, instance, instance_actions.RESUME)"},{"line_number":3738,"context_line":"        self.compute_rpcapi.resume_instance(context, instance)"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"    @block_accelerators"},{"line_number":3741,"context_line":"    @check_instance_lock"},{"line_number":3742,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3743,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_81c2a600","line":3740,"range":{"start_line":3740,"start_character":5,"end_line":3740,"end_character":23},"in_reply_to":"7faddb67_336b6bb7","updated":"2020-02-21 09:59:20.000000000","message":"Yes, it should be doable. Again, could we take it up in the future?","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":3846,"context_line":"        return self.compute_rpcapi.get_console_output(context,"},{"line_number":3847,"context_line":"                instance\u003dinstance, tail_length\u003dtail_length)"},{"line_number":3848,"context_line":""},{"line_number":3849,"context_line":"    @block_accelerators"},{"line_number":3850,"context_line":"    def lock(self, context, instance, reason\u003dNone):"},{"line_number":3851,"context_line":"        \"\"\"Lock the given instance.\"\"\""},{"line_number":3852,"context_line":"        # Only update the lock if we are an admin (non-owner)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_d39f77b1","line":3849,"range":{"start_line":3849,"start_character":5,"end_line":3849,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"lock just makes it so you cant perform cretin operations\non a vm like delete it accidentally it should have no interaction with cyborg in any way so this should be removed","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":3846,"context_line":"        return self.compute_rpcapi.get_console_output(context,"},{"line_number":3847,"context_line":"                instance\u003dinstance, tail_length\u003dtail_length)"},{"line_number":3848,"context_line":""},{"line_number":3849,"context_line":"    @block_accelerators"},{"line_number":3850,"context_line":"    def lock(self, context, instance, reason\u003dNone):"},{"line_number":3851,"context_line":"        \"\"\"Lock the given instance.\"\"\""},{"line_number":3852,"context_line":"        # Only update the lock if we are an admin (non-owner)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_21c97223","line":3849,"range":{"start_line":3849,"start_character":5,"end_line":3849,"end_character":23},"in_reply_to":"7faddb67_d39f77b1","updated":"2020-02-21 09:59:20.000000000","message":"Yup, it does work today. Done.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4060,"context_line":""},{"line_number":4061,"context_line":"        return volume_bdm.device_name"},{"line_number":4062,"context_line":""},{"line_number":4063,"context_line":"    @block_accelerators"},{"line_number":4064,"context_line":"    @check_instance_lock"},{"line_number":4065,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4066,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_13b18f44","line":4063,"range":{"start_line":4063,"start_character":5,"end_line":4063,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"we should be able to attache cinder volumes to vms with cyborg devices","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4060,"context_line":""},{"line_number":4061,"context_line":"        return volume_bdm.device_name"},{"line_number":4062,"context_line":""},{"line_number":4063,"context_line":"    @block_accelerators"},{"line_number":4064,"context_line":"    @check_instance_lock"},{"line_number":4065,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4066,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e1d27ad0","line":4063,"range":{"start_line":4063,"start_character":5,"end_line":4063,"end_character":23},"in_reply_to":"7faddb67_13b18f44","updated":"2020-02-21 09:59:20.000000000","message":"I agree it should work. But haven\u0027t tested it. Should we take the risk?","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4165,"context_line":"            instance_actions.DETACH_VOLUME)"},{"line_number":4166,"context_line":"        detach_volume(self, context, instance, bdms)"},{"line_number":4167,"context_line":""},{"line_number":4168,"context_line":"    @block_accelerators"},{"line_number":4169,"context_line":"    @check_instance_lock"},{"line_number":4170,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4171,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_73f003fe","line":4168,"range":{"start_line":4168,"start_character":2,"end_line":4168,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"we should also be able to detach cinder volumes when using cyborg","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4165,"context_line":"            instance_actions.DETACH_VOLUME)"},{"line_number":4166,"context_line":"        detach_volume(self, context, instance, bdms)"},{"line_number":4167,"context_line":""},{"line_number":4168,"context_line":"    @block_accelerators"},{"line_number":4169,"context_line":"    @check_instance_lock"},{"line_number":4170,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4171,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_61e8ca7d","line":4168,"range":{"start_line":4168,"start_character":2,"end_line":4168,"end_character":23},"in_reply_to":"7faddb67_73f003fe","updated":"2020-02-21 09:59:20.000000000","message":"Ditto","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4221,"context_line":""},{"line_number":4222,"context_line":"        return count"},{"line_number":4223,"context_line":""},{"line_number":4224,"context_line":"    @block_accelerators"},{"line_number":4225,"context_line":"    @check_instance_lock"},{"line_number":4226,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4227,"context_line":"                                    vm_states.RESIZED])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_53d94780","line":4224,"range":{"start_line":4224,"start_character":3,"end_line":4224,"end_character":22},"updated":"2019-08-06 12:10:29.000000000","message":"we do not like swap volume but cyborg should not be the reason we prevent it form being used","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4221,"context_line":""},{"line_number":4222,"context_line":"        return count"},{"line_number":4223,"context_line":""},{"line_number":4224,"context_line":"    @block_accelerators"},{"line_number":4225,"context_line":"    @check_instance_lock"},{"line_number":4226,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4227,"context_line":"                                    vm_states.RESIZED])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_81eb8678","line":4224,"range":{"start_line":4224,"start_character":3,"end_line":4224,"end_character":22},"in_reply_to":"7faddb67_53d94780","updated":"2020-02-21 09:59:20.000000000","message":"Again, I agree it should work but haven\u0027t tested it.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4299,"context_line":"                    self.volume_api.attachment_delete("},{"line_number":4300,"context_line":"                        context, new_attachment_id)"},{"line_number":4301,"context_line":""},{"line_number":4302,"context_line":"    @block_accelerators"},{"line_number":4303,"context_line":"    @check_instance_lock"},{"line_number":4304,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4305,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b3d3db5f","line":4302,"range":{"start_line":4302,"start_character":3,"end_line":4302,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"again adding and removeing interface should not be constraiteed when using cyborg","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4299,"context_line":"                    self.volume_api.attachment_delete("},{"line_number":4300,"context_line":"                        context, new_attachment_id)"},{"line_number":4301,"context_line":""},{"line_number":4302,"context_line":"    @block_accelerators"},{"line_number":4303,"context_line":"    @check_instance_lock"},{"line_number":4304,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4305,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_419a6e12","line":4302,"range":{"start_line":4302,"start_character":3,"end_line":4302,"end_character":23},"in_reply_to":"7faddb67_b3d3db5f","updated":"2020-02-21 09:59:20.000000000","message":"We had discussed the possibility of hot add/delete of interfaces at the Stein PTG (Denver), but we had decided to keep it for a future phase. In particular, specifying a device profile in the CLI/API would require API changes.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4324,"context_line":"            instance\u003dinstance, network_id\u003dnetwork_id, port_id\u003dport_id,"},{"line_number":4325,"context_line":"            requested_ip\u003drequested_ip, tag\u003dtag)"},{"line_number":4326,"context_line":""},{"line_number":4327,"context_line":"    @block_accelerators"},{"line_number":4328,"context_line":"    @check_instance_lock"},{"line_number":4329,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4330,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_93cc9fbb","line":4327,"range":{"start_line":4327,"start_character":0,"end_line":4327,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"same as above","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4324,"context_line":"            instance\u003dinstance, network_id\u003dnetwork_id, port_id\u003dport_id,"},{"line_number":4325,"context_line":"            requested_ip\u003drequested_ip, tag\u003dtag)"},{"line_number":4326,"context_line":""},{"line_number":4327,"context_line":"    @block_accelerators"},{"line_number":4328,"context_line":"    @check_instance_lock"},{"line_number":4329,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4330,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e1803aa0","line":4327,"range":{"start_line":4327,"start_character":0,"end_line":4327,"end_character":23},"in_reply_to":"7faddb67_93cc9fbb","updated":"2020-02-21 09:59:20.000000000","message":"ditto","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4379,"context_line":"                                                     diff\u003ddiff)"},{"line_number":4380,"context_line":"        return _metadata"},{"line_number":4381,"context_line":""},{"line_number":4382,"context_line":"    @block_accelerators"},{"line_number":4383,"context_line":"    @check_instance_lock"},{"line_number":4384,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED])"},{"line_number":4385,"context_line":"    def live_migrate(self, context, instance, block_migration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_f3bcf306","line":4382,"range":{"start_line":4382,"start_character":1,"end_line":4382,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"this is possible the only semi valid use of this i have seen so far we now have support for live migration with sriov port so we can do the same with cyborge device in the future but i could see not allowing live migration in the initall version","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4434,"context_line":"                                                          instance,"},{"line_number":4435,"context_line":"                                                          messaging_timeout)"},{"line_number":4436,"context_line":""},{"line_number":4437,"context_line":"    @block_accelerators"},{"line_number":4438,"context_line":"    @check_instance_lock"},{"line_number":4439,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE],"},{"line_number":4440,"context_line":"                          task_state\u003d[task_states.MIGRATING])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_9341ff0c","line":4437,"range":{"start_line":4437,"start_character":3,"end_line":4437,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"this would not be needed if we block live migration","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4434,"context_line":"                                                          instance,"},{"line_number":4435,"context_line":"                                                          messaging_timeout)"},{"line_number":4436,"context_line":""},{"line_number":4437,"context_line":"    @block_accelerators"},{"line_number":4438,"context_line":"    @check_instance_lock"},{"line_number":4439,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE],"},{"line_number":4440,"context_line":"                          task_state\u003d[task_states.MIGRATING])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a18a42ba","line":4437,"range":{"start_line":4437,"start_character":3,"end_line":4437,"end_character":23},"in_reply_to":"7faddb67_9341ff0c","updated":"2020-02-21 09:59:20.000000000","message":"Done","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"744382e700a7203d53f478a58863e8cb6207e84c","unresolved":false,"context_lines":[{"line_number":4518,"context_line":"        self.compute_rpcapi.live_migration_abort(context,"},{"line_number":4519,"context_line":"                instance, migration.id)"},{"line_number":4520,"context_line":""},{"line_number":4521,"context_line":"    @block_accelerators"},{"line_number":4522,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":4523,"context_line":"                                    vm_states.ERROR])"},{"line_number":4524,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_f35153da","line":4521,"range":{"start_line":4521,"start_character":4,"end_line":4521,"end_character":23},"updated":"2019-08-06 12:10:29.000000000","message":"evauate shoudl be supported this is just a rebuild on a different host.","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"f393d00e1149c5125bc6ae9aed6720194617b035","unresolved":false,"context_lines":[{"line_number":4518,"context_line":"        self.compute_rpcapi.live_migration_abort(context,"},{"line_number":4519,"context_line":"                instance, migration.id)"},{"line_number":4520,"context_line":""},{"line_number":4521,"context_line":"    @block_accelerators"},{"line_number":4522,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":4523,"context_line":"                                    vm_states.ERROR])"},{"line_number":4524,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_61b68a8f","line":4521,"range":{"start_line":4521,"start_character":4,"end_line":4521,"end_character":23},"in_reply_to":"7faddb67_f35153da","updated":"2020-02-21 09:59:20.000000000","message":"Can we take this up along with rebuild?","commit_id":"c2b161f19b312dc43ec887b3d7a902b872a28a00"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"063629a126b281d40cd5d668d4e17e37fe230d20","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            dp_name \u003d None"},{"line_number":295,"context_line":"        if dp_name:"},{"line_number":296,"context_line":"            raise exception.ForbiddenWithAccelerators()"},{"line_number":297,"context_line":"        func(self, context, instance, *args, **kwargs)"},{"line_number":298,"context_line":"    return wrapper"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_4df65692","line":297,"range":{"start_line":297,"start_character":8,"end_line":297,"end_character":54},"updated":"2020-02-25 10:17:01.000000000","message":"We should return the decorator block_accelerators, otherwise the decorated function interface cannot get the correct value.\n\nI think that\u0027s why this patach\u0027s py36 failed.\n\n    def wrapper(self, context, instance, *args, **kwargs):\n        ...\n        return func(self, context, instance, *args, **kwargs)","commit_id":"7fbb00dfca4cb323dce77aa813104f1329b9df76"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"92943ffaf08ffc6ddbc28563e422d21bc3a0e462","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            dp_name \u003d None"},{"line_number":295,"context_line":"        if dp_name:"},{"line_number":296,"context_line":"            raise exception.ForbiddenWithAccelerators()"},{"line_number":297,"context_line":"        func(self, context, instance, *args, **kwargs)"},{"line_number":298,"context_line":"    return wrapper"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_1fd13bfc","line":297,"range":{"start_line":297,"start_character":8,"end_line":297,"end_character":54},"in_reply_to":"1fa4df85_4df65692","updated":"2020-02-27 06:43:14.000000000","message":"Done","commit_id":"7fbb00dfca4cb323dce77aa813104f1329b9df76"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1fa4df85_4ffa6a75","updated":"2020-03-02 23:03:36.000000000","message":"In IRC discussion, it was agreed that ops that should work would be allowed to go through even if they have not been explicitly verified to work with real-ish environments/workloads.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":3114,"context_line":""},{"line_number":3115,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for backup because lock is"},{"line_number":3116,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3117,"context_line":"    @block_accelerators"},{"line_number":3118,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3119,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":3120,"context_line":"    def backup(self, context, instance, name, backup_type, rotation,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_4073214e","line":3117,"range":{"start_line":3117,"start_character":4,"end_line":3117,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"live backup should be supported.\ncold backup should also work as that stops the vm then snapshots the disk and starts it again so it like doing a hard reboot and copying the disk in the middel","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":3114,"context_line":""},{"line_number":3115,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for backup because lock is"},{"line_number":3116,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3117,"context_line":"    @block_accelerators"},{"line_number":3118,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3119,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":3120,"context_line":"    def backup(self, context, instance, name, backup_type, rotation,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_6fcc0661","line":3117,"range":{"start_line":3117,"start_character":4,"end_line":3117,"end_character":23},"in_reply_to":"1fa4df85_4073214e","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":3156,"context_line":""},{"line_number":3157,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":3158,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3159,"context_line":"    @block_accelerators"},{"line_number":3160,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3161,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":3162,"context_line":"    def snapshot(self, context, instance, name, extra_properties\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_809ef951","line":3159,"range":{"start_line":3159,"start_character":4,"end_line":3159,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"as with backup this should work\n\nbackup is just an automated way to do snapshots on a schedule.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":3156,"context_line":""},{"line_number":3157,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":3158,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3159,"context_line":"    @block_accelerators"},{"line_number":3160,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3161,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"},{"line_number":3162,"context_line":"    def snapshot(self, context, instance, name, extra_properties\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_0fdb121b","line":3159,"range":{"start_line":3159,"start_character":4,"end_line":3159,"end_character":23},"in_reply_to":"1fa4df85_809ef951","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":3214,"context_line":""},{"line_number":3215,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":3216,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3217,"context_line":"    @block_accelerators"},{"line_number":3218,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3219,"context_line":"                                    vm_states.SUSPENDED])"},{"line_number":3220,"context_line":"    def snapshot_volume_backed(self, context, instance, name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_40a80176","line":3217,"range":{"start_line":3217,"start_character":4,"end_line":3217,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"this should always work as the snapshot opertion is done by os-brick/cinder","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":3214,"context_line":""},{"line_number":3215,"context_line":"    # NOTE(melwitt): We don\u0027t check instance lock for snapshot because lock is"},{"line_number":3216,"context_line":"    #                intended to prevent accidental change/delete of instances"},{"line_number":3217,"context_line":"    @block_accelerators"},{"line_number":3218,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3219,"context_line":"                                    vm_states.SUSPENDED])"},{"line_number":3220,"context_line":"    def snapshot_volume_backed(self, context, instance, name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_2fd60ef3","line":3217,"range":{"start_line":3217,"start_character":4,"end_line":3217,"end_character":23},"in_reply_to":"1fa4df85_40a80176","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":3309,"context_line":"                    self.compute_rpcapi.unquiesce_instance(context, instance,"},{"line_number":3310,"context_line":"                                                           mapping\u003dNone)"},{"line_number":3311,"context_line":""},{"line_number":3312,"context_line":"        @block_accelerators"},{"line_number":3313,"context_line":"        @wrap_instance_event(prefix\u003d\u0027api\u0027)"},{"line_number":3314,"context_line":"        def snapshot_instance(self, context, instance, bdms):"},{"line_number":3315,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_e0dd6d14","line":3312,"range":{"start_line":3312,"start_character":8,"end_line":3312,"end_character":27},"updated":"2020-03-02 17:48:43.000000000","message":"again this should work","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":3309,"context_line":"                    self.compute_rpcapi.unquiesce_instance(context, instance,"},{"line_number":3310,"context_line":"                                                           mapping\u003dNone)"},{"line_number":3311,"context_line":""},{"line_number":3312,"context_line":"        @block_accelerators"},{"line_number":3313,"context_line":"        @wrap_instance_event(prefix\u003d\u0027api\u0027)"},{"line_number":3314,"context_line":"        def snapshot_instance(self, context, instance, bdms):"},{"line_number":3315,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_cf065a87","line":3312,"range":{"start_line":3312,"start_character":8,"end_line":3312,"end_character":27},"in_reply_to":"1fa4df85_e0dd6d14","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":3391,"context_line":"                                            reboot_type\u003d\u0027HARD\u0027)"},{"line_number":3392,"context_line":""},{"line_number":3393,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3394,"context_line":"    @block_accelerators"},{"line_number":3395,"context_line":"    @check_instance_lock"},{"line_number":3396,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3397,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_000a0989","line":3394,"range":{"start_line":3394,"start_character":4,"end_line":3394,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"this shoudl work, a rebuild does not change resource allocations or change host so this should work.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":3391,"context_line":"                                            reboot_type\u003d\u0027HARD\u0027)"},{"line_number":3392,"context_line":""},{"line_number":3393,"context_line":"    # TODO(stephenfin): We should expand kwargs out to named args"},{"line_number":3394,"context_line":"    @block_accelerators"},{"line_number":3395,"context_line":"    @check_instance_lock"},{"line_number":3396,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3397,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_efca3618","line":3394,"range":{"start_line":3394,"start_character":4,"end_line":3394,"end_character":23},"in_reply_to":"1fa4df85_000a0989","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":3868,"context_line":""},{"line_number":3869,"context_line":"        return node"},{"line_number":3870,"context_line":""},{"line_number":3871,"context_line":"    @block_accelerators"},{"line_number":3872,"context_line":"    @check_instance_lock"},{"line_number":3873,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"},{"line_number":3874,"context_line":"    @check_instance_host(check_is_up\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_a0353548","line":3871,"range":{"start_line":3871,"start_character":5,"end_line":3871,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"+1 i have seen that we do not correctly free the allocation in placment when resizing form a flavor with a cyborg device to one without\n\nsimilarly i dont think we create teh arq and aloctions the other way so resize does not work in either direction currently.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4065,"context_line":"            allow_same_host \u003d CONF.allow_resize_to_same_host"},{"line_number":4066,"context_line":"        return allow_same_host"},{"line_number":4067,"context_line":""},{"line_number":4068,"context_line":"    @block_accelerators"},{"line_number":4069,"context_line":"    @check_instance_lock"},{"line_number":4070,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":4071,"context_line":"                                    vm_states.PAUSED, vm_states.SUSPENDED])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_803a7931","line":4068,"range":{"start_line":4068,"start_character":5,"end_line":4068,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"yep shelve does not free the allocations on the host node. or at least it did not when i tested this two revisions back.\ni also noticed it did not create new allcoation in the unshelve path so yes shelve should be blocked.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4230,"context_line":"        return self.compute_rpcapi.get_instance_diagnostics(context,"},{"line_number":4231,"context_line":"                                                            instance\u003dinstance)"},{"line_number":4232,"context_line":""},{"line_number":4233,"context_line":"    @block_accelerators"},{"line_number":4234,"context_line":"    @reject_sev_instances(instance_actions.SUSPEND)"},{"line_number":4235,"context_line":"    @check_instance_lock"},{"line_number":4236,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_80235905","line":4233,"range":{"start_line":4233,"start_character":5,"end_line":4233,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"suspend in the libvirt drive wil fail as the current logic to unplug all pci devices on suspend prior to calling libivrt managed save will not unplug the cyborg pci devices.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4243,"context_line":""},{"line_number":4244,"context_line":"    @check_instance_lock"},{"line_number":4245,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.SUSPENDED])"},{"line_number":4246,"context_line":"    def resume(self, context, instance):"},{"line_number":4247,"context_line":"        \"\"\"Resume the given instance.\"\"\""},{"line_number":4248,"context_line":"        instance.task_state \u003d task_states.RESUMING"},{"line_number":4249,"context_line":"        instance.save(expected_task_state\u003d[None])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_e079edfb","line":4246,"range":{"start_line":4246,"start_character":8,"end_line":4246,"end_character":14},"updated":"2020-03-02 17:48:43.000000000","message":"similarly resume would not add the device back to the domain.\nalthough we dont need to block this since we are blocking suspend.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4250,"context_line":"        self._record_action_start(context, instance, instance_actions.RESUME)"},{"line_number":4251,"context_line":"        self.compute_rpcapi.resume_instance(context, instance)"},{"line_number":4252,"context_line":""},{"line_number":4253,"context_line":"    @block_accelerators"},{"line_number":4254,"context_line":"    @check_instance_lock"},{"line_number":4255,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":4256,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_40724113","line":4253,"range":{"start_line":4253,"start_character":5,"end_line":4253,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"this should work and does with the fake driver although it is unclear if the xml generation will include accelerator or not.\n\nthe expected behaviour would be for the accelerator to be present when you rescue the instance.\n\nin principal there is no reason to block this however as it should work.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":4250,"context_line":"        self._record_action_start(context, instance, instance_actions.RESUME)"},{"line_number":4251,"context_line":"        self.compute_rpcapi.resume_instance(context, instance)"},{"line_number":4252,"context_line":""},{"line_number":4253,"context_line":"    @block_accelerators"},{"line_number":4254,"context_line":"    @check_instance_lock"},{"line_number":4255,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":4256,"context_line":"                                    vm_states.ERROR])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_8fd142d0","line":4253,"range":{"start_line":4253,"start_character":5,"end_line":4253,"end_character":23},"in_reply_to":"1fa4df85_40724113","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4595,"context_line":""},{"line_number":4596,"context_line":"        return volume_bdm.device_name"},{"line_number":4597,"context_line":""},{"line_number":4598,"context_line":"    @block_accelerators"},{"line_number":4599,"context_line":"    @check_instance_lock"},{"line_number":4600,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4601,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_e0624d3e","line":4598,"range":{"start_line":4598,"start_character":5,"end_line":4598,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"this works in with the fake driver and i know of no reason to block this.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":4595,"context_line":""},{"line_number":4596,"context_line":"        return volume_bdm.device_name"},{"line_number":4597,"context_line":""},{"line_number":4598,"context_line":"    @block_accelerators"},{"line_number":4599,"context_line":"    @check_instance_lock"},{"line_number":4600,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4601,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_afd43ebe","line":4598,"range":{"start_line":4598,"start_character":5,"end_line":4598,"end_character":23},"in_reply_to":"1fa4df85_e0624d3e","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4703,"context_line":"            instance_actions.DETACH_VOLUME)"},{"line_number":4704,"context_line":"        detach_volume(self, context, instance, bdms)"},{"line_number":4705,"context_line":""},{"line_number":4706,"context_line":"    @block_accelerators"},{"line_number":4707,"context_line":"    @check_instance_lock"},{"line_number":4708,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4709,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_c05f1170","line":4706,"range":{"start_line":4706,"start_character":5,"end_line":4706,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"same as attach it works with fake dirver and should work in general. so this should not be blocked.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":4703,"context_line":"            instance_actions.DETACH_VOLUME)"},{"line_number":4704,"context_line":"        detach_volume(self, context, instance, bdms)"},{"line_number":4705,"context_line":""},{"line_number":4706,"context_line":"    @block_accelerators"},{"line_number":4707,"context_line":"    @check_instance_lock"},{"line_number":4708,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4709,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_4fdb4aec","line":4706,"range":{"start_line":4706,"start_character":5,"end_line":4706,"end_character":23},"in_reply_to":"1fa4df85_c05f1170","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4759,"context_line":""},{"line_number":4760,"context_line":"        return count"},{"line_number":4761,"context_line":""},{"line_number":4762,"context_line":"    @block_accelerators"},{"line_number":4763,"context_line":"    @check_instance_lock"},{"line_number":4764,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4765,"context_line":"                                    vm_states.RESIZED])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_80511965","line":4762,"range":{"start_line":4762,"start_character":5,"end_line":4762,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"again this should work and not be affected by cyborg devices so we should not block it.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":4759,"context_line":""},{"line_number":4760,"context_line":"        return count"},{"line_number":4761,"context_line":""},{"line_number":4762,"context_line":"    @block_accelerators"},{"line_number":4763,"context_line":"    @check_instance_lock"},{"line_number":4764,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4765,"context_line":"                                    vm_states.RESIZED])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_6fd646c6","line":4762,"range":{"start_line":4762,"start_character":5,"end_line":4762,"end_character":23},"in_reply_to":"1fa4df85_80511965","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4837,"context_line":"                    self.volume_api.attachment_delete("},{"line_number":4838,"context_line":"                        context, new_attachment_id)"},{"line_number":4839,"context_line":""},{"line_number":4840,"context_line":"    @block_accelerators"},{"line_number":4841,"context_line":"    @check_instance_lock"},{"line_number":4842,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4843,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_a0d1b5cf","line":4840,"range":{"start_line":4840,"start_character":0,"end_line":4840,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"same as with volumes this should work.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":4837,"context_line":"                    self.volume_api.attachment_delete("},{"line_number":4838,"context_line":"                        context, new_attachment_id)"},{"line_number":4839,"context_line":""},{"line_number":4840,"context_line":"    @block_accelerators"},{"line_number":4841,"context_line":"    @check_instance_lock"},{"line_number":4842,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4843,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_4f602a02","line":4840,"range":{"start_line":4840,"start_character":0,"end_line":4840,"end_character":23},"in_reply_to":"1fa4df85_a0d1b5cf","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4862,"context_line":"            instance\u003dinstance, network_id\u003dnetwork_id, port_id\u003dport_id,"},{"line_number":4863,"context_line":"            requested_ip\u003drequested_ip, tag\u003dtag)"},{"line_number":4864,"context_line":""},{"line_number":4865,"context_line":"    @block_accelerators"},{"line_number":4866,"context_line":"    @check_instance_lock"},{"line_number":4867,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4868,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_20e5c5a8","line":4865,"range":{"start_line":4865,"start_character":5,"end_line":4865,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"as shoudl detach so this should be allowed","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":4862,"context_line":"            instance\u003dinstance, network_id\u003dnetwork_id, port_id\u003dport_id,"},{"line_number":4863,"context_line":"            requested_ip\u003drequested_ip, tag\u003dtag)"},{"line_number":4864,"context_line":""},{"line_number":4865,"context_line":"    @block_accelerators"},{"line_number":4866,"context_line":"    @check_instance_lock"},{"line_number":4867,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":4868,"context_line":"                                    vm_states.STOPPED],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_6f5ba653","line":4865,"range":{"start_line":4865,"start_character":5,"end_line":4865,"end_character":23},"in_reply_to":"1fa4df85_20e5c5a8","updated":"2020-03-02 23:03:36.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":4917,"context_line":"                                                     diff\u003ddiff)"},{"line_number":4918,"context_line":"        return _metadata"},{"line_number":4919,"context_line":""},{"line_number":4920,"context_line":"    @block_accelerators"},{"line_number":4921,"context_line":"    @reject_sev_instances(instance_actions.LIVE_MIGRATION)"},{"line_number":4922,"context_line":"    @check_instance_lock"},{"line_number":4923,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_e0f00d6a","line":4920,"range":{"start_line":4920,"start_character":5,"end_line":4920,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"+1 this wont work and should be blocked.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b81e7fc234e4587980715a79d692a3d170cb0ec1","unresolved":false,"context_lines":[{"line_number":5047,"context_line":"        self.compute_rpcapi.live_migration_abort(context,"},{"line_number":5048,"context_line":"                instance, migration.id)"},{"line_number":5049,"context_line":""},{"line_number":5050,"context_line":"    @block_accelerators"},{"line_number":5051,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5052,"context_line":"                                    vm_states.ERROR])"},{"line_number":5053,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_20ace532","line":5050,"range":{"start_line":5050,"start_character":5,"end_line":5050,"end_character":23},"updated":"2020-03-02 17:48:43.000000000","message":"evacuate should work in principal but we might need special handling for cleaning up allocation when the compute node is fixed.\n\nso i would hope we dont have to block this but we might need too","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":5047,"context_line":"        self.compute_rpcapi.live_migration_abort(context,"},{"line_number":5048,"context_line":"                instance, migration.id)"},{"line_number":5049,"context_line":""},{"line_number":5050,"context_line":"    @block_accelerators"},{"line_number":5051,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5052,"context_line":"                                    vm_states.ERROR])"},{"line_number":5053,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_2f8e0ed0","line":5050,"range":{"start_line":5050,"start_character":5,"end_line":5050,"end_character":23},"in_reply_to":"1fa4df85_20ace532","updated":"2020-03-02 23:03:36.000000000","message":"I am unblocking this, since it is considered necessary for putting a host in maintenance mode. Needs to be verified that it works.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1fa4df85_42f79c5a","updated":"2020-03-19 14:35:37.000000000","message":"Do we need to block evacuate too?","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1fa4df85_aecc2d6a","in_reply_to":"1fa4df85_42f79c5a","updated":"2020-03-22 01:30:00.000000000","message":"I unblocked it after discussion [1]. In particular, there was concern that evacuate may be needed by operators for host maintenance. We need to validate this op.\n\n[1] https://review.opendev.org/#/c/674726/3/nova/compute/api.py@5050","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f6ee31a7c5f26d666f06e665c2cacf06773155ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"df33271e_c99e7306","in_reply_to":"1fa4df85_aecc2d6a","updated":"2020-03-23 12:37:58.000000000","message":"Do you have a patch with a functional test that shows that it works?","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"938fbd4c54cd6dd94d82f3d621c50e9bc2b2676e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"df33271e_88972091","in_reply_to":"df33271e_c99e7306","updated":"2020-03-25 06:43:26.000000000","message":"Added it now.","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    return image_meta"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def block_accelerators(func):"},{"line_number":288,"context_line":"    def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get("}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_6d0e493c","line":287,"updated":"2020-03-19 14:35:37.000000000","message":"Let\u0027s have a unit test for this.","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    return image_meta"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def block_accelerators(func):"},{"line_number":288,"context_line":"    def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get("}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_99f7a6f6","line":287,"in_reply_to":"1fa4df85_6d0e493c","updated":"2020-03-22 01:30:00.000000000","message":"Done","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def block_accelerators(func):"},{"line_number":288,"context_line":"    def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get("},{"line_number":291,"context_line":"                          \u0027accel:device_profile\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_82cef457","line":288,"range":{"start_line":288,"start_character":0,"end_line":288,"end_character":58},"updated":"2020-03-19 14:35:37.000000000","message":"I would add @functools.wraps(func) for cleanness.","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def block_accelerators(func):"},{"line_number":288,"context_line":"    def wrapper(self, context, instance, *args, **kwargs):"},{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get("},{"line_number":291,"context_line":"                          \u0027accel:device_profile\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_8ebff1a8","line":288,"range":{"start_line":288,"start_character":0,"end_line":288,"end_character":58},"in_reply_to":"1fa4df85_82cef457","updated":"2020-03-22 01:30:00.000000000","message":"Done","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get("},{"line_number":291,"context_line":"                          \u0027accel:device_profile\u0027)"},{"line_number":292,"context_line":"        except nova.exception.ObjectActionError:"},{"line_number":293,"context_line":"            # Instance object may not have flavor/extra_specs"},{"line_number":294,"context_line":"            dp_name \u003d None"},{"line_number":295,"context_line":"        if dp_name:"},{"line_number":296,"context_line":"            raise exception.ForbiddenWithAccelerators()"},{"line_number":297,"context_line":"        return func(self, context, instance, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_e2b808c9","line":294,"range":{"start_line":292,"start_character":0,"end_line":294,"end_character":26},"updated":"2020-03-19 14:35:37.000000000","message":"that seems fishy to me. Did we pass in an orphaned instance without flavor loaded? \n\nAlso if we cannot access the flavor we don\u0027t know if the instance has accelerators so we cannot say that dp_name is None.","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            dp_name \u003d instance.flavor.extra_specs.get("},{"line_number":291,"context_line":"                          \u0027accel:device_profile\u0027)"},{"line_number":292,"context_line":"        except nova.exception.ObjectActionError:"},{"line_number":293,"context_line":"            # Instance object may not have flavor/extra_specs"},{"line_number":294,"context_line":"            dp_name \u003d None"},{"line_number":295,"context_line":"        if dp_name:"},{"line_number":296,"context_line":"            raise exception.ForbiddenWithAccelerators()"},{"line_number":297,"context_line":"        return func(self, context, instance, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_f9db527a","line":294,"range":{"start_line":292,"start_character":0,"end_line":294,"end_character":26},"in_reply_to":"1fa4df85_e2b808c9","updated":"2020-03-22 01:30:00.000000000","message":"Done","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":3868,"context_line":"    @check_instance_lock"},{"line_number":3869,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED])"},{"line_number":3870,"context_line":"    @check_instance_host(check_is_up\u003dTrue)"},{"line_number":3871,"context_line":"    def resize(self, context, instance, flavor_id\u003dNone, clean_shutdown\u003dTrue,"},{"line_number":3872,"context_line":"               host_name\u003dNone, auto_disk_config\u003dNone):"},{"line_number":3873,"context_line":"        \"\"\"Resize (ie, migrate) a running instance."},{"line_number":3874,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_22faa042","line":3871,"updated":"2020-03-19 14:35:37.000000000","message":"OK this covers cold migrate and resize","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b2bfe5e0d60bb619dc277bee5de698d99322eea","unresolved":false,"context_lines":[{"line_number":5042,"context_line":""},{"line_number":5043,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5044,"context_line":"                                    vm_states.ERROR])"},{"line_number":5045,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":5046,"context_line":"                 admin_password\u003dNone, force\u003dNone):"},{"line_number":5047,"context_line":"        \"\"\"Running evacuate to target host."},{"line_number":5048,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_2e725312","line":5045,"updated":"2020-03-25 17:21:17.000000000","message":"so i tested this with the fake dirver.\nwhile we can evaucate the instace it does not correctly claim an acellerator in placment and it does nto updat the arqs\n\nso based on that we will need to block this\nhttp://paste.openstack.org/show/791153/\nhttp://paste.openstack.org/show/791154/\ni only chekced the arqs at the end but they still pointed to the orginal host.\n\nthe cleanup logic to remove allocations form the souce host did inface remote the placmenet allcoation fro both the vm and then accleortator so that at least works but the evacuated vm will not have an acclerator.","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c8779afa73f907b58580b99b3d9aeae5a4b689f4","unresolved":false,"context_lines":[{"line_number":5042,"context_line":""},{"line_number":5043,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5044,"context_line":"                                    vm_states.ERROR])"},{"line_number":5045,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":5046,"context_line":"                 admin_password\u003dNone, force\u003dNone):"},{"line_number":5047,"context_line":"        \"\"\"Running evacuate to target host."},{"line_number":5048,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_472e9443","line":5045,"in_reply_to":"df33271e_2e725312","updated":"2020-03-26 02:05:54.000000000","message":"While we rebuild an instance we dont handle the \u0027accel_info\u0027, while we rebuild an instance, accel_info is None [1], and the _guest_add_accel_pci_devices[] will return [], so in its xml we will lost the accerator info for the instance.\n\nI think we should try to get the instance\u0027s accel_info when we have an evecuate operator, if the instance has \u0027accel_info\u0027, we should consider handling it.\n\n[1]https://review.opendev.org/#/c/631245/62/nova/virt/libvirt/driver.py@5781","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aba1aca8212a1217263c4fc06878635cd05b6e7e","unresolved":false,"context_lines":[{"line_number":5042,"context_line":""},{"line_number":5043,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5044,"context_line":"                                    vm_states.ERROR])"},{"line_number":5045,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":5046,"context_line":"                 admin_password\u003dNone, force\u003dNone):"},{"line_number":5047,"context_line":"        \"\"\"Running evacuate to target host."},{"line_number":5048,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_b357dd02","line":5045,"in_reply_to":"df33271e_472e9443","updated":"2020-03-26 14:09:34.000000000","message":"We can take up evacuate in a future step.","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85c80fa4d91512701ff7d03c11f4a497d81d94e5","unresolved":false,"context_lines":[{"line_number":5042,"context_line":""},{"line_number":5043,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5044,"context_line":"                                    vm_states.ERROR])"},{"line_number":5045,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":5046,"context_line":"                 admin_password\u003dNone, force\u003dNone):"},{"line_number":5047,"context_line":"        \"\"\"Running evacuate to target host."},{"line_number":5048,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_709b8bc8","line":5045,"in_reply_to":"df33271e_472e9443","updated":"2020-03-26 21:45:58.000000000","message":"so are you saying rebuild is also broken then. it is quite hard to test that with the fake driver as there is no changes to the xml currently.","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85c80fa4d91512701ff7d03c11f4a497d81d94e5","unresolved":false,"context_lines":[{"line_number":5040,"context_line":"        self.compute_rpcapi.live_migration_abort(context,"},{"line_number":5041,"context_line":"                instance, migration.id)"},{"line_number":5042,"context_line":""},{"line_number":5043,"context_line":"    @block_accelerators"},{"line_number":5044,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":5045,"context_line":"                                    vm_states.ERROR])"},{"line_number":5046,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_fb92d34a","line":5043,"range":{"start_line":5043,"start_character":3,"end_line":5043,"end_character":23},"updated":"2020-03-26 21:45:58.000000000","message":"so i think evaucate is broken because of\n\nhttps://github.com/openstack/nova/blob/9d212738bec63d7490998a2840598d790a3c94fc/nova/conductor/manager.py#L1121-L1128\n\n                    port_res_req \u003d (\n                        self.network_api.get_requested_resource_for_instance(\n                            context, instance.uuid))\n                    # NOTE(gibi): When cyborg or other module wants to handle\n                    # similar non-nova resources then here we have to collect\n                    # all the external resource requests in a single list and\n                    # add them to the RequestSpec.\n                    request_spec.requested_resources \u003d port_res_req","commit_id":"6d1a90683fb16814c62d033bab1ac25ca9e2967f"}],"nova/exception.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"db372922940c290e95be83fdcf8d738306a6e2b1","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_0d500232","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"updated":"2020-03-02 17:02:18.000000000","message":"should this be a 400 bad request rather then forbiden?\n\nits not a permissions issue but rather an invalid request to make on a vm with an accelerator so 403 seams strange.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d2ee409484fb565e82aae6cbd202465a61356567","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_2fa84e75","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_0d500232","updated":"2020-03-02 23:03:36.000000000","message":"We would have documented that these ops are not supported. Making a request for these ops inspite of that should be forbidden.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"0014788a990a91eb8e3d09ff07c7debbc810e82b","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_996082d1","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_1906d21d","updated":"2020-03-05 00:43:03.000000000","message":"Alex and I discussed. Let\u0027s go with 403 in this series. Whoever strongly advocates 400 return code could followup with a patch.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d9dd52b3d542e7432eb0bcdab47143842eaf234b","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_1906d21d","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_197b49f5","updated":"2020-03-05 00:33:31.000000000","message":"FYI, we return 400 for live migration on an instance with PCI\n\nhttps://github.com/openstack/nova/blob/master/nova/conductor/tasks/live_migrate.py#L208\n https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/migrate_server.py#L144","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5cad175459ed8ac794d1aeea1d64b315718b08f8","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_5c021c0d","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_2fa84e75","updated":"2020-03-03 13:25:22.000000000","message":"I\u0027m OK with 400 or 403. I used 400 in case of qos support https://review.opendev.org/#/c/705475/4/nova/api/openstack/compute/shelve.py@a107","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"869f34d64f1d4175ee63b99d3682b1c41572bd72","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_7f7fca14","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_5c021c0d","updated":"2020-03-03 13:49:23.000000000","message":"400 Bad Request, 403 Forbidden, I am ok with one of them.\nBut I think that should inherit class Forbidden at Line154.","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"3965b50e64586019809195fc8b3f03a19fec5374","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_d25ef574","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_7f7fca14","updated":"2020-03-03 14:46:17.000000000","message":"Done","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a9b201fde3a5134666b9f5153e2f41f253c66ccc","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class AdminRequired(Forbidden):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_197b49f5","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":14},"in_reply_to":"1fa4df85_d25ef574","updated":"2020-03-03 23:59:33.000000000","message":"I think we should use 400, I think it is more an invalid request.\n\nAnd we don\u0027t this \u0027code\u0027 in the exception, actually you return 400 in the API layer. (see my comment in api layer.)\n\nSo I think we should rename the exception and change the message, avoid using \"Forbidden\".  Maybe just say \"The servers with accerator can not xxxx\"","commit_id":"c2766719c810abf831209f786411e86df5e9ec98"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"59e59797a7c87e781ed84e4bf2845572dcffe06f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    code \u003d 403"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_9f496632","line":159,"range":{"start_line":159,"start_character":32,"end_line":159,"end_character":45},"updated":"2020-03-03 13:43:00.000000000","message":"How about inherit above Forbidden class?","commit_id":"2b50a57d5522d12ef593fd9cb8e9ea8c1525d3f8"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"3965b50e64586019809195fc8b3f03a19fec5374","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    code \u003d 403"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class ForbiddenWithAccelerators(NovaException):"},{"line_number":160,"context_line":"    msg_fmt \u003d _(\"Forbidden with instances that have accelerators.\")"},{"line_number":161,"context_line":"    code \u003d 403"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_1269ed1f","line":159,"range":{"start_line":159,"start_character":32,"end_line":159,"end_character":45},"in_reply_to":"1fa4df85_9f496632","updated":"2020-03-03 14:46:17.000000000","message":"Done","commit_id":"2b50a57d5522d12ef593fd9cb8e9ea8c1525d3f8"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":7886,"context_line":"            {\u0027rescue\u0027: {"},{"line_number":7887,"context_line":"                \u0027adminPass\u0027: \u0027MySecretPass\u0027,"},{"line_number":7888,"context_line":"                \u0027rescue_image_ref\u0027: \u002770a599e0-31e7-49b7-b260-868f441e862b\u0027}})"},{"line_number":7889,"context_line":"        self._check_allocations_usage(self.server[\u0027id\u0027])"},{"line_number":7890,"context_line":""},{"line_number":7891,"context_line":"    def test_resize_fails(self):"},{"line_number":7892,"context_line":"        self.assertRaises(client.OpenStackApiException,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_c2b94c79","line":7889,"updated":"2020-03-19 14:35:37.000000000","message":"Does unrescue OK too?","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":7886,"context_line":"            {\u0027rescue\u0027: {"},{"line_number":7887,"context_line":"                \u0027adminPass\u0027: \u0027MySecretPass\u0027,"},{"line_number":7888,"context_line":"                \u0027rescue_image_ref\u0027: \u002770a599e0-31e7-49b7-b260-868f441e862b\u0027}})"},{"line_number":7889,"context_line":"        self._check_allocations_usage(self.server[\u0027id\u0027])"},{"line_number":7890,"context_line":""},{"line_number":7891,"context_line":"    def test_resize_fails(self):"},{"line_number":7892,"context_line":"        self.assertRaises(client.OpenStackApiException,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_8ef7f159","line":7889,"in_reply_to":"1fa4df85_c2b94c79","updated":"2020-03-22 01:30:00.000000000","message":"Done","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":7889,"context_line":"        self._check_allocations_usage(self.server[\u0027id\u0027])"},{"line_number":7890,"context_line":""},{"line_number":7891,"context_line":"    def test_resize_fails(self):"},{"line_number":7892,"context_line":"        self.assertRaises(client.OpenStackApiException,"},{"line_number":7893,"context_line":"            self.api.post_server_action, self.server[\u0027id\u0027],"},{"line_number":7894,"context_line":"            {\u0027resize\u0027: {\u0027flavorRef\u0027: \u00272\u0027, \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":7895,"context_line":"        self._check_allocations_usage(self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_2204e017","line":7892,"updated":"2020-03-19 14:35:37.000000000","message":"These are actually HTTP500 errors. From the log:\n\n2020-03-19 09:59:56,381 INFO [nova.api.openstack.wsgi] HTTP exception thrown: Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.\n    \u003cclass \u0027nova.exception.ForbiddenWithAccelerators\u0027\u003e\n    2020-03-19 09:59:56,382 INFO [nova.api.openstack.requestlog] 127.0.0.1 \"POST /v2.1/servers/1666f133-54c2-4c00-8a6f-44549d349a35/action\" status: 500 len: 214 microversion: 2.82 time: 0.042957\n\nSee my comment about missing error handling in the api","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":7889,"context_line":"        self._check_allocations_usage(self.server[\u0027id\u0027])"},{"line_number":7890,"context_line":""},{"line_number":7891,"context_line":"    def test_resize_fails(self):"},{"line_number":7892,"context_line":"        self.assertRaises(client.OpenStackApiException,"},{"line_number":7893,"context_line":"            self.api.post_server_action, self.server[\u0027id\u0027],"},{"line_number":7894,"context_line":"            {\u0027resize\u0027: {\u0027flavorRef\u0027: \u00272\u0027, \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":7895,"context_line":"        self._check_allocations_usage(self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_d9d80e81","line":7892,"in_reply_to":"1fa4df85_2204e017","updated":"2020-03-22 01:30:00.000000000","message":"Done","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"08cc14c7cfc2b9c3248b8ebb640d47e2e508f9bc","unresolved":false,"context_lines":[{"line_number":8088,"context_line":""},{"line_number":8089,"context_line":"    def test_backup_ok(self):"},{"line_number":8090,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8091,"context_line":"            {\u0027createBackup\u0027: {"},{"line_number":8092,"context_line":"                \u0027name\u0027: \u0027Backup 1\u0027,"},{"line_number":8093,"context_line":"                \u0027backup_type\u0027: \u0027daily\u0027,"},{"line_number":8094,"context_line":"                \u0027rotation\u0027: 1}})"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_97f0f892","line":8091,"range":{"start_line":8091,"start_character":14,"end_line":8091,"end_character":26},"updated":"2020-03-24 06:57:50.000000000","message":"We don\u0027t have a block backup compute api, but we tested it.","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"938fbd4c54cd6dd94d82f3d621c50e9bc2b2676e","unresolved":false,"context_lines":[{"line_number":8088,"context_line":""},{"line_number":8089,"context_line":"    def test_backup_ok(self):"},{"line_number":8090,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8091,"context_line":"            {\u0027createBackup\u0027: {"},{"line_number":8092,"context_line":"                \u0027name\u0027: \u0027Backup 1\u0027,"},{"line_number":8093,"context_line":"                \u0027backup_type\u0027: \u0027daily\u0027,"},{"line_number":8094,"context_line":"                \u0027rotation\u0027: 1}})"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_88dc4075","line":8091,"range":{"start_line":8091,"start_character":14,"end_line":8091,"end_character":26},"in_reply_to":"df33271e_97f0f892","updated":"2020-03-25 06:43:26.000000000","message":"Are you saying that you tested it? I haven\u0027t done that -- all I have is this functional test. I am going by Sean Mooney\u0027s testing.","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"08cc14c7cfc2b9c3248b8ebb640d47e2e508f9bc","unresolved":false,"context_lines":[{"line_number":8104,"context_line":"    def test_rebuild_ok(self):"},{"line_number":8105,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"},{"line_number":8106,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8107,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8108,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8109,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8110,"context_line":"        self._check_allocations_usage(self.server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_f7b7c4d7","line":8107,"range":{"start_line":8107,"start_character":14,"end_line":8107,"end_character":21},"updated":"2020-03-24 06:57:50.000000000","message":"ditto","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"938fbd4c54cd6dd94d82f3d621c50e9bc2b2676e","unresolved":false,"context_lines":[{"line_number":8104,"context_line":"    def test_rebuild_ok(self):"},{"line_number":8105,"context_line":"        rebuild_image_ref \u003d fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID"},{"line_number":8106,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8107,"context_line":"            {\u0027rebuild\u0027: {"},{"line_number":8108,"context_line":"                \u0027imageRef\u0027: rebuild_image_ref,"},{"line_number":8109,"context_line":"                \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8110,"context_line":"        self._check_allocations_usage(self.server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_68d9fc81","line":8107,"range":{"start_line":8107,"start_character":14,"end_line":8107,"end_character":21},"in_reply_to":"df33271e_f7b7c4d7","updated":"2020-03-25 06:43:26.000000000","message":"Same response as for backup.","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"08cc14c7cfc2b9c3248b8ebb640d47e2e508f9bc","unresolved":false,"context_lines":[{"line_number":8111,"context_line":""},{"line_number":8112,"context_line":"    def test_rescue_unrescue_ok(self):"},{"line_number":8113,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8114,"context_line":"            {\u0027rescue\u0027: {"},{"line_number":8115,"context_line":"                \u0027adminPass\u0027: \u0027MySecretPass\u0027,"},{"line_number":8116,"context_line":"                \u0027rescue_image_ref\u0027: \u002770a599e0-31e7-49b7-b260-868f441e862b\u0027}})"},{"line_number":8117,"context_line":"        self._check_allocations_usage(self.server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_97c2b832","line":8114,"range":{"start_line":8114,"start_character":14,"end_line":8114,"end_character":20},"updated":"2020-03-24 06:57:50.000000000","message":"ditto.","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"938fbd4c54cd6dd94d82f3d621c50e9bc2b2676e","unresolved":false,"context_lines":[{"line_number":8111,"context_line":""},{"line_number":8112,"context_line":"    def test_rescue_unrescue_ok(self):"},{"line_number":8113,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8114,"context_line":"            {\u0027rescue\u0027: {"},{"line_number":8115,"context_line":"                \u0027adminPass\u0027: \u0027MySecretPass\u0027,"},{"line_number":8116,"context_line":"                \u0027rescue_image_ref\u0027: \u002770a599e0-31e7-49b7-b260-868f441e862b\u0027}})"},{"line_number":8117,"context_line":"        self._check_allocations_usage(self.server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_c8e64845","line":8114,"range":{"start_line":8114,"start_character":14,"end_line":8114,"end_character":20},"in_reply_to":"df33271e_97c2b832","updated":"2020-03-25 06:43:26.000000000","message":"Same response as for backup.","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f6ee31a7c5f26d666f06e665c2cacf06773155ee","unresolved":false,"context_lines":[{"line_number":8121,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8122,"context_line":""},{"line_number":8123,"context_line":"    def test_resize_fails(self):"},{"line_number":8124,"context_line":"        self.assertRaises(client.OpenStackApiException,"},{"line_number":8125,"context_line":"            self.api.post_server_action, self.server[\u0027id\u0027],"},{"line_number":8126,"context_line":"            {\u0027resize\u0027: {\u0027flavorRef\u0027: \u00272\u0027, \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8127,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8128,"context_line":""},{"line_number":8129,"context_line":"    def test_suspend_fails(self):"},{"line_number":8130,"context_line":"        self.assertRaises(client.OpenStackApiException,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_c4213aa2","line":8127,"range":{"start_line":8124,"start_character":1,"end_line":8127,"end_character":50},"updated":"2020-03-23 12:37:58.000000000","message":"To make sure that it is not HTTP 500 any more you can assert the response:\n\n        ex \u003d self.assertRaises(\n            client.OpenStackApiException, self.api.post_server_action, \n            self.server[\u0027id\u0027],\n            {\u0027resize\u0027: {\u0027flavorRef\u0027: \u00272\u0027, \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})\n        self.assertEqual(403, ex.response.status_code)\n        self._check_allocations_usage(self.server)\n\n(same for the rest of the non-happy path test cases below)","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"938fbd4c54cd6dd94d82f3d621c50e9bc2b2676e","unresolved":false,"context_lines":[{"line_number":8121,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8122,"context_line":""},{"line_number":8123,"context_line":"    def test_resize_fails(self):"},{"line_number":8124,"context_line":"        self.assertRaises(client.OpenStackApiException,"},{"line_number":8125,"context_line":"            self.api.post_server_action, self.server[\u0027id\u0027],"},{"line_number":8126,"context_line":"            {\u0027resize\u0027: {\u0027flavorRef\u0027: \u00272\u0027, \u0027OS-DCF:diskConfig\u0027: \u0027AUTO\u0027}})"},{"line_number":8127,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8128,"context_line":""},{"line_number":8129,"context_line":"    def test_suspend_fails(self):"},{"line_number":8130,"context_line":"        self.assertRaises(client.OpenStackApiException,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_a8c66466","line":8127,"range":{"start_line":8124,"start_character":1,"end_line":8127,"end_character":50},"in_reply_to":"df33271e_c4213aa2","updated":"2020-03-25 06:43:26.000000000","message":"Done","commit_id":"61baa747cfce318a390dca3e09e6df4af778dcb4"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fd80ddb4eec956b56ce49ffa557ec8b188219733","unresolved":false,"context_lines":[{"line_number":8125,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8126,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8127,"context_line":"            hostname \u003d \u0027accel_host\u0027 + str(i)"},{"line_number":8128,"context_line":"            if hostname !\u003d server_hostname: "},{"line_number":8129,"context_line":"                other_hostname \u003d hostname"},{"line_number":8130,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8131,"context_line":"                compute_to_stop \u003d self.compute_services[i]"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_284b7484","line":8128,"updated":"2020-03-25 07:03:07.000000000","message":"Fix trailing whitespace.","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aba1aca8212a1217263c4fc06878635cd05b6e7e","unresolved":false,"context_lines":[{"line_number":8125,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8126,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8127,"context_line":"            hostname \u003d \u0027accel_host\u0027 + str(i)"},{"line_number":8128,"context_line":"            if hostname !\u003d server_hostname: "},{"line_number":8129,"context_line":"                other_hostname \u003d hostname"},{"line_number":8130,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8131,"context_line":"                compute_to_stop \u003d self.compute_services[i]"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_f3404538","line":8128,"in_reply_to":"df33271e_284b7484","updated":"2020-03-26 14:09:34.000000000","message":"Done","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fd80ddb4eec956b56ce49ffa557ec8b188219733","unresolved":false,"context_lines":[{"line_number":8129,"context_line":"                other_hostname \u003d hostname"},{"line_number":8130,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8131,"context_line":"                compute_to_stop \u003d self.compute_services[i]"},{"line_number":8132,"context_line":" "},{"line_number":8133,"context_line":"        # Stop and force down the compute service."},{"line_number":8134,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":8135,"context_line":"            host\u003dserver_hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_885f2040","line":8132,"updated":"2020-03-25 07:03:07.000000000","message":"ditto","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aba1aca8212a1217263c4fc06878635cd05b6e7e","unresolved":false,"context_lines":[{"line_number":8129,"context_line":"                other_hostname \u003d hostname"},{"line_number":8130,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8131,"context_line":"                compute_to_stop \u003d self.compute_services[i]"},{"line_number":8132,"context_line":" "},{"line_number":8133,"context_line":"        # Stop and force down the compute service."},{"line_number":8134,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":8135,"context_line":"            host\u003dserver_hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_d33b81c5","line":8132,"in_reply_to":"df33271e_885f2040","updated":"2020-03-26 14:09:34.000000000","message":"Done","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb4377f9abe84218d7d8440779c26df9dd4edcc3","unresolved":false,"context_lines":[{"line_number":8121,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027], {\u0027unrescue\u0027: {}})"},{"line_number":8122,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8123,"context_line":""},{"line_number":8124,"context_line":"    def test_evacuate_ok(self):"},{"line_number":8125,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8126,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8127,"context_line":"            hostname \u003d \u0027accel_host\u0027 + str(i)"},{"line_number":8128,"context_line":"            if hostname !\u003d server_hostname: "},{"line_number":8129,"context_line":"                other_hostname \u003d hostname"},{"line_number":8130,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8131,"context_line":"                compute_to_stop \u003d self.compute_services[i]"},{"line_number":8132,"context_line":" "},{"line_number":8133,"context_line":"        # Stop and force down the compute service."},{"line_number":8134,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":8135,"context_line":"            host\u003dserver_hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":8136,"context_line":"        compute_to_stop.stop()"},{"line_number":8137,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8138,"context_line":""},{"line_number":8139,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8140,"context_line":"            {\u0027evacuate\u0027: {"},{"line_number":8141,"context_line":"                 \u0027host\u0027: other_hostname,"},{"line_number":8142,"context_line":"                 \u0027adminPass\u0027: \u0027MySecretPass\u0027,}})"},{"line_number":8143,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8144,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8145,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8146,"context_line":"        self._check_allocations_usage(self.server,"},{"line_number":8147,"context_line":"                                      check_other_host_alloc\u003dFalse)"},{"line_number":8148,"context_line":""},{"line_number":8149,"context_line":"    def test_resize_fails(self):"},{"line_number":8150,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_0e894fc9","line":8147,"range":{"start_line":8124,"start_character":0,"end_line":8147,"end_character":67},"updated":"2020-03-25 17:24:31.000000000","message":"this should fail and its also not sufficent.\n\nyou need to also assert that the arqs are updated to point to the correct host and that the allocation for the dest host contain the cyborg device.\n\n\nif you add those assertion then this test will fail as the ARQs are not updated and the acclerator is not claimed in placment.\nsee http://paste.openstack.org/show/791153/ and http://paste.openstack.org/show/791154/ which was taken after the evac completed.","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"aba1aca8212a1217263c4fc06878635cd05b6e7e","unresolved":false,"context_lines":[{"line_number":8121,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027], {\u0027unrescue\u0027: {}})"},{"line_number":8122,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8123,"context_line":""},{"line_number":8124,"context_line":"    def test_evacuate_ok(self):"},{"line_number":8125,"context_line":"        server_hostname \u003d self.server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":8126,"context_line":"        for i in range(self.NUM_HOSTS):"},{"line_number":8127,"context_line":"            hostname \u003d \u0027accel_host\u0027 + str(i)"},{"line_number":8128,"context_line":"            if hostname !\u003d server_hostname: "},{"line_number":8129,"context_line":"                other_hostname \u003d hostname"},{"line_number":8130,"context_line":"            if self.compute_services[i].host \u003d\u003d server_hostname:"},{"line_number":8131,"context_line":"                compute_to_stop \u003d self.compute_services[i]"},{"line_number":8132,"context_line":" "},{"line_number":8133,"context_line":"        # Stop and force down the compute service."},{"line_number":8134,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":8135,"context_line":"            host\u003dserver_hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":8136,"context_line":"        compute_to_stop.stop()"},{"line_number":8137,"context_line":"        self.admin_api.put_service(compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":8138,"context_line":""},{"line_number":8139,"context_line":"        self.api.post_server_action(self.server[\u0027id\u0027],"},{"line_number":8140,"context_line":"            {\u0027evacuate\u0027: {"},{"line_number":8141,"context_line":"                 \u0027host\u0027: other_hostname,"},{"line_number":8142,"context_line":"                 \u0027adminPass\u0027: \u0027MySecretPass\u0027,}})"},{"line_number":8143,"context_line":"        self._wait_for_state_change(self.server, \u0027REBUILD\u0027)"},{"line_number":8144,"context_line":"        self._check_allocations_usage(self.server)"},{"line_number":8145,"context_line":"        self._wait_for_state_change(self.server, \u0027ACTIVE\u0027)"},{"line_number":8146,"context_line":"        self._check_allocations_usage(self.server,"},{"line_number":8147,"context_line":"                                      check_other_host_alloc\u003dFalse)"},{"line_number":8148,"context_line":""},{"line_number":8149,"context_line":"    def test_resize_fails(self):"},{"line_number":8150,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_53793191","line":8147,"range":{"start_line":8124,"start_character":0,"end_line":8147,"end_character":67},"in_reply_to":"df33271e_0e894fc9","updated":"2020-03-26 14:09:34.000000000","message":"Done","commit_id":"4e59fdd2b9a106792e0e8248a9e51c0650bb0daf"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db5e5cce96601e5a0802b0ed99382ebda8b5a078","unresolved":false,"context_lines":[{"line_number":9103,"context_line":"                            \"launched_at\": None})"},{"line_number":9104,"context_line":""},{"line_number":9105,"context_line":"        instance \u003d db.instance_get_by_uuid(self.context, instance[\u0027uuid\u0027])"},{"line_number":9106,"context_line":"        instance[\u0027flavor\u0027] \u003d instance_flavor"},{"line_number":9107,"context_line":""},{"line_number":9108,"context_line":"        self.assertRaises(exception.InstanceInvalidState,"},{"line_number":9109,"context_line":"                          self.compute_api.rebuild,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_ed1a397b","line":9106,"updated":"2020-03-19 14:35:37.000000000","message":"I\u0027ve removed this and the test still passes","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"85f63c9fb615ce088a69b5a5a715e6f94b8f7723","unresolved":false,"context_lines":[{"line_number":9103,"context_line":"                            \"launched_at\": None})"},{"line_number":9104,"context_line":""},{"line_number":9105,"context_line":"        instance \u003d db.instance_get_by_uuid(self.context, instance[\u0027uuid\u0027])"},{"line_number":9106,"context_line":"        instance[\u0027flavor\u0027] \u003d instance_flavor"},{"line_number":9107,"context_line":""},{"line_number":9108,"context_line":"        self.assertRaises(exception.InstanceInvalidState,"},{"line_number":9109,"context_line":"                          self.compute_api.rebuild,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1fa4df85_0e48e184","line":9106,"in_reply_to":"1fa4df85_ed1a397b","updated":"2020-03-22 01:30:00.000000000","message":"Done","commit_id":"bdb5c02aceed846bec7b84f0b835a66aa918fd8b"}]}
