)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bbb6e78b8a0172723578de445e042753ee9fcdf6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Restore V3 Diagnostics info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"bp restore-vm-diagnostics"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1b775c565012931aec09a6ac11ad14d8fcdcd857"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a8ec9b2_e628dd35","line":10,"updated":"2016-09-21 15:31:59.000000000","message":"This should have the APIImpact tag.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"}],"specs/ocata/approved/restore-vm-diagnostics.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bbb6e78b8a0172723578de445e042753ee9fcdf6","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add a API microversion that will standardise response of getting VM diagnostics"},{"line_number":40,"context_line":"info request [2]. For that we need a virt driver method that returns"},{"line_number":41,"context_line":"a predefined structure. It  was already implemented::"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  get_instance_diagnostics(self, instance)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_c69cc110","line":41,"range":{"start_line":41,"start_character":26,"end_line":41,"end_character":28},"updated":"2016-09-21 15:31:59.000000000","message":"nit: s/  / /","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"d52ec02335b0fd3ce790331523ab665a68b0b2bb","unresolved":false,"context_lines":[{"line_number":60,"context_line":"| driver                 | A string denoting the driver on which the VM is   |"},{"line_number":61,"context_line":"|                        | running. Examples may be: \u0027libvirt\u0027, \u0027xenapi\u0027,    |"},{"line_number":62,"context_line":"|                        | \u0027hyperv\u0027 and \u0027vmwareapi\u0027 (String) [Admin only -   |"},{"line_number":63,"context_line":"|                        | key will not appear if non admin]                 |"},{"line_number":64,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":65,"context_line":"| hypervisor_os          | A string denoting the hypervisor OS (String)      |"},{"line_number":66,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_8f784ef4","line":63,"updated":"2016-09-23 13:00:52.000000000","message":"Aside: I know we don\u0027t normally expose this detail directly to users, but they can already infer it anyway. i.e. it\u0027s not secret. \u0027virt-what\u0027 run in the guest will tell you which hypervisor you\u0027re on, for example. What\u0027s the reason not to expose this? Qemu machine type would also be a user-friendly thing to expose imho.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3a25a37cd01c7ca505611dbc2307c54697537b6c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"},{"line_number":67,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":68,"context_line":"| uptime                 | The amount of time in seconds that the VM has     |"},{"line_number":69,"context_line":"|                        | been running (Integer)                            |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":71,"context_line":"| num_cpus               | The number of vCPUs (Integer)                     |"},{"line_number":72,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_216f04fd","line":69,"updated":"2016-09-21 18:44:32.000000000","message":"Ironic driver will not be able to accurately handle this.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e7366adf01249bf8d24bd14272ccea73059e59e1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"},{"line_number":67,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":68,"context_line":"| uptime                 | The amount of time in seconds that the VM has     |"},{"line_number":69,"context_line":"|                        | been running (Integer)                            |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":71,"context_line":"| num_cpus               | The number of vCPUs (Integer)                     |"},{"line_number":72,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_879c686b","line":69,"in_reply_to":"7a8ec9b2_216f04fd","updated":"2016-09-21 19:18:42.000000000","message":"uptime defaults to 0 in the Diagnostics object:\n\nhttps://github.com/openstack/nova/blob/9723864b880c1b88ecfed48a434cea03835a666e/nova/virt/diagnostics.py#L99\n\nRather than report an uptime of 0 for Ironic instances, we could maybe handle a special value like -1 meaning the virt driver doesn\u0027t support reporting uptime and the API should just return None.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"629df65519a8fcb3c93b06e6b68ec0dd9d2faa12","unresolved":false,"context_lines":[{"line_number":66,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"},{"line_number":67,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":68,"context_line":"| uptime                 | The amount of time in seconds that the VM has     |"},{"line_number":69,"context_line":"|                        | been running (Integer)                            |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":71,"context_line":"| num_cpus               | The number of vCPUs (Integer)                     |"},{"line_number":72,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_3ef32a0c","line":69,"in_reply_to":"7a8ec9b2_879c686b","updated":"2016-09-22 15:14:46.000000000","message":"+1 for \u0027-1\u0027 :)","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bbb6e78b8a0172723578de445e042753ee9fcdf6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Note: A number of the above details is common to all drivers. These values"},{"line_number":98,"context_line":"will be filled in by the Nova compute manager prior to invoking the driver"},{"line_number":99,"context_line":"call. The ones that are virt driver specific will be filled, if possible, by"},{"line_number":100,"context_line":"the virt driver. If the virt driver is unable to provide a specific field"},{"line_number":101,"context_line":"then this field will not be reported in the diagnostics."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The cpu details is an array of dictionaries per each virtual CPU."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_e6461d7a","line":101,"range":{"start_line":100,"start_character":17,"end_line":101,"end_character":56},"updated":"2016-09-21 15:31:59.000000000","message":"I wonder if it\u0027s better to omit fields or to provide a None value is the default, or some other sentinel?","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"629df65519a8fcb3c93b06e6b68ec0dd9d2faa12","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Note: A number of the above details is common to all drivers. These values"},{"line_number":98,"context_line":"will be filled in by the Nova compute manager prior to invoking the driver"},{"line_number":99,"context_line":"call. The ones that are virt driver specific will be filled, if possible, by"},{"line_number":100,"context_line":"the virt driver. If the virt driver is unable to provide a specific field"},{"line_number":101,"context_line":"then this field will not be reported in the diagnostics."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The cpu details is an array of dictionaries per each virtual CPU."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_9eda7e77","line":101,"range":{"start_line":100,"start_character":17,"end_line":101,"end_character":56},"in_reply_to":"7a8ec9b2_dc46547a","updated":"2016-09-22 15:14:46.000000000","message":"will make it None","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d4dfdfdd1cc22d3801662526ff1473dc076f1789","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Note: A number of the above details is common to all drivers. These values"},{"line_number":98,"context_line":"will be filled in by the Nova compute manager prior to invoking the driver"},{"line_number":99,"context_line":"call. The ones that are virt driver specific will be filled, if possible, by"},{"line_number":100,"context_line":"the virt driver. If the virt driver is unable to provide a specific field"},{"line_number":101,"context_line":"then this field will not be reported in the diagnostics."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The cpu details is an array of dictionaries per each virtual CPU."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_dc46547a","line":101,"range":{"start_line":100,"start_character":17,"end_line":101,"end_character":56},"in_reply_to":"7a8ec9b2_e6461d7a","updated":"2016-09-21 15:59:26.000000000","message":"+1 for None","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"24da6bdde23d230c9af9e1da934a42aa2779e61b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":106,"context_line":"| Key                    | Description                                       |"},{"line_number":107,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":108,"context_line":"| time                   | CPU Time in nano seconds (Integer)                |"},{"line_number":109,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"The network details is an array of dictionaries per each virtual NIC."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_b517c0ec","line":108,"range":{"start_line":108,"start_character":2,"end_line":108,"end_character":62},"updated":"2016-09-22 02:49:41.000000000","message":"I think we should add cpu id, that is for user to distinguish different vcpu.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"629df65519a8fcb3c93b06e6b68ec0dd9d2faa12","unresolved":false,"context_lines":[{"line_number":105,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":106,"context_line":"| Key                    | Description                                       |"},{"line_number":107,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":108,"context_line":"| time                   | CPU Time in nano seconds (Integer)                |"},{"line_number":109,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"The network details is an array of dictionaries per each virtual NIC."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_fecf02b1","line":108,"range":{"start_line":108,"start_character":2,"end_line":108,"end_character":62},"in_reply_to":"7a8ec9b2_b517c0ec","updated":"2016-09-22 15:14:46.000000000","message":"good idea","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"24da6bdde23d230c9af9e1da934a42aa2779e61b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":138,"context_line":"| Key                    | Description                                       |"},{"line_number":139,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":140,"context_line":"| id                     | Disk ID (String)                                  |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_753b78d1","line":140,"range":{"start_line":140,"start_character":27,"end_line":140,"end_character":43},"updated":"2016-09-22 02:49:41.000000000","message":"Not sure which id expected at here. is it a virt driver specific id? Should we use the id which is consistent in the nova, for example the id of bdm?\n\nThe reason I think about this is due to we want a unified format for this API, so we should have unified value for those fields also. For any virt driver specific data should be in the field \u0027driver_private_data\u0027","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7010a62c52b5e68ff869b6ca07a715a04d886379","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":138,"context_line":"| Key                    | Description                                       |"},{"line_number":139,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":140,"context_line":"| id                     | Disk ID (String)                                  |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_f4c8f576","line":140,"range":{"start_line":140,"start_character":27,"end_line":140,"end_character":43},"in_reply_to":"5a8bc5a2_1965a844","updated":"2016-09-22 18:25:14.000000000","message":"I figured this was the mountpoint/device name/id, like vda/vdb, etc.\n\n--\n\nDriver specific data can go into driver_private_data as noted, that\u0027s what it\u0027s for. We can\u0027t say to use get_diagnostics really since to do that, it means passing a specific lower microversion, like 2.1 or something.\n\nI\u0027m fine with \u0027extra\u0027 virt-specific data, as long as it\u0027s known to just be a random blob of stuff in that one field.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"7c5b758e179e30232d938b596d9067fdc03cd5e3","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":138,"context_line":"| Key                    | Description                                       |"},{"line_number":139,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":140,"context_line":"| id                     | Disk ID (String)                                  |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_229d9159","line":140,"range":{"start_line":140,"start_character":27,"end_line":140,"end_character":43},"in_reply_to":"5a8bc5a2_6247991d","updated":"2016-09-23 13:06:22.000000000","message":"It\u0027s worth noting that device_name can change during the lifetime of an instance, btw. Although the BDM id is meaningless to the user and can\u0027t be correlated with anything visible, it can at least be correlated with its future self under all circumstances.\n\nI\u0027d say provide BDM id as a stable id, and additionally provide device name and tags.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"d52ec02335b0fd3ce790331523ab665a68b0b2bb","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":138,"context_line":"| Key                    | Description                                       |"},{"line_number":139,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":140,"context_line":"| id                     | Disk ID (String)                                  |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_6247991d","line":140,"range":{"start_line":140,"start_character":27,"end_line":140,"end_character":43},"in_reply_to":"5a8bc5a2_d2e84d13","updated":"2016-09-23 13:00:52.000000000","message":"device tag would also be a user-friendly thing to have in this list, as it is explicitly how the user wanted to refer to this disk.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9d129c76b4bfe04fe4861a3149c766c22d3cfcbb","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":138,"context_line":"| Key                    | Description                                       |"},{"line_number":139,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":140,"context_line":"| id                     | Disk ID (String)                                  |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_d2e84d13","line":140,"range":{"start_line":140,"start_character":27,"end_line":140,"end_character":43},"in_reply_to":"5a8bc5a2_f4c8f576","updated":"2016-09-23 08:53:09.000000000","message":"Please lets not call it \"id\" if it is the device name, as \"id\" is such an overloaded term. Just call it \"device_name\", and define it to match the device name value present in the block device mapping - that way people can correlate this data, with the list of disks they configured for their guest.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"629df65519a8fcb3c93b06e6b68ec0dd9d2faa12","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":138,"context_line":"| Key                    | Description                                       |"},{"line_number":139,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":140,"context_line":"| id                     | Disk ID (String)                                  |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_1965a844","line":140,"range":{"start_line":140,"start_character":27,"end_line":140,"end_character":43},"in_reply_to":"7a8ec9b2_753b78d1","updated":"2016-09-22 15:14:46.000000000","message":"I checked nova\u0027s drivers. No one of them store anything in this field. So maybe we can just remove it.\n\nAlso I think than we should avoid any driver specific data because the goal of the get_instance_diagnostic() feature is to standardize diagnostic information. For specific data you should use get_diagnostic()","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bbb6e78b8a0172723578de445e042753ee9fcdf6","unresolved":false,"context_lines":[{"line_number":249,"context_line":"Primary assignee:"},{"line_number":250,"context_line":"  Sergey Nikitin - snikitin"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Work Items"},{"line_number":253,"context_line":"----------"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* XenAPI support (Done)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_26e64515","line":252,"updated":"2016-09-21 15:31:59.000000000","message":"If you\u0027re going to list the current state of the virt drivers and the get_instance_diagnostics method, you could point out that hyper-v is going to add it in blueprint hyperv-vm-diagnostics.\n\nThe Ironic virt driver doesn\u0027t have it implemented at all and I\u0027m not aware of a blueprint to add that support for Ironic.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"629df65519a8fcb3c93b06e6b68ec0dd9d2faa12","unresolved":false,"context_lines":[{"line_number":249,"context_line":"Primary assignee:"},{"line_number":250,"context_line":"  Sergey Nikitin - snikitin"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Work Items"},{"line_number":253,"context_line":"----------"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* XenAPI support (Done)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_399fc404","line":252,"in_reply_to":"7a8ec9b2_26e64515","updated":"2016-09-22 15:14:46.000000000","message":"Done","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"24da6bdde23d230c9af9e1da934a42aa2779e61b","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* VMware support (Done)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"* VM diagnostics microversion API (In progress)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"Dependencies"},{"line_number":264,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a8ec9b2_fa95b7e3","line":261,"updated":"2016-09-22 02:49:41.000000000","message":"we need to add support for the python-novaclient","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"629df65519a8fcb3c93b06e6b68ec0dd9d2faa12","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* VMware support (Done)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"* VM diagnostics microversion API (In progress)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"Dependencies"},{"line_number":264,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_59a49056","line":261,"in_reply_to":"7a8ec9b2_fa95b7e3","updated":"2016-09-22 15:14:46.000000000","message":"Done","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7010a62c52b5e68ff869b6ca07a715a04d886379","unresolved":false,"context_lines":[{"line_number":268,"context_line":"Testing"},{"line_number":269,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"Tempest already has tests for VM diagnostics, but they are skipped because"},{"line_number":272,"context_line":"API part of this spec was removed from Nova with V3 API [3]."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Documentation Impact"},{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a8bc5a2_b47cad21","line":272,"range":{"start_line":271,"start_character":0,"end_line":272,"end_character":60},"updated":"2016-09-22 18:25:14.000000000","message":"So as part of this, we should fix that bug in tempest and add a test which uses this microversion.","commit_id":"bff829576ad952749b5185bfd16c3fe44d8cfed9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d1bbb481b5d35b650797da3d2e4aca7118bc5585","unresolved":false,"context_lines":[{"line_number":59,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":60,"context_line":"| driver                 | A string denoting the driver on which the VM is   |"},{"line_number":61,"context_line":"|                        | running. Examples may be: \u0027libvirt\u0027, \u0027xenapi\u0027,    |"},{"line_number":62,"context_line":"|                        | \u0027hyperv\u0027 and \u0027vmwareapi\u0027 (String) [Admin only -   |"},{"line_number":63,"context_line":"|                        | key will not appear if non admin]                 |"},{"line_number":64,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":65,"context_line":"| hypervisor_os          | A string denoting the hypervisor OS (String)      |"},{"line_number":66,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_54cc4935","line":63,"range":{"start_line":62,"start_character":61,"end_line":63,"end_character":62},"updated":"2016-09-22 18:34:11.000000000","message":"Good, I was just looking for this.","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1d0b347542c038eb184a428640ceff726bc24644","unresolved":false,"context_lines":[{"line_number":59,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":60,"context_line":"| driver                 | A string denoting the driver on which the VM is   |"},{"line_number":61,"context_line":"|                        | running. Examples may be: \u0027libvirt\u0027, \u0027xenapi\u0027,    |"},{"line_number":62,"context_line":"|                        | \u0027hyperv\u0027 and \u0027vmwareapi\u0027 (String) [Admin only -   |"},{"line_number":63,"context_line":"|                        | key will not appear if non admin]                 |"},{"line_number":64,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":65,"context_line":"| hypervisor_os          | A string denoting the hypervisor OS (String)      |"},{"line_number":66,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_007ded6d","line":63,"range":{"start_line":62,"start_character":61,"end_line":63,"end_character":62},"in_reply_to":"5a8bc5a2_54cc4935","updated":"2016-09-23 13:34:44.000000000","message":"Was just discussing this with danpb and jaypipes on IRC. I think we should expose hypervisor and machine type to users. Although hypervisor !\u003d driver, of course. If libvirt, the relevant thing is qemu/kvm/xen, not libvirt. This information forms the guest ABI in any case, so it\u0027s already user-visible. We should probably expose it to instances in general.","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4837ffd98e667a42a0faf96ea766d902e8a73288","unresolved":false,"context_lines":[{"line_number":134,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":135,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_94b5f1ce","line":137,"updated":"2016-09-22 18:28:23.000000000","message":"Per my comment in ps2 the disk id might be the mountpoint or something, or like the output of blkid would provide this?","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d2e3effb8b9df5fdb9622ddc751c718b1c957ccc","unresolved":false,"context_lines":[{"line_number":134,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":135,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_afd8d354","line":137,"in_reply_to":"5a8bc5a2_6f208c9c","updated":"2016-09-22 18:59:01.000000000","message":"http://lists.openstack.org/pipermail/openstack-dev/2016-September/104376.html\n\nI think we\u0027ll have to get xen and vmware implemented before we can turn on the microversion in the REST API else it\u0027s going to be a regression.","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d1bbb481b5d35b650797da3d2e4aca7118bc5585","unresolved":false,"context_lines":[{"line_number":134,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":135,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_6f208c9c","line":137,"in_reply_to":"5a8bc5a2_94b5f1ce","updated":"2016-09-22 18:34:11.000000000","message":"In the case of libvirt, it gets the iodevices for the disk details list, and looking at what it\u0027s added, it would be a disk device like this:\n\n    \u003cdisk type\u003d\u0027volume\u0027 device\u003d\u0027disk\u0027\u003e\n      \u003cdriver name\u003d\u0027qemu\u0027 type\u003d\u0027raw\u0027/\u003e\n      \u003csource pool\u003d\u0027blk-pool0\u0027 volume\u003d\u0027blk-pool0-vol0\u0027/\u003e\n      \u003ctarget dev\u003d\u0027hdk\u0027 bus\u003d\u0027ide\u0027/\u003e\n    \u003c/disk\u003e\n\nAnd it\u0027s storing this element:\n\n\u003ctarget dev\u003d\u0027hdk\u0027 bus\u003d\u0027ide\u0027/\u003e\n\nSo we could use the dev attribute as the disk id.\n\nSimilar:\n\n    \u003cdisk type\u003d\u0027volume\u0027 device\u003d\u0027disk\u0027\u003e\n      \u003cdriver name\u003d\u0027qemu\u0027 type\u003d\u0027raw\u0027/\u003e\n      \u003csource pool\u003d\u0027iscsi-pool\u0027 volume\u003d\u0027unit:0:0:1\u0027 mode\u003d\u0027host\u0027/\u003e\n      \u003cauth username\u003d\u0027myuser\u0027\u003e\n        \u003csecret type\u003d\u0027iscsi\u0027 usage\u003d\u0027libvirtiscsi\u0027/\u003e\n      \u003c/auth\u003e\n      \u003ctarget dev\u003d\u0027vdb\u0027 bus\u003d\u0027virtio\u0027/\u003e\n    \u003c/disk\u003e\n\nIn that case the disk id would be vdb.","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"2f2912f052d1f7e2ae74b39da75c6fce6a251db5","unresolved":false,"context_lines":[{"line_number":134,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":135,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_851bcf1a","line":137,"in_reply_to":"5a8bc5a2_afd8d354","updated":"2016-09-23 13:23:25.000000000","message":"Done","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f80d2cb042719b292812316437646a26a0e5d951","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Most of virt drivers support get_instance_diagnostics() method:"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* XenAPI support (Done)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* libvirt support (Done)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_4f1d9072","line":257,"updated":"2016-09-22 18:51:25.000000000","message":"BTW, it looks like xen doesn\u0027t actually fully implement the new style yet:\n\nhttps://github.com/openstack/nova/blob/64cbd7c51a5a82b965dab53eccfaecba45be9c27/nova/virt/xenapi/vm_utils.py#L1745-L1752\n\nIt doesn\u0027t populate the values for cpu/memory/disk. That\u0027s a bug.","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"2f2912f052d1f7e2ae74b39da75c6fce6a251db5","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Most of virt drivers support get_instance_diagnostics() method:"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* XenAPI support (Done)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* libvirt support (Done)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_e5d65326","line":257,"in_reply_to":"5a8bc5a2_4f1d9072","updated":"2016-09-23 13:23:25.000000000","message":"yep :(","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28d341962e11d7c817d6774f16b00a1e2798f3c8","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* libvirt support (Done)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"* VMware support (Done)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"* Hyper-V support (In progress) [3]"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_8f74f79c","line":261,"updated":"2016-09-22 18:53:10.000000000","message":"Ditto for vmware:\n\nhttps://github.com/openstack/nova/blob/64cbd7c51a5a82b965dab53eccfaecba45be9c27/nova/virt/vmwareapi/vmops.py#L1561","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4837ffd98e667a42a0faf96ea766d902e8a73288","unresolved":false,"context_lines":[{"line_number":279,"context_line":"Testing"},{"line_number":280,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Tempest already has tests for VM diagnostics, but they are skipped because"},{"line_number":283,"context_line":"API part of this spec was removed from Nova with V3 API [4]."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"Documentation Impact"},{"line_number":286,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_14d9e121","line":283,"range":{"start_line":282,"start_character":0,"end_line":283,"end_character":60},"updated":"2016-09-22 18:28:23.000000000","message":"Should probably point out that as part of this we\u0027re going to fix the test in Tempest to use the microversion introduced here and get the standardized version that has predictable response body keys.","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"2f2912f052d1f7e2ae74b39da75c6fce6a251db5","unresolved":false,"context_lines":[{"line_number":279,"context_line":"Testing"},{"line_number":280,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Tempest already has tests for VM diagnostics, but they are skipped because"},{"line_number":283,"context_line":"API part of this spec was removed from Nova with V3 API [4]."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"Documentation Impact"},{"line_number":286,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a8bc5a2_65e32306","line":283,"range":{"start_line":282,"start_character":0,"end_line":283,"end_character":60},"in_reply_to":"5a8bc5a2_14d9e121","updated":"2016-09-23 13:23:25.000000000","message":"Done","commit_id":"b285d5274bd8d0885272bea08d0fd93758d1dbc6"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f39e42c82eb5058356455269c60e3eb9b07aa360","unresolved":false,"context_lines":[{"line_number":88,"context_line":"| config_drive           | Indicates if the config drive is supported on     |"},{"line_number":89,"context_line":"|                        | the instance (Boolean)                            |"},{"line_number":90,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":91,"context_line":"| driver_private_data    | A dictionary of private data from the driver.     |"},{"line_number":92,"context_line":"|                        | This is driver specific and each driver can       |"},{"line_number":93,"context_line":"|                        | return information valuable for diagnosing VM     |"},{"line_number":94,"context_line":"|                        | issues. The raw data should versioned.            |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_ab15b1e5","line":91,"updated":"2016-09-26 13:00:36.000000000","message":"My fear is that drivers will use this field to short the proper API review process and expose data that they could expose as a new key in the table. If that happens we\u0027ll end up with the same information presented in slightly different ways depending on which driver is populating the private_data field. I guess we\u0027ll just need to be stringent in future reviews.","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"613a9159e1a60d876fdc2064773bf27732a4be18","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_6508832e","line":142,"updated":"2016-09-23 13:32:33.000000000","message":"Matthew Booth\n4:00 PM\ndevice tag would also be a user-friendly thing to have in this list, as it is explicitly how the user wanted to refer to this disk.\n\nMatthew Booth\n4:06 PM\nIt\u0027s worth noting that device_name can change during the lifetime of an instance, btw. Although the BDM id is meaningless to the user and can\u0027t be correlated with anything visible, it can at least be correlated with its future self under all circumstances.\nI\u0027d say provide BDM id as a stable id, and additionally provide device name and tags.","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4313e8039ad49e3762665596d6ea8a2cae8fdbba","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_53c0a87b","line":142,"in_reply_to":"5a8bc5a2_00108d00","updated":"2016-09-23 16:02:59.000000000","message":"Unless we can get this from the guest itself this would mean nova-compute calling back to the nova db to get the block device mapping list for the instance just to get the tags, which also aren\u0027t implemented for all virt drivers (only libvirt and hyper-v in newton, xenapi is working on it in ocata). The device tags are exposed in the metadata service and the config drive, but those are different use cases from the REST API.\n\nAnyway, just wanted to point that out - there is a slippery slope for how much instance detail we want to show from the diagnostics API compared to a simple GET on a server for details (which also doesn\u0027t show device tags).\n\nHaving said that, I don\u0027t think we expose device tags back from the REST API in any GET methods, the only way we show those is via the metadata service or config drive.","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3267620a1174735621f5af710e10c4b71aed716d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_53c6e848","line":142,"in_reply_to":"5a8bc5a2_53c0a87b","updated":"2016-09-23 16:07:33.000000000","message":"BTW, if you\u0027re going to expose block device tags, you should also expose virtual interface tags in the nics table above.","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"922d01654c268d69ebbd8f9e333a0b23711cd2a3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_8bc63566","line":142,"in_reply_to":"5a8bc5a2_53c6e848","updated":"2016-09-26 12:44:53.000000000","message":"If we have no GET methods to get block device tags I think we should include tags in our response","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"430c73e62f72e1533ddcc0ccc5e9ed9f24b4abe2","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_e029e18a","line":142,"in_reply_to":"5a8bc5a2_6508832e","updated":"2016-09-23 13:32:58.000000000","message":"what tag do you mean?","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f39e42c82eb5058356455269c60e3eb9b07aa360","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_1a6a70b3","line":142,"in_reply_to":"5a8bc5a2_8bc63566","updated":"2016-09-26 13:00:36.000000000","message":"Device tags were intended from the very beginning to be for the guest. What would be the use case for exposing them here? For the network interfaces the MAC address already identifies and interface. It\u0027s true that there isn\u0027t anything equivalent for disks... Maybe the serial number?\n\nI\u0027m not vehemently opposed to exposing device tags in the diagnostics API, but since device tags have nothing to do with diagnostics and at least for NICs the MAC is enough for identification purposes, I\u0027d like a more obvious use case for adding an extra two DB requests - because we either expose both disk tags and NIC tags or no tags at all.","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"439f3094f5270c3d94918d32877bc4c6f8a48994","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| Key                    | Description                                       |"},{"line_number":141,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":142,"context_line":"| name                   | Device name (String)                              |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":"| read_bytes             | Disk reads in bytes(Integer)                      |"},{"line_number":145,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a8bc5a2_00108d00","line":142,"in_reply_to":"5a8bc5a2_e029e18a","updated":"2016-09-23 13:37:21.000000000","message":"https://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/virt-device-role-tagging.html\n\nIt\u0027s a user-specified property of the BDM.","commit_id":"c9bcf2d1abd321c4216a81bcb198f53190fecd7d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"46355e1de26cea0954024ba96a39e2cedd2fc2ac","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Diagnostic information from all virt drivers will have the same format."},{"line_number":33,"context_line":"It will help to use this information and it will help to get rid of need to"},{"line_number":34,"context_line":"know from what virt driver you got diagnostic information."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_dde482e1","line":35,"updated":"2016-09-26 13:20:03.000000000","message":"How about we clear description for the use-case of this API at here?","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c806d508a2939f73beabff255bee7f39e64f516","unresolved":false,"context_lines":[{"line_number":59,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":60,"context_line":"| driver                 | A string denoting the driver on which the VM is   |"},{"line_number":61,"context_line":"|                        | running. Examples may be: \u0027libvirt\u0027, \u0027xenapi\u0027,    |"},{"line_number":62,"context_line":"|                        | \u0027hyperv\u0027 and \u0027vmwareapi\u0027 (String) [Admin only -   |"},{"line_number":63,"context_line":"|                        | key will not appear if non admin]                 |"},{"line_number":64,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":65,"context_line":"| hypervisor             | A string denoting the hypervisor on which the VM  |"},{"line_number":66,"context_line":"|                        | is running.hypervisor and machine type to users.  |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_fdccdebc","line":63,"range":{"start_line":62,"start_character":61,"end_line":63,"end_character":60},"updated":"2016-09-26 13:18:43.000000000","message":"The whole API is admin-only I think? so we needn\u0027t different permission for fields in this API.","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c806d508a2939f73beabff255bee7f39e64f516","unresolved":false,"context_lines":[{"line_number":65,"context_line":"| hypervisor             | A string denoting the hypervisor on which the VM  |"},{"line_number":66,"context_line":"|                        | is running.hypervisor and machine type to users.  |"},{"line_number":67,"context_line":"|                        | For example for libvirt driver may be: \u0027qemu\u0027,    |"},{"line_number":68,"context_line":"|                        | \u0027kvm\u0027 or \u0027xen\u0027. (String) [Admin only - key will   |"},{"line_number":69,"context_line":"|                        | not appear if non admin]                          |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":71,"context_line":"| hypervisor_os          | A string denoting the hypervisor OS (String)      |"},{"line_number":72,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_9da2faac","line":69,"range":{"start_line":68,"start_character":52,"end_line":69,"end_character":51},"updated":"2016-09-26 13:18:43.000000000","message":"ditto","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c806d508a2939f73beabff255bee7f39e64f516","unresolved":false,"context_lines":[{"line_number":69,"context_line":"|                        | not appear if non admin]                          |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":71,"context_line":"| hypervisor_os          | A string denoting the hypervisor OS (String)      |"},{"line_number":72,"context_line":"|                        | [Admin only - key will not appear if non admin]   |"},{"line_number":73,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":74,"context_line":"| uptime                 | The amount of time in seconds that the VM has     |"},{"line_number":75,"context_line":"|                        | been running (Integer)                            |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_fdadbe9b","line":72,"range":{"start_line":72,"start_character":27,"end_line":72,"end_character":74},"updated":"2016-09-26 13:18:43.000000000","message":"ditto","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c806d508a2939f73beabff255bee7f39e64f516","unresolved":false,"context_lines":[{"line_number":139,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":140,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":141,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":142,"context_line":"| tags                   | An array of string tags (Array)                   |"},{"line_number":143,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The disk details is an array of dictionaries per each virtual disk."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_bd3256a5","line":142,"range":{"start_line":142,"start_character":2,"end_line":142,"end_character":60},"updated":"2016-09-26 13:18:43.000000000","message":"So what use-case is for this API? I thought this API is only for admin user. Admin user use this API to diagnose the cloud. If this is the right use-case, I think we needn\u0027t this fields for this API. The device tags is defined by normal user and used by normal user.","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"460153933ae107caef328b10618ff8ac8d159ce4","unresolved":false,"context_lines":[{"line_number":147,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":148,"context_line":"| Key                    | Description                                       |"},{"line_number":149,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":150,"context_line":"| id                     | Block device mapping id. This property is used    |"},{"line_number":151,"context_line":"|                        | like stable device id. Device name can\u0027t be used  |"},{"line_number":152,"context_line":"|                        | for this purpose because the name of the device   |"},{"line_number":153,"context_line":"|                        | can be changed during VM lifetime. (String)       |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_5da87220","line":150,"range":{"start_line":150,"start_character":2,"end_line":150,"end_character":4},"updated":"2016-09-26 13:24:43.000000000","message":"If this API is admin-only, and the use-case is for admin user to diagnose the cloud. How about we use the path of disk image (like \"/opt/stack/data/nova/instances/cbc7985c-434d-4ec3-8d96-d99ad6afb618/disk\") at here.","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"740f08ebc244f666b111f8c780bae3d6c985dfbd","unresolved":false,"context_lines":[{"line_number":147,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":148,"context_line":"| Key                    | Description                                       |"},{"line_number":149,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":150,"context_line":"| id                     | Block device mapping id. This property is used    |"},{"line_number":151,"context_line":"|                        | like stable device id. Device name can\u0027t be used  |"},{"line_number":152,"context_line":"|                        | for this purpose because the name of the device   |"},{"line_number":153,"context_line":"|                        | can be changed during VM lifetime. (String)       |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_641bd373","line":150,"range":{"start_line":150,"start_character":2,"end_line":150,"end_character":4},"in_reply_to":"5a8bc5a2_0eea2eac","updated":"2016-09-26 14:19:14.000000000","message":"good point Bob. We left \u0027id\u0027 field and add field \u0027location\u0027","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"9b11d85e9cdb872ca752ac5c0752054845dd35e9","unresolved":false,"context_lines":[{"line_number":147,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":148,"context_line":"| Key                    | Description                                       |"},{"line_number":149,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":150,"context_line":"| id                     | Block device mapping id. This property is used    |"},{"line_number":151,"context_line":"|                        | like stable device id. Device name can\u0027t be used  |"},{"line_number":152,"context_line":"|                        | for this purpose because the name of the device   |"},{"line_number":153,"context_line":"|                        | can be changed during VM lifetime. (String)       |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_7371df43","line":150,"range":{"start_line":150,"start_character":2,"end_line":150,"end_character":4},"in_reply_to":"5a8bc5a2_5da87220","updated":"2016-09-26 13:46:52.000000000","message":"Most disks don\u0027t have paths, because they\u0027re on Ceph. We can mangle this, though.\n\nI hadn\u0027t originally appreciated that this api is intended exclusively for admins. In that case, I think storage location (local path or network location) is the most appropriate way to identify a disk for this audience.","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"0462ed8ad9c7241b2c1019b6bd21cd5e70ee4c6a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":148,"context_line":"| Key                    | Description                                       |"},{"line_number":149,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":150,"context_line":"| id                     | Block device mapping id. This property is used    |"},{"line_number":151,"context_line":"|                        | like stable device id. Device name can\u0027t be used  |"},{"line_number":152,"context_line":"|                        | for this purpose because the name of the device   |"},{"line_number":153,"context_line":"|                        | can be changed during VM lifetime. (String)       |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_4325b659","line":150,"range":{"start_line":150,"start_character":2,"end_line":150,"end_character":4},"in_reply_to":"5a8bc5a2_641bd373","updated":"2016-09-27 10:54:42.000000000","message":"If the audience is the cloud operator, physical location is key information here. I\u0027d still go for some driver-specific representation of physical location.\n\nThe only reason I\u0027d include BDM id here, as said before, is for correlation of disks in time series data, especially as the physical location can move. However, IIUC that\u0027s not the use case for this api call, so I don\u0027t know why we would include it.","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"d4585c96fb33e0e69a2b4b5ad7d4aa0cb0c58102","unresolved":false,"context_lines":[{"line_number":147,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":148,"context_line":"| Key                    | Description                                       |"},{"line_number":149,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":150,"context_line":"| id                     | Block device mapping id. This property is used    |"},{"line_number":151,"context_line":"|                        | like stable device id. Device name can\u0027t be used  |"},{"line_number":152,"context_line":"|                        | for this purpose because the name of the device   |"},{"line_number":153,"context_line":"|                        | can be changed during VM lifetime. (String)       |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_0eea2eac","line":150,"range":{"start_line":150,"start_character":2,"end_line":150,"end_character":4},"in_reply_to":"5a8bc5a2_7371df43","updated":"2016-09-26 13:58:55.000000000","message":"So I presume this location would be a driver-defined URI?  Would we want some kind of format for this?\nBDM ID is nice because it\u0027s not per-driver...","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c806d508a2939f73beabff255bee7f39e64f516","unresolved":false,"context_lines":[{"line_number":164,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":165,"context_line":"| errors_count           | Disk errors (Integer)                             |"},{"line_number":166,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":167,"context_line":"| tags                   | An array of string tags (Array)                   |"},{"line_number":168,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"The memory details is a dictionary."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_1de98ae6","line":167,"range":{"start_line":167,"start_character":2,"end_line":167,"end_character":59},"updated":"2016-09-26 13:18:43.000000000","message":"Same comment as line 142","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c806d508a2939f73beabff255bee7f39e64f516","unresolved":false,"context_lines":[{"line_number":224,"context_line":"Will be added new microversion which will use already merged parts of VM"},{"line_number":225,"context_line":"diagnostic BP. This microversion will change response of getting VM diagnostics"},{"line_number":226,"context_line":"info request [2]."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Security impact"},{"line_number":229,"context_line":"---------------"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_fd84de0b","line":227,"updated":"2016-09-26 13:18:43.000000000","message":"This is admin-only API I think, so we should clear about that at here.","commit_id":"0a89e4f8a7ebf93d460dbc03bd266c60e723c69a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0304451337ca9f085c9f59edd8cc33ffdb145416","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":145,"context_line":"| Key                    | Description                                       |"},{"line_number":146,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":147,"context_line":"| name                   | Device name (String)                              |"},{"line_number":148,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":149,"context_line":"| location               | Driver specific device location. Value of this    |"},{"line_number":150,"context_line":"|                        | property will be a network location of the device |"},{"line_number":151,"context_line":"|                        | if device is located on shared storage. Otherwise |"},{"line_number":152,"context_line":"|                        | it will be a local path of the device. (String)   |"},{"line_number":153,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":154,"context_line":"| read_bytes             | Disk reads in bytes (Integer)                     |"},{"line_number":155,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a98d1f4_f6d020cc","line":152,"range":{"start_line":147,"start_character":2,"end_line":152,"end_character":77},"updated":"2016-09-28 14:05:31.000000000","message":"There is discussion in the nova api meeting. Finally we can ensure which is best one without ops feedback. So we can just go with the first version without those id/name/location. http://eavesdrop.openstack.org/irclogs/%23openstack-meeting-4/%23openstack-meeting-4.2016-09-28.log.html#t2016-09-28T13:32:06","commit_id":"7b2827b3ad24b9d4ed58b75c1c9088d9567f5992"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c99be9525dd5882618bb543ffa777f7782792a78","unresolved":false,"context_lines":[{"line_number":115,"context_line":"| time                   | CPU Time in nano seconds (Integer)                |"},{"line_number":116,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The network details is an array of dictionaries per each virtual NIC."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":121,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a98d1f4_bea0d544","line":118,"updated":"2016-09-29 20:31:34.000000000","message":"FYI: https://bugs.launchpad.net/nova/+bug/1628368","commit_id":"77359f0140eeaf9ca048c000c615d6bb96485283"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"da771cc24de274395c4af5cd460075fc2f0730bf","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            \u0027num_cpus\u0027: 1,"},{"line_number":176,"context_line":"            \u0027num_vnics\u0027: 1,"},{"line_number":177,"context_line":"            \u0027num_disks\u0027: 1,"},{"line_number":178,"context_line":"            \u0027cpu_details\u0027: [{\u0027time\u0027: 1024}]"},{"line_number":179,"context_line":"            \u0027nic_details\u0027: [{\u0027rx_octets\u0027: 0,"},{"line_number":180,"context_line":"                             \u0027rx_errors\u0027: 0,"},{"line_number":181,"context_line":"                             \u0027rx_drop\u0027: 0,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a95cdbc_0bc5378d","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":43},"updated":"2016-10-05 13:28:34.000000000","message":"The details for CPU listed above also include an \u0027id\u0027 key with a value of None, as per the change on line 106.","commit_id":"77359f0140eeaf9ca048c000c615d6bb96485283"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"da771cc24de274395c4af5cd460075fc2f0730bf","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            \u0027num_vnics\u0027: 1,"},{"line_number":177,"context_line":"            \u0027num_disks\u0027: 1,"},{"line_number":178,"context_line":"            \u0027cpu_details\u0027: [{\u0027time\u0027: 1024}]"},{"line_number":179,"context_line":"            \u0027nic_details\u0027: [{\u0027rx_octets\u0027: 0,"},{"line_number":180,"context_line":"                             \u0027rx_errors\u0027: 0,"},{"line_number":181,"context_line":"                             \u0027rx_drop\u0027: 0,"},{"line_number":182,"context_line":"                             \u0027rx_packets\u0027: 0,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a95cdbc_4bbf3ffb","line":179,"range":{"start_line":179,"start_character":12,"end_line":179,"end_character":28},"updated":"2016-10-05 13:28:34.000000000","message":"Same comment as above, for \u0027mac_address\u0027.","commit_id":"77359f0140eeaf9ca048c000c615d6bb96485283"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"da771cc24de274395c4af5cd460075fc2f0730bf","unresolved":false,"context_lines":[{"line_number":209,"context_line":"REST API impact"},{"line_number":210,"context_line":"---------------"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Will be added new **admin only** microversion which will use already merged"},{"line_number":213,"context_line":"parts of VM diagnostic BP. This microversion will change response of getting"},{"line_number":214,"context_line":"VM diagnostics info request [2]."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a95cdbc_eb148bf6","line":212,"range":{"start_line":212,"start_character":0,"end_line":212,"end_character":45},"updated":"2016-10-05 13:28:34.000000000","message":"Better wording: \"A new **admin only** microversion will be added\"","commit_id":"77359f0140eeaf9ca048c000c615d6bb96485283"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Diagnostic information from all virt drivers will have the same format."},{"line_number":33,"context_line":"It will help to use this information and it will help to get rid of need to"},{"line_number":34,"context_line":"know from what virt driver you got diagnostic information. This should be"},{"line_number":35,"context_line":"considered a debug interface only, and not relied upon by programmatic tools."},{"line_number":36,"context_line":"So this information will be available only for admin users."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_4d1e3964","line":35,"range":{"start_line":35,"start_character":35,"end_line":35,"end_character":77},"updated":"2016-10-19 14:21:33.000000000","message":"I\u0027m not sure how much I agree with this. The point of making the interface standard for the various virt drivers is so you can rely on it, and it would be versioned if we change anything. I\u0027m assuming this is in here because of the note about it being an admin-only API, but I think those are different concerns. An admin might want to script around this API.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Diagnostic information from all virt drivers will have the same format."},{"line_number":33,"context_line":"It will help to use this information and it will help to get rid of need to"},{"line_number":34,"context_line":"know from what virt driver you got diagnostic information. This should be"},{"line_number":35,"context_line":"considered a debug interface only, and not relied upon by programmatic tools."},{"line_number":36,"context_line":"So this information will be available only for admin users."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_244e5e6f","line":35,"range":{"start_line":35,"start_character":35,"end_line":35,"end_character":77},"in_reply_to":"fa6399be_4d1e3964","updated":"2016-10-20 12:47:51.000000000","message":"Done","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  get_instance_diagnostics(self, instance)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"This method returns information as an object class. A diagnostics"},{"line_number":48,"context_line":"model class be instantiated and populated by the virt drivers. The class has a"},{"line_number":49,"context_line":"method to serialize to JSON so that the API interface could return a JSON"},{"line_number":50,"context_line":"format to the user. A field that is not populated by the driver will return"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_8d5e91e7","line":47,"range":{"start_line":47,"start_character":54,"end_line":47,"end_character":65},"updated":"2016-10-19 14:21:33.000000000","message":"It might be worth noting that this class is versioned and that\u0027s part of the response:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/virt/diagnostics.py#L190","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  get_instance_diagnostics(self, instance)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"This method returns information as an object class. A diagnostics"},{"line_number":48,"context_line":"model class be instantiated and populated by the virt drivers. The class has a"},{"line_number":49,"context_line":"method to serialize to JSON so that the API interface could return a JSON"},{"line_number":50,"context_line":"format to the user. A field that is not populated by the driver will return"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_64a216fe","line":47,"range":{"start_line":47,"start_character":54,"end_line":47,"end_character":65},"in_reply_to":"fa6399be_8d5e91e7","updated":"2016-10-20 12:47:51.000000000","message":"Done","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"|                        | \u0027hyperv\u0027 and \u0027vmwareapi\u0027 (String)                 |"},{"line_number":65,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":66,"context_line":"| hypervisor             | A string denoting the hypervisor on which the VM  |"},{"line_number":67,"context_line":"|                        | is running.hypervisor and machine type to users.  |"},{"line_number":68,"context_line":"|                        | For example for libvirt driver may be: \u0027qemu\u0027,    |"},{"line_number":69,"context_line":"|                        | \u0027kvm\u0027 or \u0027xen\u0027. (String)                          |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_6d169df2","line":67,"range":{"start_line":67,"start_character":38,"end_line":67,"end_character":74},"updated":"2016-10-19 14:21:33.000000000","message":"Is this a separate item / sentence?","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"|                        | \u0027hyperv\u0027 and \u0027vmwareapi\u0027 (String)                 |"},{"line_number":65,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":66,"context_line":"| hypervisor             | A string denoting the hypervisor on which the VM  |"},{"line_number":67,"context_line":"|                        | is running.hypervisor and machine type to users.  |"},{"line_number":68,"context_line":"|                        | For example for libvirt driver may be: \u0027qemu\u0027,    |"},{"line_number":69,"context_line":"|                        | \u0027kvm\u0027 or \u0027xen\u0027. (String)                          |"},{"line_number":70,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_e44626bf","line":67,"range":{"start_line":67,"start_character":38,"end_line":67,"end_character":74},"in_reply_to":"fa6399be_6d169df2","updated":"2016-10-20 12:47:51.000000000","message":"Yes, it\u0027s some strange sentence :)","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"| uptime                 | The amount of time in seconds that the VM has     |"},{"line_number":74,"context_line":"|                        | been running (Integer)                            |"},{"line_number":75,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":76,"context_line":"| num_cpus               | The number of vCPUs (Integer)                     |"},{"line_number":77,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":78,"context_line":"| num_nics               | The number of vNICS (Integer)                     |"},{"line_number":79,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":80,"context_line":"| num_disks              | The number of disks (Integer)                     |"},{"line_number":81,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":82,"context_line":"| cpu_details            | An array of details (a dictionary) per vCPU (see  |"},{"line_number":83,"context_line":"|                        | below)                                            |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_6da93d7b","line":80,"range":{"start_line":76,"start_character":2,"end_line":80,"end_character":59},"updated":"2016-10-19 14:21:33.000000000","message":"Do we really need these? You can get them from the length of the cpu_details, nic_details and disk_details values.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"| uptime                 | The amount of time in seconds that the VM has     |"},{"line_number":74,"context_line":"|                        | been running (Integer)                            |"},{"line_number":75,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":76,"context_line":"| num_cpus               | The number of vCPUs (Integer)                     |"},{"line_number":77,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":78,"context_line":"| num_nics               | The number of vNICS (Integer)                     |"},{"line_number":79,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":80,"context_line":"| num_disks              | The number of disks (Integer)                     |"},{"line_number":81,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":82,"context_line":"| cpu_details            | An array of details (a dictionary) per vCPU (see  |"},{"line_number":83,"context_line":"|                        | below)                                            |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_e403860e","line":80,"range":{"start_line":76,"start_character":2,"end_line":80,"end_character":59},"in_reply_to":"fa6399be_6da93d7b","updated":"2016-10-20 12:47:51.000000000","message":"Yes, if you use some scripts or automatic tools. But when you look at json response by your eyes it\u0027s hard to count a number of big dictionaries placed in array.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"| config_drive           | Indicates if the config drive is supported on     |"},{"line_number":94,"context_line":"|                        | the instance (Boolean)                            |"},{"line_number":95,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":96,"context_line":"| driver_private_data    | A dictionary of private data from the driver.     |"},{"line_number":97,"context_line":"|                        | This is driver specific and each driver can       |"},{"line_number":98,"context_line":"|                        | return information valuable for diagnosing VM     |"},{"line_number":99,"context_line":"|                        | issues. The raw data should versioned.            |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_ed5d4d7a","line":96,"updated":"2016-10-19 14:21:33.000000000","message":"I don\u0027t see this in:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/virt/diagnostics.py#L93\n\nSo I guess it wasn\u0027t added in the original implementation. I remember talking about a way to provide virt-specific details though, so I\u0027m not sure why it\u0027s not in there, i.e. was it just missed or did we decide way back when that we didn\u0027t think providing that was a good idea? Might be worth asking garyk.\n\nLooks like it was in the wiki though:\n\nhttps://wiki.openstack.org/wiki/Nova_VM_Diagnostics","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"| config_drive           | Indicates if the config drive is supported on     |"},{"line_number":94,"context_line":"|                        | the instance (Boolean)                            |"},{"line_number":95,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":96,"context_line":"| driver_private_data    | A dictionary of private data from the driver.     |"},{"line_number":97,"context_line":"|                        | This is driver specific and each driver can       |"},{"line_number":98,"context_line":"|                        | return information valuable for diagnosing VM     |"},{"line_number":99,"context_line":"|                        | issues. The raw data should versioned.            |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_fbc5e05b","line":96,"in_reply_to":"fa6399be_ed5d4d7a","updated":"2016-10-20 12:47:51.000000000","message":"Will ping garyk","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"| driver_private_data    | A dictionary of private data from the driver.     |"},{"line_number":97,"context_line":"|                        | This is driver specific and each driver can       |"},{"line_number":98,"context_line":"|                        | return information valuable for diagnosing VM     |"},{"line_number":99,"context_line":"|                        | issues. The raw data should versioned.            |"},{"line_number":100,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note: A number of the above details is common to all drivers. These values"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_6d1cddc1","line":99,"range":{"start_line":99,"start_character":35,"end_line":99,"end_character":65},"updated":"2016-10-19 14:21:33.000000000","message":"should *be* versioned?","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"| driver_private_data    | A dictionary of private data from the driver.     |"},{"line_number":97,"context_line":"|                        | This is driver specific and each driver can       |"},{"line_number":98,"context_line":"|                        | return information valuable for diagnosing VM     |"},{"line_number":99,"context_line":"|                        | issues. The raw data should versioned.            |"},{"line_number":100,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note: A number of the above details is common to all drivers. These values"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_1fa287ae","line":99,"range":{"start_line":99,"start_character":35,"end_line":99,"end_character":65},"in_reply_to":"fa6399be_6d1cddc1","updated":"2016-10-20 12:47:51.000000000","message":"Done","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"|                        | issues. The raw data should versioned.            |"},{"line_number":100,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note: A number of the above details is common to all drivers. These values"},{"line_number":103,"context_line":"will be filled in by the Nova compute manager prior to invoking the driver"},{"line_number":104,"context_line":"call. The ones that are virt driver specific will be filled, if possible, by"},{"line_number":105,"context_line":"the virt driver. If the virt driver is unable to provide a specific field"},{"line_number":106,"context_line":"then this field will be reported as \u0027None\u0027 in the diagnostics."},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_183ba1d2","line":104,"range":{"start_line":102,"start_character":0,"end_line":104,"end_character":5},"updated":"2016-10-19 14:21:33.000000000","message":"This doesn\u0027t make sense to me. How is the compute manager going to populate values in the diagnostics object that doesn\u0027t exist until it calls the get_instance_diagnostics method on the virt driver and get the diagnostics object back from that call? I could see the compute manager filling in common fields after it gets the virt-specific object back from the virt driver, but I\u0027m not sure how necessary that is. It\u0027s probably not even worth mentioning this implementation detail in the spec.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":99,"context_line":"|                        | issues. The raw data should versioned.            |"},{"line_number":100,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note: A number of the above details is common to all drivers. These values"},{"line_number":103,"context_line":"will be filled in by the Nova compute manager prior to invoking the driver"},{"line_number":104,"context_line":"call. The ones that are virt driver specific will be filled, if possible, by"},{"line_number":105,"context_line":"the virt driver. If the virt driver is unable to provide a specific field"},{"line_number":106,"context_line":"then this field will be reported as \u0027None\u0027 in the diagnostics."},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_d46631ec","line":104,"range":{"start_line":102,"start_character":0,"end_line":104,"end_character":5},"in_reply_to":"fa6399be_183ba1d2","updated":"2016-10-20 12:47:51.000000000","message":"agree","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"abde2a03ba9735e4599bc9ee5ba1a97f2e0b970d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":140,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":145,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_25692abf","line":142,"updated":"2016-10-12 13:35:23.000000000","message":"In an early patch set there was an id field for the disk details, and we talked about if that would be a bdm id (no) or device name (no), or a bdm device tag (wouldn\u0027t be there for all things), but it seems like we should have something to uniquely identify the disks - what if we used a BlockDeviceMapping.uuid? We\u0027ve talked about adding that column to the BDM table for a long time for various use cases, and dansmith has code up to do it, we\u0027ve just never pulled the trigger.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":140,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":145,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_671db561","line":142,"in_reply_to":"fa6399be_18c5618d","updated":"2016-10-20 12:47:51.000000000","message":"ok","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"| tx_packets             | Transmit packets (Integer)                        |"},{"line_number":140,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"The disk details is an array of dictionaries per each virtual disk."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":145,"context_line":"| Key                    | Description                                       |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_18c5618d","line":142,"in_reply_to":"fa6399be_25692abf","updated":"2016-10-19 14:21:33.000000000","message":"In talking with Matthew Booth about this in IRC I guess we\u0027re at the point that this is just an admin debug API and we don\u0027t know how the user of the API would use these values, or if they would need a unique identifier for each disk. Plus if we did use a BDM id value then we\u0027d need to get the BDMs for the instance from the database which is a roundtrip call from n-cpu to n-cond for those details.\n\nSo I guess the net is we\u0027re not going to provide a disk details id. If we needed that later, we could microversion it in.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"           {\u0027state\u0027: \u0027running\u0027,"},{"line_number":172,"context_line":"            \u0027driver\u0027: \u0027fake-driver\u0027,"},{"line_number":173,"context_line":"            \u0027hypervisor_os\u0027: \u0027fake-os\u0027,"},{"line_number":174,"context_line":"            \u0027uptime\u0027: 7,"},{"line_number":175,"context_line":"            \u0027num_cpus\u0027: 1,"},{"line_number":176,"context_line":"            \u0027num_vnics\u0027: 1,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_b808f5da","line":173,"updated":"2016-10-19 14:21:33.000000000","message":"You don\u0027t have \u0027hypervisor\u0027 in here, should it be listed with None? Or just \u0027hypervisor\u0027: \u0027fake\u0027?","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"           {\u0027state\u0027: \u0027running\u0027,"},{"line_number":172,"context_line":"            \u0027driver\u0027: \u0027fake-driver\u0027,"},{"line_number":173,"context_line":"            \u0027hypervisor_os\u0027: \u0027fake-os\u0027,"},{"line_number":174,"context_line":"            \u0027uptime\u0027: 7,"},{"line_number":175,"context_line":"            \u0027num_cpus\u0027: 1,"},{"line_number":176,"context_line":"            \u0027num_vnics\u0027: 1,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_df9c8f6c","line":173,"in_reply_to":"fa6399be_b808f5da","updated":"2016-10-20 12:47:51.000000000","message":"yep. I missed it","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            \u0027num_vnics\u0027: 1,"},{"line_number":177,"context_line":"            \u0027num_disks\u0027: 1,"},{"line_number":178,"context_line":"            \u0027cpu_details\u0027: [{\u0027id\u0027: \u00270\u0027,"},{"line_number":179,"context_line":"                            \u0027time\u0027: 1024}],"},{"line_number":180,"context_line":"            \u0027nic_details\u0027: [{\u0027mac_address\u0027: \u002700:00:00:00:00:00\u0027,"},{"line_number":181,"context_line":"                             \u0027rx_octets\u0027: 0,"},{"line_number":182,"context_line":"                             \u0027rx_errors\u0027: 0,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_381ce512","line":179,"updated":"2016-10-19 14:21:33.000000000","message":"nit: alignment","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            \u0027num_vnics\u0027: 1,"},{"line_number":177,"context_line":"            \u0027num_disks\u0027: 1,"},{"line_number":178,"context_line":"            \u0027cpu_details\u0027: [{\u0027id\u0027: \u00270\u0027,"},{"line_number":179,"context_line":"                            \u0027time\u0027: 1024}],"},{"line_number":180,"context_line":"            \u0027nic_details\u0027: [{\u0027mac_address\u0027: \u002700:00:00:00:00:00\u0027,"},{"line_number":181,"context_line":"                             \u0027rx_octets\u0027: 0,"},{"line_number":182,"context_line":"                             \u0027rx_errors\u0027: 0,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_7f9b8366","line":179,"in_reply_to":"fa6399be_381ce512","updated":"2016-10-20 12:47:51.000000000","message":"Done","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                              \u0027write_requests\u0027: 0,"},{"line_number":193,"context_line":"                              \u0027errors_count\u0027: 0}],"},{"line_number":194,"context_line":"            \u0027memory_details\u0027: {\u0027maximum\u0027: 512, \u0027used\u0027: 256},"},{"line_number":195,"context_line":"            \u0027driver_private_data\u0027: {\u0027version\u0027: 1,"},{"line_number":196,"context_line":"                                    \u0027memory\u0027: {\u0027actual\u0027: 220160,"},{"line_number":197,"context_line":"                                               \u0027rss\u0027: 200164}}"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_784addad","line":195,"range":{"start_line":195,"start_character":37,"end_line":195,"end_character":44},"updated":"2016-10-19 14:21:33.000000000","message":"If you look at how the Diagnostics object is serialized, the version is actually a root level attribute in the response:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/virt/diagnostics.py#L190\n\nSo it wouldn\u0027t be nested within driver_private_data like you have here. Maybe we only want the driver_private_data versioned? It\u0027s not really clear from the wiki on the original design.\n\nI tend to think of this like versioned objects though, and when you add/change/remove a field, you bump the version, which would also bump the version on any container objects, e.g. if I add a field to DiskDiagnostics then I bump the version on that, and also bump the version on the containing Diagnostics object.\n\nWe might want to think about making these versioned objects anyway because they are going to be called over RPC from the nova-api to the nova-compute, and we could have mixed-level computes sending different results if we start adding/changing fields - so we\u0027d want them versioned for RPC. That might also help us maintain a contract in the REST API, unless we aren\u0027t going to rely on the Diagnostics.serialize method for the response.\n\nIn other words, if the REST API is just going to get the json blob from the compute service, deserialize it and then return that in the response, it has to be versioned so the REST API can pin the version so we don\u0027t leak any changes. If the REST API is going to deserialize the Diagnostics blob and just pick attributes out of it for it\u0027s own response, then we can control that in the REST API with microversions and it\u0027s less important to version the object on the compute side.\n\nMight be worth asking Dan Smith for his opinion here.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                              \u0027write_requests\u0027: 0,"},{"line_number":193,"context_line":"                              \u0027errors_count\u0027: 0}],"},{"line_number":194,"context_line":"            \u0027memory_details\u0027: {\u0027maximum\u0027: 512, \u0027used\u0027: 256},"},{"line_number":195,"context_line":"            \u0027driver_private_data\u0027: {\u0027version\u0027: 1,"},{"line_number":196,"context_line":"                                    \u0027memory\u0027: {\u0027actual\u0027: 220160,"},{"line_number":197,"context_line":"                                               \u0027rss\u0027: 200164}}"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_7bdab04c","line":195,"range":{"start_line":195,"start_character":37,"end_line":195,"end_character":44},"in_reply_to":"fa6399be_784addad","updated":"2016-10-20 12:47:51.000000000","message":"Will ask Dan","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"45a19be94a04c7e2d578ede1e197bb8ed234164f","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                              \u0027write_requests\u0027: 0,"},{"line_number":193,"context_line":"                              \u0027errors_count\u0027: 0}],"},{"line_number":194,"context_line":"            \u0027memory_details\u0027: {\u0027maximum\u0027: 512, \u0027used\u0027: 256},"},{"line_number":195,"context_line":"            \u0027driver_private_data\u0027: {\u0027version\u0027: 1,"},{"line_number":196,"context_line":"                                    \u0027memory\u0027: {\u0027actual\u0027: 220160,"},{"line_number":197,"context_line":"                                               \u0027rss\u0027: 200164}}"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"da6895a0_d0206ffa","line":195,"range":{"start_line":195,"start_character":37,"end_line":195,"end_character":44},"in_reply_to":"fa6399be_7bdab04c","updated":"2016-10-21 10:01:44.000000000","message":"After talking with Dan in irc we decided that Diagnostics object should be versioned and we need to bump its version every time we add/change its fields.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"da0e8e992de9abfe12704c5fde5451c50eab8083","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"A new **admin only** microversion will be added which will use already merged"},{"line_number":215,"context_line":"parts of VM diagnostic BP. This microversion will change response of getting"},{"line_number":216,"context_line":"VM diagnostics info request [2]_."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Security impact"},{"line_number":219,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a95cdbc_2bf645d7","line":216,"updated":"2016-10-06 10:49:05.000000000","message":"This means that someone who for some reason wants the old \"raw\" format can use a lower microversion. I suspect some people will think of that as a useful feature. If we ever bump the minimum microversion up to the version that introduced by this spec, we might want to think about a way for people to still get the raw data?\n\nI\u0027d prefer that it all be consistent, but I suspect there could be people who want their snowflakes?","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"933c422361646508c321512f90a330a8727599a7","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"A new **admin only** microversion will be added which will use already merged"},{"line_number":215,"context_line":"parts of VM diagnostic BP. This microversion will change response of getting"},{"line_number":216,"context_line":"VM diagnostics info request [2]_."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Security impact"},{"line_number":219,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a95cdbc_dea1aa95","line":216,"in_reply_to":"1a95cdbc_2bf645d7","updated":"2016-10-10 08:04:26.000000000","message":"I guess those raw data are hypervisor specific data? So in the future there should be another proposal to add data to \u0027driver_private_data\u0027 field.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"A new **admin only** microversion will be added which will use already merged"},{"line_number":215,"context_line":"parts of VM diagnostic BP. This microversion will change response of getting"},{"line_number":216,"context_line":"VM diagnostics info request [2]_."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Security impact"},{"line_number":219,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_385a2551","line":216,"in_reply_to":"1a95cdbc_dea1aa95","updated":"2016-10-19 14:21:33.000000000","message":"People using the old format will need to move their tools to the new format. We shouldn\u0027t lose anything with the new format. If we do, it can be added in later to the new format with a microversion as Alex pointed out. Another reason that I think we have to consider versioned objects early in designing this.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"* Add VM diagnostics microversion API"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Restore existing tempest tests and add new tests"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* Add support for the python-novaclient"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_1369c2be","line":282,"updated":"2016-10-19 14:21:33.000000000","message":"Part of the Tempest coverage is going to have to be adding a json response schema to Tempest for this API so that if we leak new details out of the API in some change, Tempest would fail. This ties back in with my versioning concern above.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"* Add VM diagnostics microversion API"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Restore existing tempest tests and add new tests"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* Add support for the python-novaclient"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_b4261dcc","line":282,"in_reply_to":"fa6399be_1369c2be","updated":"2016-10-20 12:47:51.000000000","message":"Done","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e7809a7a43cd058733522686c964978d827ef1c","unresolved":false,"context_lines":[{"line_number":292,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Tempest already has tests for VM diagnostics, but they are skipped because"},{"line_number":295,"context_line":"API part of this spec was removed from Nova with V3 API [4]_. Also new tests"},{"line_number":296,"context_line":"for this microversion should be added."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_33d96684","line":296,"range":{"start_line":295,"start_character":62,"end_line":296,"end_character":38},"updated":"2016-10-19 14:21:33.000000000","message":"nit: I don\u0027t think we\u0027d have new tests, we\u0027d just fix the existing test that\u0027s currently skipped, it would only be run on a minimum microversion of this structured diagnostics response, and it would have API schema validation of the response for required fields and their types.","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"46c44c7dcb331553c074b8c2a56a2d081dd63dd6","unresolved":false,"context_lines":[{"line_number":292,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Tempest already has tests for VM diagnostics, but they are skipped because"},{"line_number":295,"context_line":"API part of this spec was removed from Nova with V3 API [4]_. Also new tests"},{"line_number":296,"context_line":"for this microversion should be added."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa6399be_d42391bb","line":296,"range":{"start_line":295,"start_character":62,"end_line":296,"end_character":38},"in_reply_to":"fa6399be_33d96684","updated":"2016-10-20 12:47:51.000000000","message":"Done","commit_id":"f92973a313a568f30aeb51cbf71be68097985a1d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e91fa3b2cdc5ccae400f7efcfbc8cb483bb6f34e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add a **admin only** API microversion that will standardise response of getting"},{"line_number":40,"context_line":"VM diagnostics info request [2]_. For that we need a virt driver method that"},{"line_number":41,"context_line":"returns a predefined structure. It was already implemented::"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_e07e0818","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":37},"updated":"2016-11-01 19:09:35.000000000","message":"This sounds confusing since we don\u0027t have microversions separate for admins and regular users. I know what you mean, but...this could use some cleanup I think.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"662dca89c1829dc4a8949905fb959f83c7b9066c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add a **admin only** API microversion that will standardise response of getting"},{"line_number":40,"context_line":"VM diagnostics info request [2]_. For that we need a virt driver method that"},{"line_number":41,"context_line":"returns a predefined structure. It was already implemented::"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_ad96b9ed","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":37},"in_reply_to":"ba5da102_81d2ab5a","updated":"2016-11-02 14:54:50.000000000","message":"Done","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a94929eccafae42f797f06540b40c37f4d52cf57","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add a **admin only** API microversion that will standardise response of getting"},{"line_number":40,"context_line":"VM diagnostics info request [2]_. For that we need a virt driver method that"},{"line_number":41,"context_line":"returns a predefined structure. It was already implemented::"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_81d2ab5a","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":37},"in_reply_to":"ba5da102_e07e0818","updated":"2016-11-01 22:39:07.000000000","message":"Yeah, a nice point. And this is just handled with policy.json. So it is nice to change here.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e91fa3b2cdc5ccae400f7efcfbc8cb483bb6f34e","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  get_instance_diagnostics(self, instance)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This method returns information as an object class. A diagnostics"},{"line_number":46,"context_line":"model class be instantiated and populated by the virt drivers. The class has a"},{"line_number":47,"context_line":"method to serialize to JSON so that the API interface could return a JSON"},{"line_number":48,"context_line":"format to the user. A field that is not populated by the driver will return"},{"line_number":49,"context_line":"a default value set in the aforementioned class. Also this class is versioned"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_60911847","line":46,"range":{"start_line":45,"start_character":52,"end_line":46,"end_character":61},"updated":"2016-11-01 19:09:35.000000000","message":"This sentence needs some work. Maybe \"model class WILL be instantiated\" ?","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"662dca89c1829dc4a8949905fb959f83c7b9066c","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  get_instance_diagnostics(self, instance)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This method returns information as an object class. A diagnostics"},{"line_number":46,"context_line":"model class be instantiated and populated by the virt drivers. The class has a"},{"line_number":47,"context_line":"method to serialize to JSON so that the API interface could return a JSON"},{"line_number":48,"context_line":"format to the user. A field that is not populated by the driver will return"},{"line_number":49,"context_line":"a default value set in the aforementioned class. Also this class is versioned"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_8d7c95b6","line":46,"range":{"start_line":45,"start_character":52,"end_line":46,"end_character":61},"in_reply_to":"ba5da102_60911847","updated":"2016-11-02 14:54:50.000000000","message":"Done","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e91fa3b2cdc5ccae400f7efcfbc8cb483bb6f34e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":55,"context_line":"| Key                    | Description                                       |"},{"line_number":56,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":57,"context_line":"| state                  | The current state of the VM. Example values       |"},{"line_number":58,"context_line":"|                        | are: \u0027pending\u0027, \u0027running\u0027, \u0027paused\u0027, \u0027shutdown\u0027,  |"},{"line_number":59,"context_line":"|                        | \u0027crashed\u0027, \u0027suspended\u0027 and \u0027building\u0027 (String)    |"},{"line_number":60,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_a0aed07e","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"updated":"2016-11-01 19:09:35.000000000","message":"This is a string and not an enum? Is this supposed to be private to a hypervisor such that VMware can return \"not running\" and kvm can return \"stopped\" ? If this is supposed to be a fixed set of values, we should have an enum.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"662dca89c1829dc4a8949905fb959f83c7b9066c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":55,"context_line":"| Key                    | Description                                       |"},{"line_number":56,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":57,"context_line":"| state                  | The current state of the VM. Example values       |"},{"line_number":58,"context_line":"|                        | are: \u0027pending\u0027, \u0027running\u0027, \u0027paused\u0027, \u0027shutdown\u0027,  |"},{"line_number":59,"context_line":"|                        | \u0027crashed\u0027, \u0027suspended\u0027 and \u0027building\u0027 (String)    |"},{"line_number":60,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_9a383ea2","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"in_reply_to":"ba5da102_41f093c9","updated":"2016-11-02 14:54:50.000000000","message":"This will be a enum. And with Matt\u0027s patch this filed will give us useful information about VM state.\n\nYes we can get if from server GET response but this will be an extra request to nova..","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a94929eccafae42f797f06540b40c37f4d52cf57","unresolved":false,"context_lines":[{"line_number":54,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":55,"context_line":"| Key                    | Description                                       |"},{"line_number":56,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":57,"context_line":"| state                  | The current state of the VM. Example values       |"},{"line_number":58,"context_line":"|                        | are: \u0027pending\u0027, \u0027running\u0027, \u0027paused\u0027, \u0027shutdown\u0027,  |"},{"line_number":59,"context_line":"|                        | \u0027crashed\u0027, \u0027suspended\u0027 and \u0027building\u0027 (String)    |"},{"line_number":60,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_41f093c9","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"in_reply_to":"ba5da102_949d8a0c","updated":"2016-11-01 22:39:07.000000000","message":"Yeah, I agree with current OS-EXT-STS:power_state is not so helpful. and the above patch is good for me anyways.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"649e8439ba1d1fe2109161d237ba3d91c2274269","unresolved":false,"context_lines":[{"line_number":54,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":55,"context_line":"| Key                    | Description                                       |"},{"line_number":56,"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\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":57,"context_line":"| state                  | The current state of the VM. Example values       |"},{"line_number":58,"context_line":"|                        | are: \u0027pending\u0027, \u0027running\u0027, \u0027paused\u0027, \u0027shutdown\u0027,  |"},{"line_number":59,"context_line":"|                        | \u0027crashed\u0027, \u0027suspended\u0027 and \u0027building\u0027 (String)    |"},{"line_number":60,"context_line":"+------------------------+---------------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_949d8a0c","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"in_reply_to":"ba5da102_a0aed07e","updated":"2016-11-01 21:52:28.000000000","message":"I had assumed this was the instance.power_state values from nova.compute.power_states. I wasn\u0027t totally sure why we need this in here though, the server GET gives us this info, but it\u0027s the enum value which isn\u0027t really useful:\n\n\"OS-EXT-STS:power_state\": 1\n\nBut we can polish that turd! https://review.openstack.org/#/c/392318/","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e91fa3b2cdc5ccae400f7efcfbc8cb483bb6f34e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"| maximum                | Amount of memory provisioned for the VM in MB     |"},{"line_number":159,"context_line":"|                        | (Integer)                                         |"},{"line_number":160,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":161,"context_line":"| used                   | Amount of memory used by the VM in MB (Integer)   |"},{"line_number":162,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Below is an example of the dictionary data returned by the fake driver::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_e041a8aa","line":161,"updated":"2016-11-01 19:09:35.000000000","message":"We might want to clarify this. Do you mean the amount of memory that the hypervisor is currently dedicating to the instance, up to the maximum? Meaning, is this supposed to be the ballooned value?\n\nOr is this supposed to be the amount of memory the instance has dirtied?\n\nOr is this supposed to be some value we might read from the guest OS via an agent connection?","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"662dca89c1829dc4a8949905fb959f83c7b9066c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"| maximum                | Amount of memory provisioned for the VM in MB     |"},{"line_number":159,"context_line":"|                        | (Integer)                                         |"},{"line_number":160,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":161,"context_line":"| used                   | Amount of memory used by the VM in MB (Integer)   |"},{"line_number":162,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Below is an example of the dictionary data returned by the fake driver::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_36810ac4","line":161,"in_reply_to":"ba5da102_e041a8aa","updated":"2016-11-02 14:54:50.000000000","message":"This is just a value returned by hypervisors. As I understand this is a memory that is currently being used by the guest operating system and its applications.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e91fa3b2cdc5ccae400f7efcfbc8cb483bb6f34e","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027memory_details\u0027: {\u0027maximum\u0027: 512, \u0027used\u0027: 256},"},{"line_number":191,"context_line":"            \u0027driver_private_data\u0027: {\u0027memory\u0027: {\u0027actual\u0027: 220160,"},{"line_number":192,"context_line":"                                               \u0027rss\u0027: 200164},"},{"line_number":193,"context_line":"            \u0027version\u0027: 1}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternatives"},{"line_number":196,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_6014b89f","line":193,"range":{"start_line":193,"start_character":12,"end_line":193,"end_character":25},"updated":"2016-11-01 19:09:35.000000000","message":"Is this discussed somewhere? Or are we just throwing v1 out there until we think of some reason to have v2 and then figure out the semantics? I feel like if we don\u0027t work out the rules before/when we land the code, people will come along and tack things on here without bumping the version, making it fairly useless.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"649e8439ba1d1fe2109161d237ba3d91c2274269","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027memory_details\u0027: {\u0027maximum\u0027: 512, \u0027used\u0027: 256},"},{"line_number":191,"context_line":"            \u0027driver_private_data\u0027: {\u0027memory\u0027: {\u0027actual\u0027: 220160,"},{"line_number":192,"context_line":"                                               \u0027rss\u0027: 200164},"},{"line_number":193,"context_line":"            \u0027version\u0027: 1}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternatives"},{"line_number":196,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_6fbd83b6","line":193,"range":{"start_line":193,"start_character":12,"end_line":193,"end_character":25},"in_reply_to":"ba5da102_6014b89f","updated":"2016-11-01 21:52:28.000000000","message":"I thought there was agreement to make the Diagnostics object a versioned object:\n\nhttps://github.com/openstack/nova/blob/e9cd4bac94d621bc3734b1adcdda13e97cc8cbd1/nova/virt/diagnostics.py#L93\n\nRight now it just has a hard-coded version field in it. What I thought we\u0027d do is make it a versioned object and then have unit tests that fail if the hash on the object changes w/o a version bump, like we have for our normal versioned objects (and versioned notification payload objects).\n\nThis leads into my previous questions about how the versioning is going to be handled in the REST API though, i.e. if we just build a response in the API from the Diagnostics object returned to us, or if we\u0027re going to serialize and return that thing itself (which I don\u0027t think we should).","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"662dca89c1829dc4a8949905fb959f83c7b9066c","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027memory_details\u0027: {\u0027maximum\u0027: 512, \u0027used\u0027: 256},"},{"line_number":191,"context_line":"            \u0027driver_private_data\u0027: {\u0027memory\u0027: {\u0027actual\u0027: 220160,"},{"line_number":192,"context_line":"                                               \u0027rss\u0027: 200164},"},{"line_number":193,"context_line":"            \u0027version\u0027: 1}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternatives"},{"line_number":196,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_1932795f","line":193,"range":{"start_line":193,"start_character":12,"end_line":193,"end_character":25},"in_reply_to":"ba5da102_6fbd83b6","updated":"2016-11-02 14:54:50.000000000","message":"I think we should build a response in the API from the Diagnostics object. In this case we can remove \u0027version\u0027 field from response and create a new API microversion each time we add/change/remove fields in\ndiagnostics object.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e91fa3b2cdc5ccae400f7efcfbc8cb483bb6f34e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"REST API impact"},{"line_number":208,"context_line":"---------------"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"A new **admin only** microversion will be added which will use already merged"},{"line_number":211,"context_line":"parts of VM diagnostic BP. This microversion will change response of getting"},{"line_number":212,"context_line":"VM diagnostics info request [2]_."},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_607bd8f5","line":210,"range":{"start_line":210,"start_character":0,"end_line":210,"end_character":33},"updated":"2016-11-01 19:09:35.000000000","message":"Same comment here.","commit_id":"810341181c82c21e9b2176887c99e0b93f9d6536"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c12aa6fc2f138d71cd4a08c3c2a63863d67a4d37","unresolved":false,"context_lines":[{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add an API microversion that will standardise response of getting"},{"line_number":40,"context_line":"VM diagnostics info request [2]_. **Only admin users** will be able to use this"},{"line_number":41,"context_line":"microversion. This microversion will use a virt driver method that returns a"},{"line_number":42,"context_line":"predefined structure. It was already implemented::"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  get_instance_diagnostics(self, instance)"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_1c6507b4","line":41,"range":{"start_line":40,"start_character":34,"end_line":41,"end_character":13},"updated":"2016-11-02 14:44:26.000000000","message":"This is all driven by policy, unless you\u0027re going to hard-code something, but I assume you aren\u0027t. I think you should just point out here that this is an admin-only API by default. If you don\u0027t plan on changing policy at all, i.e. still just use this:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/policies/server_diagnostics.py#L21\n\nThen don\u0027t even mention this.","commit_id":"a54cb086ee484ca91d4749055487c17350a62acf"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"e633c628f669fdef196f888c569743f02bac66b8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add an API microversion that will standardise response of getting"},{"line_number":40,"context_line":"VM diagnostics info request [2]_. **Only admin users** will be able to use this"},{"line_number":41,"context_line":"microversion. This microversion will use a virt driver method that returns a"},{"line_number":42,"context_line":"predefined structure. It was already implemented::"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  get_instance_diagnostics(self, instance)"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_1fda594c","line":41,"range":{"start_line":40,"start_character":34,"end_line":41,"end_character":13},"in_reply_to":"ba5da102_1c6507b4","updated":"2016-11-02 15:09:43.000000000","message":"ok","commit_id":"a54cb086ee484ca91d4749055487c17350a62acf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c12aa6fc2f138d71cd4a08c3c2a63863d67a4d37","unresolved":false,"context_lines":[{"line_number":47,"context_line":"model class will be instantiated and populated by the virt drivers. A field"},{"line_number":48,"context_line":"that is not populated by the driver will return a default value set in the"},{"line_number":49,"context_line":"aforementioned class. After getting object class from the method we will build"},{"line_number":50,"context_line":"a response in the API layer by getting fields from this object. It means that"},{"line_number":51,"context_line":"we must create a new API microversion each time we add/change/remove fields in"},{"line_number":52,"context_line":"diagnostics object."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The table below has the key and the description of the value returned:"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_9c1f5707","line":52,"range":{"start_line":50,"start_character":64,"end_line":52,"end_character":19},"updated":"2016-11-02 14:44:26.000000000","message":"This isn\u0027t necessarily true. The REST API just cares about a certain version of the Diagnostics API and can cherry pick the values out of it that it needs (it\u0027s like a client). If there is a need/desire to expose new values out of the REST API, then we\u0027d have a new microversion. But the Diagnostics object itself could iterate over time and the REST API might not change at all.","commit_id":"a54cb086ee484ca91d4749055487c17350a62acf"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"e633c628f669fdef196f888c569743f02bac66b8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"model class will be instantiated and populated by the virt drivers. A field"},{"line_number":48,"context_line":"that is not populated by the driver will return a default value set in the"},{"line_number":49,"context_line":"aforementioned class. After getting object class from the method we will build"},{"line_number":50,"context_line":"a response in the API layer by getting fields from this object. It means that"},{"line_number":51,"context_line":"we must create a new API microversion each time we add/change/remove fields in"},{"line_number":52,"context_line":"diagnostics object."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The table below has the key and the description of the value returned:"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_7f7ef519","line":52,"range":{"start_line":50,"start_character":64,"end_line":52,"end_character":19},"in_reply_to":"ba5da102_9c1f5707","updated":"2016-11-02 15:09:43.000000000","message":"I just meant then we should create a new microversion if we want to return some new field in responce","commit_id":"a54cb086ee484ca91d4749055487c17350a62acf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f0f95c7522f6217246a3e16f2794d1b1cf6666c5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"| config_drive           | Indicates if the config drive is supported on     |"},{"line_number":95,"context_line":"|                        | the instance (Boolean)                            |"},{"line_number":96,"context_line":"+------------------------+---------------------------------------------------+"},{"line_number":97,"context_line":"| driver_private_data    | A dictionary of private data from the driver.     |"},{"line_number":98,"context_line":"|                        | This is driver specific and each driver can       |"},{"line_number":99,"context_line":"|                        | return information valuable for diagnosing VM     |"},{"line_number":100,"context_line":"|                        | issues.                                           |"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_7c6a83b4","line":97,"range":{"start_line":97,"start_character":2,"end_line":97,"end_character":21},"updated":"2016-11-02 14:37:45.000000000","message":"Let\u0027s just remove this. Nothing is using it today:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/virt/diagnostics.py#L93\n\nIt\u0027s literally not implemented. Since the Diagnostics object is going to be versioned, if we need to add new fields to it we\u0027ll just bump the version on the object and handle according in the REST API. But there isn\u0027t a clear usage of this right now so it\u0027s just causing confusion.","commit_id":"a54cb086ee484ca91d4749055487c17350a62acf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c12aa6fc2f138d71cd4a08c3c2a63863d67a4d37","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"A new microversion will be added which will use already merged parts of VM"},{"line_number":215,"context_line":"diagnostic BP. This microversion will change response of getting"},{"line_number":216,"context_line":"VM diagnostics info request [2]_. **Only admin users** will be able to use this"},{"line_number":217,"context_line":"microversion."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Security impact"},{"line_number":220,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_9ce67713","line":217,"range":{"start_line":216,"start_character":34,"end_line":217,"end_character":13},"updated":"2016-11-02 14:44:26.000000000","message":"similar comment as above","commit_id":"a54cb086ee484ca91d4749055487c17350a62acf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea9a64d05d29003aaef5f43e1bcd2fd259f0d1a7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Add an API microversion that will standardise response of getting"},{"line_number":40,"context_line":"VM diagnostics info request [2]_. This microversion is **admin-only**. The"},{"line_number":41,"context_line":"access is driven by policy. The microversion will use a virt driver method that"},{"line_number":42,"context_line":"returns a predefined structure. It was already implemented::"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5da102_d0728e10","line":40,"range":{"start_line":40,"start_character":55,"end_line":40,"end_character":69},"updated":"2016-11-02 15:54:33.000000000","message":"nit: This microversion is **admin-only** by default.\n\nThe \u0027by default\u0027 part is important because it\u0027s configurable via policy.json and operators in the ML already said they change the policy rules a bit to let certain types of non-admins see diagnostic information.","commit_id":"86e6b836fa667b833cdce84d155a70fecbea6781"}]}
