)]}'
{"specs/stein/approved/cyborg-api-wflows-for-instance-ops.rst":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Cyborg API server, conductor and agent. But they should not be exposed to"},{"line_number":47,"context_line":"Nova.  Cyborg will handle this by creating an extended ARQ object that"},{"line_number":48,"context_line":"includes the ARQ as a field along with the Cyborg-private fields. The extended"},{"line_number":49,"context_line":"ARQ needs to be on OVO because it is exchanged between the Cyborg conductor"},{"line_number":50,"context_line":"and agent."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The outline of the extARQ definition is as below::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_e8f07bde","line":49,"range":{"start_line":49,"start_character":16,"end_line":49,"end_character":18},"updated":"2018-10-30 15:02:30.000000000","message":"an","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Cyborg API server, conductor and agent. But they should not be exposed to"},{"line_number":47,"context_line":"Nova.  Cyborg will handle this by creating an extended ARQ object that"},{"line_number":48,"context_line":"includes the ARQ as a field along with the Cyborg-private fields. The extended"},{"line_number":49,"context_line":"ARQ needs to be on OVO because it is exchanged between the Cyborg conductor"},{"line_number":50,"context_line":"and agent."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The outline of the extARQ definition is as below::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_c30ba7d1","line":49,"range":{"start_line":49,"start_character":16,"end_line":49,"end_character":18},"in_reply_to":"3f79a3b5_e8f07bde","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ab714e978d75db4edd0887c670a62b16ff55343b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"ARQ needs to be on OVO because it is exchanged between the Cyborg conductor"},{"line_number":50,"context_line":"and agent."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The outline of the extARQ definition is as below::"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  class ExtARQ(ovo_base.VersionedObject):"},{"line_number":55,"context_line":"     NAMESPACE \u003d \u0027cyborg\u0027"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_306323ae","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":44},"updated":"2018-10-31 10:52:41.000000000","message":"I just confused about extARQ and ARQ, is extARQ necessary, IMHO, cyborg can expose ARQ directly.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":49,"context_line":"ARQ needs to be on OVO because it is exchanged between the Cyborg conductor"},{"line_number":50,"context_line":"and agent."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The outline of the extARQ definition is as below::"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  class ExtARQ(ovo_base.VersionedObject):"},{"line_number":55,"context_line":"     NAMESPACE \u003d \u0027cyborg\u0027"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_8397ef37","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":44},"in_reply_to":"3f79a3b5_306323ae","updated":"2018-11-05 22:54:46.000000000","message":"We need a data structure to hold Cyborg-private fields, which can be exchanged between the conductor and the agent. ARQ is exposed to Nova, while ExtARQ is private to Cyborg.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":57,"context_line":"     var \u003d ObjectField()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"     # complementary to ARQ state; tracks progress in Cyborg"},{"line_number":60,"context_line":"     substate \u003d EnumField()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"     # \u0027accel\u0027 properties from VM image or device profile"},{"line_number":63,"context_line":"     accel_props \u003d ... # array of strings"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_23769494","line":60,"range":{"start_line":60,"start_character":5,"end_line":60,"end_character":13},"updated":"2018-10-30 15:02:30.000000000","message":"Could you list all the possible enum values?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":57,"context_line":"     var \u003d ObjectField()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"     # complementary to ARQ state; tracks progress in Cyborg"},{"line_number":60,"context_line":"     substate \u003d EnumField()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"     # \u0027accel\u0027 properties from VM image or device profile"},{"line_number":63,"context_line":"     accel_props \u003d ... # array of strings"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_23bffbab","line":60,"range":{"start_line":60,"start_character":5,"end_line":60,"end_character":13},"in_reply_to":"3f79a3b5_23769494","updated":"2018-11-05 22:54:46.000000000","message":"Some of the possible substates are listed in the API sections below. \n\nIMHO, the full list is best left to the development stage. The substate indicates the progress of the request, and also which fields are valid in the ExtARQ. That will depend on the details.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ab714e978d75db4edd0887c670a62b16ff55343b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"     # complementary to ARQ state; tracks progress in Cyborg"},{"line_number":60,"context_line":"     substate \u003d EnumField()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"     # \u0027accel\u0027 properties from VM image or device profile"},{"line_number":63,"context_line":"     accel_props \u003d ... # array of strings"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"     deployable_uuid \u003d UUIDField() # corresponds to device RP chosen by Nova"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_cd125c65","line":62,"range":{"start_line":62,"start_character":7,"end_line":62,"end_character":57},"updated":"2018-10-31 10:52:41.000000000","message":"Do you have any use cases that `accel` from VM image. Do you mean bit stream or something like that?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":59,"context_line":"     # complementary to ARQ state; tracks progress in Cyborg"},{"line_number":60,"context_line":"     substate \u003d EnumField()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"     # \u0027accel\u0027 properties from VM image or device profile"},{"line_number":63,"context_line":"     accel_props \u003d ... # array of strings"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"     deployable_uuid \u003d UUIDField() # corresponds to device RP chosen by Nova"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_434eb790","line":62,"range":{"start_line":62,"start_character":7,"end_line":62,"end_character":57},"in_reply_to":"3f79a3b5_cd125c65","updated":"2018-11-05 22:54:46.000000000","message":"Yes. Please see \"Valid accel keys\" section of https://review.openstack.org/#/c/602978/5/specs/stein/approved/device-profiles.rst.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":63,"context_line":"     accel_props \u003d ... # array of strings"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"     deployable_uuid \u003d UUIDField() # corresponds to device RP chosen by Nova"},{"line_number":66,"context_line":"     bitstream_to_program \u003d None # or Glance UUID of the bitstream"},{"line_number":67,"context_line":"     driver_name \u003d StringField() # Cyborg driver for this ARQ"},{"line_number":68,"context_line":"     device_id \u003d ObjectField() # DeviceIdPCI, DeviceIdPowervmIOSlot, etc."},{"line_number":69,"context_line":"     attach_handle \u003d ObjectField() # AttachHandlePCI, etc."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_28a3d3b2","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":25},"updated":"2018-10-30 15:02:30.000000000","message":"bitstream_uuid might be a better name here.\nAnother thought: bitstream might be too FPGA specific, can we include this in the accel_props? Also, should we add a field to indicate the type of the acc(FPGA/GPU/etc.)","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":63,"context_line":"     accel_props \u003d ... # array of strings"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"     deployable_uuid \u003d UUIDField() # corresponds to device RP chosen by Nova"},{"line_number":66,"context_line":"     bitstream_to_program \u003d None # or Glance UUID of the bitstream"},{"line_number":67,"context_line":"     driver_name \u003d StringField() # Cyborg driver for this ARQ"},{"line_number":68,"context_line":"     device_id \u003d ObjectField() # DeviceIdPCI, DeviceIdPowervmIOSlot, etc."},{"line_number":69,"context_line":"     attach_handle \u003d ObjectField() # AttachHandlePCI, etc."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_fe2438b3","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":25},"in_reply_to":"3f79a3b5_28a3d3b2","updated":"2018-11-05 22:54:46.000000000","message":"ExtARQ is a Cyborg-private struct. If the user has asked for an FPGA, the Cyborg conductor needs to tell the agent whether any bitstream needs to be programmed. The conductor decides that and sends the bitstream UUID in this field.\n\nThe ExtARQ includes an ARQ, which in turn indicates what accelerator type (FPGA/GPU/...) is requested.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ab714e978d75db4edd0887c670a62b16ff55343b","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":" URL: /v1/vars"},{"line_number":78,"context_line":" Method: POST"},{"line_number":79,"context_line":" Request body:"},{"line_number":80,"context_line":"   { \u0027device-profile-name\u0027: \u003cstring\u003e, # required"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_500b3f22","line":77,"range":{"start_line":77,"start_character":9,"end_line":77,"end_character":14},"updated":"2018-10-31 10:52:41.000000000","message":"s/vars/arqs","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":" URL: /v1/vars"},{"line_number":78,"context_line":" Method: POST"},{"line_number":79,"context_line":" Request body:"},{"line_number":80,"context_line":"   { \u0027device-profile-name\u0027: \u003cstring\u003e, # required"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_9e1bc46d","line":77,"range":{"start_line":77,"start_character":9,"end_line":77,"end_character":14},"in_reply_to":"3f79a3b5_500b3f22","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":101,"context_line":"   internally."},{"line_number":102,"context_line":" * Create an ExtARQ for each ARQ, with the ``accel_props`` field filled in."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* The API server calls the conductor\u0027s ``create_vars()`` API with the same"},{"line_number":105,"context_line":"  parameters. (Note: In general, for the initial implementation, all database"},{"line_number":106,"context_line":"  access is done by the conductor to ease potential upgrade issues. For"},{"line_number":107,"context_line":"  scalability, the API server may need to access the db in the future but that"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_48808fbf","line":104,"range":{"start_line":104,"start_character":48,"end_line":104,"end_character":52},"updated":"2018-10-30 15:02:30.000000000","message":"create_arqs?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":101,"context_line":"   internally."},{"line_number":102,"context_line":" * Create an ExtARQ for each ARQ, with the ``accel_props`` field filled in."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* The API server calls the conductor\u0027s ``create_vars()`` API with the same"},{"line_number":105,"context_line":"  parameters. (Note: In general, for the initial implementation, all database"},{"line_number":106,"context_line":"  access is done by the conductor to ease potential upgrade issues. For"},{"line_number":107,"context_line":"  scalability, the API server may need to access the db in the future but that"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_fe867815","line":104,"range":{"start_line":104,"start_character":48,"end_line":104,"end_character":52},"in_reply_to":"3f79a3b5_48808fbf","updated":"2018-11-05 22:54:46.000000000","message":"OK","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* The API server calls the conductor\u0027s ``create_vars()`` API with the same"},{"line_number":105,"context_line":"  parameters. (Note: In general, for the initial implementation, all database"},{"line_number":106,"context_line":"  access is done by the conductor to ease potential upgrade issues. For"},{"line_number":107,"context_line":"  scalability, the API server may need to access the db in the future but that"},{"line_number":108,"context_line":"  can be addressed in a future release.)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_48ce4f2d","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":11},"updated":"2018-10-30 15:02:30.000000000","message":"accesses are","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* The API server calls the conductor\u0027s ``create_vars()`` API with the same"},{"line_number":105,"context_line":"  parameters. (Note: In general, for the initial implementation, all database"},{"line_number":106,"context_line":"  access is done by the conductor to ease potential upgrade issues. For"},{"line_number":107,"context_line":"  scalability, the API server may need to access the db in the future but that"},{"line_number":108,"context_line":"  can be addressed in a future release.)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_3e93905b","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":11},"in_reply_to":"3f79a3b5_48ce4f2d","updated":"2018-11-05 22:54:46.000000000","message":"OK","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    expressed as VM image properties, rather than in the device profile. For"},{"line_number":115,"context_line":"    example, the bitstream or function needed for offloads may be stated as VM"},{"line_number":116,"context_line":"    image properties. These properties must be expressed in the form"},{"line_number":117,"context_line":"    ``accel:\u003ckey\u003e\u003d\u003cvalue\u003e``, same as in device profiles. Cyborg will include"},{"line_number":118,"context_line":"    these along with device profile groups."},{"line_number":119,"context_line":"  * If there are multiple groups in the device profile, requesting different"},{"line_number":120,"context_line":"    accelerator resources, it may not be easy to determine which image"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a88a83ba","line":117,"range":{"start_line":117,"start_character":4,"end_line":117,"end_character":27},"updated":"2018-10-30 15:02:30.000000000","message":"Please provide an example k-v pair to help the future developer to understand.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    expressed as VM image properties, rather than in the device profile. For"},{"line_number":115,"context_line":"    example, the bitstream or function needed for offloads may be stated as VM"},{"line_number":116,"context_line":"    image properties. These properties must be expressed in the form"},{"line_number":117,"context_line":"    ``accel:\u003ckey\u003e\u003d\u003cvalue\u003e``, same as in device profiles. Cyborg will include"},{"line_number":118,"context_line":"    these along with device profile groups."},{"line_number":119,"context_line":"  * If there are multiple groups in the device profile, requesting different"},{"line_number":120,"context_line":"    accelerator resources, it may not be easy to determine which image"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_9e9e64b5","line":117,"range":{"start_line":117,"start_character":4,"end_line":117,"end_character":27},"in_reply_to":"3f79a3b5_a88a83ba","updated":"2018-11-05 22:54:46.000000000","message":"Please see \"Valid accel keys\" section of https://review.openstack.org/#/c/602978/5/specs/stein/approved/device-profiles.rst.\n\nI will also refer to the device profiles spec here.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    image properties. These properties must be expressed in the form"},{"line_number":117,"context_line":"    ``accel:\u003ckey\u003e\u003d\u003cvalue\u003e``, same as in device profiles. Cyborg will include"},{"line_number":118,"context_line":"    these along with device profile groups."},{"line_number":119,"context_line":"  * If there are multiple groups in the device profile, requesting different"},{"line_number":120,"context_line":"    accelerator resources, it may not be easy to determine which image"},{"line_number":121,"context_line":"    property is meant for which accelerator resource. In the initial"},{"line_number":122,"context_line":"    implementation, Cyborg may support this only for device profiles with only"},{"line_number":123,"context_line":"    one request group."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* The conductor does an RBAC check to see whether the user\u0027s role can access"},{"line_number":126,"context_line":"  the requested accelerators, do the requested programming if any, or access"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a87843c2","line":123,"range":{"start_line":119,"start_character":4,"end_line":123,"end_character":22},"updated":"2018-10-30 15:02:30.000000000","message":"Considering this, shall we include the image/bitstream inside the device profile, so that it\u0027s easy for users to specify.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    image properties. These properties must be expressed in the form"},{"line_number":117,"context_line":"    ``accel:\u003ckey\u003e\u003d\u003cvalue\u003e``, same as in device profiles. Cyborg will include"},{"line_number":118,"context_line":"    these along with device profile groups."},{"line_number":119,"context_line":"  * If there are multiple groups in the device profile, requesting different"},{"line_number":120,"context_line":"    accelerator resources, it may not be easy to determine which image"},{"line_number":121,"context_line":"    property is meant for which accelerator resource. In the initial"},{"line_number":122,"context_line":"    implementation, Cyborg may support this only for device profiles with only"},{"line_number":123,"context_line":"    one request group."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* The conductor does an RBAC check to see whether the user\u0027s role can access"},{"line_number":126,"context_line":"  the requested accelerators, do the requested programming if any, or access"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_beefa01a","line":123,"range":{"start_line":119,"start_character":4,"end_line":123,"end_character":22},"in_reply_to":"3f79a3b5_a87843c2","updated":"2018-11-05 22:54:46.000000000","message":"The bitstream, function, etc. can be specified in the device profile too. The VM image properties are only an alternative. In Stein, the operators can probably use only the device profile.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    implementation, Cyborg may support this only for device profiles with only"},{"line_number":123,"context_line":"    one request group."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* The conductor does an RBAC check to see whether the user\u0027s role can access"},{"line_number":126,"context_line":"  the requested accelerators, do the requested programming if any, or access"},{"line_number":127,"context_line":"  the stated bitstreams if any."},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_6829cba0","line":125,"range":{"start_line":125,"start_character":24,"end_line":125,"end_character":28},"updated":"2018-10-30 15:02:30.000000000","message":"Please use the full name if it\u0027s the first appearance.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    implementation, Cyborg may support this only for device profiles with only"},{"line_number":123,"context_line":"    one request group."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* The conductor does an RBAC check to see whether the user\u0027s role can access"},{"line_number":126,"context_line":"  the requested accelerators, do the requested programming if any, or access"},{"line_number":127,"context_line":"  the stated bitstreams if any."},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_7e890827","line":125,"range":{"start_line":125,"start_character":24,"end_line":125,"end_character":28},"in_reply_to":"3f79a3b5_6829cba0","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ab714e978d75db4edd0887c670a62b16ff55343b","unresolved":false,"context_lines":[{"line_number":155,"context_line":"* The API server calls the conductor with the specified parameters."},{"line_number":156,"context_line":"* The conductor does an RBAC check that the caller is the one who created the"},{"line_number":157,"context_line":"  ARQ or has admin role."},{"line_number":158,"context_line":"* If any of the ARQs are in bound state, they need to be unbound first, by"},{"line_number":159,"context_line":"  doing the equivalent of invoking the unbind API below."},{"line_number":160,"context_line":"* The conductor deletes the ARQs from the db."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_d07c2f76","line":158,"range":{"start_line":158,"start_character":40,"end_line":158,"end_character":71},"updated":"2018-10-31 10:52:41.000000000","message":"If one ARQ is in resolved state and it has not been bound successfully, what should we do before delete it?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":155,"context_line":"* The API server calls the conductor with the specified parameters."},{"line_number":156,"context_line":"* The conductor does an RBAC check that the caller is the one who created the"},{"line_number":157,"context_line":"  ARQ or has admin role."},{"line_number":158,"context_line":"* If any of the ARQs are in bound state, they need to be unbound first, by"},{"line_number":159,"context_line":"  doing the equivalent of invoking the unbind API below."},{"line_number":160,"context_line":"* The conductor deletes the ARQs from the db."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_7e72684d","line":158,"range":{"start_line":158,"start_character":40,"end_line":158,"end_character":71},"in_reply_to":"3f79a3b5_d07c2f76","updated":"2018-11-05 22:54:46.000000000","message":"When the ARQ failed to bind, the resources (if any) should be cleaned up by the driver/agent during the bind call itself. So, I would expect that nothing needs to be done in the delete call.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"::"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":" URL: /v1/vars/bindings/1"},{"line_number":168,"context_line":" Method: POST"},{"line_number":169,"context_line":" Request body:"},{"line_number":170,"context_line":"    { \u0027instance_uuid\u0027: \u003cuuid-string\u003e,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_280c3343","line":167,"range":{"start_line":167,"start_character":23,"end_line":167,"end_character":25},"updated":"2018-10-30 15:02:30.000000000","message":"meaning of the 1 here?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"::"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":" URL: /v1/vars/bindings/1"},{"line_number":168,"context_line":" Method: POST"},{"line_number":169,"context_line":" Request body:"},{"line_number":170,"context_line":"    { \u0027instance_uuid\u0027: \u003cuuid-string\u003e,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_7e97c838","line":167,"range":{"start_line":167,"start_character":23,"end_line":167,"end_character":25},"in_reply_to":"3f79a3b5_280c3343","updated":"2018-11-05 22:54:46.000000000","message":"It is a place holder in case we need alternate bindings in the future. Since many people were uncomfortable with this, I am dropping the \u00271\u0027. We can handle alternate bindings when we get to that.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ab714e978d75db4edd0887c670a62b16ff55343b","unresolved":false,"context_lines":[{"line_number":189,"context_line":"* The API server calls the conductor."},{"line_number":190,"context_line":"* The conductor does basic RBAC checks, such as whether the caller is the one"},{"line_number":191,"context_line":"  that created the ARQs or has admin role."},{"line_number":192,"context_line":"* For each ARQ, the conductor does the following:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"  * Add in ExtARQ the Deployable UUID corresponding to the chosen device RP."},{"line_number":195,"context_line":"    Set the substate to BIND_STARTED."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_90c47796","line":192,"range":{"start_line":192,"start_character":1,"end_line":192,"end_character":48},"updated":"2018-10-31 10:52:41.000000000","message":"We should consider to add a lock here to avoid race. For example, lock one raw so that others can not modify it during someone is writing it.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":189,"context_line":"* The API server calls the conductor."},{"line_number":190,"context_line":"* The conductor does basic RBAC checks, such as whether the caller is the one"},{"line_number":191,"context_line":"  that created the ARQs or has admin role."},{"line_number":192,"context_line":"* For each ARQ, the conductor does the following:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"  * Add in ExtARQ the Deployable UUID corresponding to the chosen device RP."},{"line_number":195,"context_line":"    Set the substate to BIND_STARTED."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_7e4a68ae","line":192,"range":{"start_line":192,"start_character":1,"end_line":192,"end_character":48},"in_reply_to":"3f79a3b5_90c47796","updated":"2018-11-05 22:54:46.000000000","message":"Agreed. As we discussed, this is not a db lock. Rather, when an ExtARQ is being processed by the agent, it needs to be locked so that the conductor can prevent concurrent access to that extARQ. I suppose it could be just a boolean.\n\nThat lock should be part of the extARQ, not ARQ, so that we don\u0027t have to expose it to Nova (in the ARQ). I will add this.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":196,"context_line":"  * Decide if programming is needed based on this logic:"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    | (device profile request group for the ARQ refers to CUSTOM_FPGA_REGION_*"},{"line_number":199,"context_line":"         AND also contains accel:bitstream_id\u003d*) OR"},{"line_number":200,"context_line":"    | (device profile request group refers to accel:function_id\u003d* AND that"},{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a342a43b","line":199,"range":{"start_line":199,"start_character":33,"end_line":199,"end_character":45},"updated":"2018-10-30 15:02:30.000000000","message":"bitstream_uuid","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":196,"context_line":"  * Decide if programming is needed based on this logic:"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    | (device profile request group for the ARQ refers to CUSTOM_FPGA_REGION_*"},{"line_number":199,"context_line":"         AND also contains accel:bitstream_id\u003d*) OR"},{"line_number":200,"context_line":"    | (device profile request group refers to accel:function_id\u003d* AND that"},{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_e44caa76","line":199,"range":{"start_line":199,"start_character":33,"end_line":199,"end_character":45},"in_reply_to":"3f79a3b5_a342a43b","updated":"2018-11-05 22:54:46.000000000","message":"Why is it wrong to call it an id? That is the name we used in the device profiles spec as well.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":199,"context_line":"         AND also contains accel:bitstream_id\u003d*) OR"},{"line_number":200,"context_line":"    | (device profile request group refers to accel:function_id\u003d* AND that"},{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"},{"line_number":203,"context_line":"    id to the extARQ."},{"line_number":204,"context_line":"  * For the case of static attach handles (e.g. PCI VFs), choose a free VF and"},{"line_number":205,"context_line":"    mark it as used. Add it to the ARQ. Set the substate to HANDLE_ASSIGNED,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_2368d4ba","line":202,"range":{"start_line":202,"start_character":7,"end_line":202,"end_character":18},"updated":"2018-10-30 15:02:30.000000000","message":"FPGA programming","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":199,"context_line":"         AND also contains accel:bitstream_id\u003d*) OR"},{"line_number":200,"context_line":"    | (device profile request group refers to accel:function_id\u003d* AND that"},{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"},{"line_number":203,"context_line":"    id to the extARQ."},{"line_number":204,"context_line":"  * For the case of static attach handles (e.g. PCI VFs), choose a free VF and"},{"line_number":205,"context_line":"    mark it as used. Add it to the ARQ. Set the substate to HANDLE_ASSIGNED,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a4523210","line":202,"range":{"start_line":202,"start_character":7,"end_line":202,"end_character":18},"in_reply_to":"3f79a3b5_2368d4ba","updated":"2018-11-05 22:54:46.000000000","message":"Yes","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"},{"line_number":203,"context_line":"    id to the extARQ."},{"line_number":204,"context_line":"  * For the case of static attach handles (e.g. PCI VFs), choose a free VF and"},{"line_number":205,"context_line":"    mark it as used. Add it to the ARQ. Set the substate to HANDLE_ASSIGNED,"},{"line_number":206,"context_line":"    (Note: For dynamic attach handles like mdev UUID, the agent would do this"},{"line_number":207,"context_line":"     step and set the substate.)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a3b06443","line":204,"range":{"start_line":204,"start_character":65,"end_line":204,"end_character":70},"updated":"2018-10-30 15:02:30.000000000","message":"an available","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"},{"line_number":203,"context_line":"    id to the extARQ."},{"line_number":204,"context_line":"  * For the case of static attach handles (e.g. PCI VFs), choose a free VF and"},{"line_number":205,"context_line":"    mark it as used. Add it to the ARQ. Set the substate to HANDLE_ASSIGNED,"},{"line_number":206,"context_line":"    (Note: For dynamic attach handles like mdev UUID, the agent would do this"},{"line_number":207,"context_line":"     step and set the substate.)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_e3a65c0f","line":204,"range":{"start_line":204,"start_character":20,"end_line":204,"end_character":33},"updated":"2018-10-30 15:02:30.000000000","message":"statically attaching","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":201,"context_line":"       function ID is not present in the chosen deployable)"},{"line_number":202,"context_line":"  * If programming is required, check RBAC and then add the needed bitstream"},{"line_number":203,"context_line":"    id to the extARQ."},{"line_number":204,"context_line":"  * For the case of static attach handles (e.g. PCI VFs), choose a free VF and"},{"line_number":205,"context_line":"    mark it as used. Add it to the ARQ. Set the substate to HANDLE_ASSIGNED,"},{"line_number":206,"context_line":"    (Note: For dynamic attach handles like mdev UUID, the agent would do this"},{"line_number":207,"context_line":"     step and set the substate.)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_64617ad4","line":204,"range":{"start_line":204,"start_character":20,"end_line":204,"end_character":33},"in_reply_to":"3f79a3b5_e3a65c0f","updated":"2018-11-05 22:54:46.000000000","message":"I don\u0027t follow: what is the difference between \u0027a free\u0027 vs \u0027an available\u0027? \n\nThe term \u0027attach handle\u0027 is used as a non, and \u0027static\u0027 is the adjective.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* For each ARQ, the conductor does the following post-processing:"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"  * If the agent returns bind failure and the attach handles are static,"},{"line_number":223,"context_line":"    release the static attach handle."},{"line_number":224,"context_line":"  * If the bind is successful, update the function traits as below:"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_63ca4ca4","line":222,"range":{"start_line":222,"start_character":25,"end_line":222,"end_character":29},"updated":"2018-10-30 15:02:30.000000000","message":"a binding","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* For each ARQ, the conductor does the following post-processing:"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"  * If the agent returns bind failure and the attach handles are static,"},{"line_number":223,"context_line":"    release the static attach handle."},{"line_number":224,"context_line":"  * If the bind is successful, update the function traits as below:"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_849b76c5","line":222,"range":{"start_line":222,"start_character":25,"end_line":222,"end_character":29},"in_reply_to":"3f79a3b5_63ca4ca4","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"This API removes the bindings of each specified ARQ, i.e., releases the"},{"line_number":257,"context_line":"attach handle and other resources associated with the ARQ. This may involve"},{"line_number":258,"context_line":"\u0027cleaning\u0027 the device in some form."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"* The API server calls the conductor."},{"line_number":261,"context_line":"* The conductor does RBAC checks."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_43b3900a","line":258,"range":{"start_line":258,"start_character":1,"end_line":258,"end_character":9},"updated":"2018-10-30 15:02:30.000000000","message":"is this a sync or async call? if we need to spend time on \"cleaning\".","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"This API removes the bindings of each specified ARQ, i.e., releases the"},{"line_number":257,"context_line":"attach handle and other resources associated with the ARQ. This may involve"},{"line_number":258,"context_line":"\u0027cleaning\u0027 the device in some form."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"* The API server calls the conductor."},{"line_number":261,"context_line":"* The conductor does RBAC checks."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a479d281","line":258,"range":{"start_line":258,"start_character":1,"end_line":258,"end_character":9},"in_reply_to":"3f79a3b5_43b3900a","updated":"2018-11-05 22:54:46.000000000","message":"Good question. Currently, this is a synchronous call because Nova will mark that RP as free after this returns. if this were async, Nova may free up the RP while Cyborg is still cleaning, and that can result in races.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":261,"context_line":"* The conductor does RBAC checks."},{"line_number":262,"context_line":"* For each ARQ, the conductor does the following:"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"  * Check that the ARQ is either bound or in bind-failed state, has a"},{"line_number":265,"context_line":"    Deployable assigned to it, etc."},{"line_number":266,"context_line":"  * Call the agent\u0027s ``unbind_vars`` API. See `Agent unbind API`_."},{"line_number":267,"context_line":"    The agent in turn calls the driver\u0027s clean API. The"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_23d5341b","line":264,"range":{"start_line":264,"start_character":45,"end_line":264,"end_character":49},"updated":"2018-10-30 15:02:30.000000000","message":"binding-failed","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":261,"context_line":"* The conductor does RBAC checks."},{"line_number":262,"context_line":"* For each ARQ, the conductor does the following:"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"  * Check that the ARQ is either bound or in bind-failed state, has a"},{"line_number":265,"context_line":"    Deployable assigned to it, etc."},{"line_number":266,"context_line":"  * Call the agent\u0027s ``unbind_vars`` API. See `Agent unbind API`_."},{"line_number":267,"context_line":"    The agent in turn calls the driver\u0027s clean API. The"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_a4eeb21d","line":264,"range":{"start_line":264,"start_character":45,"end_line":264,"end_character":49},"in_reply_to":"3f79a3b5_23d5341b","updated":"2018-11-05 22:54:46.000000000","message":"The name \u0027bind-failed\u0027 has been used in Nova spec as well. Is there a reason to change that?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"ab714e978d75db4edd0887c670a62b16ff55343b","unresolved":false,"context_lines":[{"line_number":303,"context_line":"--------"},{"line_number":304,"context_line":"::"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":" URL: /v1/vars"},{"line_number":307,"context_line":" Method: GET"},{"line_number":308,"context_line":" Query parameters (optional):"},{"line_number":309,"context_line":"    ? [state\u003d... (except \u0027resolved\u0027)]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_d02f4f55","line":306,"range":{"start_line":306,"start_character":6,"end_line":306,"end_character":14},"updated":"2018-10-31 10:52:41.000000000","message":"Since we have changed the name to ARQ, all the url should also be changed.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":303,"context_line":"--------"},{"line_number":304,"context_line":"::"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":" URL: /v1/vars"},{"line_number":307,"context_line":" Method: GET"},{"line_number":308,"context_line":" Query parameters (optional):"},{"line_number":309,"context_line":"    ? [state\u003d... (except \u0027resolved\u0027)]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_44d79e51","line":306,"range":{"start_line":306,"start_character":6,"end_line":306,"end_character":14},"in_reply_to":"3f79a3b5_d02f4f55","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"The agent does the following for each extARQ that is passed in:"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"* Initiate the fetching of the bitstream(s), based on the ``bitstream_id``"},{"line_number":353,"context_line":"  field set by the conductor. This should be done asynchronously."},{"line_number":354,"context_line":"* Locate a driver for that device. This is done by calling the"},{"line_number":355,"context_line":"  ``can_handle()`` API for each known driver until one of them returns true."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_63b00ce1","line":352,"range":{"start_line":352,"start_character":60,"end_line":352,"end_character":72},"updated":"2018-10-30 15:02:30.000000000","message":"bitstream_uuid","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"The agent does the following for each extARQ that is passed in:"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"* Initiate the fetching of the bitstream(s), based on the ``bitstream_id``"},{"line_number":353,"context_line":"  field set by the conductor. This should be done asynchronously."},{"line_number":354,"context_line":"* Locate a driver for that device. This is done by calling the"},{"line_number":355,"context_line":"  ``can_handle()`` API for each known driver until one of them returns true."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_64d41a4c","line":352,"range":{"start_line":352,"start_character":60,"end_line":352,"end_character":72},"in_reply_to":"3f79a3b5_63b00ce1","updated":"2018-11-05 22:54:46.000000000","message":"Please see earlier comment/question.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"::"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"  can_handle(device_id, pci_id)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"  Input:"},{"line_number":402,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_4359508b","line":399,"range":{"start_line":399,"start_character":24,"end_line":399,"end_character":30},"updated":"2018-10-30 15:02:30.000000000","message":"too pci specific? can we use driver_id insread?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"::"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"  can_handle(device_id, pci_id)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"  Input:"},{"line_number":402,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_4736c0ea","line":399,"range":{"start_line":399,"start_character":24,"end_line":399,"end_character":30},"in_reply_to":"3f79a3b5_4359508b","updated":"2018-11-05 22:54:46.000000000","message":"Agreed, it is pci-specific. The driver that is being called knows its own identity, so we don\u0027t to pass in a driver id. I will change this to \u0027additional_info\u0027 which depends on the device type.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":421,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."},{"line_number":422,"context_line":"     attach_handle: The attach_handle field in extARQ"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"  Output: None (may throw exceptions on failure)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"Driver release_attach_handle API"},{"line_number":427,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_63bfac79","line":424,"range":{"start_line":424,"start_character":10,"end_line":424,"end_character":14},"updated":"2018-10-30 15:02:30.000000000","message":"We should have a return code unless it\u0027s a async call.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":421,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."},{"line_number":422,"context_line":"     attach_handle: The attach_handle field in extARQ"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"  Output: None (may throw exceptions on failure)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"Driver release_attach_handle API"},{"line_number":427,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_e4a02aa7","line":424,"range":{"start_line":424,"start_character":10,"end_line":424,"end_character":14},"in_reply_to":"3f79a3b5_63bfac79","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":433,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."},{"line_number":434,"context_line":"     attach_handle: The attach_handle field in extARQ"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"  Output: None (may throw exceptions on failure)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"Driver cleanup_state API"},{"line_number":439,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_43ce302d","line":436,"range":{"start_line":436,"start_character":10,"end_line":436,"end_character":14},"updated":"2018-10-30 15:02:30.000000000","message":"Same comment as above.","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":433,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."},{"line_number":434,"context_line":"     attach_handle: The attach_handle field in extARQ"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"  Output: None (may throw exceptions on failure)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"Driver cleanup_state API"},{"line_number":439,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_648c1a39","line":436,"range":{"start_line":436,"start_character":10,"end_line":436,"end_character":14},"in_reply_to":"3f79a3b5_43ce302d","updated":"2018-11-05 22:54:46.000000000","message":"Done","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"a49c669f46a97a6f4fc1e570f6c7d412c8b3a015","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"::"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"  program(device_id, bitstream_buf, region_type_id\u003dNone)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"  Programs the bitstream in the given buffer. The region type id may not be"},{"line_number":455,"context_line":"  needed unless there are multiple regions in the same device."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_638d6cd9","line":452,"range":{"start_line":452,"start_character":2,"end_line":452,"end_character":9},"updated":"2018-10-30 15:02:30.000000000","message":"Better align with the patch here\nhttps://review.openstack.org/#/c/611488/","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fde8d4a5c2775b1431ea5e54c986eea577adbc99","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"::"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"  program(device_id, bitstream_buf, region_type_id\u003dNone)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"  Programs the bitstream in the given buffer. The region type id may not be"},{"line_number":455,"context_line":"  needed unless there are multiple regions in the same device."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_24ce2258","line":452,"range":{"start_line":452,"start_character":2,"end_line":452,"end_character":9},"in_reply_to":"3f79a3b5_638d6cd9","updated":"2018-11-05 22:54:46.000000000","message":"The API in that patch is:\n   program(self, device_path, image)\nwhere device_path is a PCI BDF and image seems to be a file path. \n\nFor one, we should use something other than a PCI BDF: the device_id is supposed to abstract that. Secondly, is it a good idea to store the bitstream image in a local file? There could be caching issues -- when do we delete it , what if it gets stale -- and security issues. Storing it in a buffer does not fully solve all security issues, but seems to be a step up, right?","commit_id":"2600bbb513f714a38adcef26ecb91bbd37a7a68c"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The Nova Cyborg interaction specification ([#Nova-Cyborg-Spec]_) defines the"},{"line_number":14,"context_line":"overall process to create and manage instances with accelerators, including"},{"line_number":15,"context_line":"the workflow in Nova and os-acc. It documents the signatures of the Cyborg"},{"line_number":16,"context_line":"APIs needed for that workflow, but not how those APIs are implemented."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This specification defines the workflows (i.e. high-level designs of the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_e21b6882","line":15,"range":{"start_line":15,"start_character":16,"end_line":15,"end_character":31},"updated":"2018-12-06 11:43:52.000000000","message":"need to be updated","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":89,"context_line":"   }"},{"line_number":90,"context_line":" Normal response code and body:"},{"line_number":91,"context_line":"   200"},{"line_number":92,"context_line":"   { \u0027groups\u0027: [ \u003cJSON-serialized-request-group\u003e, ... ]"},{"line_number":93,"context_line":"     \u0027arqs\u0027: [ \u003cJSON-serialized-arq\u003e, ... ]"},{"line_number":94,"context_line":"   }"},{"line_number":95,"context_line":" Error response codes and body:"},{"line_number":96,"context_line":"   400 (Bad request): Some input parameter is invalid"},{"line_number":97,"context_line":"   403 (Forbidden): RBAC check failed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_16d77f23","line":94,"range":{"start_line":92,"start_character":0,"end_line":94,"end_character":4},"updated":"2018-12-06 11:43:52.000000000","message":"As you said below, the groups store the resource and traits, do we need to do a mapping between groups and arg in case some bindings failed.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  scalability, the API server may need to access the db in the future but that"},{"line_number":114,"context_line":"  can be addressed in a future release.)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* If an image UUID is provided, the conductor queries Glance to fetch the"},{"line_number":117,"context_line":"  properties of the image that may be relevant to accelerators."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"  * The background for this is that the requirements for accelerators may be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_5d9f5a63","line":116,"range":{"start_line":116,"start_character":31,"end_line":116,"end_character":53},"updated":"2018-12-06 11:43:52.000000000","message":"not sure if it\u0027s the agent to call glance, or conductor.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":119,"context_line":"  * The background for this is that the requirements for accelerators may be"},{"line_number":120,"context_line":"    expressed as VM image properties, rather than in the device profile. For"},{"line_number":121,"context_line":"    example, the bitstream or function needed for offloads may be stated as VM"},{"line_number":122,"context_line":"    image properties. These properties must be expressed in the form"},{"line_number":123,"context_line":"    ``accel:\u003ckey\u003e\u003d\u003cvalue\u003e``, same as in device profiles (see [#dev-prof]_)."},{"line_number":124,"context_line":"    Cyborg will include these along with device profile groups."},{"line_number":125,"context_line":"  * If there are multiple groups in the device profile, requesting different"},{"line_number":126,"context_line":"    accelerator resources, it may not be easy to determine which image"},{"line_number":127,"context_line":"    property is meant for which accelerator resource. In the initial"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_5688971f","line":124,"range":{"start_line":122,"start_character":21,"end_line":124,"end_character":63},"updated":"2018-12-06 11:43:52.000000000","message":"The expression makes me confused. When we create an ARQ, the input parameters are device profile and image_uuid, the image info will be stored in accel field, so what do you mean \"same as in devive profile\" and \"device profile groups\". It seem image info will also be stored in these two params according to your statement.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    204 (No content)"},{"line_number":153,"context_line":"    No response body"},{"line_number":154,"context_line":" Error response codes and body:"},{"line_number":155,"context_line":"    400 (Bad request): Some input parameter is invalid"},{"line_number":156,"context_line":"    403 (Forbidden): RBAC check failed"},{"line_number":157,"context_line":"    { \u0027error\u0027: \u003cerror-string\u003e }"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_f6a683a8","line":155,"range":{"start_line":155,"start_character":4,"end_line":155,"end_character":54},"updated":"2018-12-06 11:43:52.000000000","message":"If some ARQs are in binding states, I think we need to unbind them before deleting. In this case, this API should also return error. There should be 404 if the input uuid is invalid, and maybe 403 for bound ARQs.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    { \u0027instance_uuid\u0027: \u003cuuid-string\u003e,"},{"line_number":177,"context_line":"      \u0027arqs\u0027: [ \u003cunbound arq with host, instance UUID and device-RP\u003e, ... ]"},{"line_number":178,"context_line":"    }"},{"line_number":179,"context_line":"    Note: os-acc uses the selected allocation candidate and request group"},{"line_number":180,"context_line":"          info to figure out the device RPs for each ARQ."},{"line_number":181,"context_line":"    Note: The instance UUID is needed when invoked by Nova, not for standalone"},{"line_number":182,"context_line":"          usage."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_f6f4438c","line":179,"range":{"start_line":179,"start_character":9,"end_line":179,"end_character":21},"updated":"2018-12-06 11:43:52.000000000","message":"need update it.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    Set the substate to BIND_STARTED."},{"line_number":202,"context_line":"  * Decide if programming is needed based on this logic:"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    | (device profile request group for the ARQ refers to CUSTOM_FPGA_REGION_*"},{"line_number":205,"context_line":"         AND also contains accel:bitstream_uuid\u003d*) OR"},{"line_number":206,"context_line":"    | (device profile request group refers to accel:function_id\u003d* AND that"},{"line_number":207,"context_line":"       function ID is not present in the chosen deployable)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_5693b7ff","line":204,"range":{"start_line":204,"start_character":48,"end_line":204,"end_character":78},"updated":"2018-12-06 11:43:52.000000000","message":"why region is required for FPGA programming","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    mark it as used. Add it to the ARQ. Set the substate to HANDLE_ASSIGNED,"},{"line_number":212,"context_line":"    (Note: For dynamic attach handles like mdev UUID, the agent would do this"},{"line_number":213,"context_line":"     step and set the substate.)"},{"line_number":214,"context_line":"  * Set the ``locked`` field to True while the agent is yet to process the"},{"line_number":215,"context_line":"    ExtARQ, so that concurrent accesses can be blocked."},{"line_number":216,"context_line":"* The conductor calls the agent\u0027s ``bind_arqs()`` API. See `Agent bind API`_."},{"line_number":217,"context_line":"  To get the benefits of asynchronicity without polling, the call be launched"},{"line_number":218,"context_line":"  as below::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_1699bf1b","line":215,"range":{"start_line":214,"start_character":1,"end_line":215,"end_character":55},"updated":"2018-12-06 11:43:52.000000000","message":"this should be the 1st step.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"* The API server calls the conductor."},{"line_number":306,"context_line":"* The conductor does RBAC checks."},{"line_number":307,"context_line":"* The conductor checks the state of each ARQ. If each of them are bound or"},{"line_number":308,"context_line":"  failed to bind, the call returns success."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"Get ARQs"},{"line_number":311,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_f6ac4339","line":308,"range":{"start_line":307,"start_character":0,"end_line":308,"end_character":43},"updated":"2018-12-06 11:43:52.000000000","message":"conductor should also check the lock field.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":335,"context_line":"it returns all ARQs for that instance."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"* The API server calls the conductor."},{"line_number":338,"context_line":"* The conductor does RBAC checks."},{"line_number":339,"context_line":"* The conductor returns the set of ARQs that the caller\u0027s role has access to."},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"Agent APIs"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_16b21f96","line":338,"range":{"start_line":338,"start_character":0,"end_line":338,"end_character":33},"updated":"2018-12-06 11:43:52.000000000","message":"same as the comment in line 308.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4be1425b58b567b02e2c1521869d7a82d9bfc421","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        (PCI VF) if any, bitstream to program, etc."},{"line_number":354,"context_line":" Output: List of updated extARQs"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":" Note: Theconductor does not block on this call; see `Bind ARQs`_."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"The agent does the following for each extARQ that is passed in:"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_d6a7c750","line":356,"range":{"start_line":356,"start_character":10,"end_line":356,"end_character":20},"updated":"2018-12-06 11:43:52.000000000","message":"space here","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a8fece1149c7d8101655191fc294da3e895cd824","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Initiate the fetching of the bitstream(s), based on the ``bitstream_id``"},{"line_number":361,"context_line":"  field set by the conductor. This should be done asynchronously."},{"line_number":362,"context_line":"* Locate a driver for that device. This is done by calling the"},{"line_number":363,"context_line":"  ``can_handle()`` API for each known driver until one of them returns true."},{"line_number":364,"context_line":"  See `Driver can_handle API`_."},{"line_number":365,"context_line":"* Set the driver name in the extARQ. This will be used in subsequent calls to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_017386b4","line":362,"range":{"start_line":362,"start_character":0,"end_line":362,"end_character":35},"updated":"2018-12-10 03:04:07.000000000","message":"this function need to be updated according to our discussion about adding a driver_name field during the discovery.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"28a212e1558dd11fa0164f9614b48a796c78e41c","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Initiate the fetching of the bitstream(s), based on the ``bitstream_id``"},{"line_number":361,"context_line":"  field set by the conductor. This should be done asynchronously."},{"line_number":362,"context_line":"* Locate a driver for that device. This is done by calling the"},{"line_number":363,"context_line":"  ``can_handle()`` API for each known driver until one of them returns true."},{"line_number":364,"context_line":"  See `Driver can_handle API`_."},{"line_number":365,"context_line":"* Set the driver name in the extARQ. This will be used in subsequent calls to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_a124f51a","line":362,"range":{"start_line":362,"start_character":0,"end_line":362,"end_character":35},"in_reply_to":"3f79a3b5_017386b4","updated":"2018-12-11 05:22:00.000000000","message":"Yes.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a8fece1149c7d8101655191fc294da3e895cd824","unresolved":false,"context_lines":[{"line_number":393,"context_line":"    user logic (function) along with the state and user data. This is called"},{"line_number":394,"context_line":"    after DaaS requests to remove the user-programmed logic."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Driver API"},{"line_number":397,"context_line":"----------"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"Note that the APIs mentioned here are outlines. The details may change during"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_c176ee91","line":396,"range":{"start_line":396,"start_character":0,"end_line":396,"end_character":10},"updated":"2018-12-10 03:04:07.000000000","message":"IMHO, these function all need an roll back mechanism when failure occurs to reset the sub_state.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"28a212e1558dd11fa0164f9614b48a796c78e41c","unresolved":false,"context_lines":[{"line_number":393,"context_line":"    user logic (function) along with the state and user data. This is called"},{"line_number":394,"context_line":"    after DaaS requests to remove the user-programmed logic."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Driver API"},{"line_number":397,"context_line":"----------"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"Note that the APIs mentioned here are outlines. The details may change during"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_01e4c9d1","line":396,"range":{"start_line":396,"start_character":0,"end_line":396,"end_character":10},"in_reply_to":"3f79a3b5_c176ee91","updated":"2018-12-11 05:22:00.000000000","message":"Agreed.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a8fece1149c7d8101655191fc294da3e895cd824","unresolved":false,"context_lines":[{"line_number":398,"context_line":""},{"line_number":399,"context_line":"Note that the APIs mentioned here are outlines. The details may change during"},{"line_number":400,"context_line":"implementation."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Driver can_handle API"},{"line_number":403,"context_line":"^^^^^^^^^^^^^^^^^^^^^"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_a19ad2bf","line":402,"range":{"start_line":401,"start_character":0,"end_line":402,"end_character":21},"updated":"2018-12-10 03:04:07.000000000","message":"this function will be deprecated if we pass the driver name directly during the device discovery.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"28a212e1558dd11fa0164f9614b48a796c78e41c","unresolved":false,"context_lines":[{"line_number":398,"context_line":""},{"line_number":399,"context_line":"Note that the APIs mentioned here are outlines. The details may change during"},{"line_number":400,"context_line":"implementation."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Driver can_handle API"},{"line_number":403,"context_line":"^^^^^^^^^^^^^^^^^^^^^"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_61dc9d15","line":402,"range":{"start_line":401,"start_character":0,"end_line":402,"end_character":21},"in_reply_to":"3f79a3b5_a19ad2bf","updated":"2018-12-11 05:22:00.000000000","message":"Agreed.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a8fece1149c7d8101655191fc294da3e895cd824","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"::"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"  setup_attach_handle(device_id, attach_handle)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"  Input:"},{"line_number":430,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_41a97ed8","line":427,"range":{"start_line":427,"start_character":2,"end_line":427,"end_character":21},"updated":"2018-12-10 03:04:07.000000000","message":"do we need to set the sub_state of ExtARQ in this function. Besides, what do you mean the \"setup\", do we need do anything else except update the specific fields","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"28a212e1558dd11fa0164f9614b48a796c78e41c","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"::"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"  setup_attach_handle(device_id, attach_handle)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"  Input:"},{"line_number":430,"context_line":"     device_id: The device_id field in ExtARQ; see `Extended ARQ`_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_41ee41b6","line":427,"range":{"start_line":427,"start_character":2,"end_line":427,"end_character":21},"in_reply_to":"3f79a3b5_41a97ed8","updated":"2018-12-11 05:22:00.000000000","message":"In some situations in the future, the driver may have to select an attach handle. This API needs to be revisited for extensibility.","commit_id":"ea819105d65d9a70837364eb7e3955a78769e35d"}]}
