)]}'
{"nova/conf/powervm.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3620f339264581c61e240c4e9951f98cba567dff","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"powervm_group \u003d cfg.OptGroup("},{"line_number":20,"context_line":"    \"powervm\","},{"line_number":21,"context_line":"    title\u003d\"PowerVM Options\","},{"line_number":22,"context_line":"    help\u003d\"\"\"PowerVM options allow cloud administrators to configure how"},{"line_number":23,"context_line":"         OpenStack will deploy against the PowerVM hypervisor."},{"line_number":24,"context_line":"         \"\"\""},{"line_number":25,"context_line":")"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"powervm_opts \u003d ["},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":36,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":37,"context_line":"                    \u0027specified.  It is strongly recommended NOT to use \u0027"},{"line_number":38,"context_line":"                    \u0027rootvg.\u0027),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_9a81c54d","line":39,"range":{"start_line":19,"start_character":0,"end_line":39,"end_character":1},"updated":"2018-03-27 07:10:46.000000000","message":"I suspect this might be conflict to https://review.openstack.org/#/c/554688/","commit_id":"47935cc78de29360635208a72d58ce6941382296"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 IBM Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_dce5e839","line":1,"range":{"start_line":1,"start_character":21,"end_line":1,"end_character":31},"updated":"2018-04-09 16:59:01.000000000","message":"Corp","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 IBM Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_0214524d","line":1,"range":{"start_line":1,"start_character":21,"end_line":1,"end_character":31},"in_reply_to":"bf659307_dce5e839","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 IBM Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_7cce1cb5","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":22},"updated":"2018-04-09 16:59:01.000000000","message":"While you\u0027re at it, strike this line","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 IBM Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_22171654","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":22},"in_reply_to":"bf659307_7cce1cb5","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"powervm_opts \u003d ["},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_fc678cb6","line":30,"range":{"start_line":30,"start_character":24,"end_line":30,"end_character":33},"updated":"2018-04-09 16:59:01.000000000","message":"For \"compatibility\", this should default to ssp","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":27,"context_line":"powervm_opts \u003d ["},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_c20dfa3e","line":30,"range":{"start_line":30,"start_character":24,"end_line":30,"end_character":33},"in_reply_to":"bf659307_fc678cb6","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c91626c41e024154c0f17b910805bbf7eb88b12c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_0681bf4a","line":31,"range":{"start_line":31,"start_character":25,"end_line":31,"end_character":36},"updated":"2018-04-10 07:36:35.000000000","message":"maybe additional info about disk driver or reference?\ndon\u0027t know any helpful info from this \u0027help\u0027","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_5ada14e9","line":31,"range":{"start_line":31,"start_character":25,"end_line":31,"end_character":36},"in_reply_to":"bf659307_0681bf4a","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_5c279865","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":55},"updated":"2018-04-09 16:59:01.000000000","message":"Don\u0027t we get this for free by virtue of specifying \u0027choices\u0027 above?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":30,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. \u0027"},{"line_number":32,"context_line":"                    \u0027Valid options are: localdisk, ssp\u0027),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_e2083e2e","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":55},"in_reply_to":"bf659307_5c279865","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c91626c41e024154c0f17b910805bbf7eb88b12c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":36,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":37,"context_line":"                    \u0027specified.  It is strongly recommended NOT to use \u0027"},{"line_number":38,"context_line":"                    \u0027rootvg.\u0027),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_46ec9728","line":37,"range":{"start_line":37,"start_character":31,"end_line":37,"end_character":33},"updated":"2018-04-10 07:36:35.000000000","message":"nit:  2 blanks","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":35,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":36,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":37,"context_line":"                    \u0027specified.  It is strongly recommended NOT to use \u0027"},{"line_number":38,"context_line":"                    \u0027rootvg.\u0027),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_e3858ed0","line":37,"range":{"start_line":37,"start_character":31,"end_line":37,"end_character":33},"in_reply_to":"bf659307_46ec9728","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"71f457c57d1df190db32e9769de34aaed4364eca","unresolved":false,"context_lines":[{"line_number":36,"context_line":"             \"\"\"),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027ssp\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. PowerVM \u0027"},{"line_number":41,"context_line":"                    \u0027provides support for localdisk and PowerVM Shared \u0027"},{"line_number":42,"context_line":"                    \u0027Storage Pool disk drivers.\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_f3b672f9","line":39,"range":{"start_line":39,"start_character":24,"end_line":39,"end_character":27},"updated":"2018-04-12 19:53:25.000000000","message":"Default to localdisk to preserve compatibility with nova-powervm","commit_id":"407a9da29343e5305ef6251951a582015e35716d"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"d92c7a81ea52db05da5bfdee9fecda47b3f649d5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"             \"\"\"),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027ssp\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. PowerVM \u0027"},{"line_number":41,"context_line":"                    \u0027provides support for localdisk and PowerVM Shared \u0027"},{"line_number":42,"context_line":"                    \u0027Storage Pool disk drivers.\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_59f17f94","line":39,"range":{"start_line":39,"start_character":24,"end_line":39,"end_character":27},"in_reply_to":"bf659307_f3b672f9","updated":"2018-04-12 21:02:53.000000000","message":"Done","commit_id":"407a9da29343e5305ef6251951a582015e35716d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. PowerVM \u0027"},{"line_number":41,"context_line":"                    \u0027provides support for localdisk and PowerVM Shared \u0027"},{"line_number":42,"context_line":"                    \u0027Storage Pool disk drivers.\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_e68f3e73","line":42,"range":{"start_line":40,"start_character":20,"end_line":42,"end_character":48},"updated":"2018-05-17 12:25:15.000000000","message":"When there are related options, like volume_group_name for disk_driver\u003dlocaldisk, we usually also have a related options section in the help, so like this:\n\n\"\"\"The disk driver to use for PowerVM disks. PowerVM\nprovides support for localdisk and PowerVM Shared\nStorage Pool disk drivers.\n\nRelated options:\n\n* volume_group_name - required when using localdisk\n\n\"\"\"","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The disk driver to use for PowerVM disks. PowerVM \u0027"},{"line_number":41,"context_line":"                    \u0027provides support for localdisk and PowerVM Shared \u0027"},{"line_number":42,"context_line":"                    \u0027Storage Pool disk drivers.\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027volume_group_name\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_b82b9f80","line":42,"range":{"start_line":40,"start_character":20,"end_line":42,"end_character":48},"in_reply_to":"5f7c97a3_e68f3e73","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":46,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":47,"context_line":"                    \u0027specified. It is strongly recommended NOT to use \u0027"},{"line_number":48,"context_line":"                    \u0027rootvg.\u0027),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_8673eab1","line":48,"range":{"start_line":47,"start_character":32,"end_line":48,"end_character":27},"updated":"2018-05-17 12:25:15.000000000","message":"Why? Expanding on this could be nice. I\u0027m assuming the mgmt controller is running on rootvg or something similar?","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":46,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":47,"context_line":"                    \u0027specified. It is strongly recommended NOT to use \u0027"},{"line_number":48,"context_line":"                    \u0027rootvg.\u0027),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_78b507cd","line":48,"range":{"start_line":47,"start_character":32,"end_line":48,"end_character":27},"in_reply_to":"5f7c97a3_8673eab1","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a509db316c1fdc4c39e4972c510ae71f511b29f8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":40,"context_line":"               help\u003d\"\"\"The disk driver to use for PowerVM disks. PowerVM"},{"line_number":41,"context_line":"                    provides support for localdisk and PowerVM Shared Storage"},{"line_number":42,"context_line":"                    Pool disk drivers."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_87d8a97f","line":40,"updated":"2018-05-18 15:40:53.000000000","message":"if switching to \"\"\" you will need to remove leading spaces on each subsequent line.\n\nE.g. showing that spaces are retained:\n\n\u003e\u003e\u003e s \u003d \"\"\"foo\n...         is ok\n... \"\"\"\n\u003e\u003e\u003e print s\nfoo\n        is ok\n\n\u003e\u003e\u003e \n\n\nLooks like that is a problem elsewhere in this file, so probably make this a followon to clean the whole file. And should probably use \"\"\" everywhere for consistency as well when we clean that up.","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"a7bf497b94b24674efe2d3b495772f4cb75e27d6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":40,"context_line":"               help\u003d\"\"\"The disk driver to use for PowerVM disks. PowerVM"},{"line_number":41,"context_line":"                    provides support for localdisk and PowerVM Shared Storage"},{"line_number":42,"context_line":"                    Pool disk drivers."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_07e6d8e9","line":40,"in_reply_to":"5f7c97a3_670c6d42","updated":"2018-05-18 16:33:34.000000000","message":"+1 for follow on cleaning up the whole file","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"df8742378b9cca9c38a9fbd6ce06ee37915aa3f2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027disk_driver\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027localdisk\u0027, \u0027ssp\u0027], ignore_case\u003dTrue,"},{"line_number":39,"context_line":"               default\u003d\u0027localdisk\u0027,"},{"line_number":40,"context_line":"               help\u003d\"\"\"The disk driver to use for PowerVM disks. PowerVM"},{"line_number":41,"context_line":"                    provides support for localdisk and PowerVM Shared Storage"},{"line_number":42,"context_line":"                    Pool disk drivers."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_670c6d42","line":40,"in_reply_to":"5f7c97a3_87d8a97f","updated":"2018-05-18 16:01:12.000000000","message":"You can see how it\u0027s rendered here:\n\nhttp://logs.openstack.org/00/549300/32/check/build-openstack-sphinx-docs/22277a5/html/configuration/config.html#powervm.disk_driver","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a509db316c1fdc4c39e4972c510ae71f511b29f8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":52,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":53,"context_line":"                    \u0027specified. It is strongly recommended NOT to use \u0027"},{"line_number":54,"context_line":"                    \u0027rootvg. rootvg is used by the management partition and \u0027"},{"line_number":55,"context_line":"                    \u0027filling it will cause failures.\u0027),"},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_a73fe585","line":54,"range":{"start_line":54,"start_character":27,"end_line":54,"end_character":35},"updated":"2018-05-18 15:40:53.000000000","message":"nit: s/. rootvg/ since that/","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"a7bf497b94b24674efe2d3b495772f4cb75e27d6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Volume Group to use for block device operations. If \u0027"},{"line_number":52,"context_line":"                    \u0027disk_driver is localdisk, then this attribute must be \u0027"},{"line_number":53,"context_line":"                    \u0027specified. It is strongly recommended NOT to use \u0027"},{"line_number":54,"context_line":"                    \u0027rootvg. rootvg is used by the management partition and \u0027"},{"line_number":55,"context_line":"                    \u0027filling it will cause failures.\u0027),"},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_672f8cf6","line":54,"range":{"start_line":54,"start_character":27,"end_line":54,"end_character":35},"in_reply_to":"5f7c97a3_a73fe585","updated":"2018-05-18 16:33:34.000000000","message":"Done","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"}],"nova/tests/unit/virt/powervm/disk/test_driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0079c8bae5e818a47cb1134a26850975c4673f28","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                    max_len\u003dpvm_const.MaxLen.VDISK_NAME)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\", autospec\u003dTrue)"},{"line_number":61,"context_line":"    def test_get_name_by_uuid(self, mock_san):"},{"line_number":62,"context_line":"        uuid \u003d \u002701234567-abcd-abcd-abcd-123412341234\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Long"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_0c6aeeb1","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":29},"updated":"2018-04-12 17:27:32.000000000","message":"get_name_by_uuid removed because only used for caching, which is not present in this patch?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3f98e44d886f1d386628213f58e1102bbd7a9fee","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                    max_len\u003dpvm_const.MaxLen.VDISK_NAME)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\", autospec\u003dTrue)"},{"line_number":61,"context_line":"    def test_get_name_by_uuid(self, mock_san):"},{"line_number":62,"context_line":"        uuid \u003d \u002701234567-abcd-abcd-abcd-123412341234\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Long"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_a7f51b59","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":29},"in_reply_to":"bf659307_0c6aeeb1","updated":"2018-04-12 18:36:35.000000000","message":"correct","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\", autospec\u003dTrue)"},{"line_number":61,"context_line":"    def test_get_name_by_uuid(self, mock_san):"},{"line_number":62,"context_line":"        uuid \u003d \u002701234567-abcd-abcd-abcd-123412341234\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Long"},{"line_number":65,"context_line":"        self.assertEqual(mock_san.return_value,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_9cbbf0e3","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":53},"updated":"2018-04-09 16:59:01.000000000","message":"Use uuidsentinel\n\n from nova.tests import uuidsentinel as uuids\n\n ...\n\n uuid \u003d uuids.any_name_you_like","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\", autospec\u003dTrue)"},{"line_number":61,"context_line":"    def test_get_name_by_uuid(self, mock_san):"},{"line_number":62,"context_line":"        uuid \u003d \u002701234567-abcd-abcd-abcd-123412341234\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Long"},{"line_number":65,"context_line":"        self.assertEqual(mock_san.return_value,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_05577c04","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":53},"in_reply_to":"bf659307_9cbbf0e3","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"}],"nova/tests/unit/virt/powervm/disk/test_localdisk.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c91626c41e024154c0f17b910805bbf7eb88b12c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2018 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_065d3fe8","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":22},"updated":"2018-04-10 07:36:35.000000000","message":"ditto to other files comments","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2018 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_c35baa84","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":22},"in_reply_to":"bf659307_065d3fe8","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        # Set up for the mocks for the disk adapter."},{"line_number":56,"context_line":"        self.mock_find_vg \u003d self.useFixture(fixtures.MockPatch("},{"line_number":57,"context_line":"            \u0027pypowervm.tasks.storage.find_vg\u0027, autospec\u003dTrue)).mock"},{"line_number":58,"context_line":"        self.vg_uuid \u003d \u0027d5065c2c-ac43-3fa6-af32-ea84a3960291\u0027"},{"line_number":59,"context_line":"        self.vg \u003d mock.Mock(spec\u003dpvm_stg.VG, uuid\u003dself.vg_uuid)"},{"line_number":60,"context_line":"        self.mock_find_vg.return_value \u003d (self.vio_wrap, self.vg)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_dc76483f","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":61},"updated":"2018-04-09 16:59:01.000000000","message":"use uuidsentinel","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        # Set up for the mocks for the disk adapter."},{"line_number":56,"context_line":"        self.mock_find_vg \u003d self.useFixture(fixtures.MockPatch("},{"line_number":57,"context_line":"            \u0027pypowervm.tasks.storage.find_vg\u0027, autospec\u003dTrue)).mock"},{"line_number":58,"context_line":"        self.vg_uuid \u003d \u0027d5065c2c-ac43-3fa6-af32-ea84a3960291\u0027"},{"line_number":59,"context_line":"        self.vg \u003d mock.Mock(spec\u003dpvm_stg.VG, uuid\u003dself.vg_uuid)"},{"line_number":60,"context_line":"        self.mock_find_vg.return_value \u003d (self.vio_wrap, self.vg)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_e53b68c5","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":61},"in_reply_to":"bf659307_dc76483f","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        \"\"\"Tests the capacity methods.\"\"\""},{"line_number":106,"context_line":"        # Set up the mock data.  This will simulate our vg wrapper"},{"line_number":107,"context_line":"        mock_vg_wrap \u003d mock.MagicMock(name\u003d\u0027vg_wrapper\u0027)"},{"line_number":108,"context_line":"        type(mock_vg_wrap).capacity \u003d mock.PropertyMock(return_value\u003d\u00275120\u0027)"},{"line_number":109,"context_line":"        type(mock_vg_wrap).available_size \u003d mock.PropertyMock("},{"line_number":110,"context_line":"            return_value\u003d\u00272048\u0027)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_3cc6644b","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":13},"updated":"2018-04-09 16:59:01.000000000","message":"wtf?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        \"\"\"Tests the capacity methods.\"\"\""},{"line_number":106,"context_line":"        # Set up the mock data.  This will simulate our vg wrapper"},{"line_number":107,"context_line":"        mock_vg_wrap \u003d mock.MagicMock(name\u003d\u0027vg_wrapper\u0027)"},{"line_number":108,"context_line":"        type(mock_vg_wrap).capacity \u003d mock.PropertyMock(return_value\u003d\u00275120\u0027)"},{"line_number":109,"context_line":"        type(mock_vg_wrap).available_size \u003d mock.PropertyMock("},{"line_number":110,"context_line":"            return_value\u003d\u00272048\u0027)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_657c38eb","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":13},"in_reply_to":"bf659307_3cc6644b","updated":"2018-04-10 21:44:22.000000000","message":"Actually needed the way this test was set up. Ended up just reworking this test to make it a little simpler.","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    def _bld_mocks_for_instance_disk(self):"},{"line_number":305,"context_line":"        inst \u003d mock.Mock()"},{"line_number":306,"context_line":"        inst.name \u003d \u0027Name Of Instance\u0027"},{"line_number":307,"context_line":"        inst.uuid \u003d \u0027d5065c2c-ac43-3fa6-af32-ea84a3960291\u0027"},{"line_number":308,"context_line":"        lpar_wrap \u003d mock.Mock()"},{"line_number":309,"context_line":"        lpar_wrap.id \u003d 2"},{"line_number":310,"context_line":"        vios1 \u003d self.vio_wrap"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_5c34784a","line":307,"range":{"start_line":307,"start_character":20,"end_line":307,"end_character":58},"updated":"2018-04-09 16:59:01.000000000","message":"uuidsentinel","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    def _bld_mocks_for_instance_disk(self):"},{"line_number":305,"context_line":"        inst \u003d mock.Mock()"},{"line_number":306,"context_line":"        inst.name \u003d \u0027Name Of Instance\u0027"},{"line_number":307,"context_line":"        inst.uuid \u003d \u0027d5065c2c-ac43-3fa6-af32-ea84a3960291\u0027"},{"line_number":308,"context_line":"        lpar_wrap \u003d mock.Mock()"},{"line_number":309,"context_line":"        lpar_wrap.id \u003d 2"},{"line_number":310,"context_line":"        vios1 \u003d self.vio_wrap"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_85b86c2a","line":307,"range":{"start_line":307,"start_character":20,"end_line":307,"end_character":58},"in_reply_to":"bf659307_5c34784a","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        lpar_wrap \u003d mock.Mock()"},{"line_number":309,"context_line":"        lpar_wrap.id \u003d 2"},{"line_number":310,"context_line":"        vios1 \u003d self.vio_wrap"},{"line_number":311,"context_line":"        vios1.scsi_mappings[0].backing_storage.name \u003d \u0027b_Name_Of__d506\u0027"},{"line_number":312,"context_line":"        return inst, lpar_wrap, vios1"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_3c39843e","line":311,"range":{"start_line":311,"start_character":66,"end_line":311,"end_character":70},"updated":"2018-04-09 16:59:01.000000000","message":"inst.uuid[:4]","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        lpar_wrap \u003d mock.Mock()"},{"line_number":309,"context_line":"        lpar_wrap.id \u003d 2"},{"line_number":310,"context_line":"        vios1 \u003d self.vio_wrap"},{"line_number":311,"context_line":"        vios1.scsi_mappings[0].backing_storage.name \u003d \u0027b_Name_Of__d506\u0027"},{"line_number":312,"context_line":"        return inst, lpar_wrap, vios1"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_a5b3304d","line":311,"range":{"start_line":311,"start_character":66,"end_line":311,"end_character":70},"in_reply_to":"bf659307_3c39843e","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f5cced0da16d3baea877e758cf993dfec017ceb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def test_init(self):"},{"line_number":78,"context_line":"        # Localdisk adapter already initialized in setUp()"},{"line_number":79,"context_line":"        self.assertEqual(\u0027rootvg\u0027, self.ld_adpt.vg_name)"},{"line_number":80,"context_line":"        self.mock_find_vg.assert_called_once_with(self.adpt, \u0027rootvg\u0027)"},{"line_number":81,"context_line":"        self.assertEqual(\u0027vios-uuid\u0027, self.ld_adpt._vios_uuid)"},{"line_number":82,"context_line":"        self.assertEqual(self.vg_uuid, self.ld_adpt.vg_uuid)"},{"line_number":83,"context_line":"        # From super __init__()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9f6a8fd7_79966397","line":80,"updated":"2018-04-27 16:08:52.000000000","message":"doesn\u0027t this leave us with a race condition since the initialization and that mock are not in this method?","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"9141aef765f9b9ec1eba7cd60234699e29fb7f00","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def test_init(self):"},{"line_number":78,"context_line":"        # Localdisk adapter already initialized in setUp()"},{"line_number":79,"context_line":"        self.assertEqual(\u0027rootvg\u0027, self.ld_adpt.vg_name)"},{"line_number":80,"context_line":"        self.mock_find_vg.assert_called_once_with(self.adpt, \u0027rootvg\u0027)"},{"line_number":81,"context_line":"        self.assertEqual(\u0027vios-uuid\u0027, self.ld_adpt._vios_uuid)"},{"line_number":82,"context_line":"        self.assertEqual(self.vg_uuid, self.ld_adpt.vg_uuid)"},{"line_number":83,"context_line":"        # From super __init__()"}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_180a7289","line":80,"in_reply_to":"9f6a8fd7_79966397","updated":"2018-05-09 20:36:10.000000000","message":"setUp gets run per test case, so there won\u0027t be a race condition here.","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f5cced0da16d3baea877e758cf993dfec017ceb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertEqual(self.adpt, self.ld_adpt._adapter)"},{"line_number":85,"context_line":"        self.assertEqual(\u0027host_uuid\u0027, self.ld_adpt._host_uuid)"},{"line_number":86,"context_line":"        self.assertEqual(\u0027mgmt_uuid\u0027, self.ld_adpt.mp_uuid)"},{"line_number":87,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027shared_storage\u0027])"},{"line_number":88,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027has_imagecache\u0027])"},{"line_number":89,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027snapshot\u0027])"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_vios_uuids(self):"},{"line_number":92,"context_line":"        self.assertEqual([\u0027vios-uuid\u0027], self.ld_adpt._vios_uuids)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9f6a8fd7_362d5aa8","line":89,"range":{"start_line":87,"start_character":0,"end_line":89,"end_character":63},"updated":"2018-04-27 16:08:52.000000000","message":"These capabilities don\u0027t come from super __init__ as the comment on line 83 indicates.\n\nI would reorder this so we test the things from super first, i.e. move line 83-86 up to line 79, and then add a \"# From LocalStorage __init__()\" to separate those from everything else.","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"9141aef765f9b9ec1eba7cd60234699e29fb7f00","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertEqual(self.adpt, self.ld_adpt._adapter)"},{"line_number":85,"context_line":"        self.assertEqual(\u0027host_uuid\u0027, self.ld_adpt._host_uuid)"},{"line_number":86,"context_line":"        self.assertEqual(\u0027mgmt_uuid\u0027, self.ld_adpt.mp_uuid)"},{"line_number":87,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027shared_storage\u0027])"},{"line_number":88,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027has_imagecache\u0027])"},{"line_number":89,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027snapshot\u0027])"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_vios_uuids(self):"},{"line_number":92,"context_line":"        self.assertEqual([\u0027vios-uuid\u0027], self.ld_adpt._vios_uuids)"}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_a923f304","line":89,"range":{"start_line":87,"start_character":0,"end_line":89,"end_character":63},"in_reply_to":"9f6a8fd7_362d5aa8","updated":"2018-05-09 20:36:10.000000000","message":"Done","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b7e0ada313cf2649029a47c705eaccff3c540e36","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def test_init(self):"},{"line_number":78,"context_line":"        # Localdisk adapter already initialized in setUp()"},{"line_number":79,"context_line":"        # From super __init__()"},{"line_number":80,"context_line":"        self.assertEqual(self.adpt, self.ld_adpt._adapter)"},{"line_number":81,"context_line":"        self.assertEqual(\u0027host_uuid\u0027, self.ld_adpt._host_uuid)"},{"line_number":82,"context_line":"        self.assertEqual(\u0027mgmt_uuid\u0027, self.ld_adpt.mp_uuid)"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f7c97a3_5b7c64b4","line":79,"range":{"start_line":79,"start_character":15,"end_line":79,"end_character":31},"updated":"2018-05-09 21:33:16.000000000","message":"This is still a bit confusing: at first I thought we meant super of *this* class (TestLocalDisk).  But I realize we actually mean LocalDisk\u0027s super, i.e. DiskAdapter.","commit_id":"5ae3ddba04998266b8cedc6ed41a467a9baa6cb7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.vg \u003d mock.Mock(spec\u003dpvm_stg.VG, uuid\u003dself.vg_uuid)"},{"line_number":59,"context_line":"        self.mock_find_vg.return_value \u003d (self.vio_wrap, self.vg)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.flags(volume_group_name\u003d\u0027rootvg\u0027, group\u003d\u0027powervm\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Mock the feed tasks."},{"line_number":64,"context_line":"        self.mock_afs \u003d self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_06ecbaf1","line":61,"range":{"start_line":61,"start_character":38,"end_line":61,"end_character":44},"updated":"2018-05-17 12:25:15.000000000","message":"YOU JUST TOLD ME NOT TO DO THIS!!!!!?!!!?!?!?!?!!???\u0026?\u0026^?T#$^?","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.vg \u003d mock.Mock(spec\u003dpvm_stg.VG, uuid\u003dself.vg_uuid)"},{"line_number":59,"context_line":"        self.mock_find_vg.return_value \u003d (self.vio_wrap, self.vg)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.flags(volume_group_name\u003d\u0027rootvg\u0027, group\u003d\u0027powervm\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Mock the feed tasks."},{"line_number":64,"context_line":"        self.mock_afs \u003d self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_3dcb0173","line":61,"range":{"start_line":61,"start_character":38,"end_line":61,"end_character":44},"in_reply_to":"5f7c97a3_06ecbaf1","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8dafe9c173e5e41dcec39429e99bf93b1df6d4bf","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                          localdisk.LocalStorage, self.adpt, \u0027host_uuid\u0027)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_vios_uuids(self):"},{"line_number":104,"context_line":"        self.assertEqual([\u0027vios-uuid\u0027], self.ld_adpt._vios_uuids)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @mock.patch(\u0027pypowervm.tasks.scsi_mapper.gen_match_func\u0027, autospec\u003dTrue)"},{"line_number":107,"context_line":"    @mock.patch(\u0027nova.virt.powervm.disk.driver.DiskAdapter._get_disk_name\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_ce97a33a","line":104,"updated":"2018-05-18 08:55:15.000000000","message":"Why this is separated from the test_init? As far as I understood this _vios_uuids is also set by the init sequence","commit_id":"fd541a19587f0730ed60d071ed5314c79c260811"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"bc0e24af36c416501080cec663a851cc4096cb2f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                          localdisk.LocalStorage, self.adpt, \u0027host_uuid\u0027)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_vios_uuids(self):"},{"line_number":104,"context_line":"        self.assertEqual([\u0027vios-uuid\u0027], self.ld_adpt._vios_uuids)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @mock.patch(\u0027pypowervm.tasks.scsi_mapper.gen_match_func\u0027, autospec\u003dTrue)"},{"line_number":107,"context_line":"    @mock.patch(\u0027nova.virt.powervm.disk.driver.DiskAdapter._get_disk_name\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_71b0af8c","line":104,"in_reply_to":"5f7c97a3_ce97a33a","updated":"2018-05-18 15:20:43.000000000","message":"test_init tests that _vios_uuids is initialized properly. This is testing that the _vios_uuids property returns the right value.","commit_id":"fd541a19587f0730ed60d071ed5314c79c260811"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8dafe9c173e5e41dcec39429e99bf93b1df6d4bf","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        mock_vios.reset_mock()"},{"line_number":266,"context_line":"        mock_find_maps.return_value \u003d []"},{"line_number":267,"context_line":"        for vdisk, vios in self.ld_adpt._get_bootdisk_iter(inst):"},{"line_number":268,"context_line":"            self.fail()"},{"line_number":269,"context_line":"        mock_vios.assert_called_once_with("},{"line_number":270,"context_line":"            self.adpt, uuid\u003d\u0027vios-uuid\u0027, xag\u003d[pvm_const.XAG.VIO_SMAP])"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_2ee177d1","line":268,"updated":"2018-05-18 08:55:15.000000000","message":"I would add a sentence to the fail explaining why the test case is failed.","commit_id":"fd541a19587f0730ed60d071ed5314c79c260811"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"bc0e24af36c416501080cec663a851cc4096cb2f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        mock_vios.reset_mock()"},{"line_number":266,"context_line":"        mock_find_maps.return_value \u003d []"},{"line_number":267,"context_line":"        for vdisk, vios in self.ld_adpt._get_bootdisk_iter(inst):"},{"line_number":268,"context_line":"            self.fail()"},{"line_number":269,"context_line":"        mock_vios.assert_called_once_with("},{"line_number":270,"context_line":"            self.adpt, uuid\u003d\u0027vios-uuid\u0027, xag\u003d[pvm_const.XAG.VIO_SMAP])"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_710c2f42","line":268,"in_reply_to":"5f7c97a3_2ee177d1","updated":"2018-05-18 15:20:43.000000000","message":"Done","commit_id":"fd541a19587f0730ed60d071ed5314c79c260811"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a509db316c1fdc4c39e4972c510ae71f511b29f8","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027has_imagecache\u0027])"},{"line_number":91,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027snapshot\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # Assert snapshot capability is true if hosting I/O on mgmt partition."},{"line_number":94,"context_line":"        self.mgmt_uuid.return_value \u003d \u0027vios-uuid\u0027"},{"line_number":95,"context_line":"        self.ld_adpt \u003d localdisk.LocalStorage(self.adpt, \u0027host_uuid\u0027)"},{"line_number":96,"context_line":"        self.assertTrue(self.ld_adpt.capabilities[\u0027snapshot\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_87f429d1","line":93,"updated":"2018-05-18 15:40:53.000000000","message":"should also assert the opposite","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4a51a93768babf7ff5abc12ad6355a5d031dcc45","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027has_imagecache\u0027])"},{"line_number":91,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027snapshot\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # Assert snapshot capability is true if hosting I/O on mgmt partition."},{"line_number":94,"context_line":"        self.mgmt_uuid.return_value \u003d \u0027vios-uuid\u0027"},{"line_number":95,"context_line":"        self.ld_adpt \u003d localdisk.LocalStorage(self.adpt, \u0027host_uuid\u0027)"},{"line_number":96,"context_line":"        self.assertTrue(self.ld_adpt.capabilities[\u0027snapshot\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_6ac0b151","line":93,"in_reply_to":"5f7c97a3_47c1312e","updated":"2018-05-18 17:13:20.000000000","message":"ah, missed that, sorry","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"a7bf497b94b24674efe2d3b495772f4cb75e27d6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027has_imagecache\u0027])"},{"line_number":91,"context_line":"        self.assertFalse(self.ld_adpt.capabilities[\u0027snapshot\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # Assert snapshot capability is true if hosting I/O on mgmt partition."},{"line_number":94,"context_line":"        self.mgmt_uuid.return_value \u003d \u0027vios-uuid\u0027"},{"line_number":95,"context_line":"        self.ld_adpt \u003d localdisk.LocalStorage(self.adpt, \u0027host_uuid\u0027)"},{"line_number":96,"context_line":"        self.assertTrue(self.ld_adpt.capabilities[\u0027snapshot\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_47c1312e","line":93,"in_reply_to":"5f7c97a3_87f429d1","updated":"2018-05-18 16:33:34.000000000","message":"L91","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a509db316c1fdc4c39e4972c510ae71f511b29f8","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        # Not found, no storage of that name."},{"line_number":265,"context_line":"        mock_vios.reset_mock()"},{"line_number":266,"context_line":"        mock_find_maps.return_value \u003d []"},{"line_number":267,"context_line":"        # No storage elements should be found, fail if they are."},{"line_number":268,"context_line":"        for vdisk, vios in self.ld_adpt._get_bootdisk_iter(inst):"},{"line_number":269,"context_line":"            self.fail()"},{"line_number":270,"context_line":"        mock_vios.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_47ecd1f2","line":267,"updated":"2018-05-18 15:40:53.000000000","message":"move this into the fail()... i.e.:\n\n   self.fail(\u0027Should not have found any storage elements.\u0027)","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"a7bf497b94b24674efe2d3b495772f4cb75e27d6","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        # Not found, no storage of that name."},{"line_number":265,"context_line":"        mock_vios.reset_mock()"},{"line_number":266,"context_line":"        mock_find_maps.return_value \u003d []"},{"line_number":267,"context_line":"        # No storage elements should be found, fail if they are."},{"line_number":268,"context_line":"        for vdisk, vios in self.ld_adpt._get_bootdisk_iter(inst):"},{"line_number":269,"context_line":"            self.fail()"},{"line_number":270,"context_line":"        mock_vios.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_c7f8e07d","line":267,"in_reply_to":"5f7c97a3_47ecd1f2","updated":"2018-05-18 16:33:34.000000000","message":"Done","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"}],"nova/virt/powervm/disk/driver.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c91626c41e024154c0f17b910805bbf7eb88b12c","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        :param disk_type: One of the DiskType enum values."},{"line_number":232,"context_line":"        :param uuid: The uuid to use for the name."},{"line_number":233,"context_line":"        :param short: If True the generated name will be limited to 15"},{"line_number":234,"context_line":"                      characters. If False it will be limited by the API."},{"line_number":235,"context_line":"        :return: A name based off of disk_type and uuid."},{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":"        prefix \u003d \u0027%s_\u0027 % (disk_type[0] if short else disk_type)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_460817d8","line":234,"range":{"start_line":234,"start_character":62,"end_line":234,"end_character":73},"updated":"2018-04-10 07:36:35.000000000","message":"from code seems either VDISK_NAME or FILENAME_DEFAULT\nso not sure where\u0027s API ?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        :param disk_type: One of the DiskType enum values."},{"line_number":232,"context_line":"        :param uuid: The uuid to use for the name."},{"line_number":233,"context_line":"        :param short: If True the generated name will be limited to 15"},{"line_number":234,"context_line":"                      characters. If False it will be limited by the API."},{"line_number":235,"context_line":"        :return: A name based off of disk_type and uuid."},{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":"        prefix \u003d \u0027%s_\u0027 % (disk_type[0] if short else disk_type)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_e3ecae90","line":234,"range":{"start_line":234,"start_character":62,"end_line":234,"end_character":73},"in_reply_to":"bf659307_460817d8","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"}],"nova/virt/powervm/disk/localdisk.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    capabilities \u003d {"},{"line_number":41,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":42,"context_line":"        \u0027has_imagecache\u0027: True,"},{"line_number":43,"context_line":"        # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_515ee145","line":42,"updated":"2018-04-05 15:32:09.000000000","message":"say False here until we add the image caching logic (manage_image_cache, etc.)","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    capabilities \u003d {"},{"line_number":41,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":42,"context_line":"        \u0027has_imagecache\u0027: True,"},{"line_number":43,"context_line":"        # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_9b81f24d","line":42,"in_reply_to":"bf659307_515ee145","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        vios_w, vg_w \u003d tsk_stg.find_vg(adapter, self.vg_name)"},{"line_number":56,"context_line":"        self._vios_uuid \u003d vios_w.uuid"},{"line_number":57,"context_line":"        self.vg_uuid \u003d vg_w.uuid"},{"line_number":58,"context_line":"        self.cache_lock \u003d lockutils.ReaderWriterLock()"},{"line_number":59,"context_line":"        # Set the \u0027snapshot\u0027 capability dynamically. If we\u0027re hosting I/O on"},{"line_number":60,"context_line":"        # the management partition, we can snapshot. If we\u0027re hosting I/O on"},{"line_number":61,"context_line":"        # traditional VIOS, we are limited by the fact that a VSCSI device"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_b4cf2baf","line":58,"updated":"2018-04-05 15:32:09.000000000","message":"seems like we have some caching logic, though...","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        vios_w, vg_w \u003d tsk_stg.find_vg(adapter, self.vg_name)"},{"line_number":56,"context_line":"        self._vios_uuid \u003d vios_w.uuid"},{"line_number":57,"context_line":"        self.vg_uuid \u003d vg_w.uuid"},{"line_number":58,"context_line":"        self.cache_lock \u003d lockutils.ReaderWriterLock()"},{"line_number":59,"context_line":"        # Set the \u0027snapshot\u0027 capability dynamically. If we\u0027re hosting I/O on"},{"line_number":60,"context_line":"        # the management partition, we can snapshot. If we\u0027re hosting I/O on"},{"line_number":61,"context_line":"        # traditional VIOS, we are limited by the fact that a VSCSI device"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_5b3d65db","line":58,"in_reply_to":"bf659307_b4cf2baf","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        \"\"\"Detaches the storage adapters from the image disk."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        :param instance: Instance to disconnect the image for."},{"line_number":117,"context_line":"        :param disk_type: The list of disk types to remove or None which means"},{"line_number":118,"context_line":"                          to remove all disks from the VM."},{"line_number":119,"context_line":"        :return: A list of all the backing storage elements that were"},{"line_number":120,"context_line":"                 disconnected from the I/O Server and VM."}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_546b2f1e","line":117,"updated":"2018-04-05 15:32:09.000000000","message":"no such arg","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        \"\"\"Detaches the storage adapters from the image disk."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        :param instance: Instance to disconnect the image for."},{"line_number":117,"context_line":"        :param disk_type: The list of disk types to remove or None which means"},{"line_number":118,"context_line":"                          to remove all disks from the VM."},{"line_number":119,"context_line":"        :return: A list of all the backing storage elements that were"},{"line_number":120,"context_line":"                 disconnected from the I/O Server and VM."}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_3bdb067e","line":117,"in_reply_to":"bf659307_546b2f1e","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        vol_name \u003d self._get_disk_name("},{"line_number":182,"context_line":"            disk_dvr.DiskType.BOOT, instance, short\u003dTrue)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        with self.cache_lock.read_lock():"},{"line_number":185,"context_line":"            img_udid \u003d self._get_or_upload_image(context, image_meta)"},{"line_number":186,"context_line":"            # Transfer the image"},{"line_number":187,"context_line":"            return tsk_stg.crt_copy_vdisk("}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_a72b7f2e","line":184,"updated":"2018-04-05 15:32:09.000000000","message":"don\u0027t think we should need this lock if we\u0027re not caching.","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        vol_name \u003d self._get_disk_name("},{"line_number":182,"context_line":"            disk_dvr.DiskType.BOOT, instance, short\u003dTrue)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        with self.cache_lock.read_lock():"},{"line_number":185,"context_line":"            img_udid \u003d self._get_or_upload_image(context, image_meta)"},{"line_number":186,"context_line":"            # Transfer the image"},{"line_number":187,"context_line":"            return tsk_stg.crt_copy_vdisk("}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_fb0c7943","line":184,"in_reply_to":"bf659307_a72b7f2e","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        with self.cache_lock.read_lock():"},{"line_number":185,"context_line":"            img_udid \u003d self._get_or_upload_image(context, image_meta)"},{"line_number":186,"context_line":"            # Transfer the image"},{"line_number":187,"context_line":"            return tsk_stg.crt_copy_vdisk("},{"line_number":188,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid, img_udid,"},{"line_number":189,"context_line":"                image_meta.size, vol_name, d_size\u003ddisk_bytes)"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_87fe7b69","line":187,"updated":"2018-04-05 15:32:09.000000000","message":"copying makes sense with a cache, since you don\u0027t want to alter what was cached, but without caching I don\u0027t think copying is necessary. Or am I misunderstanding?","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        with self.cache_lock.read_lock():"},{"line_number":185,"context_line":"            img_udid \u003d self._get_or_upload_image(context, image_meta)"},{"line_number":186,"context_line":"            # Transfer the image"},{"line_number":187,"context_line":"            return tsk_stg.crt_copy_vdisk("},{"line_number":188,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid, img_udid,"},{"line_number":189,"context_line":"                image_meta.size, vol_name, d_size\u003ddisk_bytes)"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_c6b99c15","line":187,"in_reply_to":"bf659307_87fe7b69","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid, img_udid,"},{"line_number":189,"context_line":"                image_meta.size, vol_name, d_size\u003ddisk_bytes)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _get_or_upload_image(self, context, image_meta):"},{"line_number":192,"context_line":"        \"\"\"Return a cached image udid or a new image udid."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        Attempt to find a cached copy of the image. If there is no cached copy"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_076cab9a","line":191,"updated":"2018-04-05 15:32:09.000000000","message":"call this _upload_image for now and then rename it when we add the caching?","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid, img_udid,"},{"line_number":189,"context_line":"                image_meta.size, vol_name, d_size\u003ddisk_bytes)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _get_or_upload_image(self, context, image_meta):"},{"line_number":192,"context_line":"        \"\"\"Return a cached image udid or a new image udid."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        Attempt to find a cached copy of the image. If there is no cached copy"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_1b084d2b","line":191,"in_reply_to":"bf659307_076cab9a","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                image_meta.size, vol_name, d_size\u003ddisk_bytes)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _get_or_upload_image(self, context, image_meta):"},{"line_number":192,"context_line":"        \"\"\"Return a cached image udid or a new image udid."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        Attempt to find a cached copy of the image. If there is no cached copy"},{"line_number":195,"context_line":"        of the image, create one."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        :param context: Nova context used to retrieve image from glance."},{"line_number":198,"context_line":"        :param nova.objects.ImageMeta image_meta:"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_9458e7fa","line":195,"range":{"start_line":192,"start_character":0,"end_line":195,"end_character":33},"updated":"2018-04-05 15:32:09.000000000","message":"more talk of caching","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c99612a6c038092decc1e5bc4d04738db731b5eb","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                image_meta.size, vol_name, d_size\u003ddisk_bytes)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _get_or_upload_image(self, context, image_meta):"},{"line_number":192,"context_line":"        \"\"\"Return a cached image udid or a new image udid."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        Attempt to find a cached copy of the image. If there is no cached copy"},{"line_number":195,"context_line":"        of the image, create one."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        :param context: Nova context used to retrieve image from glance."},{"line_number":198,"context_line":"        :param nova.objects.ImageMeta image_meta:"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_811cee77","line":195,"range":{"start_line":192,"start_character":0,"end_line":195,"end_character":33},"in_reply_to":"bf659307_9458e7fa","updated":"2018-04-09 14:52:17.000000000","message":"Done","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class LocalStorage(disk_dvr.DiskAdapter):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    capabilities \u003d {"},{"line_number":41,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":42,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":43,"context_line":"        # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_bcc91426","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":16},"updated":"2018-04-09 16:59:01.000000000","message":"Didn\u0027t we want to make this an instance var, like we did for the compute driver?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class LocalStorage(disk_dvr.DiskAdapter):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    capabilities \u003d {"},{"line_number":41,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":42,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":43,"context_line":"        # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_85806c8d","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":16},"in_reply_to":"bf659307_bcc91426","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":42,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":43,"context_line":"        # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, adapter, host_uuid):"},{"line_number":47,"context_line":"        super(LocalStorage, self).__init__(adapter, host_uuid)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_1c6cc034","line":44,"updated":"2018-04-09 16:59:01.000000000","message":"indent","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":42,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":43,"context_line":"        # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, adapter, host_uuid):"},{"line_number":47,"context_line":"        super(LocalStorage, self).__init__(adapter, host_uuid)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_a57b30bc","line":44,"in_reply_to":"bf659307_1c6cc034","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c91626c41e024154c0f17b910805bbf7eb88b12c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        super(LocalStorage, self).__init__(adapter, host_uuid)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Query to get the Volume Group UUID"},{"line_number":50,"context_line":"        if not CONF.powervm.volume_group_name:"},{"line_number":51,"context_line":"            raise exception.OptRequiredIfOtherOptValue("},{"line_number":52,"context_line":"                if_opt\u003d\u0027disk_driver\u0027, if_value\u003d\u0027localdisk\u0027,"},{"line_number":53,"context_line":"                then_opt\u003d\u0027volume_group_name\u0027)"},{"line_number":54,"context_line":"        self.vg_name \u003d CONF.powervm.volume_group_name"},{"line_number":55,"context_line":"        vios_w, vg_w \u003d tsk_stg.find_vg(adapter, self.vg_name)"},{"line_number":56,"context_line":"        self._vios_uuid \u003d vios_w.uuid"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_e6dccb47","line":53,"range":{"start_line":50,"start_character":8,"end_line":53,"end_character":45},"updated":"2018-04-10 07:36:35.000000000","message":"I don\u0027t see a check on disk_driver.value \u003d localdisk here\nseems not consistent to conf.py","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        super(LocalStorage, self).__init__(adapter, host_uuid)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Query to get the Volume Group UUID"},{"line_number":50,"context_line":"        if not CONF.powervm.volume_group_name:"},{"line_number":51,"context_line":"            raise exception.OptRequiredIfOtherOptValue("},{"line_number":52,"context_line":"                if_opt\u003d\u0027disk_driver\u0027, if_value\u003d\u0027localdisk\u0027,"},{"line_number":53,"context_line":"                then_opt\u003d\u0027volume_group_name\u0027)"},{"line_number":54,"context_line":"        self.vg_name \u003d CONF.powervm.volume_group_name"},{"line_number":55,"context_line":"        vios_w, vg_w \u003d tsk_stg.find_vg(adapter, self.vg_name)"},{"line_number":56,"context_line":"        self._vios_uuid \u003d vios_w.uuid"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_badfb038","line":53,"range":{"start_line":50,"start_character":8,"end_line":53,"end_character":45},"in_reply_to":"bf659307_e6dccb47","updated":"2018-04-10 21:44:22.000000000","message":"The disk driver that gets initialized is based on the disk_driver CONF value. The only time we ever will reach this is if disk_driver \u003d localdisk.\n\nhttps://review.openstack.org/#/c/549300/18/nova/virt/powervm/driver.py@102","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        lpar_uuid \u003d vm.get_pvm_uuid(instance)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        stg_ftsk \u003d tsk_par.build_active_vio_feed_task("},{"line_number":122,"context_line":"            self._adapter, name\u003d\u0027localdisk\u0027, xag\u003d[pvm_const.XAG.VIO_SMAP])"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # Build the match function"},{"line_number":125,"context_line":"        match_func \u003d tsk_map.gen_match_func(pvm_stg.VDisk)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_6f0bc023","line":122,"range":{"start_line":121,"start_character":9,"end_line":122,"end_character":74},"updated":"2018-04-09 16:59:01.000000000","message":"This is weird.  Why isn\u0027t this ftsk using the (one) VIOS from L55?  For that matter, given what we\u0027re doing on L137, the ftsk isn\u0027t doing much good anyway.  Maybe nix it altogether?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        lpar_uuid \u003d vm.get_pvm_uuid(instance)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        stg_ftsk \u003d tsk_par.build_active_vio_feed_task("},{"line_number":122,"context_line":"            self._adapter, name\u003d\u0027localdisk\u0027, xag\u003d[pvm_const.XAG.VIO_SMAP])"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # Build the match function"},{"line_number":125,"context_line":"        match_func \u003d tsk_map.gen_match_func(pvm_stg.VDisk)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_bf59e235","line":122,"range":{"start_line":121,"start_character":9,"end_line":122,"end_character":74},"in_reply_to":"bf659307_6f0bc023","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return self._upload_image(context, image_meta)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        # TODO(IBM): Copy vdisk when implementing image cache."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def _upload_image(self, context, image_meta):"},{"line_number":179,"context_line":"        \"\"\"Upload a new image."}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_af9d58bc","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":62},"updated":"2018-04-09 16:59:01.000000000","message":"Does this mean image caching is *not* supported?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        return self._upload_image(context, image_meta)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        # TODO(IBM): Copy vdisk when implementing image cache."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def _upload_image(self, context, image_meta):"},{"line_number":179,"context_line":"        \"\"\"Upload a new image."}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_c573c47f","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":62},"in_reply_to":"bf659307_af9d58bc","updated":"2018-04-10 21:44:22.000000000","message":"Adding image cache in follow on. The capability is set to false for now.","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            img_name \u003d self.get_name_by_uuid(disk_dvr.DiskType.IMAGE,"},{"line_number":188,"context_line":"                                               image_meta.id, short\u003dTrue)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            # TODO(esberglu) Add check for cached image when adding imagecache."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"            return tsk_stg.upload_new_vdisk("},{"line_number":193,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_0faec4e6","line":190,"range":{"start_line":190,"start_character":11,"end_line":190,"end_character":79},"updated":"2018-04-09 16:59:01.000000000","message":"ditto","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            img_name \u003d self.get_name_by_uuid(disk_dvr.DiskType.IMAGE,"},{"line_number":188,"context_line":"                                               image_meta.id, short\u003dTrue)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            # TODO(esberglu) Add check for cached image when adding imagecache."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"            return tsk_stg.upload_new_vdisk("},{"line_number":193,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_856dcc99","line":190,"range":{"start_line":190,"start_character":11,"end_line":190,"end_character":79},"in_reply_to":"bf659307_0faec4e6","updated":"2018-04-10 21:44:22.000000000","message":"ditto","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"2a71de0c693294cc343ee01dea69f0775b6556a9","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        :param context: Nova context used to retrieve image from glance."},{"line_number":169,"context_line":"        :param image_meta: The metadata of the image of the instance."},{"line_number":170,"context_line":"        :return: The name of the virtual disk containing the image."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        with lockutils.lock(image_meta.id):"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_eb1ea05d","line":170,"range":{"start_line":170,"start_character":17,"end_line":170,"end_character":66},"updated":"2018-04-11 18:53:42.000000000","message":"Returns the vdisk, not just the name","commit_id":"1afe4faefa79d43cf0690901f8bed558c624f22c"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"78792ab08b34f6b7b915097399274a24bfd67979","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        :param context: Nova context used to retrieve image from glance."},{"line_number":169,"context_line":"        :param image_meta: The metadata of the image of the instance."},{"line_number":170,"context_line":"        :return: The name of the virtual disk containing the image."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        with lockutils.lock(image_meta.id):"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_26de0d11","line":170,"range":{"start_line":170,"start_character":17,"end_line":170,"end_character":66},"in_reply_to":"bf659307_eb1ea05d","updated":"2018-04-11 19:55:16.000000000","message":"Done","commit_id":"1afe4faefa79d43cf0690901f8bed558c624f22c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0079c8bae5e818a47cb1134a26850975c4673f28","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.capabilities \u003d {"},{"line_number":43,"context_line":"            \u0027shared_storage\u0027: False,"},{"line_number":44,"context_line":"            \u0027has_imagecache\u0027: False,"},{"line_number":45,"context_line":"            # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."},{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Query to get the Volume Group UUID"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_91061586","line":45,"range":{"start_line":45,"start_character":53,"end_line":45,"end_character":77},"updated":"2018-04-12 17:27:32.000000000","message":"\"below\"","commit_id":"cb3e96abd1e6117bef5803548c8d4f512b98db85"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3f98e44d886f1d386628213f58e1102bbd7a9fee","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.capabilities \u003d {"},{"line_number":43,"context_line":"            \u0027shared_storage\u0027: False,"},{"line_number":44,"context_line":"            \u0027has_imagecache\u0027: False,"},{"line_number":45,"context_line":"            # NOTE(efried): \u0027snapshot\u0027 capability set dynamically in __init__."},{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Query to get the Volume Group UUID"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_47b43f82","line":45,"range":{"start_line":45,"start_character":53,"end_line":45,"end_character":77},"in_reply_to":"bf659307_91061586","updated":"2018-04-12 18:36:35.000000000","message":"Done","commit_id":"cb3e96abd1e6117bef5803548c8d4f512b98db85"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f5cced0da16d3baea877e758cf993dfec017ceb","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        return self._upload_image(context, instance, image_meta)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # TODO(IBM): Copy vdisk when implementing image cache."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _upload_image(self, context, instance, image_meta):"},{"line_number":166,"context_line":"        \"\"\"Upload a new image."}],"source_content_type":"text/x-python","patch_set":25,"id":"9f6a8fd7_0c2063b0","line":163,"updated":"2018-04-27 16:08:52.000000000","message":"TODO(esberglu)","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"9141aef765f9b9ec1eba7cd60234699e29fb7f00","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        return self._upload_image(context, instance, image_meta)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # TODO(IBM): Copy vdisk when implementing image cache."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _upload_image(self, context, instance, image_meta):"},{"line_number":166,"context_line":"        \"\"\"Upload a new image."}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_69ef1bb0","line":163,"in_reply_to":"9f6a8fd7_0c2063b0","updated":"2018-05-09 20:36:10.000000000","message":"Done","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f5cced0da16d3baea877e758cf993dfec017ceb","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            img_name \u003d self._get_disk_name(disk_dvr.DiskType.BOOT, instance,"},{"line_number":175,"context_line":"                                           short\u003dTrue)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            # TODO(IBM) Add check for cached image when adding imagecache."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            return tsk_stg.upload_new_vdisk("},{"line_number":180,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9f6a8fd7_40f13f01","line":177,"updated":"2018-04-27 16:08:52.000000000","message":"TODO(esberglu)","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"9141aef765f9b9ec1eba7cd60234699e29fb7f00","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            img_name \u003d self._get_disk_name(disk_dvr.DiskType.BOOT, instance,"},{"line_number":175,"context_line":"                                           short\u003dTrue)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            # TODO(IBM) Add check for cached image when adding imagecache."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            return tsk_stg.upload_new_vdisk("},{"line_number":180,"context_line":"                self._adapter, self._vios_uuid, self.vg_uuid,"}],"source_content_type":"text/x-python","patch_set":25,"id":"5f7c97a3_092c6700","line":177,"in_reply_to":"9f6a8fd7_40f13f01","updated":"2018-05-09 20:36:10.000000000","message":"Done","commit_id":"6337ad489102cde132dbc6bbe41702e652b30d79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        vios_w, vg_w \u003d tsk_stg.find_vg(adapter, self.vg_name)"},{"line_number":55,"context_line":"        self._vios_uuid \u003d vios_w.uuid"},{"line_number":56,"context_line":"        self.vg_uuid \u003d vg_w.uuid"},{"line_number":57,"context_line":"        # Set the \u0027snapshot\u0027 capability dynamically. If we\u0027re hosting I/O on"},{"line_number":58,"context_line":"        # the management partition, we can snapshot. If we\u0027re hosting I/O on"},{"line_number":59,"context_line":"        # traditional VIOS, we are limited by the fact that a VSCSI device"},{"line_number":60,"context_line":"        # can\u0027t be mapped to two partitions (the VIOS and the management) at"},{"line_number":61,"context_line":"        # once."},{"line_number":62,"context_line":"        self.capabilities[\u0027snapshot\u0027] \u003d self.mp_uuid \u003d\u003d self._vios_uuid"},{"line_number":63,"context_line":"        LOG.info(\"Local Storage driver initialized: volume group: \u0027%s\u0027\","},{"line_number":64,"context_line":"                 self.vg_name)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_e652dede","line":61,"range":{"start_line":57,"start_character":8,"end_line":61,"end_character":15},"updated":"2018-05-17 12:25:15.000000000","message":"See my comment in the driver module - we should document this in the driver docs:\n\nhttps://docs.openstack.org/nova/latest/admin/configuration/hypervisor-powervm.html","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        vios_w, vg_w \u003d tsk_stg.find_vg(adapter, self.vg_name)"},{"line_number":55,"context_line":"        self._vios_uuid \u003d vios_w.uuid"},{"line_number":56,"context_line":"        self.vg_uuid \u003d vg_w.uuid"},{"line_number":57,"context_line":"        # Set the \u0027snapshot\u0027 capability dynamically. If we\u0027re hosting I/O on"},{"line_number":58,"context_line":"        # the management partition, we can snapshot. If we\u0027re hosting I/O on"},{"line_number":59,"context_line":"        # traditional VIOS, we are limited by the fact that a VSCSI device"},{"line_number":60,"context_line":"        # can\u0027t be mapped to two partitions (the VIOS and the management) at"},{"line_number":61,"context_line":"        # once."},{"line_number":62,"context_line":"        self.capabilities[\u0027snapshot\u0027] \u003d self.mp_uuid \u003d\u003d self._vios_uuid"},{"line_number":63,"context_line":"        LOG.info(\"Local Storage driver initialized: volume group: \u0027%s\u0027\","},{"line_number":64,"context_line":"                 self.vg_name)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_1802d33f","line":61,"range":{"start_line":57,"start_character":8,"end_line":61,"end_character":15},"in_reply_to":"5f7c97a3_e652dede","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        # traditional VIOS, we are limited by the fact that a VSCSI device"},{"line_number":60,"context_line":"        # can\u0027t be mapped to two partitions (the VIOS and the management) at"},{"line_number":61,"context_line":"        # once."},{"line_number":62,"context_line":"        self.capabilities[\u0027snapshot\u0027] \u003d self.mp_uuid \u003d\u003d self._vios_uuid"},{"line_number":63,"context_line":"        LOG.info(\"Local Storage driver initialized: volume group: \u0027%s\u0027\","},{"line_number":64,"context_line":"                 self.vg_name)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_86b9aaea","line":62,"updated":"2018-05-17 12:25:15.000000000","message":"It\u0027s hard to tell but I don\u0027t see an obvious test case where init sets the snapshot capability to True.","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        # traditional VIOS, we are limited by the fact that a VSCSI device"},{"line_number":60,"context_line":"        # can\u0027t be mapped to two partitions (the VIOS and the management) at"},{"line_number":61,"context_line":"        # once."},{"line_number":62,"context_line":"        self.capabilities[\u0027snapshot\u0027] \u003d self.mp_uuid \u003d\u003d self._vios_uuid"},{"line_number":63,"context_line":"        LOG.info(\"Local Storage driver initialized: volume group: \u0027%s\u0027\","},{"line_number":64,"context_line":"                 self.vg_name)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_980343bf","line":62,"in_reply_to":"5f7c97a3_86b9aaea","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                upload_type\u003dtsk_stg.UploadType.IO_STREAM,"},{"line_number":185,"context_line":"                file_format\u003dimage_meta.disk_format)[0]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def attach_disk(self, instance, disk_info, stg_ftsk):"},{"line_number":188,"context_line":"        \"\"\"Attaches the disk image to the Virtual Machine."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        :param instance: nova instance to connect the disk to."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_e6009eae","line":187,"range":{"start_line":187,"start_character":47,"end_line":187,"end_character":55},"updated":"2018-05-17 12:25:15.000000000","message":"nit: from the docstring it sounds like this is optional so I\u0027m not sure why it doesn\u0027t default to None.","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                upload_type\u003dtsk_stg.UploadType.IO_STREAM,"},{"line_number":185,"context_line":"                file_format\u003dimage_meta.disk_format)[0]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def attach_disk(self, instance, disk_info, stg_ftsk):"},{"line_number":188,"context_line":"        \"\"\"Attaches the disk image to the Virtual Machine."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        :param instance: nova instance to connect the disk to."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_18ce5383","line":187,"range":{"start_line":187,"start_character":47,"end_line":187,"end_character":55},"in_reply_to":"5f7c97a3_09c5ab5b","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"d287f9ed62f155227b3b2707933702b3c83c6e1a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                upload_type\u003dtsk_stg.UploadType.IO_STREAM,"},{"line_number":185,"context_line":"                file_format\u003dimage_meta.disk_format)[0]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def attach_disk(self, instance, disk_info, stg_ftsk):"},{"line_number":188,"context_line":"        \"\"\"Attaches the disk image to the Virtual Machine."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        :param instance: nova instance to connect the disk to."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_09c5ab5b","line":187,"range":{"start_line":187,"start_character":47,"end_line":187,"end_character":55},"in_reply_to":"5f7c97a3_e6009eae","updated":"2018-05-17 15:56:15.000000000","message":"if it defaulted to None, line 210 would blow up, so I think the docstring is the problem here.","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                self._host_uuid, vios_w, lpar_uuid, disk_info)"},{"line_number":208,"context_line":"            return tsk_map.add_map(vios_w, mapping)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        stg_ftsk.wrapper_tasks[self._vios_uuid].add_functor_subtask(add_func)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _get_vg_wrap(self):"},{"line_number":213,"context_line":"        return pvm_stg.VG.get(self._adapter, uuid\u003dself.vg_uuid,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_c6d6c228","line":210,"updated":"2018-05-17 12:25:15.000000000","message":"nit: this method could be made generic in the base class since the ssp and localdisk implementations are basically identical except for (1) log messages and (2) that ssp use a list of vios uuids and localdisk has a single vios uuid, but a generic method could just use _vios_uuids and iterate over the results. Anyway, if this sounds like a good idea, it can be done in a follow up.","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8dafe9c173e5e41dcec39429e99bf93b1df6d4bf","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        :return: The virtual disk containing the image."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        with lockutils.lock(image_meta.id):"},{"line_number":174,"context_line":"            img_name \u003d self._get_disk_name(disk_dvr.DiskType.BOOT, instance,"},{"line_number":175,"context_line":"                                           short\u003dTrue)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_2ed65751","line":173,"updated":"2018-05-18 08:55:15.000000000","message":"What this lock try to prevent? Uploading the same image twice in parallel? How that can happen?","commit_id":"fd541a19587f0730ed60d071ed5314c79c260811"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"bc0e24af36c416501080cec663a851cc4096cb2f","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        :return: The virtual disk containing the image."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        with lockutils.lock(image_meta.id):"},{"line_number":174,"context_line":"            img_name \u003d self._get_disk_name(disk_dvr.DiskType.BOOT, instance,"},{"line_number":175,"context_line":"                                           short\u003dTrue)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_6c7532cc","line":173,"in_reply_to":"5f7c97a3_2ed65751","updated":"2018-05-18 15:20:43.000000000","message":"Good catch this isn\u0027t actually needed yet. Will be required when we add image caching","commit_id":"fd541a19587f0730ed60d071ed5314c79c260811"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8624505e5ad5858fc44dc44bb26b6b7137cfde93","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        :return: The virtual disk containing the image."},{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        img_name \u003d self._get_disk_name(disk_dvr.DiskType.BOOT, instance,"},{"line_number":173,"context_line":"                                       short\u003dTrue)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # TODO(esberglu) Add check for cached image when adding imagecache."}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_47bb710d","line":172,"updated":"2018-05-18 15:28:13.000000000","message":"Why was the lock on image_meta.id removed from PS30?","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"4f73ac30dfad65f97caf5b796c7e0aba4cd7c1b7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        :return: The virtual disk containing the image."},{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        img_name \u003d self._get_disk_name(disk_dvr.DiskType.BOOT, instance,"},{"line_number":173,"context_line":"                                       short\u003dTrue)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # TODO(esberglu) Add check for cached image when adding imagecache."}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_e7039dbd","line":172,"in_reply_to":"5f7c97a3_47bb710d","updated":"2018-05-18 15:30:01.000000000","message":"The lock is only needed when we have image caching implemented, which we are doing in a follow on change","commit_id":"e4db67f39499a35c6f2acdd7b10e5c5c6b693ed4"}],"nova/virt/powervm/driver.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f7e6f602fcd7298b898981d638483abdd9ecb827","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                                      update. The driver will raise if this"},{"line_number":309,"context_line":"                                      doesn\u0027t match."},{"line_number":310,"context_line":"        \"\"\""},{"line_number":311,"context_line":"        # TODO(esberglu) Add check for disk driver snapshot capability when"},{"line_number":312,"context_line":"        # additional disk drivers are implemented."},{"line_number":313,"context_line":"        self._log_operation(\u0027snapshot\u0027, instance)"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_89276e65","line":311,"updated":"2018-03-07 20:58:49.000000000","message":"will need to handle this now.","commit_id":"da8ea24cd4f9260327ff2322ac38dcd8b8a63b76"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"531cd85b895b39b08c887f904f6ec7671ca9baa8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # NOTE(edmondsw) some of these will be dynamic in future, so putting"},{"line_number":67,"context_line":"        # capabilities on the instance rather than on the class."},{"line_number":68,"context_line":"        self.capabilities \u003d {"},{"line_number":69,"context_line":"            \u0027has_imagecache\u0027: False,"},{"line_number":70,"context_line":"            \u0027supports_recreate\u0027: False,"},{"line_number":71,"context_line":"            \u0027supports_migrate_to_same_host\u0027: False,"},{"line_number":72,"context_line":"            \u0027supports_attach_interface\u0027: False,"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf659307_713c45bf","line":69,"updated":"2018-04-05 15:32:09.000000000","message":"has_imagecache will now need to be set dynamically [1] based on the disk driver we\u0027re using [2].\n\n[1] https://github.com/openstack/nova-powervm/blob/master/nova_powervm/virt/powervm/driver.py#L95\n[2] https://github.com/openstack/nova-powervm/blob/master/nova_powervm/virt/powervm/driver.py#L179-L180\n\nUpdate: nevermind, we\u0027re not including image caching in this patch... Need to write the follow-on patch to add that, though.","commit_id":"65925194c346b097f0a68d684f1e2e01bf22e6b1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            nova.objects.instance.Instance.save for expected_task_state usage."},{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_663fae87","line":322,"updated":"2018-05-17 12:25:15.000000000","message":"Based on this, we should probably either have driver notes for the snapshot use case in the feature support matrix that not all storage configurations support snapshot:\n\nhttps://docs.openstack.org/nova/latest/user/support-matrix.html#operation_snapshot\n\nOr, put a small section about snapshot in the powervm driver docs page:\n\nhttps://docs.openstack.org/nova/latest/admin/configuration/hypervisor-powervm.html","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            nova.objects.instance.Instance.save for expected_task_state usage."},{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_b84f1f91","line":322,"in_reply_to":"5f7c97a3_663fae87","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""},{"line_number":326,"context_line":"                          \"setting of %s.\") % CONF.powervm.disk_driver)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_66db2e4f","line":323,"updated":"2018-05-17 12:25:15.000000000","message":"There is no test case for this.","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""},{"line_number":326,"context_line":"                          \"setting of %s.\") % CONF.powervm.disk_driver)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_18d973f3","line":323,"in_reply_to":"5f7c97a3_66db2e4f","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""},{"line_number":326,"context_line":"                          \"setting of %s.\") % CONF.powervm.disk_driver)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        self._log_operation(\u0027snapshot\u0027, instance)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_a6d06655","line":325,"range":{"start_line":325,"start_character":46,"end_line":325,"end_character":70},"updated":"2018-05-17 12:25:15.000000000","message":"nit: this is code-speak; for user-facing error messages, use:\n\n[powervm]/disk_driver","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""},{"line_number":326,"context_line":"                          \"setting of %s.\") % CONF.powervm.disk_driver)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        self._log_operation(\u0027snapshot\u0027, instance)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_183df32b","line":325,"range":{"start_line":325,"start_character":46,"end_line":325,"end_character":70},"in_reply_to":"5f7c97a3_a6d06655","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"d287f9ed62f155227b3b2707933702b3c83c6e1a","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        if not self.disk_dvr.capabilities.get(\u0027snapshot\u0027):"},{"line_number":323,"context_line":"            raise exc.NotSupportedWithOption("},{"line_number":324,"context_line":"                message\u003d_(\"The snapshot operation is not supported in \""},{"line_number":325,"context_line":"                          \"conjunction with a CONF.powervm.disk_driver \""},{"line_number":326,"context_line":"                          \"setting of %s.\") % CONF.powervm.disk_driver)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        self._log_operation(\u0027snapshot\u0027, instance)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_1d8725b9","line":325,"range":{"start_line":325,"start_character":46,"end_line":325,"end_character":70},"in_reply_to":"5f7c97a3_a6d06655","updated":"2018-05-17 15:56:15.000000000","message":"without the \u0027/\u0027, right?","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"}],"releasenotes/notes/powervm-localdisk-ccdf2347226303a8.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8405e37ea44965980d6e33442834a99461d6982e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The PowerVM virt driver now supports booting from local ephemeral disk."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"bf659307_dc53a8e1","line":4,"updated":"2018-04-09 16:59:01.000000000","message":"Do the conf options need to be mentioned here?","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3b2c73a5499f063378163082cb48e78d0bceda06","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The PowerVM virt driver now supports booting from local ephemeral disk."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"bf659307_05d1bccd","line":4,"in_reply_to":"bf659307_dc53a8e1","updated":"2018-04-10 21:44:22.000000000","message":"Done","commit_id":"a4257f54e42685c9b9ded0d6a73bb9773bee5ce3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0079c8bae5e818a47cb1134a26850975c4673f28","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    Two new configuration options have been introduced to the ``powervm``"},{"line_number":6,"context_line":"    configuration group, ``disk_driver`` and ``volume_group_name``. The former"},{"line_number":7,"context_line":"    allows the selection of either ssp or localdisk for the PowerVM disk"},{"line_number":8,"context_line":"    driver. The latter allows the specify the name of the volume group when"},{"line_number":9,"context_line":"    using the localdisk disk driver."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_7101016a","line":8,"range":{"start_line":8,"start_character":34,"end_line":8,"end_character":41},"updated":"2018-04-12 17:27:32.000000000","message":"specification of\n\nor better:\n\nThe latter specifies the name of...","commit_id":"cb3e96abd1e6117bef5803548c8d4f512b98db85"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"3f98e44d886f1d386628213f58e1102bbd7a9fee","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    Two new configuration options have been introduced to the ``powervm``"},{"line_number":6,"context_line":"    configuration group, ``disk_driver`` and ``volume_group_name``. The former"},{"line_number":7,"context_line":"    allows the selection of either ssp or localdisk for the PowerVM disk"},{"line_number":8,"context_line":"    driver. The latter allows the specify the name of the volume group when"},{"line_number":9,"context_line":"    using the localdisk disk driver."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_a768bbf4","line":8,"range":{"start_line":8,"start_character":34,"end_line":8,"end_character":41},"in_reply_to":"bf659307_7101016a","updated":"2018-04-12 18:36:35.000000000","message":"Done","commit_id":"cb3e96abd1e6117bef5803548c8d4f512b98db85"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"71f457c57d1df190db32e9769de34aaed4364eca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The PowerVM virt driver now supports booting from local ephemeral disk."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf659307_9396164c","line":1,"updated":"2018-04-12 19:53:25.000000000","message":"Add an upgrade release note that the default disk driver is now localdisk","commit_id":"407a9da29343e5305ef6251951a582015e35716d"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"d92c7a81ea52db05da5bfdee9fecda47b3f649d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The PowerVM virt driver now supports booting from local ephemeral disk."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"bf659307_79ec83ba","line":1,"in_reply_to":"bf659307_9396164c","updated":"2018-04-12 21:02:53.000000000","message":"Done","commit_id":"407a9da29343e5305ef6251951a582015e35716d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6c1ae0e71d4f2e656f74f96e3f59b6277894dfd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    localdisk disk driver."},{"line_number":10,"context_line":"upgrade:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    The PowerVM virt driver previously used the PowerVM Shared Storage Pool"},{"line_number":13,"context_line":"    disk driver by default. The default disk driver for PowerVM is now"},{"line_number":14,"context_line":"    localdisk."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"5f7c97a3_c687a261","line":14,"range":{"start_line":12,"start_character":4,"end_line":14,"end_character":14},"updated":"2018-05-17 12:25:15.000000000","message":"I would add something like, \"See configuration option ``[powervm]/disk_driver`` for usage details.\"","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"7d21274679a0b31b0a5cd57a2149098d9e32f1a0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    localdisk disk driver."},{"line_number":10,"context_line":"upgrade:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    The PowerVM virt driver previously used the PowerVM Shared Storage Pool"},{"line_number":13,"context_line":"    disk driver by default. The default disk driver for PowerVM is now"},{"line_number":14,"context_line":"    localdisk."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"5f7c97a3_7d12d90b","line":14,"range":{"start_line":12,"start_character":4,"end_line":14,"end_character":14},"in_reply_to":"5f7c97a3_c687a261","updated":"2018-05-17 16:47:43.000000000","message":"Done","commit_id":"f7814f61cc62fa3d6c995ff15ccdc0762f5fa3fa"}]}
