)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7a42bc47138e7169fe6405e7fc6bae5022501c8c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Cyborg suspend/resume support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the compute manager to append the cyborg"},{"line_number":10,"context_line":"resource request to the libvirt driver when performing a resume."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"On suspend an instance will be deleted the instance\u0027s ARQs"},{"line_number":13,"context_line":"binding info to free up the bound ARQs in Cyborg service."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This change extends the ``suspend_instance`` and ``resume_instance``"},{"line_number":16,"context_line":"rpcapi function to carry the arq_uuids."},{"line_number":17,"context_line":"This eliminates the need to lookup the uuids associated with the arqs"},{"line_number":18,"context_line":"assinged to the instance by quering Cyborg."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint cyborg-suspend-and-resume"},{"line_number":21,"context_line":"Change-Id: I1ae9c4b1c9525a3fc05fb696ee502fcc3c5271d3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ff570b3c_a506ac1f","line":18,"range":{"start_line":9,"start_character":0,"end_line":18,"end_character":43},"updated":"2020-05-25 12:12:46.000000000","message":"This change extends the compute manager to append the cyborg\nresource request to the libvirt driver when performing a\nsuspend and resume.\n\nOn suspend just need to be exteded to hot unplug the acclerators,\nand on resume just need to hot plug them.\n\nThis change extends the ``suspend_instance`` and ``resume_instance``\nrpcapi function to carry the ``accel_info``, which is the ARQs info\nassociated with the instance by quering Cyborg.","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63aee772568d24827167b5bf10a94b272c3c89a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"269d7cb9_00e8e3fc","updated":"2021-10-21 13:18:23.000000000","message":"I guess, beyond the unit test, this is starting to look nice now.","commit_id":"b2101c2ae4b5f6615d020593f9679300db55c75b"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3f429a63ba0e8de50b38b7a3cd166d0c7e8921cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"017f10a2_05ffba93","updated":"2021-10-22 10:26:29.000000000","message":"Thanks John, the unit tests will be impletment soon.","commit_id":"b2101c2ae4b5f6615d020593f9679300db55c75b"}],"api-guide/source/accelerator-support.rst":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5e0dda6123aad5dc7eadc84961d9499026832d3a","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"   Added support for shelve and unshelve operations."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".. versionchanged:: 23.0.0(Wallaby)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"   Added support for suspend and resume operations."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"8afd07c3_ece5c043","line":63,"range":{"start_line":63,"start_character":20,"end_line":63,"end_character":35},"updated":"2021-11-15 10:29:19.000000000","message":"25.0.0(Yoga)","commit_id":"57c4a848fb7244c1be54c88e83a53d3782dae04e"}],"nova/compute/api.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"79130306d174ed01f33450db0f0f1c7816e31ffe","unresolved":false,"context_lines":[{"line_number":4209,"context_line":"        instance.save(expected_task_state\u003d[None])"},{"line_number":4210,"context_line":"        self._record_action_start(context, instance, instance_actions.SUSPEND)"},{"line_number":4211,"context_line":""},{"line_number":4212,"context_line":"        accel_uuids \u003d []"},{"line_number":4213,"context_line":"        device_profile \u003d instance.flavor.extra_specs.get("},{"line_number":4214,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":4215,"context_line":"        if device_profile:"},{"line_number":4216,"context_line":"            cyclient \u003d cyborg.get_client(context)"},{"line_number":4217,"context_line":"            accel_uuids \u003d [arq[\u0027uuid\u0027]"},{"line_number":4218,"context_line":"                for arq in cyclient.get_arqs_for_instance(instance.uuid)]"},{"line_number":4219,"context_line":""},{"line_number":4220,"context_line":"        self.compute_rpcapi.suspend_instance(context, instance,"},{"line_number":4221,"context_line":"                                             accel_uuids\u003daccel_uuids)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_cbfa03bb","line":4218,"range":{"start_line":4212,"start_character":8,"end_line":4218,"end_character":73},"updated":"2020-05-21 12:43:17.000000000","message":"It should be updated based on the reconstruction of the https://review.opendev.org/#/c/715326/ latest update patach.","commit_id":"b605d5c4b952845c31e3cef5e9ce21c869166c70"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"79130306d174ed01f33450db0f0f1c7816e31ffe","unresolved":false,"context_lines":[{"line_number":4228,"context_line":"        instance.save(expected_task_state\u003d[None])"},{"line_number":4229,"context_line":"        self._record_action_start(context, instance, instance_actions.RESUME)"},{"line_number":4230,"context_line":""},{"line_number":4231,"context_line":"        accel_uuids \u003d []"},{"line_number":4232,"context_line":"        device_profile \u003d instance.flavor.extra_specs.get("},{"line_number":4233,"context_line":"            \u0027accel:device_profile\u0027)"},{"line_number":4234,"context_line":"        if device_profile:"},{"line_number":4235,"context_line":"            cyclient \u003d cyborg.get_client(context)"},{"line_number":4236,"context_line":"            accel_uuids \u003d [arq[\u0027uuid\u0027]"},{"line_number":4237,"context_line":"                for arq in cyclient.get_arqs_for_instance(instance.uuid)]"},{"line_number":4238,"context_line":""},{"line_number":4239,"context_line":"        self.compute_rpcapi.resume_instance(context, instance,"},{"line_number":4240,"context_line":"                                            accel_uuids\u003daccel_uuids)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_abf50fcd","line":4237,"range":{"start_line":4231,"start_character":0,"end_line":4237,"end_character":73},"updated":"2020-05-21 12:43:17.000000000","message":"ditto.","commit_id":"b605d5c4b952845c31e3cef5e9ce21c869166c70"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"66ec52c98cf721ed0ec65e5f0d53b9d941774d7b","unresolved":false,"context_lines":[{"line_number":4201,"context_line":"        instance.save(expected_task_state\u003d[None])"},{"line_number":4202,"context_line":"        self._record_action_start(context, instance, instance_actions.SUSPEND)"},{"line_number":4203,"context_line":""},{"line_number":4204,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":4205,"context_line":"        accel_info \u003d cyclient.get_arqs_for_instance(instance)"},{"line_number":4206,"context_line":""},{"line_number":4207,"context_line":"        self.compute_rpcapi.suspend_instance(context, instance,"},{"line_number":4208,"context_line":"                                             accel_info\u003daccel_info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_65b0148d","line":4205,"range":{"start_line":4204,"start_character":8,"end_line":4205,"end_character":61},"updated":"2020-05-25 12:05:43.000000000","message":"accel_info \u003d []\ndp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)\n    if dp_name:\n        cyclient \u003d cyborg.get_client(context)\n        accel_info \u003d cyclient.get_arqs_for_instance(instance.uuid)","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"66ec52c98cf721ed0ec65e5f0d53b9d941774d7b","unresolved":false,"context_lines":[{"line_number":4215,"context_line":"        instance.save(expected_task_state\u003d[None])"},{"line_number":4216,"context_line":"        self._record_action_start(context, instance, instance_actions.RESUME)"},{"line_number":4217,"context_line":""},{"line_number":4218,"context_line":"        cyclient \u003d cyborg.get_client(context)"},{"line_number":4219,"context_line":"        accel_info \u003d cyclient.get_arqs_for_instance(instance)"},{"line_number":4220,"context_line":""},{"line_number":4221,"context_line":"        self.compute_rpcapi.resume_instance(context, instance,"},{"line_number":4222,"context_line":"                                            accel_info\u003daccel_info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_85a72850","line":4219,"range":{"start_line":4218,"start_character":0,"end_line":4219,"end_character":61},"updated":"2020-05-25 12:05:43.000000000","message":"accel_info \u003d []\ndp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)\n    if dp_name:\n        cyclient \u003d cyborg.get_client(context)\n        accel_info \u003d cyclient.get_arqs_for_instance(instance.uuid)","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63aee772568d24827167b5bf10a94b272c3c89a9","unresolved":true,"context_lines":[{"line_number":4345,"context_line":"        return self.compute_rpcapi.get_instance_diagnostics(context,"},{"line_number":4346,"context_line":"                                                            instance\u003dinstance)"},{"line_number":4347,"context_line":""},{"line_number":4348,"context_line":"    @block_accelerators(until_service\u003d54)"},{"line_number":4349,"context_line":"    @reject_sev_instances(instance_actions.SUSPEND)"},{"line_number":4350,"context_line":"    @check_instance_lock"},{"line_number":4351,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE])"}],"source_content_type":"text/x-python","patch_set":8,"id":"08327cbb_68006f40","line":4348,"updated":"2021-10-21 13:18:23.000000000","message":"cool, I see, this allows it once we are upgrade. We can add a service version without an RPC API change.","commit_id":"b2101c2ae4b5f6615d020593f9679300db55c75b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d1af2f081c33212defb85dda7871231ceb9ba8b0","unresolved":true,"context_lines":[{"line_number":4359,"context_line":"        dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":4360,"context_line":"        if dp_name:"},{"line_number":4361,"context_line":"            cyclient \u003d cyborg.get_client(context)"},{"line_number":4362,"context_line":"            accel_info \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":4363,"context_line":""},{"line_number":4364,"context_line":"        self.compute_rpcapi.suspend_instance(context, instance,"},{"line_number":4365,"context_line":"                                             accel_info\u003daccel_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ab872550_8286968e","line":4362,"updated":"2021-10-21 13:15:40.000000000","message":"Should this really be in the compute manager? It should have access to cyborg, or is this because we don\u0027t want cyborg creds on the compute node config?","commit_id":"b2101c2ae4b5f6615d020593f9679300db55c75b"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"3f429a63ba0e8de50b38b7a3cd166d0c7e8921cb","unresolved":true,"context_lines":[{"line_number":4359,"context_line":"        dp_name \u003d instance.flavor.extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":4360,"context_line":"        if dp_name:"},{"line_number":4361,"context_line":"            cyclient \u003d cyborg.get_client(context)"},{"line_number":4362,"context_line":"            accel_info \u003d cyclient.get_arqs_for_instance(instance.uuid)"},{"line_number":4363,"context_line":""},{"line_number":4364,"context_line":"        self.compute_rpcapi.suspend_instance(context, instance,"},{"line_number":4365,"context_line":"                                             accel_info\u003daccel_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"54bbcf4f_be527196","line":4362,"in_reply_to":"ab872550_8286968e","updated":"2021-10-22 10:26:29.000000000","message":"John, we may raise exception if we get cyborg error at api layer, it\u0027s better than to raise exception in the compute manager.","commit_id":"b2101c2ae4b5f6615d020593f9679300db55c75b"}],"nova/compute/manager.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"79130306d174ed01f33450db0f0f1c7816e31ffe","unresolved":false,"context_lines":[{"line_number":6383,"context_line":"        if device_profile:"},{"line_number":6384,"context_line":"            try:"},{"line_number":6385,"context_line":"                cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":6386,"context_line":"                    context, device_profile, instance, accel_uuids or [])"},{"line_number":6387,"context_line":"            except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":6388,"context_line":"                LOG.exception(exc)"},{"line_number":6389,"context_line":"                self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_cb232355","line":6386,"range":{"start_line":6386,"start_character":55,"end_line":6386,"end_character":66},"updated":"2020-05-21 12:43:17.000000000","message":"If the accel_uuids is None, need to be consider use _create_and_bind_arqs() to get the new accel_uuids.","commit_id":"b605d5c4b952845c31e3cef5e9ce21c869166c70"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3abb105b31dc91f31f7979f767c9ba492fcd5d25","unresolved":false,"context_lines":[{"line_number":6383,"context_line":"        if device_profile:"},{"line_number":6384,"context_line":"            try:"},{"line_number":6385,"context_line":"                cyborg_info \u003d self._get_bound_arq_resources("},{"line_number":6386,"context_line":"                    context, device_profile, instance, accel_uuids or [])"},{"line_number":6387,"context_line":"            except (Exception, eventlet.timeout.Timeout) as exc:"},{"line_number":6388,"context_line":"                LOG.exception(exc)"},{"line_number":6389,"context_line":"                self._build_resources_cleanup(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_c36e672d","line":6386,"updated":"2020-05-21 14:48:04.000000000","message":"pep8: F821 undefined name \u0027accel_uuids\u0027","commit_id":"b605d5c4b952845c31e3cef5e9ce21c869166c70"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"66ec52c98cf721ed0ec65e5f0d53b9d941774d7b","unresolved":false,"context_lines":[{"line_number":1168,"context_line":"        version \u003d \u00275.14\u0027"},{"line_number":1169,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1170,"context_line":"        if not client.can_send_version(version):"},{"line_number":1171,"context_line":"            msg_kwargs.pop(\u0027accel_uuids\u0027)"},{"line_number":1172,"context_line":"            version \u003d \u00275.0\u0027"},{"line_number":1173,"context_line":"        cctxt \u003d client.prepare("},{"line_number":1174,"context_line":"                server\u003d_compute_host(None, instance), version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_25d0dcc9","line":1171,"range":{"start_line":1171,"start_character":28,"end_line":1171,"end_character":39},"updated":"2020-05-25 12:05:43.000000000","message":"s/accel_info/accel_info/","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"66ec52c98cf721ed0ec65e5f0d53b9d941774d7b","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"        version \u003d \u00275.14\u0027"},{"line_number":1346,"context_line":""},{"line_number":1347,"context_line":"        if not client.can_send_version(version):"},{"line_number":1348,"context_line":"            msg_kwargs.pop(\u0027accel_uuids\u0027)"},{"line_number":1349,"context_line":"            version \u003d \u00275.0\u0027"},{"line_number":1350,"context_line":"        cctxt \u003d client.prepare("},{"line_number":1351,"context_line":"                server\u003d_compute_host(None, instance), version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_05d5d8b9","line":1348,"range":{"start_line":1348,"start_character":28,"end_line":1348,"end_character":39},"updated":"2020-05-25 12:05:43.000000000","message":"s/accel_info/accel_info/","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"66ec52c98cf721ed0ec65e5f0d53b9d941774d7b","unresolved":false,"context_lines":[{"line_number":1945,"context_line":"        self._disconnect_volume(context, old_connection_info, instance)"},{"line_number":1946,"context_line":""},{"line_number":1947,"context_line":"    def _get_existing_domain_xml(self, instance, network_info,"},{"line_number":1948,"context_line":"                                 block_device_info\u003dNone, cyborg_info\u003dNone):"},{"line_number":1949,"context_line":"        try:"},{"line_number":1950,"context_line":"            guest \u003d self._host.get_guest(instance)"},{"line_number":1951,"context_line":"            xml \u003d guest.get_xml_desc()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_457230e5","line":1948,"range":{"start_line":1948,"start_character":55,"end_line":1948,"end_character":73},"updated":"2020-05-25 12:05:43.000000000","message":"remove","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"66ec52c98cf721ed0ec65e5f0d53b9d941774d7b","unresolved":false,"context_lines":[{"line_number":1957,"context_line":"            xml \u003d self._get_guest_xml(nova_context.get_admin_context(),"},{"line_number":1958,"context_line":"                                      instance, network_info, disk_info,"},{"line_number":1959,"context_line":"                                      instance.image_meta,"},{"line_number":1960,"context_line":"                                      block_device_info\u003dblock_device_info,"},{"line_number":1961,"context_line":"                                      accel_info\u003dcyborg_info)"},{"line_number":1962,"context_line":"        return xml"},{"line_number":1963,"context_line":""},{"line_number":1964,"context_line":"    def detach_volume(self, context, connection_info, instance, mountpoint,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_a57fcca9","line":1961,"range":{"start_line":1960,"start_character":73,"end_line":1961,"end_character":60},"updated":"2020-05-25 12:05:43.000000000","message":"remove","commit_id":"8c359e150f4796094dbe9ed25ac407b69437a6f0"}]}
