)]}'
{"README.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e144131cb1c58c438e5b10e2267ab96f5b92297c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  that is to create a file with the extension ``.pth`` in your"},{"line_number":32,"context_line":"  ``/usr/lib/python2.7/site-packages``, with the contents::"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"   import sys; sys.path.append(\u0027/path/to/python-cyborgclient\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"What is in, What is out"},{"line_number":37,"context_line":"\u003d\u003d\u003d\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":3,"id":"bfdaf3ff_d60ca9ed","line":34,"updated":"2019-01-17 23:28:02.000000000","message":"can one also simply\n\n pip install -e /path/to/python-cyborgclient\n\n?","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90e62060ec57dcdace66b6be30d9179a15b36016","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  that is to create a file with the extension ``.pth`` in your"},{"line_number":32,"context_line":"  ``/usr/lib/python2.7/site-packages``, with the contents::"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"   import sys; sys.path.append(\u0027/path/to/python-cyborgclient\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"What is in, What is out"},{"line_number":37,"context_line":"\u003d\u003d\u003d\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":3,"id":"9fdfeff1_bd736180","line":34,"in_reply_to":"9fdfeff1_1fa06ff4","updated":"2019-01-22 15:37:44.000000000","message":"Sorry if I wasn\u0027t clear. Yes, you want to do the clone to get to the particular branch/commit you want to test with. At that point you can do the pip install, which includes the setup.py business, doesn\u0027t require hand-editing anything, etc.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"7896a2ad59900ca620f0076ad86bc954761e964e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  that is to create a file with the extension ``.pth`` in your"},{"line_number":32,"context_line":"  ``/usr/lib/python2.7/site-packages``, with the contents::"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"   import sys; sys.path.append(\u0027/path/to/python-cyborgclient\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"What is in, What is out"},{"line_number":37,"context_line":"\u003d\u003d\u003d\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":3,"id":"5fc1f717_fe5d56e9","line":34,"in_reply_to":"9fdfeff1_8001bfb1","updated":"2019-03-21 04:39:05.000000000","message":"Done","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"430f5b37220b0041ee134df7ac150fba09abb3e4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  that is to create a file with the extension ``.pth`` in your"},{"line_number":32,"context_line":"  ``/usr/lib/python2.7/site-packages``, with the contents::"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"   import sys; sys.path.append(\u0027/path/to/python-cyborgclient\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"What is in, What is out"},{"line_number":37,"context_line":"\u003d\u003d\u003d\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":3,"id":"9fdfeff1_8001bfb1","line":34,"in_reply_to":"9fdfeff1_bd736180","updated":"2019-01-31 02:57:56.000000000","message":"+1","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"eca347916175384edee6b39f819c22ebaa1e96cf","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  that is to create a file with the extension ``.pth`` in your"},{"line_number":32,"context_line":"  ``/usr/lib/python2.7/site-packages``, with the contents::"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"   import sys; sys.path.append(\u0027/path/to/python-cyborgclient\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"What is in, What is out"},{"line_number":37,"context_line":"\u003d\u003d\u003d\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":3,"id":"9fdfeff1_1fa06ff4","line":34,"in_reply_to":"bfdaf3ff_d60ca9ed","updated":"2019-01-22 02:38:27.000000000","message":"I am assuming that we want to \u0027git clone\u0027 a specific branch of cyborgclient. \n\nWe can do the git clone and then:\n# sudo python setup.py install\n\nI should clarify that.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e144131cb1c58c438e5b10e2267ab96f5b92297c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * ``POST /v2/arqs/bindings``"},{"line_number":54,"context_line":"  * ``DELETE /v2/device_profiles``"},{"line_number":55,"context_line":"  * ``DELETE /v2/arqs``"},{"line_number":56,"context_line":"  * ``DELETE /v2/arqs/bindings``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Cyborg does not intend to support ``GET /v2/arqs/bindings`` because clients"},{"line_number":59,"context_line":"want ARQs, not just the bindings."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfdaf3ff_36a8958b","line":56,"updated":"2019-01-17 23:28:02.000000000","message":"Note to self: take a closer look at the API design. A couple of things stand out:\n\n- endpoint nouns should be singular\n- payloads for POST operations should be in the body, not in the querystring\n- operation on a specific existing item should identify the item in the path, e.g. DELETE /v2/arq/{uuid}\n\nSomewhere there\u0027s an openstack API guidelines doc that outlines these best practices. Bug someone from the API SIG (like edleafe, cdent) for that doc.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"7896a2ad59900ca620f0076ad86bc954761e964e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * ``POST /v2/arqs/bindings``"},{"line_number":54,"context_line":"  * ``DELETE /v2/device_profiles``"},{"line_number":55,"context_line":"  * ``DELETE /v2/arqs``"},{"line_number":56,"context_line":"  * ``DELETE /v2/arqs/bindings``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Cyborg does not intend to support ``GET /v2/arqs/bindings`` because clients"},{"line_number":59,"context_line":"want ARQs, not just the bindings."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_5e6caa9b","line":56,"in_reply_to":"9fdfeff1_5dbd95b5","updated":"2019-03-21 04:39:05.000000000","message":"\u003e That\u0027s fair, though in the scope of destroying an instance, surely\n \u003e we\u0027re talking a small handful at most.\nYes, but they may involve device cleanup, which could take time.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90e62060ec57dcdace66b6be30d9179a15b36016","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * ``POST /v2/arqs/bindings``"},{"line_number":54,"context_line":"  * ``DELETE /v2/device_profiles``"},{"line_number":55,"context_line":"  * ``DELETE /v2/arqs``"},{"line_number":56,"context_line":"  * ``DELETE /v2/arqs/bindings``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Cyborg does not intend to support ``GET /v2/arqs/bindings`` because clients"},{"line_number":59,"context_line":"want ARQs, not just the bindings."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fdfeff1_5dbd95b5","line":56,"in_reply_to":"9fdfeff1_b4138a66","updated":"2019-01-22 15:37:44.000000000","message":"\u003e Note to Eric\u0027s self:\n \u003e * Endpoint nouns are plural when dealing with collections. E.g.\n \u003e Placement API [1].\n\nRight you are. Not sure what I was thinking of.\n\n \u003e * None of my POST ops have payloads in the query string.\n\nLooking at L86 and L88. Perhaps you\u0027re just shorthanding the payload?\n\n \u003e * Delete also operates on collections, so that we can operate on\n \u003e ARQs in batches. Since RabbitMQ has well-known scaling limitations,\n \u003e IMHO batching is important to scaling.\n\nThat\u0027s fair, though in the scope of destroying an instance, surely we\u0027re talking a small handful at most.\n\nIn case it wasn\u0027t obvious, I\u0027m not an expert here; but I\u0027d like someone who is to have a look at your API design for this kind of \"look-and-feel\" stuff.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"eca347916175384edee6b39f819c22ebaa1e96cf","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * ``POST /v2/arqs/bindings``"},{"line_number":54,"context_line":"  * ``DELETE /v2/device_profiles``"},{"line_number":55,"context_line":"  * ``DELETE /v2/arqs``"},{"line_number":56,"context_line":"  * ``DELETE /v2/arqs/bindings``"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Cyborg does not intend to support ``GET /v2/arqs/bindings`` because clients"},{"line_number":59,"context_line":"want ARQs, not just the bindings."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fdfeff1_b4138a66","line":56,"in_reply_to":"bfdaf3ff_36a8958b","updated":"2019-01-22 02:38:27.000000000","message":"Note to Eric\u0027s self:\n* Endpoint nouns are plural when dealing with collections. E.g. Placement API [1].\n* None of my POST ops have payloads in the query string.\n* Delete also operates on collections, so that we can operate on ARQs in batches. Since RabbitMQ has well-known scaling limitations, IMHO batching is important to scaling.\n\n[1] https://developer.openstack.org/api-ref/placement/#list-resource-providers","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e144131cb1c58c438e5b10e2267ab96f5b92297c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Nova compute manager checks to see if the ARQs are bound, via the"},{"line_number":92,"context_line":"  Cyborg client , which does ``GET /v2/arqs?state\u003dresolved\u0026instance\u003duuid1``."},{"line_number":93,"context_line":"* Nova virt driver attaches the PCI functions to the VM."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Rationale"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":97,"context_line":"Two different approaches have been advocated for integrating Cyborg"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfdaf3ff_96e861e2","line":94,"updated":"2019-01-17 23:28:02.000000000","message":"Where is the part where the devices are discovered on the host and their providers/inventories created in placement? Are they nested providers? Owned by cyborg (as opposed to nova)?\n\nOne possible approach for a first pass would be to let nova do the discovery in update_provider_tree by querying a cyborg API (GET /v2/devices?host\u003d{uuid} or something) and populating the provider tree there. So nova would \"own\" the devices. That would eliminate the asynchronous aspect and reduce the perceived footprint of the cyborg service in this implementation.\n\nWe will need to be able to change ownership of a provider at some point, possibly with a reshape operation, so this doesn\u0027t paint us into a corner wrt eventually having cyborg own the device RPs in placement.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"7896a2ad59900ca620f0076ad86bc954761e964e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Nova compute manager checks to see if the ARQs are bound, via the"},{"line_number":92,"context_line":"  Cyborg client , which does ``GET /v2/arqs?state\u003dresolved\u0026instance\u003duuid1``."},{"line_number":93,"context_line":"* Nova virt driver attaches the PCI functions to the VM."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Rationale"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":97,"context_line":"Two different approaches have been advocated for integrating Cyborg"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_fee0f6fc","line":94,"in_reply_to":"9fdfeff1_1d3aad35","updated":"2019-03-21 04:39:05.000000000","message":"\u003e Is it your intent for \"manual discovery\" to be part of the real\n \u003e thing for the first release? \n\nFor Train release, we intend device discovery to be automatic.\n\n \u003e Regarding the \"footprint\" comment, here\u0027s what I meant:\n \u003e \n \u003e Cyborg doing the discovery asynchronously introduces more complexity to the \n \u003e picture. Need to handle e.g. bringup(racing/coordination when both services\n \u003e are coming up; what happens if one service or the other is down/broken)... \n\nTo prevent such conflicts, the operator must ensure that Nova and Cyborg handle disjoint sets of PCI IDs. Cyborg won\u0027t handle plain NICs while Nova won\u0027t handle FPGAs: so no conflicts there. For other devices (GPUs, QAT, ..), the operator must ensure that, if a Cyborg driver is installed for a class of devices with specific PCI vendor/product IDs, those IDs are not configured in the PCI whitelist. IOW, for a class of devices with a specific PCI ID (say vendor id 8086, product ID 3A95), it is not possible for some of those device instances to be managed by Nova and the rest by Cyborg.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90e62060ec57dcdace66b6be30d9179a15b36016","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Nova compute manager checks to see if the ARQs are bound, via the"},{"line_number":92,"context_line":"  Cyborg client , which does ``GET /v2/arqs?state\u003dresolved\u0026instance\u003duuid1``."},{"line_number":93,"context_line":"* Nova virt driver attaches the PCI functions to the VM."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Rationale"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":97,"context_line":"Two different approaches have been advocated for integrating Cyborg"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fdfeff1_1d3aad35","line":94,"in_reply_to":"9fdfeff1_7f697bbc","updated":"2019-01-22 15:37:44.000000000","message":"Is it your intent for \"manual discovery\" to be part of the real thing for the first release? I\u0027ll grant you that that would greatly simplify a couple of the stickier aspects - like whether it\u0027s cyborg or nova that\u0027s responsible for discovery; how white/blacklisting is done, etc. - so it\u0027s not out of the question. But I think this document should make that clear either way.\n\nRegarding the \"footprint\" comment, here\u0027s what I meant:\n\nCyborg doing the discovery asynchronously introduces more complexity to the picture. Need to handle e.g. bringup (racing/coordination when both services are coming up; what happens if one service or the other is down/broken)... Some of this obviously needs to be handled in a synchronous nova-driven design as well, but the cases are simpler. We also wouldn\u0027t have to cross the rubicon of having providers in a tree owned by different services just yet. Remember in Denver, just trying to land on how to mark ownership of a provider sent us off into the weeds for an hour.","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"eca347916175384edee6b39f819c22ebaa1e96cf","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Nova compute manager checks to see if the ARQs are bound, via the"},{"line_number":92,"context_line":"  Cyborg client , which does ``GET /v2/arqs?state\u003dresolved\u0026instance\u003duuid1``."},{"line_number":93,"context_line":"* Nova virt driver attaches the PCI functions to the VM."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Rationale"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":97,"context_line":"Two different approaches have been advocated for integrating Cyborg"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fdfeff1_7f697bbc","line":94,"in_reply_to":"bfdaf3ff_96e861e2","updated":"2019-01-22 02:38:27.000000000","message":"Device discovery is not part of this pilot. Cyborg community wants to develop that code and it relies upon Placement API which is not the focus of the pilot branch. \n\nFor now, a fake device is inserted into Cyborg \u0027by hand\u0027 and Placement API is called. Both are in the initial setup script [1].\n\nRe. \"let nova do the discovery ... reduce the perceived footprint of Cyborg\" -- Cyborg would use standard Placement API. The footprint, as shown in [1], seems to be low already?\n\n[1] https://review.openstack.org/#/c/626420/2/nova-integ/initial_setup.sh","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e144131cb1c58c438e5b10e2267ab96f5b92297c","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  * An operator wants to query the device inventory of a cluster in"},{"line_number":112,"context_line":"    many ways, e.g., which GPUs are running BMC version older than 1.2?."},{"line_number":113,"context_line":"  * An operator wants to manage a devicce, e.g. update the shell of an FPGA."},{"line_number":114,"context_line":"  * An operator wants to set up an FPGA for OVS offload or assignment to"},{"line_number":115,"context_line":"    DPDK in the host (i.e. offload from the host, not from a VM)."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bfdaf3ff_d6fd896e","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":39},"updated":"2019-01-17 23:28:02.000000000","message":"x","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"7896a2ad59900ca620f0076ad86bc954761e964e","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  * An operator wants to query the device inventory of a cluster in"},{"line_number":112,"context_line":"    many ways, e.g., which GPUs are running BMC version older than 1.2?."},{"line_number":113,"context_line":"  * An operator wants to manage a devicce, e.g. update the shell of an FPGA."},{"line_number":114,"context_line":"  * An operator wants to set up an FPGA for OVS offload or assignment to"},{"line_number":115,"context_line":"    DPDK in the host (i.e. offload from the host, not from a VM)."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_3ec0be50","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":39},"in_reply_to":"9fdfeff1_ff9a4bc3","updated":"2019-03-21 04:39:05.000000000","message":"Done","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"eca347916175384edee6b39f819c22ebaa1e96cf","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  * An operator wants to query the device inventory of a cluster in"},{"line_number":112,"context_line":"    many ways, e.g., which GPUs are running BMC version older than 1.2?."},{"line_number":113,"context_line":"  * An operator wants to manage a devicce, e.g. update the shell of an FPGA."},{"line_number":114,"context_line":"  * An operator wants to set up an FPGA for OVS offload or assignment to"},{"line_number":115,"context_line":"    DPDK in the host (i.e. offload from the host, not from a VM)."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fdfeff1_ff9a4bc3","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":39},"in_reply_to":"bfdaf3ff_d6fd896e","updated":"2019-01-22 02:38:27.000000000","message":"OK","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"430f5b37220b0041ee134df7ac150fba09abb3e4","unresolved":false,"context_lines":[{"line_number":137,"context_line":"N accelerators and N VFs where the VF-accelerator association is made"},{"line_number":138,"context_line":"dynamically."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"On a related note, operators should be able to upload bistreams into Glance"},{"line_number":141,"context_line":"with the necessary authentication and metadata. That is better left to"},{"line_number":142,"context_line":"Cyborg as an independent project than be lumped with Nova."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fdfeff1_40d6772a","line":140,"range":{"start_line":140,"start_character":54,"end_line":140,"end_character":63},"updated":"2019-01-31 02:57:56.000000000","message":"bitstreams","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"7896a2ad59900ca620f0076ad86bc954761e964e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"N accelerators and N VFs where the VF-accelerator association is made"},{"line_number":138,"context_line":"dynamically."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"On a related note, operators should be able to upload bistreams into Glance"},{"line_number":141,"context_line":"with the necessary authentication and metadata. That is better left to"},{"line_number":142,"context_line":"Cyborg as an independent project than be lumped with Nova."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_deb41af5","line":140,"range":{"start_line":140,"start_character":54,"end_line":140,"end_character":63},"in_reply_to":"9fdfeff1_40d6772a","updated":"2019-03-21 04:39:05.000000000","message":"Done","commit_id":"8f0bd275b42c806f46ca92821b78c785a5ff94b2"}]}
