)]}'
{"cyborg/api/controllers/v2/devices.py":[{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"884e4cb03bac681913f49273686e503e90e73aed","unresolved":true,"context_lines":[{"line_number":141,"context_line":"    @expose.expose(None, wtypes.text, types.uuid,"},{"line_number":142,"context_line":"                   status_code\u003dHTTPStatus.OK)"},{"line_number":143,"context_line":"    def disable(self, uuid):"},{"line_number":144,"context_line":"        context \u003d pecan.request.context"},{"line_number":145,"context_line":"        device \u003d objects.Device.get(context, uuid)"},{"line_number":146,"context_line":"        device.status \u003d \u0027maintaining\u0027"},{"line_number":147,"context_line":"        device.save(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a1442506_7ef08d2a","line":144,"range":{"start_line":144,"start_character":0,"end_line":144,"end_character":39},"updated":"2023-08-18 02:53:43.000000000","message":"need add microversion check.\nref:https://review.opendev.org/c/openstack/cyborg/+/817516","commit_id":"0b76cd8fb1a4ffbaa84caa446daa409af02ed634"}],"cyborg/api/controllers/v2/utils.py":[{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"884e4cb03bac681913f49273686e503e90e73aed","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    return api.request.version.minor \u003e\u003d versions.MINOR_1_PROJECT_ID"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def update_resource_provider_inventory(context, device, disable\u003dTrue):"},{"line_number":31,"context_line":"    global PLACEMENT_CLIENT"},{"line_number":32,"context_line":"    if not PLACEMENT_CLIENT:"},{"line_number":33,"context_line":"        PLACEMENT_CLIENT \u003d placement_client.PlacementClient()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    deployable \u003d objects.Deployable.get_by_id(context, device.id)"},{"line_number":36,"context_line":"    filters \u003d {\u0027deployable_id\u0027: deployable.id, \u0027key\u0027: \u0027rc\u0027}"},{"line_number":37,"context_line":"    attributes \u003d objects.Attribute.get_by_filter(context, filters)"},{"line_number":38,"context_line":"    if attributes:"},{"line_number":39,"context_line":"        att_type \u003d attributes[0].value"},{"line_number":40,"context_line":"    else:"},{"line_number":41,"context_line":"        raise exception.ResourceNotFound("},{"line_number":42,"context_line":"            resource\u003d\u0027Attribute\u0027,"},{"line_number":43,"context_line":"            msg\u003d\u0027with deployable_id\u003d%s,key\u003d%s\u0027 % (deployable.id, \u0027rc\u0027))"},{"line_number":44,"context_line":"    total \u003d deployable.num_accelerators"},{"line_number":45,"context_line":"    reserved \u003d total if disable else 0"},{"line_number":46,"context_line":"    update_inventories \u003d {att_type: {\"total\": total, \"reserved\": reserved}}"},{"line_number":47,"context_line":"    PLACEMENT_CLIENT.update_inventory(deployable.rp_uuid, update_inventories)"}],"source_content_type":"text/x-python","patch_set":5,"id":"464acbbc_b0a10384","line":47,"range":{"start_line":30,"start_character":0,"end_line":47,"end_character":77},"updated":"2023-08-18 02:53:43.000000000","message":"please remove to common/placement_client.py","commit_id":"0b76cd8fb1a4ffbaa84caa446daa409af02ed634"}],"cyborg/common/placement_client.py":[{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"884e4cb03bac681913f49273686e503e90e73aed","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            \u0027inventories\u0027: inventories"},{"line_number":156,"context_line":"        }"},{"line_number":157,"context_line":"        try:"},{"line_number":158,"context_line":"            return self.put(url, body, version\u003d\u00271.26\u0027).json()"},{"line_number":159,"context_line":"        except ks_exc.NotFound:"},{"line_number":160,"context_line":"            raise exception.PlacementResourceProviderNotFound("},{"line_number":161,"context_line":"                resource_provider\u003dresource_provider_uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d4aaebd9_b221f78b","line":158,"range":{"start_line":158,"start_character":37,"end_line":158,"end_character":53},"updated":"2023-08-18 02:53:43.000000000","message":"the latest version is invalid?","commit_id":"0b76cd8fb1a4ffbaa84caa446daa409af02ed634"},{"author":{"_account_id":34665,"name":"anguoming","email":"agm_daydayup@foxmail.com","username":"guomingan"},"change_message_id":"4841f1d721fede79582c86ee55468c8520e76c2f","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            \u0027inventories\u0027: inventories"},{"line_number":156,"context_line":"        }"},{"line_number":157,"context_line":"        try:"},{"line_number":158,"context_line":"            return self.put(url, body, version\u003d\u00271.26\u0027).json()"},{"line_number":159,"context_line":"        except ks_exc.NotFound:"},{"line_number":160,"context_line":"            raise exception.PlacementResourceProviderNotFound("},{"line_number":161,"context_line":"                resource_provider\u003dresource_provider_uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"021d8859_c96dd04c","line":158,"range":{"start_line":158,"start_character":37,"end_line":158,"end_character":53},"in_reply_to":"d4aaebd9_b221f78b","updated":"2023-08-24 12:04:19.000000000","message":"when disable a device, we need update the reserved\u0027s value to total; the placment api from 1.26 support this.\n------\nStarting from microversion 1.26, this value has to be less than or equal to the value of total.\nhttps://docs.openstack.org/api-ref/placement/?expanded\u003dupdate-resource-provider-inventory-detail#update-resource-provider-inventory","commit_id":"0b76cd8fb1a4ffbaa84caa446daa409af02ed634"}],"cyborg/common/policy.py":[{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"884e4cb03bac681913f49273686e503e90e73aed","unresolved":true,"context_lines":[{"line_number":49,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":50,"context_line":"                       description\u003d\u0027Retrieve all device records\u0027),"},{"line_number":51,"context_line":"    policy.RuleDefault(\u0027cyborg:device:disable\u0027,"},{"line_number":52,"context_line":"                       \u0027rule:admin_api\u0027,"},{"line_number":53,"context_line":"                       description\u003d\u0027Disable a device\u0027),"},{"line_number":54,"context_line":"    policy.RuleDefault(\u0027cyborg:device:enable\u0027,"},{"line_number":55,"context_line":"                       \u0027rule:admin_api\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"cbc0ed45_e52e4604","line":52,"range":{"start_line":52,"start_character":0,"end_line":52,"end_character":40},"updated":"2023-08-18 02:53:43.000000000","message":"rule:allow","commit_id":"0b76cd8fb1a4ffbaa84caa446daa409af02ed634"},{"author":{"_account_id":34665,"name":"anguoming","email":"agm_daydayup@foxmail.com","username":"guomingan"},"change_message_id":"4841f1d721fede79582c86ee55468c8520e76c2f","unresolved":true,"context_lines":[{"line_number":49,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":50,"context_line":"                       description\u003d\u0027Retrieve all device records\u0027),"},{"line_number":51,"context_line":"    policy.RuleDefault(\u0027cyborg:device:disable\u0027,"},{"line_number":52,"context_line":"                       \u0027rule:admin_api\u0027,"},{"line_number":53,"context_line":"                       description\u003d\u0027Disable a device\u0027),"},{"line_number":54,"context_line":"    policy.RuleDefault(\u0027cyborg:device:enable\u0027,"},{"line_number":55,"context_line":"                       \u0027rule:admin_api\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9114d266_5bb48eb9","line":52,"range":{"start_line":52,"start_character":0,"end_line":52,"end_character":40},"in_reply_to":"cbc0ed45_e52e4604","updated":"2023-08-24 12:04:19.000000000","message":"according to the bp, we allow the admin user to disable/enable device only.\n-------\n404(the device is not found),403(the role is not admin)\n\nhttps://review.opendev.org/c/openstack/cyborg-specs/+/891310/5/specs/2023.2/approved/disable-enable-device.rst","commit_id":"0b76cd8fb1a4ffbaa84caa446daa409af02ed634"}]}
