)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2020-07-01 21:49:32 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Attribute API specification."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I72acf569d56d4e7feaec83da9274364282cf0dbf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bf51134e_0304b47a","line":8,"updated":"2020-07-02 00:50:20.000000000","message":"Add the spec goal in this commit message.","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"}],"specs/victoria/approved/attribute-api-support.rst":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"caa2d1305ef02fd9c65c440e4ef9d13b5516c43a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"An end user or deployer needs a group of APIs to manage his accelerator\u0027s"},{"line_number":25,"context_line":"attributes."},{"line_number":26,"context_line":"Here are some useful scenario:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* For a NIC accelerator, we need to add a phys_net attribute, it\u0027s should be"},{"line_number":29,"context_line":"  created by deployer or other components."}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_f8cd2266","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":29},"updated":"2020-06-28 09:50:48.000000000","message":"s/scenario/scenarios","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"An end user or deployer needs a group of APIs to manage his accelerator\u0027s"},{"line_number":25,"context_line":"attributes."},{"line_number":26,"context_line":"Here are some useful scenario:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* For a NIC accelerator, we need to add a phys_net attribute, it\u0027s should be"},{"line_number":29,"context_line":"  created by deployer or other components."}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_4517dbee","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":29},"in_reply_to":"bf51134e_f8cd2266","updated":"2020-07-08 16:36:54.000000000","message":"Done","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"b4097adc8c29a74eb14ad4e956d353226f436936","unresolved":false,"context_lines":[{"line_number":61,"context_line":" Note:"},{"line_number":62,"context_line":"    List all attributes of specified device."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":65,"context_line":" METHOD: GET"},{"line_number":66,"context_line":" Query Parameters: None"},{"line_number":67,"context_line":" Normal response code and body:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_f8dc02e5","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":40},"updated":"2020-06-28 10:19:33.000000000","message":"for phys_net, it is device special. This is OK.\n\n\nHow about device common attributes, a good ideas for it? \nI\u0027m consider another scenarios:\nIf we have a 100 hosts with a FPGA devices. \n\nMaybe we program half of them(50 FPGA) with ovs. but the FPGA driver does not know it is ovs, it is just know it\u0027s function_id maybe \"123456-90000-333-3333-333\". \nIt need to get the function_id/alias map{\"123456-90000-333-3333-333\": \"ovs\"} then to report.\n\nShould we post this function_id/alias map to all the 50 FPGA devices? \n\nAt present, only admin allow to do program, so this maybe a program.\nOne solution is that, he can write a script, list all the expected FPGA devices and set attribute for them.\n\nBut this maybe not a program for tenant program, for tenant own less devices. \nAnd not sure we will support tenant program, maybe tenant can program his program region.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"8e4d3b5ede44e1e9dd9c3e1fb3a6b7a2b1ddb323","unresolved":false,"context_lines":[{"line_number":61,"context_line":" Note:"},{"line_number":62,"context_line":"    List all attributes of specified device."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":65,"context_line":" METHOD: GET"},{"line_number":66,"context_line":" Query Parameters: None"},{"line_number":67,"context_line":" Normal response code and body:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_e50d4fe9","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":40},"in_reply_to":"bf51134e_f8dc02e5","updated":"2020-07-01 13:50:40.000000000","message":"It\u0027s better to not to consider improvement before implementation. I agree with the script now.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"3e30107c12716b82b7e240bd569193c991e7e53b","unresolved":false,"context_lines":[{"line_number":78,"context_line":" URL: /v2/device/{uuid}/attribute"},{"line_number":79,"context_line":" METHOD: POST"},{"line_number":80,"context_line":" Request body: A device attribute"},{"line_number":81,"context_line":"    {\"key\": \"key1\", \"value\": \"value1\"}"},{"line_number":82,"context_line":" Normal response code and body:"},{"line_number":83,"context_line":"    204 (No content)"},{"line_number":84,"context_line":"    No response body"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_38c83a72","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":38},"updated":"2020-06-28 09:32:45.000000000","message":"Is the attribute a single key-value pair or multi key-value pairs?","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"8e4d3b5ede44e1e9dd9c3e1fb3a6b7a2b1ddb323","unresolved":false,"context_lines":[{"line_number":78,"context_line":" URL: /v2/device/{uuid}/attribute"},{"line_number":79,"context_line":" METHOD: POST"},{"line_number":80,"context_line":" Request body: A device attribute"},{"line_number":81,"context_line":"    {\"key\": \"key1\", \"value\": \"value1\"}"},{"line_number":82,"context_line":" Normal response code and body:"},{"line_number":83,"context_line":"    204 (No content)"},{"line_number":84,"context_line":"    No response body"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_21c4863f","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":38},"in_reply_to":"bf51134e_38c83a72","updated":"2020-07-01 13:50:40.000000000","message":"Multi k-v pairs.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"caa2d1305ef02fd9c65c440e4ef9d13b5516c43a","unresolved":false,"context_lines":[{"line_number":89,"context_line":" Note:"},{"line_number":90,"context_line":"    Create one device attribute."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":93,"context_line":" METHOD: DELETE"},{"line_number":94,"context_line":" Query Parameters: None"},{"line_number":95,"context_line":" Normal response code and body:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_9801866d","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":40},"updated":"2020-06-28 09:50:48.000000000","message":"I think we need to support deleting attribute by key as well. For the operator\u0027s convenience.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"3e30107c12716b82b7e240bd569193c991e7e53b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    422 (Unprocessable): Bad input"},{"line_number":101,"context_line":"    { \u0027error\u0027: \u003cerror-string\u003e }"},{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Delete one existing device attribute."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":106,"context_line":" METHOD: PUT"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_78a3d2b2","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":41},"updated":"2020-06-28 09:32:45.000000000","message":"So here we delete one key-value pair or multi key-value pairs?","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    422 (Unprocessable): Bad input"},{"line_number":101,"context_line":"    { \u0027error\u0027: \u003cerror-string\u003e }"},{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Delete one existing device attribute."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":106,"context_line":" METHOD: PUT"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_e5db8f4c","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":41},"in_reply_to":"bf51134e_78a3d2b2","updated":"2020-07-08 16:36:54.000000000","message":"Done","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"caa2d1305ef02fd9c65c440e4ef9d13b5516c43a","unresolved":false,"context_lines":[{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Delete one existing device attribute."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":106,"context_line":" METHOD: PUT"},{"line_number":107,"context_line":" Query Parameters: None"},{"line_number":108,"context_line":" Request body: Value of device attribute"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_9836a650","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":40},"updated":"2020-06-28 09:50:48.000000000","message":"It seems that we assume this attribute already has the key. Can we get it by key instead of UUID.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Delete one existing device attribute."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid}"},{"line_number":106,"context_line":" METHOD: PUT"},{"line_number":107,"context_line":" Query Parameters: None"},{"line_number":108,"context_line":" Request body: Value of device attribute"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_a5d19732","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":40},"in_reply_to":"bf51134e_9836a650","updated":"2020-07-08 16:36:54.000000000","message":"Done","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"caa2d1305ef02fd9c65c440e4ef9d13b5516c43a","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Testing"},{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":167,"context_line":"None"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_38479abe","line":167,"range":{"start_line":167,"start_character":0,"end_line":167,"end_character":4},"updated":"2020-06-28 09:50:48.000000000","message":"UT is required as well.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Testing"},{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":167,"context_line":"None"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_c5e00bfe","line":167,"range":{"start_line":167,"start_character":0,"end_line":167,"end_character":4},"in_reply_to":"bf51134e_38479abe","updated":"2020-07-08 16:36:54.000000000","message":"Done","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"caa2d1305ef02fd9c65c440e4ef9d13b5516c43a","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":171,"context_line":"None"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"References"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_d83bfe34","line":171,"range":{"start_line":171,"start_character":0,"end_line":171,"end_character":4},"updated":"2020-06-28 09:50:48.000000000","message":"need a API doc here.","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":171,"context_line":"None"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"References"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf51134e_25e5870b","line":171,"range":{"start_line":171,"start_character":0,"end_line":171,"end_character":4},"in_reply_to":"bf51134e_d83bfe34","updated":"2020-07-08 16:36:54.000000000","message":"Done","commit_id":"205c9d539ad0d3bd67e8610aced1a16a72143238"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"None"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Alternatives"},{"line_number":39,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_03e154ff","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":4},"updated":"2020-07-02 00:50:20.000000000","message":"It\u0027s not None, you will change the device GET/PUT/POST/DELETE APIs, that should be described here.\n\nOthers, you will change the API characteristics, so you should add a microversion for this change, we were added the v2 API support in Ussuri [1], that we should bump the microversion for better API backward compatibility.\n\n[1] https://review.opendev.org/#/c/695648/","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"None"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Alternatives"},{"line_number":39,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_28b21b95","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":4},"in_reply_to":"bf51134e_03e154ff","updated":"2020-07-08 16:36:54.000000000","message":"Why we will change device API. It is \u0027attribute api\u0027 that we need to change, a sub-controller is not enough? Could elaborate on it? Thx","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"REST API impact"},{"line_number":49,"context_line":"---------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":" URL: /v2/device/{uuid}/attribute"},{"line_number":54,"context_line":" METHOD: GET"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_83ec44f4","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":2},"updated":"2020-07-02 00:50:20.000000000","message":"Instead of using \".. code-block:: json\".","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":54,"context_line":" METHOD: GET"},{"line_number":55,"context_line":" Normal response code and body:"},{"line_number":56,"context_line":"    200"},{"line_number":57,"context_line":"    { \u0027attributes\u0027: [ {\"key\": \"key1\", \"value\": \"value1\", \"uuid\": \"uuid1\"}, ... ] }"},{"line_number":58,"context_line":" Error response code and body:"},{"line_number":59,"context_line":"    401 (Unauthorized): RBAC check failed"},{"line_number":60,"context_line":"    No response body"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_a3efc8e7","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":82},"updated":"2020-07-02 00:50:20.000000000","message":"Hope you can format this json body, such as in https://review.opendev.org/#/c/699149/10/specs/ussuri/approved/api-microversion.rst@97","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":" URL: /v2/device/{uuid}/attribute"},{"line_number":54,"context_line":" METHOD: GET"},{"line_number":55,"context_line":" Normal response code and body:"},{"line_number":56,"context_line":"    200"},{"line_number":57,"context_line":"    { \u0027attributes\u0027: [ {\"key\": \"key1\", \"value\": \"value1\", \"uuid\": \"uuid1\"}, ... ] }"},{"line_number":58,"context_line":" Error response code and body:"},{"line_number":59,"context_line":"    401 (Unauthorized): RBAC check failed"},{"line_number":60,"context_line":"    No response body"},{"line_number":61,"context_line":" Note:"},{"line_number":62,"context_line":"    List all attributes of specified device."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid_or_name}"},{"line_number":65,"context_line":" METHOD: GET"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_e388a023","line":62,"range":{"start_line":53,"start_character":0,"end_line":62,"end_character":44},"updated":"2020-07-02 00:50:20.000000000","message":"You can format these as bellow, the *Note* just need add the method below, to further explain the API. The same as the other new APIs.\n\nURL: /v2/device/{uuid}/attribute\n\nRequest method: GET (List attributes)\n\n  List all attributes of specified device.\n\nList attributes API\u0027s response body:\n\n  .. code-block:: json\n\n    {\n        \u0027attributes\u0027: [{\n            \"key\": \"key1\",\n            \"value\": \"value1\",\n            \"uuid\": \"uuid1\"\n        },{\n            \"key\": \"key2\",\n            \"value\": \"value2\",\n            \"uuid\": \"uuid2\"\n        },\n        ...\n        ]\n     }\n\nError response code and body:\n  200\n  401 (Unauthorized): RBAC check failed\n  No response body","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid_or_name}"},{"line_number":65,"context_line":" METHOD: GET"},{"line_number":66,"context_line":" Query Parameters: None"},{"line_number":67,"context_line":" Normal response code and body:"},{"line_number":68,"context_line":"    200"},{"line_number":69,"context_line":"    { \u0027attribute\u0027: {\"key\": \"key1\", \"value\": \"value1\", \"uuid\": \"uuid1\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_a3ab4873","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":23},"updated":"2020-07-02 00:50:20.000000000","message":"Redundant, in the GET API, if we need add request parameter, we just need to add it to the URL(..?param\u003dkey1,..)","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid_or_name}"},{"line_number":65,"context_line":" METHOD: GET"},{"line_number":66,"context_line":" Query Parameters: None"},{"line_number":67,"context_line":" Normal response code and body:"},{"line_number":68,"context_line":"    200"},{"line_number":69,"context_line":"    { \u0027attribute\u0027: {\"key\": \"key1\", \"value\": \"value1\", \"uuid\": \"uuid1\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_e8ae637f","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":23},"in_reply_to":"bf51134e_a3ab4873","updated":"2020-07-08 16:36:54.000000000","message":"It is a get one method, what param we need here?","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":66,"context_line":" Query Parameters: None"},{"line_number":67,"context_line":" Normal response code and body:"},{"line_number":68,"context_line":"    200"},{"line_number":69,"context_line":"    { \u0027attribute\u0027: {\"key\": \"key1\", \"value\": \"value1\", \"uuid\": \"uuid1\","},{"line_number":70,"context_line":"    \"created_at\": \"2020-05-28T03:03:20\", \"updated_at\": \"2020-05-28T03:03:20\"} }"},{"line_number":71,"context_line":" Error response code and body:"},{"line_number":72,"context_line":"    401 (Unauthorized): RBAC check failed"},{"line_number":73,"context_line":"    422 (Unprocessable): No device profile of that UUID exists"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_e3ba60df","line":70,"range":{"start_line":69,"start_character":4,"end_line":70,"end_character":79},"updated":"2020-07-02 00:50:20.000000000","message":"ditto","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":78,"context_line":" URL: /v2/device/{uuid}/attribute"},{"line_number":79,"context_line":" METHOD: POST"},{"line_number":80,"context_line":" Request body: A device attribute"},{"line_number":81,"context_line":"    {\"key\": \"key1\", \"value\": \"value1\"}"},{"line_number":82,"context_line":" Normal response code and body:"},{"line_number":83,"context_line":"    204 (No content)"},{"line_number":84,"context_line":"    No response body"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_c3bf5cce","line":81,"range":{"start_line":81,"start_character":4,"end_line":81,"end_character":38},"updated":"2020-07-02 00:50:20.000000000","message":"ditto","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":85,"context_line":" Error response code and body:"},{"line_number":86,"context_line":"    401 (Unauthorized): RBAC check failed"},{"line_number":87,"context_line":"    422 (Unprocessable): Bad input or name is not unique"},{"line_number":88,"context_line":"    { \u0027error\u0027: \u003cerror-string\u003e }"},{"line_number":89,"context_line":" Note:"},{"line_number":90,"context_line":"    Create one device attribute."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_23b578ef","line":88,"range":{"start_line":88,"start_character":4,"end_line":88,"end_character":31},"updated":"2020-07-02 00:50:20.000000000","message":"ditto","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":98,"context_line":" Error response code and body:"},{"line_number":99,"context_line":"    401 (Unauthorized): RBAC check failed"},{"line_number":100,"context_line":"    422 (Unprocessable): Bad input"},{"line_number":101,"context_line":"    { \u0027error\u0027: \u003cerror-string\u003e }"},{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Delete one existing device attribute."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_03baf4dc","line":101,"range":{"start_line":101,"start_character":4,"end_line":101,"end_character":31},"updated":"2020-07-02 00:50:20.000000000","message":"ditto","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":106,"context_line":" METHOD: PUT"},{"line_number":107,"context_line":" Query Parameters: None"},{"line_number":108,"context_line":" Request body: Value of device attribute"},{"line_number":109,"context_line":"    {\"value\": \"value1\"}"},{"line_number":110,"context_line":" Normal response code and body:"},{"line_number":111,"context_line":"    204 (No content)"},{"line_number":112,"context_line":"    No response body"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_63ce5084","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":23},"updated":"2020-07-02 00:50:20.000000000","message":"ditto","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":113,"context_line":" Error response code and body:"},{"line_number":114,"context_line":"    401 (Unauthorized): RBAC check failed"},{"line_number":115,"context_line":"    422 (Unprocessable): Bad input"},{"line_number":116,"context_line":"    { \u0027error\u0027: \u003cerror-string\u003e }"},{"line_number":117,"context_line":" Note:"},{"line_number":118,"context_line":"    Update one existing device attribute."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_43cb4c71","line":116,"range":{"start_line":116,"start_character":4,"end_line":116,"end_character":31},"updated":"2020-07-02 00:50:20.000000000","message":"ditto","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Other end user impact"},{"line_number":129,"context_line":"---------------------"},{"line_number":130,"context_line":"None"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Performance Impact"},{"line_number":133,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_63cad04f","line":130,"updated":"2020-07-02 00:50:20.000000000","message":"If users do not upgrade Cyborg, this feature cannot be used.","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"----------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"* Change Cyborg REST APIs."},{"line_number":156,"context_line":"* Change Cyborg Attribute table."},{"line_number":157,"context_line":"* Change Cyborg Device object."},{"line_number":158,"context_line":"* Change cyborgclient to support Attribute management action."},{"line_number":159,"context_line":"* Add related tests."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_23e618ea","line":156,"range":{"start_line":156,"start_character":1,"end_line":156,"end_character":32},"updated":"2020-07-02 00:50:20.000000000","message":"In your \"Proposed change\" we cannot get any useful info, if you will change the db table, you should be described in the \"Proposed change\", and you need to explain the security risks\"Security impact\".","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"27fbea6d1d126bca48b3173205b6ab140374e8a3","unresolved":false,"context_lines":[{"line_number":153,"context_line":"----------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"* Change Cyborg REST APIs."},{"line_number":156,"context_line":"* Change Cyborg Attribute table."},{"line_number":157,"context_line":"* Change Cyborg Device object."},{"line_number":158,"context_line":"* Change cyborgclient to support Attribute management action."},{"line_number":159,"context_line":"* Add related tests."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_684533b4","line":156,"range":{"start_line":156,"start_character":1,"end_line":156,"end_character":32},"in_reply_to":"bf51134e_23e618ea","updated":"2020-07-08 16:36:54.000000000","message":"Do we need to list so much detail here, I just follow cyborg doc before and nova docs, they just show what we will do here.","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f1fadcd95088c21e0343f2b7f61a1eaac6ccfc5c","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":171,"context_line":"* Need a documentation to record microversion history."},{"line_number":172,"context_line":"* Need a documentaiton to explain api usage."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf51134e_03eb14b0","line":171,"updated":"2020-07-02 00:50:20.000000000","message":"+1","commit_id":"be72151fd3a1f84a3c1a8f3f0fc0b0452ce7cea6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0655c28bb0b02b1d86ff8f95d605d920a3bac11a","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Add attribute object to device object."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"REST API impact"},{"line_number":49,"context_line":"---------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"URL: /v2/device/{uuid}/attribute"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf51134e_048a3062","line":48,"updated":"2020-07-16 07:56:44.000000000","message":"IMHO, we need to ensure the readability of the document, which looks too ugly, this is to generate links.\n\nhttps://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_eea/738331/7/check/openstack-tox-docs/eea216f/docs/specs/victoria/approved/attribute-api-support.html#rest-api-impact","commit_id":"76805f90ae6a12ffd1b6eac81f085c3383a0df39"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"63be33d09d4dbe37533ba6b5550f1440089ffc19","unresolved":false,"context_lines":[{"line_number":100,"context_line":"{\"error\": \"error-string\"}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Create one device attribute."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid_or_name}"},{"line_number":106,"context_line":" METHOD: DELETE"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf51134e_fe422b3a","line":103,"range":{"start_line":103,"start_character":4,"end_line":103,"end_character":32},"updated":"2020-07-16 03:30:27.000000000","message":"can we support to create multiple attributes in one single API calls?","commit_id":"76805f90ae6a12ffd1b6eac81f085c3383a0df39"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"41df5331fcf34760e13b85800d63c274d0cf1555","unresolved":false,"context_lines":[{"line_number":100,"context_line":"{\"error\": \"error-string\"}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":" Note:"},{"line_number":103,"context_line":"    Create one device attribute."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":" URL: /v2/device/{uuid}/attribute/{uuid_or_name}"},{"line_number":106,"context_line":" METHOD: DELETE"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf51134e_21e2c6a0","line":103,"range":{"start_line":103,"start_character":4,"end_line":103,"end_character":32},"in_reply_to":"bf51134e_fe422b3a","updated":"2020-07-16 07:16:27.000000000","message":"Fine.","commit_id":"76805f90ae6a12ffd1b6eac81f085c3383a0df39"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4c6e51799d67436107dcc93a0b3fc8f225501a72","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* 422 (Unprocessable): No device profile of that UUID exists"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"* No response body"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_031c1676","line":99,"range":{"start_line":99,"start_character":23,"end_line":99,"end_character":60},"updated":"2020-08-25 06:47:32.000000000","message":"No device","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4c6e51799d67436107dcc93a0b3fc8f225501a72","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* 422 (Unprocessable): Bad input or name is not unique"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Error response body::"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_830f8635","line":123,"range":{"start_line":123,"start_character":36,"end_line":123,"end_character":40},"updated":"2020-08-25 06:47:32.000000000","message":"key?","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"ab772cbdb681e4a790452204f8d77a762caa2ab0","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* 422 (Unprocessable): Bad input or name is not unique"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Error response body::"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_dee151d2","line":123,"range":{"start_line":123,"start_character":36,"end_line":123,"end_character":40},"in_reply_to":"9f560f44_830f8635","updated":"2020-08-25 07:20:48.000000000","message":"Done","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4c6e51799d67436107dcc93a0b3fc8f225501a72","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":" {\"error\": \"error-string\"}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Note: Create one or more device attribute(s)."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_name}``"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_e3c2c2e8","line":129,"range":{"start_line":129,"start_character":0,"end_line":129,"end_character":45},"updated":"2020-08-25 06:47:32.000000000","message":"If we can only create more attributes one time, the request body should be an array.","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"ab772cbdb681e4a790452204f8d77a762caa2ab0","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":" {\"error\": \"error-string\"}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Note: Create one or more device attribute(s)."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_name}``"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_3ee5eddc","line":129,"range":{"start_line":129,"start_character":0,"end_line":129,"end_character":45},"in_reply_to":"9f560f44_e3c2c2e8","updated":"2020-08-25 07:20:48.000000000","message":"Done","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4c6e51799d67436107dcc93a0b3fc8f225501a72","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":" {\"error\": \"error-string\"}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Note: Delete one existing device attribute."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_name}``"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_43b60e8c","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":43},"updated":"2020-08-25 06:47:32.000000000","message":"Can we delete all attribute for device one time?","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"7314228c0687ef4f37b5fa330b4d7c3a19967add","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":" {\"error\": \"error-string\"}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Note: Delete one existing device attribute."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_name}``"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_de1e716e","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":43},"in_reply_to":"9f560f44_1e9aa960","updated":"2020-08-25 07:51:45.000000000","message":"I means should we add one API for this as we can batch create attributes? Just for convenient.","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"ab772cbdb681e4a790452204f8d77a762caa2ab0","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":" {\"error\": \"error-string\"}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Note: Delete one existing device attribute."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_name}``"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_1e9aa960","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":43},"in_reply_to":"9f560f44_43b60e8c","updated":"2020-08-25 07:20:48.000000000","message":"We can, but is this a necessary scenario? I\u0027m not sure.","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4c6e51799d67436107dcc93a0b3fc8f225501a72","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Request body (Value of device attribute)::"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":" {\"value\": \"value1\"}"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Normal response code and body:"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_c37e9ead","line":161,"range":{"start_line":161,"start_character":0,"end_line":161,"end_character":20},"updated":"2020-08-25 06:47:32.000000000","message":"No need to pass key?","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"ab772cbdb681e4a790452204f8d77a762caa2ab0","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Request body (Value of device attribute)::"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":" {\"value\": \"value1\"}"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Normal response code and body:"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_be757d34","line":161,"range":{"start_line":161,"start_character":0,"end_line":161,"end_character":20},"in_reply_to":"9f560f44_c37e9ead","updated":"2020-08-25 07:20:48.000000000","message":"In the url path.","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"4c6e51799d67436107dcc93a0b3fc8f225501a72","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":" {\"error\": \"error-string\"}"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Note: Update one existing device attribute."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Security impact"},{"line_number":180,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_c305fe15","line":177,"range":{"start_line":177,"start_character":17,"end_line":177,"end_character":25},"updated":"2020-08-25 06:47:32.000000000","message":"exist","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"ab772cbdb681e4a790452204f8d77a762caa2ab0","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":" {\"error\": \"error-string\"}"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Note: Update one existing device attribute."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Security impact"},{"line_number":180,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f560f44_1ee8e9b0","line":177,"range":{"start_line":177,"start_character":17,"end_line":177,"end_character":25},"in_reply_to":"9f560f44_c305fe15","updated":"2020-08-25 07:20:48.000000000","message":"Done","commit_id":"13cf321e553f89862cd63b2d1492cb390cc11ca2"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"7314228c0687ef4f37b5fa330b4d7c3a19967add","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* 422 (Unprocessable): No device of that UUID exists"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* No response body"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9f560f44_de679124","line":100,"range":{"start_line":100,"start_character":2,"end_line":100,"end_character":52},"updated":"2020-08-25 07:51:45.000000000","message":"404 code is better for no device exist, and attribute not exists.","commit_id":"8843c8e9e68f788751a83d5b227fc40bb2aa874c"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"245e14620d206157a556f63cac617a190198735a","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* 422 (Unprocessable): No device of that UUID exists"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* No response body"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9f560f44_e98e212c","line":100,"range":{"start_line":100,"start_character":2,"end_line":100,"end_character":52},"in_reply_to":"9f560f44_de679124","updated":"2020-08-25 08:30:54.000000000","message":"Done","commit_id":"8843c8e9e68f788751a83d5b227fc40bb2aa874c"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"7314228c0687ef4f37b5fa330b4d7c3a19967add","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"* 422 (Unprocessable): Bad input or name is not unique"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Error response body::"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9f560f44_3e6b2df1","line":135,"range":{"start_line":135,"start_character":36,"end_line":135,"end_character":40},"updated":"2020-08-25 07:51:45.000000000","message":"Not done. And 409 code is better for key conflict.","commit_id":"8843c8e9e68f788751a83d5b227fc40bb2aa874c"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"245e14620d206157a556f63cac617a190198735a","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* 401 (Unauthorized): RBAC check failed"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"* 422 (Unprocessable): Bad input or name is not unique"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Error response body::"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9f560f44_897fa513","line":135,"range":{"start_line":135,"start_character":36,"end_line":135,"end_character":40},"in_reply_to":"9f560f44_3e6b2df1","updated":"2020-08-25 08:30:54.000000000","message":"Done","commit_id":"8843c8e9e68f788751a83d5b227fc40bb2aa874c"}],"specs/wallaby/approved/attribute-api-support.rst":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Use Cases"},{"line_number":22,"context_line":"---------"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"An end user or deployer needs a group of APIs to manage his accelerator\u0027s"},{"line_number":25,"context_line":"attributes."},{"line_number":26,"context_line":"Here are some useful scenarios:"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_e6055912","line":24,"range":{"start_line":24,"start_character":3,"end_line":24,"end_character":12},"updated":"2020-09-15 10:48:48.000000000","message":"I think this API can not be invoked by the end-user, instead, it can be used by admin or operator.","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"1ed86c99fcd168eef7de128ce66fa3a03f3f528e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Use Cases"},{"line_number":22,"context_line":"---------"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"An end user or deployer needs a group of APIs to manage his accelerator\u0027s"},{"line_number":25,"context_line":"attributes."},{"line_number":26,"context_line":"Here are some useful scenarios:"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_2624710e","line":24,"range":{"start_line":24,"start_character":3,"end_line":24,"end_character":12},"in_reply_to":"9f560f44_e6055912","updated":"2020-09-15 11:36:35.000000000","message":"Done","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Data model impact"},{"line_number":44,"context_line":"-----------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Add attribute object to device object."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"REST API impact"},{"line_number":49,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_864e1d6c","line":46,"range":{"start_line":46,"start_character":26,"end_line":46,"end_character":32},"updated":"2020-09-15 10:48:48.000000000","message":"I think it is deployable object.","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"1ed86c99fcd168eef7de128ce66fa3a03f3f528e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Data model impact"},{"line_number":44,"context_line":"-----------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Add attribute object to device object."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"REST API impact"},{"line_number":49,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_06216dfd","line":46,"range":{"start_line":46,"start_character":26,"end_line":46,"end_character":32},"in_reply_to":"9f560f44_864e1d6c","updated":"2020-09-15 11:36:35.000000000","message":"Done","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"METHOD: ``GET``"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    List all attributes of specified device."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Normal response code (200) and body::"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_263d91bc","line":55,"range":{"start_line":55,"start_character":37,"end_line":55,"end_character":43},"updated":"2020-09-15 10:48:48.000000000","message":"deployable","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"1ed86c99fcd168eef7de128ce66fa3a03f3f528e","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"METHOD: ``GET``"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    List all attributes of specified device."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Normal response code (200) and body::"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_461b65c9","line":55,"range":{"start_line":55,"start_character":37,"end_line":55,"end_character":43},"in_reply_to":"9f560f44_263d91bc","updated":"2020-09-15 11:36:35.000000000","message":"Done","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":74,"context_line":"* No response body"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_key}``"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"METHOD: ``GET``"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_06632ddf","line":77,"range":{"start_line":77,"start_character":11,"end_line":77,"end_character":17},"updated":"2020-09-15 10:48:48.000000000","message":"I think attribute is related to deployable, not device. For example, a FPGA with multiple region(deployable) which has different function(attributes)","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"1ed86c99fcd168eef7de128ce66fa3a03f3f528e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"* No response body"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_key}``"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"METHOD: ``GET``"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_a6752103","line":77,"range":{"start_line":77,"start_character":11,"end_line":77,"end_character":17},"in_reply_to":"9f560f44_06632ddf","updated":"2020-09-15 11:36:35.000000000","message":"Done","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"METHOD: ``GET``"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    GET specified attribute of specified device."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Query Parameters: None"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_46440548","line":81,"range":{"start_line":81,"start_character":41,"end_line":81,"end_character":47},"updated":"2020-09-15 10:48:48.000000000","message":"ditto","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":106,"context_line":"* No response body"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"URL: ``/v2/device/{uuid}/attribute``"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"METHOD: ``POST``"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_666029d1","line":109,"range":{"start_line":109,"start_character":11,"end_line":109,"end_character":17},"updated":"2020-09-15 10:48:48.000000000","message":"ditto","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"78e334d2c3a06bd818bb9dc55eb42ff028756755","unresolved":false,"context_lines":[{"line_number":197,"context_line":" {\"error\": \"error-string\"}"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"URL: ``/v2/device/{uuid}/attribute/{uuid_or_key}``"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"METHOD: ``PUT``"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9f560f44_869c5dc0","line":200,"range":{"start_line":200,"start_character":11,"end_line":200,"end_character":17},"updated":"2020-09-15 10:48:48.000000000","message":"ditto","commit_id":"21599d979e8ffc5e074fb8bc350b2e93d25ff430"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"af74b5996c61ec24e3a6349981c03baf3cf8b016","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* 401 (Unauthorized): Unauthorized"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* 403 (Forbidden): RBAC check failed"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* No response body"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_8132870e","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":36},"updated":"2020-09-15 12:54:11.000000000","message":"Attribute API will also need RBAC check rules(or policies), \nwhich should be also mentioned in this spec.","commit_id":"29e107bea20458e365fda26ea56f06e76d727fe4"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"7346c6216cef7afaa28a46a1e6089ebaee1da8f1","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* 403 (Forbidden): RBAC check failed"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* 404 (NotFound): No deployable of that UUID exists"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* No response body"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_81c8c721","line":104,"range":{"start_line":104,"start_character":18,"end_line":104,"end_character":51},"updated":"2020-09-15 12:44:22.000000000","message":"No deployable of that UUID or no attribute of that UUID exists?","commit_id":"29e107bea20458e365fda26ea56f06e76d727fe4"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"7346c6216cef7afaa28a46a1e6089ebaee1da8f1","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* 403 (Forbidden): RBAC check failed"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"* 404 (NotFound): No deployable of that UUID exists"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Error response body::"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_e1cd4331","line":168,"range":{"start_line":168,"start_character":18,"end_line":168,"end_character":51},"updated":"2020-09-15 12:44:22.000000000","message":"ditto","commit_id":"29e107bea20458e365fda26ea56f06e76d727fe4"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"7346c6216cef7afaa28a46a1e6089ebaee1da8f1","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* 403 (Forbidden): RBAC check failed"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"* 404 (NotFound): No deployable of that UUID exists"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Error response body::"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_41deafda","line":224,"range":{"start_line":224,"start_character":18,"end_line":224,"end_character":51},"updated":"2020-09-15 12:44:22.000000000","message":"ditto","commit_id":"29e107bea20458e365fda26ea56f06e76d727fe4"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"af74b5996c61ec24e3a6349981c03baf3cf8b016","unresolved":false,"context_lines":[{"line_number":262,"context_line":"Work Items"},{"line_number":263,"context_line":"----------"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"* Change Cyborg REST APIs."},{"line_number":266,"context_line":"* Change Cyborg Attribute table."},{"line_number":267,"context_line":"* Change Cyborg deployable object."},{"line_number":268,"context_line":"* Change cyborgclient to support Attribute management action."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_41286f96","line":265,"range":{"start_line":265,"start_character":2,"end_line":265,"end_character":26},"updated":"2020-09-15 12:54:11.000000000","message":"Add default policies for attribute API based on the new policies introduced in ``Policy pop-up`` patch-sets","commit_id":"29e107bea20458e365fda26ea56f06e76d727fe4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0276df14d46847dd0d92ccc32b846e91af42d560","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"Developer impact"},{"line_number":254,"context_line":"----------------"},{"line_number":255,"context_line":"None"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"Implementation"},{"line_number":258,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1f621f24_f5ec02bc","line":255,"range":{"start_line":255,"start_character":0,"end_line":255,"end_character":4},"updated":"2020-11-17 08:28:28.000000000","message":"A developer impact is if the user want to use these feature, they should upgrade they Cyborg project to latest to support these changes.","commit_id":"2408635f825360642da6098e5108f81912f05c4a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0276df14d46847dd0d92ccc32b846e91af42d560","unresolved":false,"context_lines":[{"line_number":266,"context_line":"----------"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"* Change Cyborg REST APIs."},{"line_number":269,"context_line":"* Change Cyborg Attribute table."},{"line_number":270,"context_line":"* Change Cyborg deployable object."},{"line_number":271,"context_line":"* Change cyborgclient to support Attribute management action."},{"line_number":272,"context_line":"* Add related tests."}],"source_content_type":"text/x-rst","patch_set":15,"id":"1f621f24_b53baa35","line":269,"range":{"start_line":269,"start_character":0,"end_line":269,"end_character":32},"updated":"2020-11-17 08:28:28.000000000","message":"In this spec, you dont describe what changes are you want to do, add a column? or ...\n\nIf you need to change the Attribute db table, you should have a details claim in.\n\nAnd also need to say in *Other end user impact*.","commit_id":"2408635f825360642da6098e5108f81912f05c4a"}]}
