)]}'
{"nova/conf/powervm.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\"\"\")"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"cpu_opts \u003d ["},{"line_number":29,"context_line":"    cfg.FloatOpt(\u0027proc_units_factor\u0027,"},{"line_number":30,"context_line":"                 default\u003d0.1,"},{"line_number":31,"context_line":"                 help\u003d\u0027Factor used to calculate the processor units per vcpu. \u0027"},{"line_number":32,"context_line":"                 \u0027Valid values are: 0.05 - 1.0\u0027),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027uncapped_proc_weight\u0027,"},{"line_number":34,"context_line":"               default\u003d64, min\u003d1, max\u003d255,"},{"line_number":35,"context_line":"               help\u003d\u0027The processor weight to assign to newly created VMs.  \u0027"},{"line_number":36,"context_line":"                    \u0027Value should be between 1 and 255.  Represents how \u0027"},{"line_number":37,"context_line":"                    \u0027aggressively LPARs grab CPU when unused cycles are \u0027"},{"line_number":38,"context_line":"                    \u0027available.\u0027)"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"ALL_OPTS \u003d list(itertools.chain("}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_4fa18345","line":38,"range":{"start_line":29,"start_character":0,"end_line":38,"end_character":33},"updated":"2016-12-12 16:38:37.000000000","message":"These need to be formatted according to these guidelines:\n\nhttps://wiki.openstack.org/wiki/ConfigOptionsConsistency","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\"\"\")"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"cpu_opts \u003d ["},{"line_number":29,"context_line":"    cfg.FloatOpt(\u0027proc_units_factor\u0027,"},{"line_number":30,"context_line":"                 default\u003d0.1,"},{"line_number":31,"context_line":"                 help\u003d\u0027Factor used to calculate the processor units per vcpu. \u0027"},{"line_number":32,"context_line":"                 \u0027Valid values are: 0.05 - 1.0\u0027),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027uncapped_proc_weight\u0027,"},{"line_number":34,"context_line":"               default\u003d64, min\u003d1, max\u003d255,"},{"line_number":35,"context_line":"               help\u003d\u0027The processor weight to assign to newly created VMs.  \u0027"},{"line_number":36,"context_line":"                    \u0027Value should be between 1 and 255.  Represents how \u0027"},{"line_number":37,"context_line":"                    \u0027aggressively LPARs grab CPU when unused cycles are \u0027"},{"line_number":38,"context_line":"                    \u0027available.\u0027)"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"ALL_OPTS \u003d list(itertools.chain("}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_0760ef34","line":38,"range":{"start_line":29,"start_character":0,"end_line":38,"end_character":33},"in_reply_to":"3a71b18c_4fa18345","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    \u0027available.\u0027)"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"ALL_OPTS \u003d list(itertools.chain("},{"line_number":42,"context_line":"    cpu_opts,"},{"line_number":43,"context_line":"))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_ef608f37","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":2},"updated":"2016-12-12 16:38:37.000000000","message":"This is not recommended anymore for conf items. It is better to write this simply as:\n\n    ALLOPTS \u003d (cpu_opts,\n              )","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    \u0027available.\u0027)"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"ALL_OPTS \u003d list(itertools.chain("},{"line_number":42,"context_line":"    cpu_opts,"},{"line_number":43,"context_line":"))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_2765eb44","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":2},"in_reply_to":"3a71b18c_ef608f37","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":56,"context_line":"\"\"\")"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"ALL_OPTS \u003d (cpu_opts)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_959426e9","line":59,"range":{"start_line":59,"start_character":11,"end_line":59,"end_character":21},"updated":"2016-12-21 21:57:47.000000000","message":"Remove redundant parens","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"\"\"\")"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"ALL_OPTS \u003d (cpu_opts)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_cb3b699b","line":59,"range":{"start_line":59,"start_character":11,"end_line":59,"end_character":21},"in_reply_to":"fa48f94a_959426e9","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def list_opts():"},{"line_number":68,"context_line":"    return {powervm_group: ALL_OPTS}"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_b5084a93","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":25},"updated":"2016-12-21 21:57:47.000000000","message":"powervm_group.name","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def list_opts():"},{"line_number":68,"context_line":"    return {powervm_group: ALL_OPTS}"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_eb402d0a","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":25},"in_reply_to":"fa48f94a_b5084a93","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ad11eceda64942d6b6eeec3f9258ee34a2f4ddb2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    cfg.FloatOpt(\u0027proc_units_factor\u0027,"},{"line_number":28,"context_line":"                 default\u003d0.1,"},{"line_number":29,"context_line":"                 help\u003d\"\"\""},{"line_number":30,"context_line":"Factor used to calculate the processor units per vcpu."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Possible values:"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a3905b3_69c34a8b","line":30,"updated":"2017-01-25 07:45:10.000000000","message":"I think we need more detail here about what this value means and how an administrator might use it. Does a value of 0.05 mean my VM gets 0.05 of a real CPU for each vCPU it asks for? Or is it more complicated than that?","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"19d904f96165198f4fc23a71f6a6d275c801f15a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    cfg.FloatOpt(\u0027proc_units_factor\u0027,"},{"line_number":28,"context_line":"                 default\u003d0.1,"},{"line_number":29,"context_line":"                 help\u003d\"\"\""},{"line_number":30,"context_line":"Factor used to calculate the processor units per vcpu."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Possible values:"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3a461143_99fdff3c","line":30,"in_reply_to":"3a461143_58102a4f","updated":"2017-01-26 17:46:56.000000000","message":"Added some detail here.\n\n(mikal, if you\u0027re interested in the nitty gritty, you can check out the PowerVM pubs: https://www.ibm.com/support/knowledgecenter/POWER8/p8hat/p8hat_sharedproc.htm)","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"efc1001995562002921396106729d95853f96876","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    cfg.FloatOpt(\u0027proc_units_factor\u0027,"},{"line_number":28,"context_line":"                 default\u003d0.1,"},{"line_number":29,"context_line":"                 help\u003d\"\"\""},{"line_number":30,"context_line":"Factor used to calculate the processor units per vcpu."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Possible values:"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3a461143_58102a4f","line":30,"in_reply_to":"5a3905b3_69c34a8b","updated":"2017-01-25 17:46:22.000000000","message":"Will do.  This corresponds to a standard Power tunable - would a link to the reference material for that tunable serve here, or would you rather see a summary inlined?","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ad11eceda64942d6b6eeec3f9258ee34a2f4ddb2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\"\"\""},{"line_number":45,"context_line":"The processor weight to assign to newly created VMs."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Represents how aggressively LPARs grab CPU when unused cycles are available."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Possible values:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a3905b3_694a6a29","line":47,"updated":"2017-01-25 07:45:10.000000000","message":"Again, I\u0027d like to see more discussion here about what this value means. Why the range 1 to 255? Is it just a case of the higher number is better? What are the trade offs?","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"19d904f96165198f4fc23a71f6a6d275c801f15a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\"\"\""},{"line_number":45,"context_line":"The processor weight to assign to newly created VMs."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Represents how aggressively LPARs grab CPU when unused cycles are available."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Possible values:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3a461143_d995c7e4","line":47,"in_reply_to":"3a461143_b8258eaf","updated":"2017-01-26 17:46:56.000000000","message":"Done","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"efc1001995562002921396106729d95853f96876","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\"\"\""},{"line_number":45,"context_line":"The processor weight to assign to newly created VMs."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Represents how aggressively LPARs grab CPU when unused cycles are available."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Possible values:"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3a461143_b8258eaf","line":47,"in_reply_to":"5a3905b3_694a6a29","updated":"2017-01-25 17:46:22.000000000","message":"Ditto.","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b804dd43b643cbadb74bfebb5ff1dca717900895","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2017 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a461143_8d8faf74","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":31},"updated":"2017-02-01 21:25:17.000000000","message":"At the very least, you should include the copyright for the OpenStack Foundation, too. This applies to all the files in this patch.","commit_id":"be3ca5e56a7d4d6465c2bde60da9414adbef7b88"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a3a3679ef492b59070130670d9fc1769d5ff7f3a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2017 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a461143_2934ccdc","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":31},"in_reply_to":"3a461143_8d8faf74","updated":"2017-02-02 16:39:32.000000000","message":"You don\u0027t need the OpenStack Foundation stuff in the copyright anymore, or the \u0027All Rights Reserved\u0027 for that matter.\n\nhttps://wiki.openstack.org/wiki/LegalIssuesFAQ#Copyright_Headers\n\nYou only need to put in OpenStack Foundation if you\u0027re working for the Foundation and are the author of the patch, see: https://wiki.openstack.org/wiki/LegalIssuesFAQ#OpenStack_Foundation_Copyright_Headers","commit_id":"be3ca5e56a7d4d6465c2bde60da9414adbef7b88"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"f8de78ca81d3dda0864355d7c78ff111ea19dcc9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"0.1 means the VM gets the equivalent of 0.1 physical CPUs for every vCPU it"},{"line_number":32,"context_line":"requests."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Processors are uncapped: (#vCPUs * proc_units_factor) represents the amount of"},{"line_number":35,"context_line":"processor guaranteed to the VM, but the hypervisor dynamically assigns unused"},{"line_number":36,"context_line":"system processor capacity across active uncapped VMs according to"},{"line_number":37,"context_line":"uncapped_proc_weight."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Possible values:"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_f94f3c68","line":37,"range":{"start_line":34,"start_character":0,"end_line":37,"end_character":21},"updated":"2017-02-15 20:15:53.000000000","message":"I wonder if we want to say \u0027proc_units_factor represents a minimum guaranteed CPU time\u0027","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"0.1 means the VM gets the equivalent of 0.1 physical CPUs for every vCPU it"},{"line_number":32,"context_line":"requests."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Processors are uncapped: (#vCPUs * proc_units_factor) represents the amount of"},{"line_number":35,"context_line":"processor guaranteed to the VM, but the hypervisor dynamically assigns unused"},{"line_number":36,"context_line":"system processor capacity across active uncapped VMs according to"},{"line_number":37,"context_line":"uncapped_proc_weight."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Possible values:"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_2c2a3be8","line":37,"range":{"start_line":34,"start_character":0,"end_line":37,"end_character":21},"in_reply_to":"fa31d9ce_f94f3c68","updated":"2017-02-16 21:40:39.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"f8de78ca81d3dda0864355d7c78ff111ea19dcc9","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  None"},{"line_number":46,"context_line":"\"\"\"),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027uncapped_proc_weight\u0027,"},{"line_number":48,"context_line":"               default\u003d64,"},{"line_number":49,"context_line":"               min\u003d1,"},{"line_number":50,"context_line":"               max\u003d255,"},{"line_number":51,"context_line":"               help\u003d\"\"\""},{"line_number":52,"context_line":"The processor weight to assign to newly created VMs."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"When unused cycles are available, active uncapped VMs are assigned processor"},{"line_number":55,"context_line":"capacity in proportion to their uncapped_proc_weight.  For example, if there"},{"line_number":56,"context_line":"are two active uncapped VMs on the host, with uncapped_proc_weight values of"},{"line_number":57,"context_line":"64 and 128, the former will receive one third of the unused cycles, and the"},{"line_number":58,"context_line":"latter will receive two thirds."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Possible values:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  1 - 255"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Related options:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"  None"},{"line_number":67,"context_line":"\"\"\")"},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"ALL_OPTS \u003d cpu_opts"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_597048a4","line":67,"range":{"start_line":47,"start_character":0,"end_line":67,"end_character":4},"updated":"2017-02-15 20:15:53.000000000","message":"Honestly, I\u0027m kind 50/50 on even including this.  I wonder if for intree, we want to just cut this out.  If others find it confusing, that is a path we could consider.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  None"},{"line_number":46,"context_line":"\"\"\"),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027uncapped_proc_weight\u0027,"},{"line_number":48,"context_line":"               default\u003d64,"},{"line_number":49,"context_line":"               min\u003d1,"},{"line_number":50,"context_line":"               max\u003d255,"},{"line_number":51,"context_line":"               help\u003d\"\"\""},{"line_number":52,"context_line":"The processor weight to assign to newly created VMs."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"When unused cycles are available, active uncapped VMs are assigned processor"},{"line_number":55,"context_line":"capacity in proportion to their uncapped_proc_weight.  For example, if there"},{"line_number":56,"context_line":"are two active uncapped VMs on the host, with uncapped_proc_weight values of"},{"line_number":57,"context_line":"64 and 128, the former will receive one third of the unused cycles, and the"},{"line_number":58,"context_line":"latter will receive two thirds."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Possible values:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  1 - 255"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Related options:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"  None"},{"line_number":67,"context_line":"\"\"\")"},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"ALL_OPTS \u003d cpu_opts"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_ac3e2b27","line":67,"range":{"start_line":47,"start_character":0,"end_line":67,"end_character":4},"in_reply_to":"fa31d9ce_597048a4","updated":"2017-02-16 21:40:39.000000000","message":"Yeah, I agree.  Removing it for now.  We can add it in later if there\u0027s a demand.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"}],"nova/tests/unit/virt/powervm/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import fixtures"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.virt.powervm import driver"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from nova.virt import fake"},{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_bb675b24","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":26},"updated":"2016-12-21 21:57:47.000000000","message":"Group imports properly.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import fixtures"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.virt.powervm import driver"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from nova.virt import fake"},{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_0b465123","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":26},"in_reply_to":"fa48f94a_bb675b24","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @mock.patch(\u0027nova.virt.powervm.driver.PowerVMDriver._get_adapter\u0027)"},{"line_number":39,"context_line":"    @mock.patch(\u0027pypowervm.tasks.partition.get_this_partition\u0027)"},{"line_number":40,"context_line":"    def _init_host(self, *args):"},{"line_number":41,"context_line":"        ms_http \u003d pvmhttp.load_pvm_resp("},{"line_number":42,"context_line":"            MS_HTTPRESP_FILE, adapter\u003dmock.Mock()).get_response()"},{"line_number":43,"context_line":"        # Pretend it just returned one host"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_5b766f3f","line":40,"range":{"start_line":40,"start_character":23,"end_line":40,"end_character":30},"updated":"2016-12-21 21:57:47.000000000","message":"Not used; remove.  Mock patches with new\u003dmock.Mock().\n\nFor that matter, why not use fixtures.MockPatch for these, as below?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @mock.patch(\u0027nova.virt.powervm.driver.PowerVMDriver._get_adapter\u0027)"},{"line_number":39,"context_line":"    @mock.patch(\u0027pypowervm.tasks.partition.get_this_partition\u0027)"},{"line_number":40,"context_line":"    def _init_host(self, *args):"},{"line_number":41,"context_line":"        ms_http \u003d pvmhttp.load_pvm_resp("},{"line_number":42,"context_line":"            MS_HTTPRESP_FILE, adapter\u003dmock.Mock()).get_response()"},{"line_number":43,"context_line":"        # Pretend it just returned one host"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_2b4b152d","line":40,"range":{"start_line":40,"start_character":23,"end_line":40,"end_character":30},"in_reply_to":"fa48f94a_5b766f3f","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        ms_http \u003d pvmhttp.load_pvm_resp("},{"line_number":42,"context_line":"            MS_HTTPRESP_FILE, adapter\u003dmock.Mock()).get_response()"},{"line_number":43,"context_line":"        # Pretend it just returned one host"},{"line_number":44,"context_line":"        ms_http.feed.entries \u003d [ms_http.feed.entries[0]]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # Mock active vios"},{"line_number":47,"context_line":"        self.get_active_vios \u003d self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_bbcbdb1d","line":44,"range":{"start_line":44,"start_character":31,"end_line":44,"end_character":56},"updated":"2016-12-21 21:57:47.000000000","message":"Unnecessary; the feed only has one entry.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        ms_http \u003d pvmhttp.load_pvm_resp("},{"line_number":42,"context_line":"            MS_HTTPRESP_FILE, adapter\u003dmock.Mock()).get_response()"},{"line_number":43,"context_line":"        # Pretend it just returned one host"},{"line_number":44,"context_line":"        ms_http.feed.entries \u003d [ms_http.feed.entries[0]]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # Mock active vios"},{"line_number":47,"context_line":"        self.get_active_vios \u003d self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_6b551dc5","line":44,"range":{"start_line":44,"start_character":31,"end_line":44,"end_character":56},"in_reply_to":"fa48f94a_bbcbdb1d","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self._init_host()"},{"line_number":64,"context_line":"        self.drv.image_api \u003d mock.Mock()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def cleanUp(self):"},{"line_number":67,"context_line":"        super(PowerVMComputeDriver, self).cleanUp()"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_fbb803e8","line":67,"range":{"start_line":66,"start_character":0,"end_line":67,"end_character":51},"updated":"2016-12-21 21:57:47.000000000","message":"Redundant; remove.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self._init_host()"},{"line_number":64,"context_line":"        self.drv.image_api \u003d mock.Mock()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def cleanUp(self):"},{"line_number":67,"context_line":"        super(PowerVMComputeDriver, self).cleanUp()"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_8b5241dc","line":67,"range":{"start_line":66,"start_character":0,"end_line":67,"end_character":51},"in_reply_to":"fa48f94a_fbb803e8","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"df95145d9b6fe00f0446452fda018b8a31c56da4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MS_HTTPRESP_FILE \u003d \"fake_managedsystem.txt\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"FAKE_INST_UUID \u003d \u0027b6513403-fd7f-4ad0-ab27-f73bacbd3929\u0027"},{"line_number":32,"context_line":"FAKE_INST_UUID_PVM \u003d \u002736513403-FD7F-4AD0-AB27-F73BACBD3929\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a57fde8_61f9b8c8","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":43},"updated":"2017-01-12 13:38:40.000000000","message":"I\u0027m not geeked about having this in here.  Do we truly need?\n\nCan we just create a mock object here instead?  It seems like that is more pypowervm stuff.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"bcc04c05a8cc4f2a43f3a8ed75bb66b78bb66257","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MS_HTTPRESP_FILE \u003d \"fake_managedsystem.txt\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"FAKE_INST_UUID \u003d \u0027b6513403-fd7f-4ad0-ab27-f73bacbd3929\u0027"},{"line_number":32,"context_line":"FAKE_INST_UUID_PVM \u003d \u002736513403-FD7F-4AD0-AB27-F73BACBD3929\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a3c09a3_2daf4d82","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":43},"in_reply_to":"9a57fde8_61f9b8c8","updated":"2017-01-17 05:39:09.000000000","message":"Done","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"84ea2d57aa2ae85581e3034cb49ee9288efecbb4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MS_HTTPRESP_FILE \u003d \"fake_managedsystem.txt\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"FAKE_INST_UUID \u003d \u0027b6513403-fd7f-4ad0-ab27-f73bacbd3929\u0027"},{"line_number":32,"context_line":"FAKE_INST_UUID_PVM \u003d \u002736513403-FD7F-4AD0-AB27-F73BACBD3929\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a3c09a3_bdb0f6f5","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":43},"in_reply_to":"9a57fde8_61f9b8c8","updated":"2017-01-17 19:17:33.000000000","message":"Done","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b804dd43b643cbadb74bfebb5ff1dca717900895","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"FAKE_INST_UUID \u003d \u0027b6513403-fd7f-4ad0-ab27-f73bacbd3929\u0027"},{"line_number":29,"context_line":"FAKE_INST_UUID_PVM \u003d \u002736513403-FD7F-4AD0-AB27-F73BACBD3929\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class PowerVMComputeDriver(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a461143_6de36306","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":59},"updated":"2017-02-01 21:25:17.000000000","message":"I think that the oslo_utils.uuidutils.generate_uuid() method is preferable to hard-coding values. And is there a reason for the case difference in the two?","commit_id":"be3ca5e56a7d4d6465c2bde60da9414adbef7b88"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"0855784c2c524c6bede58cd64e685483cf3c015c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"FAKE_INST_UUID \u003d \u0027b6513403-fd7f-4ad0-ab27-f73bacbd3929\u0027"},{"line_number":29,"context_line":"FAKE_INST_UUID_PVM \u003d \u002736513403-FD7F-4AD0-AB27-F73BACBD3929\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class PowerVMComputeDriver(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a430d35_ea975ee9","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":59},"in_reply_to":"3a461143_6de36306","updated":"2017-02-09 07:13:49.000000000","message":"Done","commit_id":"be3ca5e56a7d4d6465c2bde60da9414adbef7b88"}],"nova/tests/unit/virt/powervm/test_driver.py":[{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"9dbe9abf9a0dcde6d9c1652ff68228cfac0b5dcb","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # Create an instance to test with"},{"line_number":86,"context_line":"        self.inst \u003d objects.Instance(**powervm.TEST_INST_SPAWNING)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @staticmethod"},{"line_number":89,"context_line":"    def _fake_bdms():"},{"line_number":90,"context_line":"        def _fake_bdm(volume_id, target_lun):"},{"line_number":91,"context_line":"            connection_info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":92,"context_line":"                               \u0027data\u0027: {\u0027volume_id\u0027: volume_id,"},{"line_number":93,"context_line":"                                        \u0027target_lun\u0027: target_lun,"},{"line_number":94,"context_line":"                                        \u0027initiator_target_map\u0027:"},{"line_number":95,"context_line":"                                        {\u002721000024F5\u0027: [\u002750050768\u0027]}}}"},{"line_number":96,"context_line":"            mapping_dict \u003d {\u0027source_type\u0027: \u0027volume\u0027, \u0027volume_id\u0027: volume_id,"},{"line_number":97,"context_line":"                            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":98,"context_line":"                            \u0027connection_info\u0027:"},{"line_number":99,"context_line":"                            jsonutils.dumps(connection_info),"},{"line_number":100,"context_line":"                            }"},{"line_number":101,"context_line":"            bdm_dict \u003d nova_block_device.BlockDeviceDict(mapping_dict)"},{"line_number":102,"context_line":"            bdm_obj \u003d bdmobj.BlockDeviceMapping(**bdm_dict)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            return nova_virt_bdm.DriverVolumeBlockDevice(bdm_obj)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        bdm_list \u003d [_fake_bdm(\u0027fake_vol1\u0027, 0), _fake_bdm(\u0027fake_vol2\u0027, 1)]"},{"line_number":107,"context_line":"        block_device_info \u003d {\u0027block_device_mapping\u0027: bdm_list}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return block_device_info"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @mock.patch(\u0027nova.virt.configdrive.required_by\u0027)"},{"line_number":112,"context_line":"    @mock.patch(\u0027nova.objects.flavor.Flavor.get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_f51f2b59","line":109,"range":{"start_line":88,"start_character":0,"end_line":109,"end_character":32},"updated":"2016-12-12 18:26:08.000000000","message":"I don\u0027t know that we need data in here yet, because this change set doesn\u0027t support Cinder yet, and this is needed for Cinder.","commit_id":"263dc6ea7c607f80ab2c2358f5d99a60304fdf82"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"a2d73cca3ee42f8e90d013903d9b78719a1469a4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # Create an instance to test with"},{"line_number":86,"context_line":"        self.inst \u003d objects.Instance(**powervm.TEST_INST_SPAWNING)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @staticmethod"},{"line_number":89,"context_line":"    def _fake_bdms():"},{"line_number":90,"context_line":"        def _fake_bdm(volume_id, target_lun):"},{"line_number":91,"context_line":"            connection_info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":92,"context_line":"                               \u0027data\u0027: {\u0027volume_id\u0027: volume_id,"},{"line_number":93,"context_line":"                                        \u0027target_lun\u0027: target_lun,"},{"line_number":94,"context_line":"                                        \u0027initiator_target_map\u0027:"},{"line_number":95,"context_line":"                                        {\u002721000024F5\u0027: [\u002750050768\u0027]}}}"},{"line_number":96,"context_line":"            mapping_dict \u003d {\u0027source_type\u0027: \u0027volume\u0027, \u0027volume_id\u0027: volume_id,"},{"line_number":97,"context_line":"                            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":98,"context_line":"                            \u0027connection_info\u0027:"},{"line_number":99,"context_line":"                            jsonutils.dumps(connection_info),"},{"line_number":100,"context_line":"                            }"},{"line_number":101,"context_line":"            bdm_dict \u003d nova_block_device.BlockDeviceDict(mapping_dict)"},{"line_number":102,"context_line":"            bdm_obj \u003d bdmobj.BlockDeviceMapping(**bdm_dict)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            return nova_virt_bdm.DriverVolumeBlockDevice(bdm_obj)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        bdm_list \u003d [_fake_bdm(\u0027fake_vol1\u0027, 0), _fake_bdm(\u0027fake_vol2\u0027, 1)]"},{"line_number":107,"context_line":"        block_device_info \u003d {\u0027block_device_mapping\u0027: bdm_list}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return block_device_info"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @mock.patch(\u0027nova.virt.configdrive.required_by\u0027)"},{"line_number":112,"context_line":"    @mock.patch(\u0027nova.objects.flavor.Flavor.get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_776eacca","line":109,"range":{"start_line":88,"start_character":0,"end_line":109,"end_character":32},"in_reply_to":"1a6eadb0_f51f2b59","updated":"2016-12-13 06:55:53.000000000","message":"Done","commit_id":"263dc6ea7c607f80ab2c2358f5d99a60304fdf82"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fa48f94a_a6fe5e03","updated":"2016-12-21 21:57:47.000000000","message":"The UT here seems pretty light.  We should be hammering the internals more.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.tests.unit.virt.powervm import fixtures as fx"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"powervm_group \u003d cfg.OptGroup(name\u003d\u0027powervm\u0027, title\u003d\u0027PowerVM Driver options\u0027)"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"logging.basicConfig()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class TestPowerVMDriver(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_665556c5","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":21},"updated":"2016-12-21 21:57:47.000000000","message":"Why are we doing this?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"cea2a17d477de527f0c58d3c520a1e3138fac787","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.tests.unit.virt.powervm import fixtures as fx"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"powervm_group \u003d cfg.OptGroup(name\u003d\u0027powervm\u0027, title\u003d\u0027PowerVM Driver options\u0027)"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"logging.basicConfig()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class TestPowerVMDriver(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_9a3e5f26","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":21},"in_reply_to":"fa48f94a_665556c5","updated":"2016-12-28 12:04:22.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # Invoke the method."},{"line_number":81,"context_line":"        self.drv.spawn(\u0027context\u0027, self.inst, powervm.IMAGE1,"},{"line_number":82,"context_line":"                       \u0027injected_files\u0027, \u0027admin_password\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @mock.patch(\u0027nova.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":85,"context_line":"    def test_destroy_pvm(self, mock_getuuid):"},{"line_number":86,"context_line":"        \"\"\"Validates the basic PowerVM destroy.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_db117f5f","line":83,"updated":"2016-12-21 21:57:47.000000000","message":"No assertions here?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"cea2a17d477de527f0c58d3c520a1e3138fac787","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # Invoke the method."},{"line_number":81,"context_line":"        self.drv.spawn(\u0027context\u0027, self.inst, powervm.IMAGE1,"},{"line_number":82,"context_line":"                       \u0027injected_files\u0027, \u0027admin_password\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @mock.patch(\u0027nova.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":85,"context_line":"    def test_destroy_pvm(self, mock_getuuid):"},{"line_number":86,"context_line":"        \"\"\"Validates the basic PowerVM destroy.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_e5498cb8","line":83,"in_reply_to":"fa48f94a_db117f5f","updated":"2016-12-28 12:04:22.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d9cb33d69d666f4989a4f965aa7080585cf90a1d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertTrue(mock_pwron.called)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @mock.patch(\u0027nova.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":79,"context_line":"    def test_destroy_pvm(self, mock_getuuid):"},{"line_number":80,"context_line":"        \"\"\"Validates the basic PowerVM destroy.\"\"\""},{"line_number":81,"context_line":"        with mock.patch.object(self.drv, \u0027_destroy\u0027) as mock_dst_int:"},{"line_number":82,"context_line":"            # Invoke the method."}],"source_content_type":"text/x-python","patch_set":29,"id":"3a461143_6210625a","line":79,"updated":"2017-01-27 22:45:01.000000000","message":"Destroy internals need to be tested!","commit_id":"5270e02b0ad172fa545a8ce069d1e513e42b7df8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"97e75ac74d6acef367c5761ff1e5cb276ed8a9ab","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertTrue(mock_pwron.called)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @mock.patch(\u0027nova.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":79,"context_line":"    def test_destroy_pvm(self, mock_getuuid):"},{"line_number":80,"context_line":"        \"\"\"Validates the basic PowerVM destroy.\"\"\""},{"line_number":81,"context_line":"        with mock.patch.object(self.drv, \u0027_destroy\u0027) as mock_dst_int:"},{"line_number":82,"context_line":"            # Invoke the method."}],"source_content_type":"text/x-python","patch_set":29,"id":"3a461143_0dca0d1b","line":79,"in_reply_to":"3a461143_6210625a","updated":"2017-01-31 20:55:06.000000000","message":"Done","commit_id":"5270e02b0ad172fa545a8ce069d1e513e42b7df8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"734be9b5958df135e5bfb4e45f3e08b4ab58e3f5","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        mock_pwroff.reset_mock()"},{"line_number":97,"context_line":"        mock_del.reset_mock()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # InstanceNotFound exception, force flag"},{"line_number":100,"context_line":"        mock_pwroff.side_effect \u003d exception.InstanceNotFound"},{"line_number":101,"context_line":"        self.drv.destroy(\u0027context\u0027, self.inst, [], block_device_info\u003d{},"},{"line_number":102,"context_line":"                         destroy_disks\u003dTrue)"},{"line_number":103,"context_line":"        mock_getuuid.assert_called_once_with(self.inst)"},{"line_number":104,"context_line":"        mock_pwroff.assert_called_once_with("},{"line_number":105,"context_line":"            self.drv.adapter, self.inst, self.drv.host_uuid,"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_9f61c0d5","line":102,"range":{"start_line":99,"start_character":38,"end_line":102,"end_character":43},"updated":"2017-01-31 21:01:23.000000000","message":"argh, NO force flag.","commit_id":"6ea2c69d483e6ea4ecc79989a138a12ac4af7482"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fc77db3932610719c88c069625998a2d6e023c8a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        mock_pwroff.reset_mock()"},{"line_number":97,"context_line":"        mock_del.reset_mock()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # InstanceNotFound exception, force flag"},{"line_number":100,"context_line":"        mock_pwroff.side_effect \u003d exception.InstanceNotFound"},{"line_number":101,"context_line":"        self.drv.destroy(\u0027context\u0027, self.inst, [], block_device_info\u003d{},"},{"line_number":102,"context_line":"                         destroy_disks\u003dTrue)"},{"line_number":103,"context_line":"        mock_getuuid.assert_called_once_with(self.inst)"},{"line_number":104,"context_line":"        mock_pwroff.assert_called_once_with("},{"line_number":105,"context_line":"            self.drv.adapter, self.inst, self.drv.host_uuid,"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_df3988a5","line":102,"range":{"start_line":99,"start_character":38,"end_line":102,"end_character":43},"in_reply_to":"3a461143_9f61c0d5","updated":"2017-01-31 21:04:37.000000000","message":"Done","commit_id":"6ea2c69d483e6ea4ecc79989a138a12ac4af7482"}],"nova/tests/unit/virt/powervm/test_host.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.virt.powervm import host as pvm_host"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"logging.basicConfig()"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_26134e5e","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":46},"updated":"2016-12-21 21:57:47.000000000","message":"Group imports properly.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.virt.powervm import host as pvm_host"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"logging.basicConfig()"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_cb6289ad","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":46},"in_reply_to":"fa48f94a_26134e5e","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.virt.powervm import host as pvm_host"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"logging.basicConfig()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestPowerVMHost(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_a6365eb2","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":21},"updated":"2016-12-21 21:57:47.000000000","message":"Why are we doing this?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"cea2a17d477de527f0c58d3c520a1e3138fac787","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":"from nova.virt.powervm import host as pvm_host"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"logging.basicConfig()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestPowerVMHost(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_e57c2cb7","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":21},"in_reply_to":"fa48f94a_a6365eb2","updated":"2016-12-28 12:04:22.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"df95145d9b6fe00f0446452fda018b8a31c56da4","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                mock.Mock(port_id\u003d3, label\u003d\u0027\u0027, supp_max_lps\u003d2)]),"},{"line_number":31,"context_line":"            mock.Mock(sriov_adap_id\u003d4, phys_ports\u003d["},{"line_number":32,"context_line":"                mock.Mock(port_id\u003d5, label\u003d\u0027bar\u0027, supp_max_lps\u003d3)])]"},{"line_number":33,"context_line":"        ms_wrapper \u003d mock.MagicMock("},{"line_number":34,"context_line":"            proc_units_configurable\u003d500,"},{"line_number":35,"context_line":"            proc_units_avail\u003d500,"},{"line_number":36,"context_line":"            memory_configurable\u003d5242880,"},{"line_number":37,"context_line":"            memory_free\u003d5242752,"},{"line_number":38,"context_line":"            mtms\u003dmock.MagicMock(mtms_str\u003d\u00278484923A123456\u0027),"},{"line_number":39,"context_line":"            memory_region_size\u003d\u0027big\u0027,"},{"line_number":40,"context_line":"            asio_config\u003dmock.Mock(sriov_adapters\u003dsriov_adaps))"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Run the actual test"},{"line_number":43,"context_line":"        stats \u003d pvm_host.build_host_resource_from_ms(ms_wrapper)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a57fde8_e1d20834","line":40,"range":{"start_line":33,"start_character":4,"end_line":40,"end_character":62},"updated":"2017-01-12 13:38:40.000000000","message":"per previous file...this is generally how I\u0027d like to see wrappers mocked out here.\n\nWe should update our oot driver too when we make this change.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"}],"nova/tests/unit/virt/powervm/test_vm.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova import exception"},{"line_number":24,"context_line":"from nova import objects"},{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from pypowervm import exceptions as pvm_exc"},{"line_number":27,"context_line":"from pypowervm.helpers import log_helper as pvm_log"},{"line_number":28,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":29,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":30,"context_line":"from pypowervm.utils import lpar_builder as lpar_bld"},{"line_number":31,"context_line":"from pypowervm.wrappers import base_partition as pvm_bp"},{"line_number":32,"context_line":"from pypowervm.wrappers import logical_partition as pvm_lpar"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from nova.tests.unit.virt import powervm"},{"line_number":35,"context_line":"from nova.virt.powervm import exception as nvex"},{"line_number":36,"context_line":"from nova.virt.powervm import vm"},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"LPAR_HTTPRESP_FILE \u003d \"lpar.txt\""},{"line_number":39,"context_line":"LPAR_MAPPING \u003d ("},{"line_number":40,"context_line":"    {"},{"line_number":41,"context_line":"        \u0027z3-9-5-126-127-00000001\u0027: \u0027089ffb20-5d19-4a8c-bb80-13650627d985\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_463772e3","line":38,"range":{"start_line":23,"start_character":0,"end_line":38,"end_character":1},"updated":"2016-12-21 21:57:47.000000000","message":"Group imports properly.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova import exception"},{"line_number":24,"context_line":"from nova import objects"},{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from pypowervm import exceptions as pvm_exc"},{"line_number":27,"context_line":"from pypowervm.helpers import log_helper as pvm_log"},{"line_number":28,"context_line":"from pypowervm.tests import test_fixtures as pvm_fx"},{"line_number":29,"context_line":"from pypowervm.tests.test_utils import pvmhttp"},{"line_number":30,"context_line":"from pypowervm.utils import lpar_builder as lpar_bld"},{"line_number":31,"context_line":"from pypowervm.wrappers import base_partition as pvm_bp"},{"line_number":32,"context_line":"from pypowervm.wrappers import logical_partition as pvm_lpar"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from nova.tests.unit.virt import powervm"},{"line_number":35,"context_line":"from nova.virt.powervm import exception as nvex"},{"line_number":36,"context_line":"from nova.virt.powervm import vm"},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"LPAR_HTTPRESP_FILE \u003d \"lpar.txt\""},{"line_number":39,"context_line":"LPAR_MAPPING \u003d ("},{"line_number":40,"context_line":"    {"},{"line_number":41,"context_line":"        \u0027z3-9-5-126-127-00000001\u0027: \u0027089ffb20-5d19-4a8c-bb80-13650627d985\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_eb574dc8","line":38,"range":{"start_line":23,"start_character":0,"end_line":38,"end_character":1},"in_reply_to":"fa48f94a_463772e3","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \u0027z3-9-5-126-127-00000001\u0027: \u0027089ffb20-5d19-4a8c-bb80-13650627d985\u0027,"},{"line_number":42,"context_line":"        \u0027z3-9-5-126-208-000001f0\u0027: \u0027668b0882-c24a-4ae9-91c8-297e95e3fe29\u0027"},{"line_number":43,"context_line":"    })"},{"line_number":44,"context_line":"powervm_group \u003d cfg.OptGroup(name\u003d\u0027powervm\u0027, title\u003d\u0027PowerVM Driver options\u0027)"},{"line_number":45,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":46,"context_line":"logging.basicConfig()"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_0681ea4a","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":76},"updated":"2016-12-21 21:57:47.000000000","message":"Should we do this in the fixture?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"cea2a17d477de527f0c58d3c520a1e3138fac787","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \u0027z3-9-5-126-127-00000001\u0027: \u0027089ffb20-5d19-4a8c-bb80-13650627d985\u0027,"},{"line_number":42,"context_line":"        \u0027z3-9-5-126-208-000001f0\u0027: \u0027668b0882-c24a-4ae9-91c8-297e95e3fe29\u0027"},{"line_number":43,"context_line":"    })"},{"line_number":44,"context_line":"powervm_group \u003d cfg.OptGroup(name\u003d\u0027powervm\u0027, title\u003d\u0027PowerVM Driver options\u0027)"},{"line_number":45,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":46,"context_line":"logging.basicConfig()"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_e52a6c8f","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":76},"in_reply_to":"fa48f94a_0681ea4a","updated":"2016-12-28 12:04:22.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027z3-9-5-126-208-000001f0\u0027: \u0027668b0882-c24a-4ae9-91c8-297e95e3fe29\u0027"},{"line_number":43,"context_line":"    })"},{"line_number":44,"context_line":"powervm_group \u003d cfg.OptGroup(name\u003d\u0027powervm\u0027, title\u003d\u0027PowerVM Driver options\u0027)"},{"line_number":45,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":46,"context_line":"logging.basicConfig()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class FakeAdapterResponse(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_46c13280","line":46,"range":{"start_line":45,"start_character":0,"end_line":46,"end_character":21},"updated":"2016-12-21 21:57:47.000000000","message":"Why are we doing this?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"cea2a17d477de527f0c58d3c520a1e3138fac787","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027z3-9-5-126-208-000001f0\u0027: \u0027668b0882-c24a-4ae9-91c8-297e95e3fe29\u0027"},{"line_number":43,"context_line":"    })"},{"line_number":44,"context_line":"powervm_group \u003d cfg.OptGroup(name\u003d\u0027powervm\u0027, title\u003d\u0027PowerVM Driver options\u0027)"},{"line_number":45,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":46,"context_line":"logging.basicConfig()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class FakeAdapterResponse(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_051a107d","line":46,"range":{"start_line":45,"start_character":0,"end_line":46,"end_character":21},"in_reply_to":"fa48f94a_46c13280","updated":"2016-12-28 12:04:22.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":46,"context_line":"logging.basicConfig()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class FakeAdapterResponse(object):"},{"line_number":50,"context_line":"    def __init__(self, status):"},{"line_number":51,"context_line":"        self.status \u003d status"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class TestVMBuilder(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa48f94a_a6cf3eb2","line":51,"range":{"start_line":49,"start_character":0,"end_line":51,"end_character":28},"updated":"2016-12-21 21:57:47.000000000","message":"Not used; remove.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"logging.basicConfig()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class FakeAdapterResponse(object):"},{"line_number":50,"context_line":"    def __init__(self, status):"},{"line_number":51,"context_line":"        self.status \u003d status"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class TestVMBuilder(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_2b72357d","line":51,"range":{"start_line":49,"start_character":0,"end_line":51,"end_character":28},"in_reply_to":"fa48f94a_a6cf3eb2","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"df95145d9b6fe00f0446452fda018b8a31c56da4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from pypowervm.wrappers import base_partition as pvm_bp"},{"line_number":36,"context_line":"from pypowervm.wrappers import logical_partition as pvm_lpar"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LPAR_HTTPRESP_FILE \u003d \"lpar.txt\""},{"line_number":39,"context_line":"LPAR_MAPPING \u003d ("},{"line_number":40,"context_line":"    {"},{"line_number":41,"context_line":"        \u0027z3-9-5-126-127-00000001\u0027: \u0027089ffb20-5d19-4a8c-bb80-13650627d985\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a57fde8_21ddf042","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":31},"updated":"2017-01-12 13:38:40.000000000","message":"See previous complaint.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"bcc04c05a8cc4f2a43f3a8ed75bb66b78bb66257","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from pypowervm.wrappers import base_partition as pvm_bp"},{"line_number":36,"context_line":"from pypowervm.wrappers import logical_partition as pvm_lpar"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LPAR_HTTPRESP_FILE \u003d \"lpar.txt\""},{"line_number":39,"context_line":"LPAR_MAPPING \u003d ("},{"line_number":40,"context_line":"    {"},{"line_number":41,"context_line":"        \u0027z3-9-5-126-127-00000001\u0027: \u0027089ffb20-5d19-4a8c-bb80-13650627d985\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a3c09a3_64e24aa1","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":31},"in_reply_to":"9a57fde8_21ddf042","updated":"2017-01-17 05:39:09.000000000","message":"Done","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"df95145d9b6fe00f0446452fda018b8a31c56da4","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    def test_get_vm_qp(self):"},{"line_number":421,"context_line":"        def adapter_read(root_type, root_id\u003dNone, suffix_type\u003dNone,"},{"line_number":422,"context_line":"                         suffix_parm\u003dNone, helpers\u003dNone):"},{"line_number":423,"context_line":"            json_str \u003d (u\u0027{\"IsVirtualServiceAttentionLEDOn\":\"false\",\"Migration\u0027"},{"line_number":424,"context_line":"                        u\u0027State\":\"Not_Migrating\",\"CurrentProcessingUnits\":0.1,\u0027"},{"line_number":425,"context_line":"                        u\u0027\"ProgressState\":null,\"PartitionType\":\"AIX/Linux\",\"Pa\u0027"},{"line_number":426,"context_line":"                        u\u0027rtitionID\":1,\"AllocatedVirtualProcessors\":1,\"Partiti\u0027"},{"line_number":427,"context_line":"                        u\u0027onState\":\"not activated\",\"RemoteRestartState\":\"Inval\u0027"},{"line_number":428,"context_line":"                        u\u0027id\",\"OperatingSystemVersion\":\"Unknown\",\"AssociatedMa\u0027"},{"line_number":429,"context_line":"                        u\u0027nagedSystem\":\"https://9.1.2.3:12443/rest/api/uom/Man\u0027"},{"line_number":430,"context_line":"                        u\u0027agedSystem/98498bed-c78a-3a4f-b90a-4b715418fcb6\",\"RM\u0027"},{"line_number":431,"context_line":"                        u\u0027CState\":\"inactive\",\"PowerManagementMode\":null,\"Parti\u0027"},{"line_number":432,"context_line":"                        u\u0027tionName\":\"lpar-1-06674231-lpar\",\"HasDedicatedProces\u0027"},{"line_number":433,"context_line":"                        u\u0027sors\":\"false\",\"ResourceMonitoringIPAddress\":null,\"Re\u0027"},{"line_number":434,"context_line":"                        u\u0027ferenceCode\":\"00000000\",\"CurrentProcessors\":null,\"Cu\u0027"},{"line_number":435,"context_line":"                        u\u0027rrentMemory\":512,\"SharingMode\":\"uncapped\"}\u0027)"},{"line_number":436,"context_line":"            self.assertEqual(\u0027LogicalPartition\u0027, root_type)"},{"line_number":437,"context_line":"            self.assertEqual(\u0027lpar_uuid\u0027, root_id)"},{"line_number":438,"context_line":"            self.assertEqual(\u0027quick\u0027, suffix_type)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a57fde8_01a62cc1","line":435,"range":{"start_line":423,"start_character":0,"end_line":435,"end_character":70},"updated":"2017-01-12 13:38:40.000000000","message":"bleh...I don\u0027t know how I feel about us embedding all this in a test file.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"bcc04c05a8cc4f2a43f3a8ed75bb66b78bb66257","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    def test_get_vm_qp(self):"},{"line_number":421,"context_line":"        def adapter_read(root_type, root_id\u003dNone, suffix_type\u003dNone,"},{"line_number":422,"context_line":"                         suffix_parm\u003dNone, helpers\u003dNone):"},{"line_number":423,"context_line":"            json_str \u003d (u\u0027{\"IsVirtualServiceAttentionLEDOn\":\"false\",\"Migration\u0027"},{"line_number":424,"context_line":"                        u\u0027State\":\"Not_Migrating\",\"CurrentProcessingUnits\":0.1,\u0027"},{"line_number":425,"context_line":"                        u\u0027\"ProgressState\":null,\"PartitionType\":\"AIX/Linux\",\"Pa\u0027"},{"line_number":426,"context_line":"                        u\u0027rtitionID\":1,\"AllocatedVirtualProcessors\":1,\"Partiti\u0027"},{"line_number":427,"context_line":"                        u\u0027onState\":\"not activated\",\"RemoteRestartState\":\"Inval\u0027"},{"line_number":428,"context_line":"                        u\u0027id\",\"OperatingSystemVersion\":\"Unknown\",\"AssociatedMa\u0027"},{"line_number":429,"context_line":"                        u\u0027nagedSystem\":\"https://9.1.2.3:12443/rest/api/uom/Man\u0027"},{"line_number":430,"context_line":"                        u\u0027agedSystem/98498bed-c78a-3a4f-b90a-4b715418fcb6\",\"RM\u0027"},{"line_number":431,"context_line":"                        u\u0027CState\":\"inactive\",\"PowerManagementMode\":null,\"Parti\u0027"},{"line_number":432,"context_line":"                        u\u0027tionName\":\"lpar-1-06674231-lpar\",\"HasDedicatedProces\u0027"},{"line_number":433,"context_line":"                        u\u0027sors\":\"false\",\"ResourceMonitoringIPAddress\":null,\"Re\u0027"},{"line_number":434,"context_line":"                        u\u0027ferenceCode\":\"00000000\",\"CurrentProcessors\":null,\"Cu\u0027"},{"line_number":435,"context_line":"                        u\u0027rrentMemory\":512,\"SharingMode\":\"uncapped\"}\u0027)"},{"line_number":436,"context_line":"            self.assertEqual(\u0027LogicalPartition\u0027, root_type)"},{"line_number":437,"context_line":"            self.assertEqual(\u0027lpar_uuid\u0027, root_id)"},{"line_number":438,"context_line":"            self.assertEqual(\u0027quick\u0027, suffix_type)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a3c09a3_6f1f5e6c","line":435,"range":{"start_line":423,"start_character":0,"end_line":435,"end_character":70},"in_reply_to":"9a57fde8_01a62cc1","updated":"2017-01-17 05:39:09.000000000","message":"I will try to use jsonutils to do with this string. You can review it again.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"}],"nova/virt/powervm/__init__.py":[{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"dd86b34a3a7681d20d9595f63e0277f9a5059a19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1a6eadb0_6343496d","updated":"2016-12-19 15:19:42.000000000","message":"add namespace for powervm driver class","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"8488e594d20dab803e512dc690cdfc6b50d193fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"da4df55a_ffd3e6d2","in_reply_to":"1a6eadb0_6343496d","updated":"2016-12-28 03:41:45.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ad11eceda64942d6b6eeec3f9258ee34a2f4ddb2","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.virt.powervm import driver"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"PowerVMDriver \u003d driver.PowerVMDriver"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a3905b3_29e6a2e8","line":19,"updated":"2017-01-25 07:45:10.000000000","message":"Why do you do this thing?","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"efc1001995562002921396106729d95853f96876","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.virt.powervm import driver"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"PowerVMDriver \u003d driver.PowerVMDriver"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a461143_3d3fd026","line":19,"in_reply_to":"5a3905b3_29e6a2e8","updated":"2017-01-25 17:46:22.000000000","message":"\"Because all the other drivers do it\"? [1][2][3][4][5]\n\nBased on sdague\u0027s comment in [4], I guess it\u0027s so the consumer can say:\n\n compute_driver \u003d powervm.PowerVMDriver\n\n...in their nova.conf, rather than the (oh-so-much-more-tedious):\n\n compute_driver \u003d powervm.driver.PowerVMDriver\n\n[1] https://github.com/openstack/nova/blob/master/nova/virt/hyperv/__init__.py\n[2] https://github.com/openstack/nova/blob/master/nova/virt/ironic/__init__.py\n[3] https://github.com/openstack/nova/blob/master/nova/virt/libvirt/__init__.py\n[4] https://github.com/openstack/nova/blob/master/nova/virt/vmwareapi/__init__.py\n[5] https://github.com/openstack/nova/blob/master/nova/virt/xenapi/__init__.py","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"}],"nova/virt/powervm/driver.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class PowerVMDriver(driver.ComputeDriver):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    \"\"\"PowerVM Implementation of Compute Driver.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    capabilities \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_8fae3b2c","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":0},"updated":"2016-12-12 16:38:37.000000000","message":"nit: unneeded whitespace","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class PowerVMDriver(driver.ComputeDriver):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    \"\"\"PowerVM Implementation of Compute Driver.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    capabilities \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_18d84a53","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":0},"in_reply_to":"3a71b18c_8fae3b2c","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"supports_recreate\": False,"},{"line_number":50,"context_line":"        \"supports_migrate_to_same_host\": False,"},{"line_number":51,"context_line":"        \"supports_attach_interface\": False,"},{"line_number":52,"context_line":"        \"supports_device_tagging\": False"},{"line_number":53,"context_line":"    }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def __init__(self, virtapi):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_4f46e37b","line":52,"updated":"2016-12-12 16:38:37.000000000","message":"nit: should add a trailing comma in case other capabilities are added in the future to minimize the diff.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"supports_recreate\": False,"},{"line_number":50,"context_line":"        \"supports_migrate_to_same_host\": False,"},{"line_number":51,"context_line":"        \"supports_attach_interface\": False,"},{"line_number":52,"context_line":"        \"supports_device_tagging\": False"},{"line_number":53,"context_line":"    }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def __init__(self, virtapi):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_98e45a0e","line":52,"in_reply_to":"3a71b18c_4f46e37b","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Setup the adapter to communicate with pypowervm"},{"line_number":65,"context_line":"        self._get_adapter()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # First need to resolve the managed host UUID"},{"line_number":68,"context_line":"        self._get_host_uuid()"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_c2d7dc21","line":66,"updated":"2016-12-12 16:38:37.000000000","message":"There is no need to insert a blank line after every statement. Blank lines should be used to group blocks of code. This comment applies to the entire script.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Setup the adapter to communicate with pypowervm"},{"line_number":65,"context_line":"        self._get_adapter()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # First need to resolve the managed host UUID"},{"line_number":68,"context_line":"        self._get_host_uuid()"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_18a68ac1","line":66,"in_reply_to":"1a6eadb0_c2d7dc21","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"7bc6da5d833a2ff4b5b7d570329ad20e0af1c171","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self._get_adapter()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # First need to resolve the managed host UUID"},{"line_number":68,"context_line":"        self._get_host_uuid()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Make sure the Virtual I/O Server(s) are available."},{"line_number":71,"context_line":"        pvm_par.validate_vios_ready(self.adapter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_29ce072d","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":29},"updated":"2016-12-12 13:19:21.000000000","message":"Is this method missed? There is no this method in this module.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self._get_adapter()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # First need to resolve the managed host UUID"},{"line_number":68,"context_line":"        self._get_host_uuid()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Make sure the Virtual I/O Server(s) are available."},{"line_number":71,"context_line":"        pvm_par.validate_vios_ready(self.adapter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_7895be3e","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":29},"in_reply_to":"3a71b18c_29ce072d","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            pvm_inst_uuid \u003d vm.get_pvm_uuid(instance)"},{"line_number":216,"context_line":"            _setup_flow_and_run()"},{"line_number":217,"context_line":"        except exception.InstanceNotFound:"},{"line_number":218,"context_line":"            LOG.warning(_LW(\u0027VM was not found during destroy operation.\u0027),"},{"line_number":219,"context_line":"                        instance\u003dinstance)"},{"line_number":220,"context_line":"            return"},{"line_number":221,"context_line":"        except pvm_exc.HttpError as e:"},{"line_number":222,"context_line":"            # See if we were operating on the LPAR that we\u0027re deleting"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_e2aa1885","line":219,"range":{"start_line":218,"start_character":12,"end_line":219,"end_character":42},"updated":"2016-12-12 16:38:37.000000000","message":"Looks like there should be a placeholder for the \u0027instance\u0027 in the error message.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            pvm_inst_uuid \u003d vm.get_pvm_uuid(instance)"},{"line_number":216,"context_line":"            _setup_flow_and_run()"},{"line_number":217,"context_line":"        except exception.InstanceNotFound:"},{"line_number":218,"context_line":"            LOG.warning(_LW(\u0027VM was not found during destroy operation.\u0027),"},{"line_number":219,"context_line":"                        instance\u003dinstance)"},{"line_number":220,"context_line":"            return"},{"line_number":221,"context_line":"        except pvm_exc.HttpError as e:"},{"line_number":222,"context_line":"            # See if we were operating on the LPAR that we\u0027re deleting"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_f32571ae","line":219,"range":{"start_line":218,"start_character":12,"end_line":219,"end_character":42},"in_reply_to":"1a6eadb0_e2aa1885","updated":"2016-12-13 06:40:53.000000000","message":"Pass the \u0027instance\u0027 to Log object. It would handle it and print \u0027instance\u0027 info. This info would not combine with this warning message.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            if resp.status \u003d\u003d 404 and re.search(exp, resp.reqpath):"},{"line_number":227,"context_line":"                # It\u0027s the LPAR, so just return."},{"line_number":228,"context_line":"                LOG.warning(_LW(\u0027VM was not found during destroy operation.\u0027),"},{"line_number":229,"context_line":"                            instance\u003dinstance)"},{"line_number":230,"context_line":"                return"},{"line_number":231,"context_line":"            else:"},{"line_number":232,"context_line":"                LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_02871410","line":229,"range":{"start_line":229,"start_character":28,"end_line":229,"end_character":44},"updated":"2016-12-12 16:38:37.000000000","message":"Same comment here - no placeholder for \u0027instance\u0027","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            if resp.status \u003d\u003d 404 and re.search(exp, resp.reqpath):"},{"line_number":227,"context_line":"                # It\u0027s the LPAR, so just return."},{"line_number":228,"context_line":"                LOG.warning(_LW(\u0027VM was not found during destroy operation.\u0027),"},{"line_number":229,"context_line":"                            instance\u003dinstance)"},{"line_number":230,"context_line":"                return"},{"line_number":231,"context_line":"            else:"},{"line_number":232,"context_line":"                LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_933efdb6","line":229,"range":{"start_line":229,"start_character":28,"end_line":229,"end_character":44},"in_reply_to":"1a6eadb0_02871410","updated":"2016-12-13 06:40:53.000000000","message":"same as above","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Run the destroy"},{"line_number":262,"context_line":"        self._log_operation(\u0027destroy\u0027, instance)"},{"line_number":263,"context_line":"        self._destroy("},{"line_number":264,"context_line":"            context, instance, block_device_info\u003dblock_device_info,"},{"line_number":265,"context_line":"            network_info\u003dnetwork_info, destroy_disks\u003ddestroy_disks,"},{"line_number":266,"context_line":"            shutdown\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_82aa446f","line":264,"range":{"start_line":263,"start_character":21,"end_line":264,"end_character":12},"updated":"2016-12-12 16:38:37.000000000","message":"super nit: this is odd formatting. Keep the params on the same line, and then wrap as needed.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"4e1f3b144d4cec24fa11cab4ed9e8f1e27745de1","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Run the destroy"},{"line_number":262,"context_line":"        self._log_operation(\u0027destroy\u0027, instance)"},{"line_number":263,"context_line":"        self._destroy("},{"line_number":264,"context_line":"            context, instance, block_device_info\u003dblock_device_info,"},{"line_number":265,"context_line":"            network_info\u003dnetwork_info, destroy_disks\u003ddestroy_disks,"},{"line_number":266,"context_line":"            shutdown\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_37a194aa","line":264,"range":{"start_line":263,"start_character":21,"end_line":264,"end_character":12},"in_reply_to":"1a6eadb0_82aa446f","updated":"2016-12-13 07:08:29.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"b169b5e6eee2595bfddbc60fd8f2c291f63de090","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _get_host_uuid(self):"},{"line_number":81,"context_line":"        \"\"\"Get the System wrapper and its UUID for the (single) host.\"\"\""},{"line_number":82,"context_line":"        syswraps \u003d pvm_ms.System.wrap("},{"line_number":83,"context_line":"            self.adapter.read(pvm_ms.System.schema_type))"},{"line_number":84,"context_line":"        if len(syswraps) !\u003d 1:"},{"line_number":85,"context_line":"            raise Exception("},{"line_number":86,"context_line":"                _(\"Expected exactly one host; found %d\"), len(syswraps))"},{"line_number":87,"context_line":"        self.host_wrapper \u003d syswraps[0]"},{"line_number":88,"context_line":"        self.host_uuid \u003d self.host_wrapper.uuid"},{"line_number":89,"context_line":"        LOG.info(_LI(\"Host UUID is:%s\"), self.host_uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_d503e171","line":86,"range":{"start_line":82,"start_character":0,"end_line":86,"end_character":72},"updated":"2016-12-13 15:23:08.000000000","message":"We can simplify this method quite a bit now.  \n\nself.host_wrapper \u003d pvm_ms.System.get(self.adapter)[0]\nself.host_uuid \u003d self.host_wrapper.uuid\n\n\nThat exception isn\u0027t needed.  This is one of those things we can push back to nova-powervm as well.","commit_id":"e5858a70003fe7418966562082bf5abb488631eb"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"1347177e2d4fc7e521cfddd713cd6d1390287428","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _get_host_uuid(self):"},{"line_number":81,"context_line":"        \"\"\"Get the System wrapper and its UUID for the (single) host.\"\"\""},{"line_number":82,"context_line":"        syswraps \u003d pvm_ms.System.wrap("},{"line_number":83,"context_line":"            self.adapter.read(pvm_ms.System.schema_type))"},{"line_number":84,"context_line":"        if len(syswraps) !\u003d 1:"},{"line_number":85,"context_line":"            raise Exception("},{"line_number":86,"context_line":"                _(\"Expected exactly one host; found %d\"), len(syswraps))"},{"line_number":87,"context_line":"        self.host_wrapper \u003d syswraps[0]"},{"line_number":88,"context_line":"        self.host_uuid \u003d self.host_wrapper.uuid"},{"line_number":89,"context_line":"        LOG.info(_LI(\"Host UUID is:%s\"), self.host_uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_a279aefe","line":86,"range":{"start_line":82,"start_character":0,"end_line":86,"end_character":72},"in_reply_to":"1a6eadb0_d503e171","updated":"2016-12-14 04:58:15.000000000","message":"Done","commit_id":"e5858a70003fe7418966562082bf5abb488631eb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from pypowervm.helpers import vios_busy as vio_hlp"},{"line_number":23,"context_line":"from pypowervm.tasks import partition as pvm_par"},{"line_number":24,"context_line":"from pypowervm.wrappers import managed_system as pvm_ms"},{"line_number":25,"context_line":"import re"},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":"from taskflow import engines as tf_eng"},{"line_number":28,"context_line":"from taskflow.patterns import linear_flow as tf_lf"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_7146f8c0","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":10},"updated":"2016-12-21 21:57:47.000000000","message":"Separate the stdlib imports","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from pypowervm.helpers import vios_busy as vio_hlp"},{"line_number":23,"context_line":"from pypowervm.tasks import partition as pvm_par"},{"line_number":24,"context_line":"from pypowervm.wrappers import managed_system as pvm_ms"},{"line_number":25,"context_line":"import re"},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":"from taskflow import engines as tf_eng"},{"line_number":28,"context_line":"from taskflow.patterns import linear_flow as tf_lf"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_8b69618e","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":10},"in_reply_to":"da4df55a_7146f8c0","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"dd86b34a3a7681d20d9595f63e0277f9a5059a19","unresolved":false,"context_lines":[{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class PowerVMDriver(driver.ComputeDriver):"},{"line_number":44,"context_line":"    \"\"\"PowerVM Implementation of Compute Driver.\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    capabilities \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_e3c3d936","line":43,"range":{"start_line":43,"start_character":41,"end_line":43,"end_character":42},"updated":"2016-12-19 15:19:42.000000000","message":"need to implement get_available_nodes(),list_instances()","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"8488e594d20dab803e512dc690cdfc6b50d193fc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class PowerVMDriver(driver.ComputeDriver):"},{"line_number":44,"context_line":"    \"\"\"PowerVM Implementation of Compute Driver.\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    capabilities \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_bf507e33","line":43,"range":{"start_line":43,"start_character":41,"end_line":43,"end_character":42},"in_reply_to":"1a6eadb0_e3c3d936","updated":"2016-12-28 03:41:45.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":13883,"name":"Adam Reznechek","email":"adreznec@us.ibm.com","username":"adrez"},"change_message_id":"44561d3b9b4f69645ffef5079c0a2319fd522a8c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def init_host(self, host):"},{"line_number":58,"context_line":"        \"\"\"Initialize anything that is necessary for the driver to function."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        Includes catching up with currently running VM\u0027s on the given host."},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Setup the adapter to communicate with pypowervm"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_1397c348","line":60,"range":{"start_line":60,"start_character":54,"end_line":60,"end_character":55},"updated":"2016-12-15 13:55:49.000000000","message":"(nit) VMs","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def init_host(self, host):"},{"line_number":58,"context_line":"        \"\"\"Initialize anything that is necessary for the driver to function."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        Includes catching up with currently running VM\u0027s on the given host."},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Setup the adapter to communicate with pypowervm"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_cb09a9df","line":60,"range":{"start_line":60,"start_character":54,"end_line":60,"end_character":55},"in_reply_to":"1a6eadb0_1397c348","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":13883,"name":"Adam Reznechek","email":"adreznec@us.ibm.com","username":"adrez"},"change_message_id":"44561d3b9b4f69645ffef5079c0a2319fd522a8c","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_adapter(self):"},{"line_number":73,"context_line":"        # Build the adapter.  May need to attempt the connection multiple times"},{"line_number":74,"context_line":"        # in case the PowerVM management API service is starting."},{"line_number":75,"context_line":"        self.session \u003d pvm_apt.Session(conn_tries\u003d300)"},{"line_number":76,"context_line":"        self.adapter \u003d pvm_apt.Adapter("},{"line_number":77,"context_line":"            self.session, helpers\u003d[log_hlp.log_helper,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_66a83778","line":74,"range":{"start_line":74,"start_character":53,"end_line":74,"end_character":64},"updated":"2016-12-15 13:55:49.000000000","message":"(nit) Maybe \"not yet started\"?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"dd86b34a3a7681d20d9595f63e0277f9a5059a19","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        data \u003d host.build_host_resource_from_ms(self.host_wrapper)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Add the disk information"},{"line_number":113,"context_line":"        data[\"local_gb\"] \u003d self.disk_dvr.capacity"},{"line_number":114,"context_line":"        data[\"local_gb_used\"] \u003d self.disk_dvr.capacity_used"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_8386a511","line":113,"range":{"start_line":113,"start_character":32,"end_line":113,"end_character":40},"updated":"2016-12-19 15:19:42.000000000","message":"need to define this attribute.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"8488e594d20dab803e512dc690cdfc6b50d193fc","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        data \u003d host.build_host_resource_from_ms(self.host_wrapper)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Add the disk information"},{"line_number":113,"context_line":"        data[\"local_gb\"] \u003d self.disk_dvr.capacity"},{"line_number":114,"context_line":"        data[\"local_gb_used\"] \u003d self.disk_dvr.capacity_used"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_5aaec0e6","line":113,"range":{"start_line":113,"start_character":32,"end_line":113,"end_character":40},"in_reply_to":"1a6eadb0_8386a511","updated":"2016-12-28 03:41:45.000000000","message":"hard code this value for temporarily. This is to be fix in the https://review.openstack.org/#/c/409401","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        # If we\u0027re recreating pass None in for the FeedTask. This will make the"},{"line_number":160,"context_line":"        # Create task produce a FeedTask that will be used to scrub stale"},{"line_number":161,"context_line":"        # adapters immediately after the LPAR is created."},{"line_number":162,"context_line":"        flow_spawn.add(tf_vm.Create("},{"line_number":163,"context_line":"            self.adapter, self.host_wrapper, instance, flavor))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # TODO(thorst, efried) Plug the VIFs"},{"line_number":166,"context_line":"        # TODO(thorst, efried) Create/Connect the disk"},{"line_number":167,"context_line":"        # TODO(thorst, efried) Add the config drive"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Last step is to power on the system."},{"line_number":170,"context_line":"        flow_spawn.add(tf_vm.PowerOn(self.adapter, self.host_uuid, instance))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # Run the flow."},{"line_number":173,"context_line":"        tf_eng.run(flow_spawn)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_b47daee9","line":170,"range":{"start_line":162,"start_character":0,"end_line":170,"end_character":77},"updated":"2016-12-21 21:57:47.000000000","message":"Are we going out of the gate with no disk/network?","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                                        pvm_inst_uuid, instance,"},{"line_number":204,"context_line":"                                        force_immediate\u003ddestroy_disks))"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # Call the unplug VIFs task.  While CNAs get removed from the LPAR"},{"line_number":207,"context_line":"            # directly on the destroy, this clears up the I/O Host side."},{"line_number":208,"context_line":"            flow.add(tf_vm.Get(self.adapter, self.host_uuid, instance))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # TODO(thorst, efried) Add unplug vifs task"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_542f22a1","line":207,"range":{"start_line":206,"start_character":0,"end_line":207,"end_character":72},"updated":"2016-12-21 21:57:47.000000000","message":"This comment doesn\u0027t relate to the code below it (or to anything that\u0027s being done in this method currently).  Remove.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                                        pvm_inst_uuid, instance,"},{"line_number":204,"context_line":"                                        force_immediate\u003ddestroy_disks))"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # Call the unplug VIFs task.  While CNAs get removed from the LPAR"},{"line_number":207,"context_line":"            # directly on the destroy, this clears up the I/O Host side."},{"line_number":208,"context_line":"            flow.add(tf_vm.Get(self.adapter, self.host_uuid, instance))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # TODO(thorst, efried) Add unplug vifs task"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_6b035db9","line":207,"range":{"start_line":206,"start_character":0,"end_line":207,"end_character":72},"in_reply_to":"da4df55a_542f22a1","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # Call the unplug VIFs task.  While CNAs get removed from the LPAR"},{"line_number":207,"context_line":"            # directly on the destroy, this clears up the I/O Host side."},{"line_number":208,"context_line":"            flow.add(tf_vm.Get(self.adapter, self.host_uuid, instance))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # TODO(thorst, efried) Add unplug vifs task"},{"line_number":211,"context_line":"            # TODO(thorst, efried) Add config drive tasks"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_9417ca53","line":208,"range":{"start_line":208,"start_character":0,"end_line":208,"end_character":71},"updated":"2016-12-21 21:57:47.000000000","message":"This doesn\u0027t do anything.  Remove.\n\n[Later] I guess this was here so we could raise the correct InstanceNotFoundError if the instance goes away out-of-band.  Not sure that really gains us anything, since it could still disappear between steps.  And the second except clause below converts the 404 anyway if it slips through from dlt_lpar.\n\nSo yeah.  Remove.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # Call the unplug VIFs task.  While CNAs get removed from the LPAR"},{"line_number":207,"context_line":"            # directly on the destroy, this clears up the I/O Host side."},{"line_number":208,"context_line":"            flow.add(tf_vm.Get(self.adapter, self.host_uuid, instance))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # TODO(thorst, efried) Add unplug vifs task"},{"line_number":211,"context_line":"            # TODO(thorst, efried) Add config drive tasks"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_8b0081ac","line":208,"range":{"start_line":208,"start_character":0,"end_line":208,"end_character":71},"in_reply_to":"da4df55a_9417ca53","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"c7380b58d4405940b572ebf521e53d8a8f97f975","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            # directly on the destroy, this clears up the I/O Host side."},{"line_number":208,"context_line":"            flow.add(tf_vm.Get(self.adapter, self.host_uuid, instance))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # TODO(thorst, efried) Add unplug vifs task"},{"line_number":211,"context_line":"            # TODO(thorst, efried) Add config drive tasks"},{"line_number":212,"context_line":"            # TODO(thorst, efried) Add volume disconnect tasks"},{"line_number":213,"context_line":"            # TODO(thorst, efried) Add disk disconnect/destroy tasks"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            # TODO(thorst, efried) Add LPAR id based scsi map clean up task"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            # Note: If moving to a Graph Flow, will need to change to depend on"},{"line_number":218,"context_line":"            # the prior step."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_d5dd4ae1","line":215,"range":{"start_line":210,"start_character":12,"end_line":215,"end_character":75},"updated":"2016-12-15 02:47:00.000000000","message":"if this not implement,when you delete the lpar ,will leave over unnecessary config in the prof and in the Hardware!","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":13883,"name":"Adam Reznechek","email":"adreznec@us.ibm.com","username":"adrez"},"change_message_id":"44561d3b9b4f69645ffef5079c0a2319fd522a8c","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            # directly on the destroy, this clears up the I/O Host side."},{"line_number":208,"context_line":"            flow.add(tf_vm.Get(self.adapter, self.host_uuid, instance))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # TODO(thorst, efried) Add unplug vifs task"},{"line_number":211,"context_line":"            # TODO(thorst, efried) Add config drive tasks"},{"line_number":212,"context_line":"            # TODO(thorst, efried) Add volume disconnect tasks"},{"line_number":213,"context_line":"            # TODO(thorst, efried) Add disk disconnect/destroy tasks"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            # TODO(thorst, efried) Add LPAR id based scsi map clean up task"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            # Note: If moving to a Graph Flow, will need to change to depend on"},{"line_number":218,"context_line":"            # the prior step."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_66011706","line":215,"range":{"start_line":210,"start_character":12,"end_line":215,"end_character":75},"in_reply_to":"1a6eadb0_d5dd4ae1","updated":"2016-12-15 13:55:49.000000000","message":"Actually none of those features are supported for creation yet, so there won\u0027t be anything to clean up.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d59234dee97ae0a3e62acf8b728395d765952b57","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def get_info(self, instance):"},{"line_number":97,"context_line":"        \"\"\"Get the current status of an instance, by name (not ID!)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Returns a dict containing:"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :state:           the running state, one of the power_state codes"},{"line_number":102,"context_line":"        :max_mem:         (int) the maximum memory in KBytes allowed"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5201f7_280af821","line":99,"updated":"2017-01-03 15:55:02.000000000","message":"Not a dict.  A nova.virt.hardware.InstanceInfo object.","commit_id":"810717671b7b741296d8a26cb36837a4328ea503"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"60f9b2fc9584eb7820a6300e094cee6d79a3681f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def get_info(self, instance):"},{"line_number":97,"context_line":"        \"\"\"Get the current status of an instance, by name (not ID!)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Returns a dict containing:"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :state:           the running state, one of the power_state codes"},{"line_number":102,"context_line":"        :max_mem:         (int) the maximum memory in KBytes allowed"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5201f7_274bf0ca","line":99,"in_reply_to":"ba5201f7_280af821","updated":"2017-01-04 03:34:48.000000000","message":"Done","commit_id":"810717671b7b741296d8a26cb36837a4328ea503"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d59234dee97ae0a3e62acf8b728395d765952b57","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                  \u0027name\u0027: instance.name},"},{"line_number":94,"context_line":"                 instance\u003dinstance)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_info(self, instance):"},{"line_number":97,"context_line":"        \"\"\"Get the current status of an instance, by name (not ID!)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Returns a dict containing:"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :state:           the running state, one of the power_state codes"},{"line_number":102,"context_line":"        :max_mem:         (int) the maximum memory in KBytes allowed"},{"line_number":103,"context_line":"        :mem:             (int) the memory in KBytes used by the domain"},{"line_number":104,"context_line":"        :num_cpu:         (int) the number of virtual CPUs for the domain"},{"line_number":105,"context_line":"        :cpu_time:        (int) the CPU time used in nanoseconds"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":"        info \u003d vm.InstanceInfo(self.adapter, instance.name,"},{"line_number":108,"context_line":"                               vm.get_pvm_uuid(instance))"},{"line_number":109,"context_line":"        return info"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def list_instances(self):"},{"line_number":112,"context_line":"        \"\"\"Return the names of all the instances known to the virt host."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        :return: VM Names as a list."},{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        lpar_list \u003d vm.get_lpar_names(self.adapter)"},{"line_number":117,"context_line":"        return lpar_list"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":120,"context_line":"        \"\"\"Returns nodenames of all nodes managed by the compute service."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        This method is for multi compute-nodes support. If a driver supports"},{"line_number":123,"context_line":"        multi compute-nodes, this method returns a list of nodenames managed"},{"line_number":124,"context_line":"        by the service. Otherwise, this method should return"},{"line_number":125,"context_line":"        [hypervisor_hostname]."},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        return [self.host_wrapper.mtms.mtms_str]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_available_resource(self, nodename):"},{"line_number":131,"context_line":"        \"\"\"Retrieve resource information."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5201f7_2536a152","line":129,"range":{"start_line":96,"start_character":0,"end_line":129,"end_character":0},"updated":"2017-01-03 15:55:02.000000000","message":"Opportunity to split into smaller change sets if desired.  These informational methods and their supporting methods in nova.virt.powervm.vm could be in a separate change set to precede this one (spawn/destroy).","commit_id":"810717671b7b741296d8a26cb36837a4328ea503"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"60f9b2fc9584eb7820a6300e094cee6d79a3681f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                  \u0027name\u0027: instance.name},"},{"line_number":94,"context_line":"                 instance\u003dinstance)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_info(self, instance):"},{"line_number":97,"context_line":"        \"\"\"Get the current status of an instance, by name (not ID!)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Returns a dict containing:"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :state:           the running state, one of the power_state codes"},{"line_number":102,"context_line":"        :max_mem:         (int) the maximum memory in KBytes allowed"},{"line_number":103,"context_line":"        :mem:             (int) the memory in KBytes used by the domain"},{"line_number":104,"context_line":"        :num_cpu:         (int) the number of virtual CPUs for the domain"},{"line_number":105,"context_line":"        :cpu_time:        (int) the CPU time used in nanoseconds"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":"        info \u003d vm.InstanceInfo(self.adapter, instance.name,"},{"line_number":108,"context_line":"                               vm.get_pvm_uuid(instance))"},{"line_number":109,"context_line":"        return info"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def list_instances(self):"},{"line_number":112,"context_line":"        \"\"\"Return the names of all the instances known to the virt host."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        :return: VM Names as a list."},{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        lpar_list \u003d vm.get_lpar_names(self.adapter)"},{"line_number":117,"context_line":"        return lpar_list"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":120,"context_line":"        \"\"\"Returns nodenames of all nodes managed by the compute service."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        This method is for multi compute-nodes support. If a driver supports"},{"line_number":123,"context_line":"        multi compute-nodes, this method returns a list of nodenames managed"},{"line_number":124,"context_line":"        by the service. Otherwise, this method should return"},{"line_number":125,"context_line":"        [hypervisor_hostname]."},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        return [self.host_wrapper.mtms.mtms_str]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_available_resource(self, nodename):"},{"line_number":131,"context_line":"        \"\"\"Retrieve resource information."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5201f7_c47142e2","line":129,"range":{"start_line":96,"start_character":0,"end_line":129,"end_character":0},"in_reply_to":"ba5201f7_2536a152","updated":"2017-01-04 03:34:48.000000000","message":"If these functions were included in to another change set, the nova-compute service can not start...","commit_id":"810717671b7b741296d8a26cb36837a4328ea503"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"d45a5a3af34c54ebbd5b3321cca95e89ab3bf94f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014, 2016 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_53404807","line":1,"range":{"start_line":1,"start_character":18,"end_line":1,"end_character":22},"updated":"2017-01-18 06:31:24.000000000","message":"this is change to 2017?","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"52d0e9750508176853bb29a8e4f2eaea76b0c291","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014, 2016 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_e8d5a542","line":1,"range":{"start_line":1,"start_character":18,"end_line":1,"end_character":22},"in_reply_to":"7a3c09a3_53404807","updated":"2017-01-18 14:50:51.000000000","message":"Yup, good find.  Done.","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"d45a5a3af34c54ebbd5b3321cca95e89ab3bf94f","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            # and it wasn\u0027t found"},{"line_number":265,"context_line":"            resp \u003d e.response"},{"line_number":266,"context_line":"            exp \u003d \u0027/ManagedSystem/.*/LogicalPartition/.*-.*-.*-.*-.*\u0027"},{"line_number":267,"context_line":"            if resp.status \u003d\u003d 404 and re.search(exp, resp.reqpath):"},{"line_number":268,"context_line":"                # It\u0027s the LPAR, so just return."},{"line_number":269,"context_line":"                LOG.warning(_LW(\u0027VM was not found during destroy operation.\u0027),"},{"line_number":270,"context_line":"                            instance\u003dinstance)"},{"line_number":271,"context_line":"                return"},{"line_number":272,"context_line":"            else:"},{"line_number":273,"context_line":"                LOG.exception(e)"},{"line_number":274,"context_line":"                # Convert to a Nova exception"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_3332dca7","line":271,"range":{"start_line":267,"start_character":12,"end_line":271,"end_character":22},"updated":"2017-01-18 06:31:24.000000000","message":"good!","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ad11eceda64942d6b6eeec3f9258ee34a2f4ddb2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def _get_adapter(self):"},{"line_number":74,"context_line":"        # Build the adapter.  May need to attempt the connection multiple times"},{"line_number":75,"context_line":"        # in case the PowerVM management API service is starting."},{"line_number":76,"context_line":"        self.session \u003d pvm_apt.Session(conn_tries\u003d300)"},{"line_number":77,"context_line":"        self.adapter \u003d pvm_apt.Adapter("},{"line_number":78,"context_line":"            self.session, helpers\u003d[log_hlp.log_helper,"},{"line_number":79,"context_line":"                                   vio_hlp.vios_busy_retry_helper])"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a3905b3_49020e71","line":76,"updated":"2017-01-25 07:45:10.000000000","message":"300 times though? How long does that thing take to start?!?","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"efc1001995562002921396106729d95853f96876","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def _get_adapter(self):"},{"line_number":74,"context_line":"        # Build the adapter.  May need to attempt the connection multiple times"},{"line_number":75,"context_line":"        # in case the PowerVM management API service is starting."},{"line_number":76,"context_line":"        self.session \u003d pvm_apt.Session(conn_tries\u003d300)"},{"line_number":77,"context_line":"        self.adapter \u003d pvm_apt.Adapter("},{"line_number":78,"context_line":"            self.session, helpers\u003d[log_hlp.log_helper,"},{"line_number":79,"context_line":"                                   vio_hlp.vios_busy_retry_helper])"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a461143_bd174053","line":76,"in_reply_to":"5a3905b3_49020e71","updated":"2017-01-25 17:46:22.000000000","message":"Longer than the compute process?\n\nThe retry delay is 2s, so we\u0027re talking 10 minutes here.  If your system just booted, it could take... a while.  It\u0027s a pretty heavyweight service, and it has to do a bunch of internal init before it\u0027s ready to accept requests.  That said, it should never reasonably be 10 minutes.  But if this fails, the compute process is dead in the water; so maybe this is a tad paranoid, but better safe than sorry.\n\nThoughts?","commit_id":"26360df7f96a456f4720d3b6b54b13847bb6b29f"}],"nova/virt/powervm/exception.py":[{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"df95145d9b6fe00f0446452fda018b8a31c56da4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from nova.i18n import _"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class PowerVMAPIFailed(nex.NovaException):"},{"line_number":24,"context_line":"    msg_fmt \u003d _(\"PowerVM API Failed to complete for instance\u003d%(inst_name)s.\""},{"line_number":25,"context_line":"                \"%(reason)s\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a57fde8_81f5bc84","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":29},"updated":"2017-01-12 13:38:40.000000000","message":"Should this go in nova/exception.py instead?  I don\u0027t see other drivers have specific exception files in them.\n\nObviously we can\u0027t do that when OOT, but now I think it makes sense.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8ff74fc96edcdc6169699268a83760f30b337fd9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from nova.i18n import _"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class PowerVMAPIFailed(nex.NovaException):"},{"line_number":24,"context_line":"    msg_fmt \u003d _(\"PowerVM API Failed to complete for instance\u003d%(inst_name)s.\""},{"line_number":25,"context_line":"                \"%(reason)s\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a3c09a3_bc7071a5","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":29},"in_reply_to":"9a57fde8_81f5bc84","updated":"2017-01-17 20:25:00.000000000","message":"This is done.\n\nThere will be about twenty of these by the time we\u0027re finished porting.  We may be able to consolidate some into existing nova exceptions.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"}],"nova/virt/powervm/host.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    pu_used \u003d float(proc_units) - float(proc_units_avail)"},{"line_number":60,"context_line":"    data[\u0027vcpus\u0027] \u003d int(math.ceil(float(proc_units)))"},{"line_number":61,"context_line":"    data[\u0027vcpus_used\u0027] \u003d int(math.ceil(pu_used))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    data[\u0027memory_mb\u0027] \u003d ms_wrapper.memory_configurable"},{"line_number":64,"context_line":"    data[\u0027memory_mb_used\u0027] \u003d (ms_wrapper.memory_configurable -"},{"line_number":65,"context_line":"                              ms_wrapper.memory_free)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_22f8907c","line":62,"updated":"2016-12-12 16:38:37.000000000","message":"There doesn\u0027t seem to be any rationale for the insertion of blank lines in this code.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    pu_used \u003d float(proc_units) - float(proc_units_avail)"},{"line_number":60,"context_line":"    data[\u0027vcpus\u0027] \u003d int(math.ceil(float(proc_units)))"},{"line_number":61,"context_line":"    data[\u0027vcpus_used\u0027] \u003d int(math.ceil(pu_used))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    data[\u0027memory_mb\u0027] \u003d ms_wrapper.memory_configurable"},{"line_number":64,"context_line":"    data[\u0027memory_mb_used\u0027] \u003d (ms_wrapper.memory_configurable -"},{"line_number":65,"context_line":"                              ms_wrapper.memory_free)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_d35f950c","line":62,"in_reply_to":"1a6eadb0_22f8907c","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import math"},{"line_number":18,"context_line":"from nova.objects import fields"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from oslo_serialization import jsonutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_37daa079","line":20,"range":{"start_line":17,"start_character":0,"end_line":20,"end_character":40},"updated":"2016-12-21 21:57:47.000000000","message":"Separate imports","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import math"},{"line_number":18,"context_line":"from nova.objects import fields"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from oslo_serialization import jsonutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_cb30c9a1","line":20,"range":{"start_line":17,"start_character":0,"end_line":20,"end_character":40},"in_reply_to":"da4df55a_37daa079","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"d45a5a3af34c54ebbd5b3321cca95e89ab3bf94f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014, 2016 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_b31ecc09","line":1,"range":{"start_line":1,"start_character":18,"end_line":1,"end_character":22},"updated":"2017-01-18 06:31:24.000000000","message":"2017","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"52d0e9750508176853bb29a8e4f2eaea76b0c291","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014, 2016 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_48c79995","line":1,"range":{"start_line":1,"start_character":18,"end_line":1,"end_character":22},"in_reply_to":"7a3c09a3_b31ecc09","updated":"2017-01-18 14:50:51.000000000","message":"Done","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"}],"nova/virt/powervm/tasks/base.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def execute(self, *args, **kwargs):"},{"line_number":45,"context_line":"        LOG.info(_LI(\u0027Running task %(task)s for instance %(inst)s\u0027),"},{"line_number":46,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name},"},{"line_number":47,"context_line":"                 instance\u003dself.instance)"},{"line_number":48,"context_line":"        start_time \u003d time.time()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        ret \u003d self.execute_impl(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_a27820fa","line":47,"range":{"start_line":47,"start_character":17,"end_line":47,"end_character":39},"updated":"2016-12-12 16:38:37.000000000","message":"Here and below this parameter doesn\u0027t seem to belong.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def execute(self, *args, **kwargs):"},{"line_number":45,"context_line":"        LOG.info(_LI(\u0027Running task %(task)s for instance %(inst)s\u0027),"},{"line_number":46,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name},"},{"line_number":47,"context_line":"                 instance\u003dself.instance)"},{"line_number":48,"context_line":"        start_time \u003d time.time()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        ret \u003d self.execute_impl(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_f3b9f1ed","line":47,"range":{"start_line":47,"start_character":17,"end_line":47,"end_character":39},"in_reply_to":"1a6eadb0_a27820fa","updated":"2016-12-13 06:40:53.000000000","message":"Used to provide log message and defined in constructor method.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":57,"context_line":"        return ret"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def execute_impl(self, **kwargs):"},{"line_number":60,"context_line":"        \"\"\"Execute the task.  Follows the TaskFlow execute signature.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def revert(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_d7dcf448","line":59,"updated":"2016-12-21 21:57:47.000000000","message":"Missing *args (which is used by the invocation in execute).","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":57,"context_line":"        return ret"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def execute_impl(self, **kwargs):"},{"line_number":60,"context_line":"        \"\"\"Execute the task.  Follows the TaskFlow execute signature.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def revert(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_0b2bb131","line":59,"in_reply_to":"da4df55a_d7dcf448","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":75,"context_line":"        return ret"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def revert_impl(self, result, flow_failures, **kwargs):"},{"line_number":78,"context_line":"        \"\"\"(Optional) Revert the task.  Follows TaskFlow revert signature.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_d743146b","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":59},"updated":"2016-12-21 21:57:47.000000000","message":"This doesn\u0027t appear to be the actual signature of revert in TaskFlow.  Probably best to use just *args, **kwargs.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"}],"nova/virt/powervm/tasks/vm.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Get(pvm_task.PowerVMTask):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    \"\"\"The task for getting a VM entry.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __init__(self, adapter, host_uuid, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_c2cb5c1d","line":33,"updated":"2016-12-12 16:38:37.000000000","message":"Here and in other class declarations: unneeded whitespace.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Get(pvm_task.PowerVMTask):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    \"\"\"The task for getting a VM entry.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __init__(self, adapter, host_uuid, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_b3c85976","line":33,"in_reply_to":"1a6eadb0_c2cb5c1d","updated":"2016-12-13 06:40:53.000000000","message":"Done","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"dd86b34a3a7681d20d9595f63e0277f9a5059a19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1a6eadb0_b6367de5","updated":"2016-12-19 15:19:42.000000000","message":"need to implement get_lpar_names() for list instances method.\nalso need get_lpars()","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"8488e594d20dab803e512dc690cdfc6b50d193fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"da4df55a_5a25e006","in_reply_to":"1a6eadb0_b6367de5","updated":"2016-12-28 03:41:45.000000000","message":"added these two method in powervm/vm.py","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"d45a5a3af34c54ebbd5b3321cca95e89ab3bf94f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2016 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_53aa0886","line":1,"range":{"start_line":1,"start_character":17,"end_line":1,"end_character":22},"updated":"2017-01-18 06:31:24.000000000","message":"2017","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"52d0e9750508176853bb29a8e4f2eaea76b0c291","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2016 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_08403106","line":1,"range":{"start_line":1,"start_character":17,"end_line":1,"end_character":22},"in_reply_to":"7a3c09a3_53aa0886","updated":"2017-01-18 14:50:51.000000000","message":"Done","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"d45a5a3af34c54ebbd5b3321cca95e89ab3bf94f","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        if isinstance(result, task_fail.Failure):"},{"line_number":155,"context_line":"            # The power on itself failed...can\u0027t power off."},{"line_number":156,"context_line":"            LOG.debug(\u0027Power on failed.  Not performing power off.\u0027)"},{"line_number":157,"context_line":"            return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        power.power_off(lpar_wrap, self.host_uuid, force_immediate\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_b3c88c56","line":156,"range":{"start_line":156,"start_character":16,"end_line":156,"end_character":21},"updated":"2017-01-18 06:31:24.000000000","message":"this should use warning!","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"52d0e9750508176853bb29a8e4f2eaea76b0c291","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        if isinstance(result, task_fail.Failure):"},{"line_number":155,"context_line":"            # The power on itself failed...can\u0027t power off."},{"line_number":156,"context_line":"            LOG.debug(\u0027Power on failed.  Not performing power off.\u0027)"},{"line_number":157,"context_line":"            return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        power.power_off(lpar_wrap, self.host_uuid, force_immediate\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_26afdf7d","line":156,"range":{"start_line":156,"start_character":16,"end_line":156,"end_character":21},"in_reply_to":"7a3c09a3_b3c88c56","updated":"2017-01-18 14:50:51.000000000","message":"Not sure I agree here.  This is the revert flow.  We only have something to do if the power-on succeeded in the first place.  It\u0027s not a warning-worthy event if we skip the power-off because the power-on failed.  Thoughts?","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"d45a5a3af34c54ebbd5b3321cca95e89ab3bf94f","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def execute_impl(self):"},{"line_number":182,"context_line":"        vm.power_off(self.adapter, self.instance, self.host_uuid,"},{"line_number":183,"context_line":"                     force_immediate\u003dself.force_immediate)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class Delete(pvm_task.PowerVMTask):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_132ec0fa","line":183,"range":{"start_line":183,"start_character":42,"end_line":183,"end_character":57},"updated":"2017-01-18 06:31:24.000000000","message":"this why not use osshutdown?immed some times will breakdown the os!","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"52d0e9750508176853bb29a8e4f2eaea76b0c291","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def execute_impl(self):"},{"line_number":182,"context_line":"        vm.power_off(self.adapter, self.instance, self.host_uuid,"},{"line_number":183,"context_line":"                     force_immediate\u003dself.force_immediate)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class Delete(pvm_task.PowerVMTask):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a3c09a3_08f2f105","line":183,"range":{"start_line":183,"start_character":42,"end_line":183,"end_character":57},"in_reply_to":"7a3c09a3_132ec0fa","updated":"2017-01-18 14:50:51.000000000","message":"self.force_immediate is only True when we\u0027re destroying the VM and therefore don\u0027t care if we break the OS.  If force_immediate is False, vm.power_off will indeed do osshutdown.","commit_id":"fcbe2ba641e06bee4af40e064b7173da0c4f4564"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b88ba76d8d823eb83b1293b0f590994a19586131","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Get(pvm_task.PowerVMTask):"},{"line_number":33,"context_line":"    \"\"\"The task for getting a VM entry.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, adapter, host_uuid, instance):"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a461143_0deccd28","line":32,"range":{"start_line":32,"start_character":6,"end_line":32,"end_character":9},"updated":"2017-01-31 20:54:40.000000000","message":"Is this used anywhere yet?  Kill it!","commit_id":"2c6cbcbad6a680441bf39aa1753eac7835c492fb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"30dfec24584c4cf3f277bfd11585bffda98337c4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Get(pvm_task.PowerVMTask):"},{"line_number":33,"context_line":"    \"\"\"The task for getting a VM entry.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, adapter, host_uuid, instance):"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a461143_cde485ad","line":32,"range":{"start_line":32,"start_character":6,"end_line":32,"end_character":9},"in_reply_to":"3a461143_0deccd28","updated":"2017-01-31 20:55:21.000000000","message":"Done","commit_id":"2c6cbcbad6a680441bf39aa1753eac7835c492fb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        return wrap"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def revert_impl(self, result, flow_failures, **kwargs):"},{"line_number":91,"context_line":"        # Only reverts failed rebuilds, because the revert"},{"line_number":92,"context_line":"        # for a failed build is handled in the manager."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if self.instance.task_state \u003d\u003d task_states.REBUILD_SPAWNING:"},{"line_number":95,"context_line":"            LOG.info(_LI(\u0027Rebuild of instance %s failed. \u0027"},{"line_number":96,"context_line":"                     \u0027Deleting instance from destination.\u0027),"},{"line_number":97,"context_line":"                     self.instance.name, instance\u003dself.instance)"},{"line_number":98,"context_line":"            vm.dlt_lpar(self.adapter, vm.get_pvm_uuid(self.instance))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class PowerOn(pvm_task.PowerVMTask):"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_ccac3f38","line":98,"range":{"start_line":90,"start_character":0,"end_line":98,"end_character":69},"updated":"2017-02-16 21:40:39.000000000","message":"Not needed until later - rebuild not yet supported.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8463276ad32dc05e48c2f87cd678594a9a804648","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        return wrap"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def revert_impl(self, result, flow_failures, **kwargs):"},{"line_number":91,"context_line":"        # Only reverts failed rebuilds, because the revert"},{"line_number":92,"context_line":"        # for a failed build is handled in the manager."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if self.instance.task_state \u003d\u003d task_states.REBUILD_SPAWNING:"},{"line_number":95,"context_line":"            LOG.info(_LI(\u0027Rebuild of instance %s failed. \u0027"},{"line_number":96,"context_line":"                     \u0027Deleting instance from destination.\u0027),"},{"line_number":97,"context_line":"                     self.instance.name, instance\u003dself.instance)"},{"line_number":98,"context_line":"            vm.dlt_lpar(self.adapter, vm.get_pvm_uuid(self.instance))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class PowerOn(pvm_task.PowerVMTask):"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_6c3a73e9","line":98,"range":{"start_line":90,"start_character":0,"end_line":98,"end_character":69},"in_reply_to":"fa31d9ce_ccac3f38","updated":"2017-02-16 21:41:29.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            vm.dlt_lpar(self.adapter, vm.get_pvm_uuid(self.instance))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class PowerOn(pvm_task.PowerVMTask):"},{"line_number":102,"context_line":"    \"\"\"The task to power on the instance.\"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def __init__(self, adapter, host_uuid, instance, pwr_opts\u003dNone,"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_ec1f43b5","line":101,"range":{"start_line":101,"start_character":6,"end_line":101,"end_character":13},"updated":"2017-02-16 21:40:39.000000000","message":"Need UT for this","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8463276ad32dc05e48c2f87cd678594a9a804648","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            vm.dlt_lpar(self.adapter, vm.get_pvm_uuid(self.instance))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class PowerOn(pvm_task.PowerVMTask):"},{"line_number":102,"context_line":"    \"\"\"The task to power on the instance.\"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def __init__(self, adapter, host_uuid, instance, pwr_opts\u003dNone,"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_8c3fa7d5","line":101,"range":{"start_line":101,"start_character":6,"end_line":101,"end_character":13},"in_reply_to":"fa31d9ce_ec1f43b5","updated":"2017-02-16 21:41:29.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        power.power_off(lpar_wrap, self.host_uuid, force_immediate\u003dTrue)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"class PowerOff(pvm_task.PowerVMTask):"},{"line_number":143,"context_line":"    \"\"\"The task to power off a VM.\"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def __init__(self, adapter, host_uuid, lpar_uuid, instance,"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_2c787bf8","line":142,"range":{"start_line":142,"start_character":6,"end_line":142,"end_character":14},"updated":"2017-02-16 21:40:39.000000000","message":"Need UT for this.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8463276ad32dc05e48c2f87cd678594a9a804648","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        power.power_off(lpar_wrap, self.host_uuid, force_immediate\u003dTrue)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"class PowerOff(pvm_task.PowerVMTask):"},{"line_number":143,"context_line":"    \"\"\"The task to power off a VM.\"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def __init__(self, adapter, host_uuid, lpar_uuid, instance,"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_ac246bc6","line":142,"range":{"start_line":142,"start_character":6,"end_line":142,"end_character":14},"in_reply_to":"fa31d9ce_2c787bf8","updated":"2017-02-16 21:41:29.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                     force_immediate\u003dself.force_immediate)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"class Delete(pvm_task.PowerVMTask):"},{"line_number":167,"context_line":"    \"\"\"The task to delete the instance from the system.\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def __init__(self, adapter, lpar_uuid, instance):"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_6c8273ca","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":12},"updated":"2017-02-16 21:40:39.000000000","message":"Need UT for this.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8463276ad32dc05e48c2f87cd678594a9a804648","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                     force_immediate\u003dself.force_immediate)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"class Delete(pvm_task.PowerVMTask):"},{"line_number":167,"context_line":"    \"\"\"The task to delete the instance from the system.\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def __init__(self, adapter, lpar_uuid, instance):"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_cc219fb6","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":12},"in_reply_to":"fa31d9ce_6c8273ca","updated":"2017-02-16 21:41:29.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"class Delete(pvm_task.PowerVMTask):"},{"line_number":167,"context_line":"    \"\"\"The task to delete the instance from the system.\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def __init__(self, adapter, lpar_uuid, instance):"},{"line_number":170,"context_line":"        \"\"\"Create the Task to delete the VM from the system."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        :param adapter: The adapter for the pypowervm API."}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_0c7497fb","line":169,"range":{"start_line":169,"start_character":32,"end_line":169,"end_character":41},"updated":"2017-02-16 21:40:39.000000000","message":"lpar_uuid isn\u0027t necessary.  Use get_pvm_uuid(instance) instead.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8463276ad32dc05e48c2f87cd678594a9a804648","unresolved":false,"context_lines":[{"line_number":166,"context_line":"class Delete(pvm_task.PowerVMTask):"},{"line_number":167,"context_line":"    \"\"\"The task to delete the instance from the system.\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def __init__(self, adapter, lpar_uuid, instance):"},{"line_number":170,"context_line":"        \"\"\"Create the Task to delete the VM from the system."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        :param adapter: The adapter for the pypowervm API."}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_ec2e63a4","line":169,"range":{"start_line":169,"start_character":32,"end_line":169,"end_character":41},"in_reply_to":"fa31d9ce_0c7497fb","updated":"2017-02-16 21:41:29.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"}],"nova/virt/powervm/vm.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9326d0d2a51a3316d145b4dda52566bf64a66f38","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            msg \u003d (_(\u0027Multiple Shared Processing Pools with name %(pool)s.\u0027) %"},{"line_number":366,"context_line":"                   {\u0027pool\u0027: pool_name})"},{"line_number":367,"context_line":"            raise exception.ValidationError(msg)"},{"line_number":368,"context_line":"        elif len(pool_wraps) \u003d\u003d 0:"},{"line_number":369,"context_line":"            msg \u003d (_(\u0027Unable to find Shared Processing Pool %(pool)s\u0027) %"},{"line_number":370,"context_line":"                   {\u0027pool\u0027: pool_name})"},{"line_number":371,"context_line":"            raise exception.ValidationError(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_a2302009","line":368,"range":{"start_line":368,"start_character":8,"end_line":368,"end_character":34},"updated":"2016-12-12 16:38:37.000000000","message":"Prefereable:\n\n    elif not pool_wraps:","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"eaf6738c947f11eb4a31cafdf136a6c3c485a43a","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            msg \u003d (_(\u0027Multiple Shared Processing Pools with name %(pool)s.\u0027) %"},{"line_number":366,"context_line":"                   {\u0027pool\u0027: pool_name})"},{"line_number":367,"context_line":"            raise exception.ValidationError(msg)"},{"line_number":368,"context_line":"        elif len(pool_wraps) \u003d\u003d 0:"},{"line_number":369,"context_line":"            msg \u003d (_(\u0027Unable to find Shared Processing Pool %(pool)s\u0027) %"},{"line_number":370,"context_line":"                   {\u0027pool\u0027: pool_name})"},{"line_number":371,"context_line":"            raise exception.ValidationError(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_3399a96f","line":368,"range":{"start_line":368,"start_character":8,"end_line":368,"end_character":34},"in_reply_to":"1a6eadb0_a2302009","updated":"2016-12-13 06:40:53.000000000","message":"pool_wraps is an array. It is empty or contains data.","commit_id":"5d43dc469f40ffe49643ccb5f0e5542fd65c8786"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            raise"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def power_on(adapter, instance, host_uuid, entry\u003dNone):"},{"line_number":85,"context_line":"    if entry is None:"},{"line_number":86,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_c03b489b","line":84,"range":{"start_line":84,"start_character":4,"end_line":84,"end_character":12},"updated":"2016-12-21 21:57:47.000000000","message":"doc this","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            raise"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def power_on(adapter, instance, host_uuid, entry\u003dNone):"},{"line_number":85,"context_line":"    if entry is None:"},{"line_number":86,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_8b17a1ec","line":84,"range":{"start_line":84,"start_character":4,"end_line":84,"end_character":12},"in_reply_to":"da4df55a_c03b489b","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    return False"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def power_off(adapter, instance, host_uuid, entry\u003dNone, add_parms\u003dNone,"},{"line_number":98,"context_line":"              force_immediate\u003dFalse):"},{"line_number":99,"context_line":"    if entry is None:"},{"line_number":100,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_4048382e","line":97,"range":{"start_line":97,"start_character":4,"end_line":97,"end_character":13},"updated":"2016-12-21 21:57:47.000000000","message":"doc this","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    return False"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def power_off(adapter, instance, host_uuid, entry\u003dNone, add_parms\u003dNone,"},{"line_number":98,"context_line":"              force_immediate\u003dFalse):"},{"line_number":99,"context_line":"    if entry is None:"},{"line_number":100,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_abd2a532","line":97,"range":{"start_line":97,"start_character":4,"end_line":97,"end_character":13},"in_reply_to":"da4df55a_4048382e","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    :param adapter: The adapter for the pypowervm API"},{"line_number":129,"context_line":"    :param lpar_uuid: The lpar to delete"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    # Attempt to delete the VM. If delete fails because of vterm"},{"line_number":132,"context_line":"    # we will close the vterm and try the delete again"},{"line_number":133,"context_line":"    try:"},{"line_number":134,"context_line":"        LOG.info(_LI(\u0027Deleting virtual machine. LPARID: %s\u0027), lpar_uuid)"},{"line_number":135,"context_line":"        # Ensure any vterms are closed.  Will no-op otherwise."}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_2095f43f","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":54},"updated":"2016-12-21 21:57:47.000000000","message":"Not quite accurate.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    :param adapter: The adapter for the pypowervm API"},{"line_number":129,"context_line":"    :param lpar_uuid: The lpar to delete"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    # Attempt to delete the VM. If delete fails because of vterm"},{"line_number":132,"context_line":"    # we will close the vterm and try the delete again"},{"line_number":133,"context_line":"    try:"},{"line_number":134,"context_line":"        LOG.info(_LI(\u0027Deleting virtual machine. LPARID: %s\u0027), lpar_uuid)"},{"line_number":135,"context_line":"        # Ensure any vterms are closed.  Will no-op otherwise."}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_cbd7e921","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":54},"in_reply_to":"da4df55a_2095f43f","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3d652dc2b8d9fece90778e60da930cc66d623216","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        :param host_w: The host system wrapper."},{"line_number":226,"context_line":"        :param adapter: The pypowervm.adapter.Adapter for the PowerVM REST API."},{"line_number":227,"context_line":"        :param slot_mgr: NovaSlotManager for setting/saving the maximum number"},{"line_number":228,"context_line":"                         of virtual slots on the VM."},{"line_number":229,"context_line":"        \"\"\""},{"line_number":230,"context_line":"        self.adapter \u003d adapter"},{"line_number":231,"context_line":"        self.host_w \u003d host_w"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_009e3056","line":228,"range":{"start_line":227,"start_character":0,"end_line":228,"end_character":52},"updated":"2016-12-21 21:57:47.000000000","message":"No such param; remove.","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9545645ec35fb0085d607127c74e87862fae5f7d","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        :param host_w: The host system wrapper."},{"line_number":226,"context_line":"        :param adapter: The pypowervm.adapter.Adapter for the PowerVM REST API."},{"line_number":227,"context_line":"        :param slot_mgr: NovaSlotManager for setting/saving the maximum number"},{"line_number":228,"context_line":"                         of virtual slots on the VM."},{"line_number":229,"context_line":"        \"\"\""},{"line_number":230,"context_line":"        self.adapter \u003d adapter"},{"line_number":231,"context_line":"        self.host_w \u003d host_w"}],"source_content_type":"text/x-python","patch_set":12,"id":"da4df55a_ebdcad48","line":228,"range":{"start_line":227,"start_character":0,"end_line":228,"end_character":52},"in_reply_to":"da4df55a_009e3056","updated":"2016-12-21 22:18:51.000000000","message":"Done","commit_id":"87493bde4730e88272357f8df1f9c05365b7d944"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d59234dee97ae0a3e62acf8b728395d765952b57","unresolved":false,"context_lines":[{"line_number":441,"context_line":"        self._adapter \u003d adapter"},{"line_number":442,"context_line":"        self._name \u003d name"},{"line_number":443,"context_line":"        self._uuid \u003d uuid"},{"line_number":444,"context_line":"        self.id \u003d uuid"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5201f7_c8196c7b","line":444,"updated":"2017-01-03 15:55:02.000000000","message":"Should this be the nova ID or the PowerVM ID?","commit_id":"810717671b7b741296d8a26cb36837a4328ea503"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b804dd43b643cbadb74bfebb5ff1dca717900895","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        \u0027share_idle_procs_active\u0027:"},{"line_number":335,"context_line":"            pvm_bp.DedicatedSharingMode.SHARE_IDLE_PROCS_ACTIVE,"},{"line_number":336,"context_line":"        \u0027share_idle_procs_always\u0027:"},{"line_number":337,"context_line":"            pvm_bp.DedicatedSharingMode.SHARE_IDLE_PROCS_ALWAYS"},{"line_number":338,"context_line":"    }"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def __init__(self, host_w, adapter):"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a461143_6dcd235d","line":337,"range":{"start_line":337,"start_character":62,"end_line":337,"end_character":63},"updated":"2017-02-01 21:25:17.000000000","message":"nit: should have a trailing comma","commit_id":"be3ca5e56a7d4d6465c2bde60da9414adbef7b88"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"0855784c2c524c6bede58cd64e685483cf3c015c","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        \u0027share_idle_procs_active\u0027:"},{"line_number":335,"context_line":"            pvm_bp.DedicatedSharingMode.SHARE_IDLE_PROCS_ACTIVE,"},{"line_number":336,"context_line":"        \u0027share_idle_procs_always\u0027:"},{"line_number":337,"context_line":"            pvm_bp.DedicatedSharingMode.SHARE_IDLE_PROCS_ALWAYS"},{"line_number":338,"context_line":"    }"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def __init__(self, host_w, adapter):"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a430d35_0a9bca18","line":337,"range":{"start_line":337,"start_character":62,"end_line":337,"end_character":63},"in_reply_to":"3a461143_6dcd235d","updated":"2017-02-09 07:13:49.000000000","message":"Done","commit_id":"be3ca5e56a7d4d6465c2bde60da9414adbef7b88"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bd501945e463a3595045a10e7179824ff98bcf5d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            raise"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def power_on(adapter, instance, host_uuid, entry\u003dNone):"},{"line_number":123,"context_line":"    \"\"\"Powers on an instance, if possible."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    :param adapter: pypowervm.adapter.Adapter for PowerVM API communication."},{"line_number":126,"context_line":"    :param instance: The nova instance to power on."},{"line_number":127,"context_line":"    :param host_uuid: UUID of the managed system owning the LPAR."},{"line_number":128,"context_line":"    :param entry: Pre-fetched LogicalPartition EntryWrapper.  If None, the"},{"line_number":129,"context_line":"                  wrapper is fetched from the server."},{"line_number":130,"context_line":"    :return: True if the method actually issued a power-on request; False if"},{"line_number":131,"context_line":"             the partition was not in a startable state (e.g. already powered"},{"line_number":132,"context_line":"             on.)"},{"line_number":133,"context_line":"    \"\"\""},{"line_number":134,"context_line":"    if entry is None:"},{"line_number":135,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    # Get the current state and see if we can start the VM"},{"line_number":138,"context_line":"    if entry.state in POWERVM_STARTABLE_STATE:"},{"line_number":139,"context_line":"        # Now start the lpar"},{"line_number":140,"context_line":"        power.power_on(entry, host_uuid)"},{"line_number":141,"context_line":"        return True"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    return False"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"def power_off(adapter, instance, host_uuid, entry\u003dNone, add_parms\u003dNone,"},{"line_number":147,"context_line":"              force_immediate\u003dFalse):"},{"line_number":148,"context_line":"    \"\"\"Powers off an instance, if possible."},{"line_number":149,"context_line":"    :param adapter: pypowervm.adapter.Adapter for PowerVM API communication."},{"line_number":150,"context_line":"    :param instance: The nova instance to power off."},{"line_number":151,"context_line":"    :param host_uuid: UUID of the managed system owning the LPAR."},{"line_number":152,"context_line":"    :param entry: Pre-fetched LogicalPartition EntryWrapper.  If None, the"},{"line_number":153,"context_line":"                  wrapper is fetched from the server."},{"line_number":154,"context_line":"    :param add_parms: Additional parameters to pass to the PowerOff REST API."},{"line_number":155,"context_line":"                      See pypowervm.tasks.power.power_off."},{"line_number":156,"context_line":"    :param force_immediate: Whether to force the power-off.  See"},{"line_number":157,"context_line":"                            pypowervm.tasks.power.power_off."},{"line_number":158,"context_line":"    :return: True if the power-off was attempted; False if the partition was"},{"line_number":159,"context_line":"             not in a stoppable state (e.g. already powered off)."},{"line_number":160,"context_line":"    \"\"\""},{"line_number":161,"context_line":"    if entry is None:"},{"line_number":162,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # Get the current state and see if we can stop the VM"},{"line_number":165,"context_line":"    LOG.debug(\"Powering off request for instance %(inst)s which is in \""},{"line_number":166,"context_line":"              \"state %(state)s.  Force Immediate Flag: %(force)s.\","},{"line_number":167,"context_line":"              {\u0027inst\u0027: instance.name, \u0027state\u0027: entry.state,"},{"line_number":168,"context_line":"               \u0027force\u0027: force_immediate})"},{"line_number":169,"context_line":"    if entry.state in POWERVM_STOPABLE_STATE:"},{"line_number":170,"context_line":"        # Now stop the lpar"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            force_flag \u003d (power.Force.TRUE if force_immediate"},{"line_number":173,"context_line":"                          else power.Force.ON_FAILURE)"},{"line_number":174,"context_line":"            LOG.debug(\"Power off executing for instance %(inst)s with \""},{"line_number":175,"context_line":"                      \"Force\u003d%(force)s.\","},{"line_number":176,"context_line":"                      {\u0027inst\u0027: instance.name, \u0027force\u0027: force_flag})"},{"line_number":177,"context_line":"            power.power_off(entry, host_uuid, force_immediate\u003dforce_flag,"},{"line_number":178,"context_line":"                            add_parms\u003dadd_parms)"},{"line_number":179,"context_line":"        except Exception as e:"},{"line_number":180,"context_line":"            LOG.exception(e)"},{"line_number":181,"context_line":"            raise exception.InstancePowerOffFailure(reason\u003dsix.text_type(e))"},{"line_number":182,"context_line":"        return True"},{"line_number":183,"context_line":"    else:"},{"line_number":184,"context_line":"        LOG.debug(\"Power off not required for instance %(inst)s.\","},{"line_number":185,"context_line":"                  {\u0027inst\u0027: instance.name})"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    return False"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def dlt_lpar(adapter, lpar_uuid):"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_0c7e57ae","line":187,"range":{"start_line":122,"start_character":0,"end_line":187,"end_character":16},"updated":"2017-02-16 21:40:39.000000000","message":"Synchronize/consolidate.","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8463276ad32dc05e48c2f87cd678594a9a804648","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            raise"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def power_on(adapter, instance, host_uuid, entry\u003dNone):"},{"line_number":123,"context_line":"    \"\"\"Powers on an instance, if possible."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    :param adapter: pypowervm.adapter.Adapter for PowerVM API communication."},{"line_number":126,"context_line":"    :param instance: The nova instance to power on."},{"line_number":127,"context_line":"    :param host_uuid: UUID of the managed system owning the LPAR."},{"line_number":128,"context_line":"    :param entry: Pre-fetched LogicalPartition EntryWrapper.  If None, the"},{"line_number":129,"context_line":"                  wrapper is fetched from the server."},{"line_number":130,"context_line":"    :return: True if the method actually issued a power-on request; False if"},{"line_number":131,"context_line":"             the partition was not in a startable state (e.g. already powered"},{"line_number":132,"context_line":"             on.)"},{"line_number":133,"context_line":"    \"\"\""},{"line_number":134,"context_line":"    if entry is None:"},{"line_number":135,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    # Get the current state and see if we can start the VM"},{"line_number":138,"context_line":"    if entry.state in POWERVM_STARTABLE_STATE:"},{"line_number":139,"context_line":"        # Now start the lpar"},{"line_number":140,"context_line":"        power.power_on(entry, host_uuid)"},{"line_number":141,"context_line":"        return True"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    return False"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"def power_off(adapter, instance, host_uuid, entry\u003dNone, add_parms\u003dNone,"},{"line_number":147,"context_line":"              force_immediate\u003dFalse):"},{"line_number":148,"context_line":"    \"\"\"Powers off an instance, if possible."},{"line_number":149,"context_line":"    :param adapter: pypowervm.adapter.Adapter for PowerVM API communication."},{"line_number":150,"context_line":"    :param instance: The nova instance to power off."},{"line_number":151,"context_line":"    :param host_uuid: UUID of the managed system owning the LPAR."},{"line_number":152,"context_line":"    :param entry: Pre-fetched LogicalPartition EntryWrapper.  If None, the"},{"line_number":153,"context_line":"                  wrapper is fetched from the server."},{"line_number":154,"context_line":"    :param add_parms: Additional parameters to pass to the PowerOff REST API."},{"line_number":155,"context_line":"                      See pypowervm.tasks.power.power_off."},{"line_number":156,"context_line":"    :param force_immediate: Whether to force the power-off.  See"},{"line_number":157,"context_line":"                            pypowervm.tasks.power.power_off."},{"line_number":158,"context_line":"    :return: True if the power-off was attempted; False if the partition was"},{"line_number":159,"context_line":"             not in a stoppable state (e.g. already powered off)."},{"line_number":160,"context_line":"    \"\"\""},{"line_number":161,"context_line":"    if entry is None:"},{"line_number":162,"context_line":"        entry \u003d get_instance_wrapper(adapter, instance)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # Get the current state and see if we can stop the VM"},{"line_number":165,"context_line":"    LOG.debug(\"Powering off request for instance %(inst)s which is in \""},{"line_number":166,"context_line":"              \"state %(state)s.  Force Immediate Flag: %(force)s.\","},{"line_number":167,"context_line":"              {\u0027inst\u0027: instance.name, \u0027state\u0027: entry.state,"},{"line_number":168,"context_line":"               \u0027force\u0027: force_immediate})"},{"line_number":169,"context_line":"    if entry.state in POWERVM_STOPABLE_STATE:"},{"line_number":170,"context_line":"        # Now stop the lpar"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            force_flag \u003d (power.Force.TRUE if force_immediate"},{"line_number":173,"context_line":"                          else power.Force.ON_FAILURE)"},{"line_number":174,"context_line":"            LOG.debug(\"Power off executing for instance %(inst)s with \""},{"line_number":175,"context_line":"                      \"Force\u003d%(force)s.\","},{"line_number":176,"context_line":"                      {\u0027inst\u0027: instance.name, \u0027force\u0027: force_flag})"},{"line_number":177,"context_line":"            power.power_off(entry, host_uuid, force_immediate\u003dforce_flag,"},{"line_number":178,"context_line":"                            add_parms\u003dadd_parms)"},{"line_number":179,"context_line":"        except Exception as e:"},{"line_number":180,"context_line":"            LOG.exception(e)"},{"line_number":181,"context_line":"            raise exception.InstancePowerOffFailure(reason\u003dsix.text_type(e))"},{"line_number":182,"context_line":"        return True"},{"line_number":183,"context_line":"    else:"},{"line_number":184,"context_line":"        LOG.debug(\"Power off not required for instance %(inst)s.\","},{"line_number":185,"context_line":"                  {\u0027inst\u0027: instance.name})"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    return False"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def dlt_lpar(adapter, lpar_uuid):"}],"source_content_type":"text/x-python","patch_set":35,"id":"fa31d9ce_8c16c753","line":187,"range":{"start_line":122,"start_character":0,"end_line":187,"end_character":16},"in_reply_to":"fa31d9ce_0c7e57ae","updated":"2017-02-16 21:41:29.000000000","message":"Done","commit_id":"d13b1d1e32cb34943dd2f54d520c3af7a02a7cc6"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"fd5066d39b039ef3d6203aac78baca6d69742542","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            return False"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        # Check if this is a valid attribute"},{"line_number":405,"context_line":"        if key not in self._ATTRS_MAP.keys():"},{"line_number":406,"context_line":"            raise exc.InvalidAttribute(attr\u003dkey)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":51,"id":"7ffa3b31_7c323212","line":405,"updated":"2017-04-20 15:31:32.000000000","message":"so, this is actually a pretty inefficient way to test for that, because it\u0027s taking a dict, building a list, then searching the whole list.\n\n  value \u003d self._ATTRS_MAP[key]\n  return True \n\nWould be more efficient. That will through an attr error directly.\n\nThat being said, I\u0027m not sure why you want to die horribly and uncontrolably here.","commit_id":"6e33018fd2de23ea697909c6e142aefbf28a5a92"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"92638def645196010d2b8d43390a0d12f464d75c","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            return False"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        # Check if this is a valid attribute"},{"line_number":405,"context_line":"        if key not in self._ATTRS_MAP.keys():"},{"line_number":406,"context_line":"            raise exc.InvalidAttribute(attr\u003dkey)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":51,"id":"7ffa3b31_8fb25e48","line":405,"in_reply_to":"7ffa3b31_7c323212","updated":"2017-04-20 15:36:24.000000000","message":"Good point.  It might be friendlier to just say \"Unknown attribute\" instead and log as a warning.  Doesn\u0027t seem like it needs to die completely.","commit_id":"6e33018fd2de23ea697909c6e142aefbf28a5a92"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cc8348aa716451b713fce6bfe021d28c458dc61c","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            return False"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        # Check if this is a valid attribute"},{"line_number":405,"context_line":"        if key not in self._ATTRS_MAP.keys():"},{"line_number":406,"context_line":"            raise exc.InvalidAttribute(attr\u003dkey)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":51,"id":"7ffa3b31_cf92a657","line":405,"in_reply_to":"7ffa3b31_7c323212","updated":"2017-04-20 15:42:29.000000000","message":"Yeah, it should really be\n\n if key not in self._ATTRS_MAP\n\n...which is just a hash lookup - same as your suggestion but without the unneeded var assignment.\n\nAlso, per IRC, we should consider whether we want to just have a warning here.","commit_id":"6e33018fd2de23ea697909c6e142aefbf28a5a92"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"09892c3cb48555498382a33476f246a58d1fc3f0","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        # Return the singular pool id."},{"line_number":494,"context_line":"        return pool_wraps[0].id"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    @staticmethod"},{"line_number":497,"context_line":"    def _flavor_bool(val, key):"},{"line_number":498,"context_line":"        \"\"\"Will validate and return the boolean for a given value."},{"line_number":499,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"7ffa3b31_4da442ba","line":496,"updated":"2017-04-21 12:53:52.000000000","message":"oslo_utils.strutils.bool_from_string does this already","commit_id":"84b06d38c2c0659f7bbd0fc8bbb6a2e60d72619e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d4f325d152797bc44b5295294b434a20f580d2ea","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        # Return the singular pool id."},{"line_number":494,"context_line":"        return pool_wraps[0].id"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    @staticmethod"},{"line_number":497,"context_line":"    def _flavor_bool(val, key):"},{"line_number":498,"context_line":"        \"\"\"Will validate and return the boolean for a given value."},{"line_number":499,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"7ffa3b31_0d13da67","line":496,"in_reply_to":"7ffa3b31_4da442ba","updated":"2017-04-21 14:01:03.000000000","message":"Ah, nice.  Done.","commit_id":"84b06d38c2c0659f7bbd0fc8bbb6a2e60d72619e"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"64cc5c627112135934f3aba2a5ca82d5bb7a6fed","unresolved":false,"context_lines":[{"line_number":445,"context_line":"            mode \u003d self._DED_SHARING_MODES_MAP.get(shr_mode_key)"},{"line_number":446,"context_line":"            if mode is None:"},{"line_number":447,"context_line":"                attr \u003d key + \u0027\u003d\u0027 + shr_mode_key"},{"line_number":448,"context_line":"                ex \u003d exc.InvalidAttribute(attr\u003dattr)"},{"line_number":449,"context_line":"                LOG.error(\"Invalid dedicated sharing mode \u0027%s\u0027!\", shr_mode_key)"},{"line_number":450,"context_line":"                raise ex"},{"line_number":451,"context_line":"            attrs[lpar_bldr.SHARING_MODE] \u003d mode"}],"source_content_type":"text/x-python","patch_set":56,"id":"7ffa3b31_9c471abd","line":448,"range":{"start_line":448,"start_character":25,"end_line":448,"end_character":41},"updated":"2017-04-21 15:39:17.000000000","message":"the attribute is actually valid here, but its *value* is not... I think this should use InvalidParameterValue","commit_id":"52946871bc312be912661840be92c44e8c8f27ad"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b20ce978aa0a565f015cf726bad671afc1e5a2a2","unresolved":false,"context_lines":[{"line_number":445,"context_line":"            mode \u003d self._DED_SHARING_MODES_MAP.get(shr_mode_key)"},{"line_number":446,"context_line":"            if mode is None:"},{"line_number":447,"context_line":"                attr \u003d key + \u0027\u003d\u0027 + shr_mode_key"},{"line_number":448,"context_line":"                ex \u003d exc.InvalidAttribute(attr\u003dattr)"},{"line_number":449,"context_line":"                LOG.error(\"Invalid dedicated sharing mode \u0027%s\u0027!\", shr_mode_key)"},{"line_number":450,"context_line":"                raise ex"},{"line_number":451,"context_line":"            attrs[lpar_bldr.SHARING_MODE] \u003d mode"}],"source_content_type":"text/x-python","patch_set":56,"id":"5ff73747_9d46c34f","line":448,"range":{"start_line":448,"start_character":25,"end_line":448,"end_character":41},"in_reply_to":"7ffa3b31_9c471abd","updated":"2017-04-21 20:26:44.000000000","message":"Done","commit_id":"52946871bc312be912661840be92c44e8c8f27ad"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"64cc5c627112135934f3aba2a5ca82d5bb7a6fed","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                flavor.extra_specs[key], strict\u003dTrue)"},{"line_number":462,"context_line":"        else:"},{"line_number":463,"context_line":"            # There was no mapping or we didn\u0027t handle it.  This is a BUG!"},{"line_number":464,"context_line":"            ex \u003d exc.InvalidAttribute(attr\u003dkey)"},{"line_number":465,"context_line":"            LOG.error(\"Unhandled PowerVM key \u0027%s\u0027!  Please report this bug.\","},{"line_number":466,"context_line":"                      key)"},{"line_number":467,"context_line":"            raise ex"}],"source_content_type":"text/x-python","patch_set":56,"id":"7ffa3b31_378a5f69","line":464,"range":{"start_line":464,"start_character":21,"end_line":464,"end_character":37},"updated":"2017-04-21 15:39:17.000000000","message":"since this is a bug, we need to raise something that will result in HTTP 500, whereas InvalidAttribute will result in HTTP 400. And it\u0027s not really an invalid attribute anyway, since we\u0027ve checked for that prior to this (_is_pvm_valid_key). It\u0027s a valid-but-mishandled attribute.","commit_id":"52946871bc312be912661840be92c44e8c8f27ad"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b20ce978aa0a565f015cf726bad671afc1e5a2a2","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                flavor.extra_specs[key], strict\u003dTrue)"},{"line_number":462,"context_line":"        else:"},{"line_number":463,"context_line":"            # There was no mapping or we didn\u0027t handle it.  This is a BUG!"},{"line_number":464,"context_line":"            ex \u003d exc.InvalidAttribute(attr\u003dkey)"},{"line_number":465,"context_line":"            LOG.error(\"Unhandled PowerVM key \u0027%s\u0027!  Please report this bug.\","},{"line_number":466,"context_line":"                      key)"},{"line_number":467,"context_line":"            raise ex"}],"source_content_type":"text/x-python","patch_set":56,"id":"5ff73747_5d3b9b9b","line":464,"range":{"start_line":464,"start_character":21,"end_line":464,"end_character":37},"in_reply_to":"7ffa3b31_378a5f69","updated":"2017-04-21 20:26:44.000000000","message":"Done","commit_id":"52946871bc312be912661840be92c44e8c8f27ad"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"113881a5e0dcbbba777a7982559dd25bafe66112","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from oslo_serialization import jsonutils"},{"line_number":20,"context_line":"from oslo_utils import excutils"},{"line_number":21,"context_line":"from oslo_utils import strutils as stru"},{"line_number":22,"context_line":"from pypowervm import exceptions as pvm_exc"},{"line_number":23,"context_line":"from pypowervm.helpers import log_helper as pvm_log"},{"line_number":24,"context_line":"from pypowervm.tasks import power"}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_a5f1b36d","line":21,"range":{"start_line":21,"start_character":35,"end_line":21,"end_character":39},"updated":"2017-05-23 22:01:11.000000000","message":"nit: I actually prefer the strutils long-form here.","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"113881a5e0dcbbba777a7982559dd25bafe66112","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    _PVM_SRR_CAPABILITY \u003d \u0027powervm:srr_capability\u0027"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    # Map of PowerVM extra specs to the lpar builder attributes."},{"line_number":320,"context_line":"    # \u0027\u0027 is used for attributes that are not implemented yet."},{"line_number":321,"context_line":"    # None means there is no direct attribute mapping and must"},{"line_number":322,"context_line":"    # be handled individually"},{"line_number":323,"context_line":"    _ATTRS_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_258a43be","line":320,"range":{"start_line":320,"start_character":6,"end_line":320,"end_character":8},"updated":"2017-05-23 22:01:11.000000000","message":"I don\u0027t see \u0027\u0027 used.","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e3ba9b41859c4cbed30c872b89bbd0f3a32942c","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    # \u0027\u0027 is used for attributes that are not implemented yet."},{"line_number":321,"context_line":"    # None means there is no direct attribute mapping and must"},{"line_number":322,"context_line":"    # be handled individually"},{"line_number":323,"context_line":"    _ATTRS_MAP \u003d {"},{"line_number":324,"context_line":"        \u0027powervm:min_mem\u0027: lpar_bldr.MIN_MEM,"},{"line_number":325,"context_line":"        \u0027powervm:max_mem\u0027: lpar_bldr.MAX_MEM,"},{"line_number":326,"context_line":"        \u0027powervm:min_vcpu\u0027: lpar_bldr.MIN_VCPU,"},{"line_number":327,"context_line":"        \u0027powervm:max_vcpu\u0027: lpar_bldr.MAX_VCPU,"},{"line_number":328,"context_line":"        \u0027powervm:proc_units\u0027: lpar_bldr.PROC_UNITS,"},{"line_number":329,"context_line":"        \u0027powervm:min_proc_units\u0027: lpar_bldr.MIN_PROC_U,"},{"line_number":330,"context_line":"        \u0027powervm:max_proc_units\u0027: lpar_bldr.MAX_PROC_U,"},{"line_number":331,"context_line":"        \u0027powervm:dedicated_proc\u0027: lpar_bldr.DED_PROCS,"},{"line_number":332,"context_line":"        \u0027powervm:shared_weight\u0027: lpar_bldr.UNCAPPED_WEIGHT,"},{"line_number":333,"context_line":"        \u0027powervm:availability_priority\u0027: lpar_bldr.AVAIL_PRIORITY,"},{"line_number":334,"context_line":"        _PVM_UNCAPPED: None,"},{"line_number":335,"context_line":"        _PVM_DED_SHAR_MODE: None,"},{"line_number":336,"context_line":"        _PVM_PROC_COMPAT: None,"},{"line_number":337,"context_line":"        _PVM_SHAR_PROC_POOL: None,"},{"line_number":338,"context_line":"        _PVM_SRR_CAPABILITY: None,"},{"line_number":339,"context_line":"    }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    _DED_SHARING_MODES_MAP \u003d {"},{"line_number":342,"context_line":"        \u0027share_idle_procs\u0027: pvm_bp.DedicatedSharingMode.SHARE_IDLE_PROCS,"}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_1268a41a","line":339,"range":{"start_line":323,"start_character":4,"end_line":339,"end_character":5},"updated":"2017-05-23 23:45:15.000000000","message":"Are these documented anywhere upstream? Like I\u0027m thinking of:\n\nhttps://docs.openstack.org/admin-guide/compute-flavors.html\n\nSomething I\u0027ve been kicking around in my head is eventually needing to create a page in-tree for the devref which defines all of the known supported extra specs we have with in-tree virt drivers. Document what they are, what they do, what the possible values are, which release supports them and which drivers support them.\n\nI think we\u0027re going to need to do this if we ever want to codify extra specs into a versioned object like the image metadata properties.\n\nBut also because the global docs team is going away and these things are going to be moving in-tree at some point anyway.\n\nSimply starting with a new page explaining what extra specs are and how they are used, and then starting a table of the known ones (w/o description, possible values, which release/driver they are supported, etc). Anyway, that\u0027s why it\u0027s kicking around.","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8726eefffae4145d4ad7189ccdb5690bbb7bff68","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                 skipped."},{"line_number":410,"context_line":"        \"\"\""},{"line_number":411,"context_line":"        # If not a powervm key, then it is not \u0027pvm_valid\u0027"},{"line_number":412,"context_line":"        if not key.startswith(\u0027powervm:\u0027):"},{"line_number":413,"context_line":"            return False"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Check if this is a valid attribute"},{"line_number":416,"context_line":"        if key not in self._ATTRS_MAP:"}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_016f2cc5","line":413,"range":{"start_line":412,"start_character":8,"end_line":413,"end_character":24},"updated":"2017-05-24 02:55:47.000000000","message":"Don\u0027t see a unit test for this case.","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"113881a5e0dcbbba777a7982559dd25bafe66112","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Check if this is a valid attribute"},{"line_number":416,"context_line":"        if key not in self._ATTRS_MAP:"},{"line_number":417,"context_line":"            # Could be a key from a future release - warn, but ignore."},{"line_number":418,"context_line":"            LOG.warning(\"Unhandled PowerVM key \u0027%s\u0027.\", key)"},{"line_number":419,"context_line":"            return False"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_453d37db","line":417,"range":{"start_line":417,"start_character":36,"end_line":417,"end_character":50},"updated":"2017-05-23 22:01:11.000000000","message":"future release of what? this is confusing","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"113881a5e0dcbbba777a7982559dd25bafe66112","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        to several different attributes in the lpar builder.  This method"},{"line_number":428,"context_line":"        handles the complex types."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        :param key: The flavor\u0027s key."},{"line_number":431,"context_line":"        :param attrs: The attribute map to put the value into."},{"line_number":432,"context_line":"        :param flavor: The Nova instance flavor."},{"line_number":433,"context_line":"        :return: The value to put in for the key."}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_c5282798","line":430,"range":{"start_line":430,"start_character":33,"end_line":430,"end_character":36},"updated":"2017-05-23 22:01:11.000000000","message":"nit: extra spec key","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"113881a5e0dcbbba777a7982559dd25bafe66112","unresolved":false,"context_lines":[{"line_number":428,"context_line":"        handles the complex types."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        :param key: The flavor\u0027s key."},{"line_number":431,"context_line":"        :param attrs: The attribute map to put the value into."},{"line_number":432,"context_line":"        :param flavor: The Nova instance flavor."},{"line_number":433,"context_line":"        :return: The value to put in for the key."},{"line_number":434,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_250fe337","line":431,"updated":"2017-05-23 22:01:11.000000000","message":"nit: I generally don\u0027t love changing things by reference, could be cleaner to just return the value of the complex type and map it in the caller, but I won\u0027t block on it.","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"113881a5e0dcbbba777a7982559dd25bafe66112","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        :param key: The flavor\u0027s key."},{"line_number":431,"context_line":"        :param attrs: The attribute map to put the value into."},{"line_number":432,"context_line":"        :param flavor: The Nova instance flavor."},{"line_number":433,"context_line":"        :return: The value to put in for the key."},{"line_number":434,"context_line":"        \"\"\""},{"line_number":435,"context_line":"        # Map uncapped to sharing mode"},{"line_number":436,"context_line":"        if key \u003d\u003d self._PVM_UNCAPPED:"}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_c5014708","line":433,"range":{"start_line":433,"start_character":8,"end_line":433,"end_character":49},"updated":"2017-05-23 22:01:11.000000000","message":"To my point above, you\u0027re not actually returning anything b/c you\u0027re modifying the attr map by reference.","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8726eefffae4145d4ad7189ccdb5690bbb7bff68","unresolved":false,"context_lines":[{"line_number":443,"context_line":"            shr_mode_key \u003d flavor.extra_specs[key]"},{"line_number":444,"context_line":"            mode \u003d self._DED_SHARING_MODES_MAP.get(shr_mode_key)"},{"line_number":445,"context_line":"            if mode is None:"},{"line_number":446,"context_line":"                raise exc.InvalidParameterValue(err\u003d_("},{"line_number":447,"context_line":"                    \"Invalid dedicated sharing mode \u0027%s\u0027!\") % shr_mode_key)"},{"line_number":448,"context_line":"            attrs[lpar_bldr.SHARING_MODE] \u003d mode"},{"line_number":449,"context_line":"        elif key \u003d\u003d self._PVM_SHAR_PROC_POOL:"}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_a16760e9","line":446,"updated":"2017-05-24 02:55:47.000000000","message":"Do we have a test for this?","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"46237896543c8069e08a0d6745d5d44370f91778","unresolved":false,"context_lines":[{"line_number":444,"context_line":"            mode \u003d self._DED_SHARING_MODES_MAP.get(shr_mode_key)"},{"line_number":445,"context_line":"            if mode is None:"},{"line_number":446,"context_line":"                raise exc.InvalidParameterValue(err\u003d_("},{"line_number":447,"context_line":"                    \"Invalid dedicated sharing mode \u0027%s\u0027!\") % shr_mode_key)"},{"line_number":448,"context_line":"            attrs[lpar_bldr.SHARING_MODE] \u003d mode"},{"line_number":449,"context_line":"        elif key \u003d\u003d self._PVM_SHAR_PROC_POOL:"},{"line_number":450,"context_line":"            pool_name \u003d flavor.extra_specs[key]"}],"source_content_type":"text/x-python","patch_set":57,"id":"5ff73747_00a2489b","line":447,"range":{"start_line":447,"start_character":56,"end_line":447,"end_character":57},"updated":"2017-04-21 21:49:46.000000000","message":"nit: the exclamation point seems a bit much, rubbing in the stupidity of their mistake. :)","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8726eefffae4145d4ad7189ccdb5690bbb7bff68","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                raise exc.InvalidParameterValue(err\u003d_("},{"line_number":447,"context_line":"                    \"Invalid dedicated sharing mode \u0027%s\u0027!\") % shr_mode_key)"},{"line_number":448,"context_line":"            attrs[lpar_bldr.SHARING_MODE] \u003d mode"},{"line_number":449,"context_line":"        elif key \u003d\u003d self._PVM_SHAR_PROC_POOL:"},{"line_number":450,"context_line":"            pool_name \u003d flavor.extra_specs[key]"},{"line_number":451,"context_line":"            attrs[lpar_bldr.SPP] \u003d self._spp_pool_id(pool_name)"},{"line_number":452,"context_line":"        elif key \u003d\u003d self._PVM_PROC_COMPAT:"},{"line_number":453,"context_line":"            # Handle variants of the supported values"},{"line_number":454,"context_line":"            attrs[lpar_bldr.PROC_COMPAT] \u003d re.sub("}],"source_content_type":"text/x-python","patch_set":57,"id":"ff0f0b1f_419e44b9","line":451,"range":{"start_line":449,"start_character":8,"end_line":451,"end_character":63},"updated":"2017-05-24 02:55:47.000000000","message":"Test for this?","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"46237896543c8069e08a0d6745d5d44370f91778","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        else:"},{"line_number":460,"context_line":"            # There was no mapping or we didn\u0027t handle it.  This is a BUG!"},{"line_number":461,"context_line":"            raise KeyError(_("},{"line_number":462,"context_line":"                \"Unhandled PowerVM key \u0027%s\u0027!  Please report this bug.\") % key)"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def _spp_pool_id(self, pool_name):"},{"line_number":465,"context_line":"        \"\"\"Returns the shared proc pool id for a given pool name."}],"source_content_type":"text/x-python","patch_set":57,"id":"5ff73747_60934c51","line":462,"range":{"start_line":462,"start_character":44,"end_line":462,"end_character":46},"updated":"2017-04-21 21:49:46.000000000","message":"nit: single space between sentences","commit_id":"2272971e0796c610d3a599ae5b466f0556483e0a"}],"requirements.txt":[{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"b169b5e6eee2595bfddbc60fd8f2c291f63de090","unresolved":false,"context_lines":[{"line_number":43,"context_line":"oslo.utils\u003e\u003d3.18.0 # Apache-2.0"},{"line_number":44,"context_line":"oslo.db!\u003d4.13.1,!\u003d4.13.2,\u003e\u003d4.11.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.rootwrap\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":46,"context_line":"oslo.messaging\u003e\u003d5.14.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.policy\u003e\u003d1.17.0 # Apache-2.0"},{"line_number":48,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":8,"id":"1a6eadb0_153d592b","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":35},"updated":"2016-12-13 15:23:08.000000000","message":"Do we need to increment this or is it part of a rebase?","commit_id":"e5858a70003fe7418966562082bf5abb488631eb"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"9369e561e4163c292eb6ef79a16939947608401a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"oslo.utils\u003e\u003d3.18.0 # Apache-2.0"},{"line_number":44,"context_line":"oslo.db!\u003d4.13.1,!\u003d4.13.2,\u003e\u003d4.11.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.rootwrap\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":46,"context_line":"oslo.messaging\u003e\u003d5.14.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.policy\u003e\u003d1.17.0 # Apache-2.0"},{"line_number":48,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":8,"id":"1a6eadb0_889a3013","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":35},"in_reply_to":"1a6eadb0_153d592b","updated":"2016-12-13 16:17:05.000000000","message":"Yes, from rebase. Not modify by manual.","commit_id":"e5858a70003fe7418966562082bf5abb488631eb"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"df95145d9b6fe00f0446452fda018b8a31c56da4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.3.9 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":19,"id":"9a57fde8_215a5084","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":20},"updated":"2017-01-12 13:38:40.000000000","message":"Should maybe just make this 1.0.0.4 now?  Would have to update global requirements as well.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"a47502f08e28a4605ce81297cacf527dc4322dfb","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.3.9 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":19,"id":"7a3c09a3_5845fcb0","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":20},"in_reply_to":"7a3c09a3_1b2c7daa","updated":"2017-01-17 11:08:45.000000000","message":"pypowervm is not ready in the following url\nhttps://pypi.python.org/pypi/pypowervm/1.0.0.4.0","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"84ea2d57aa2ae85581e3034cb49ee9288efecbb4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.3.9 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":19,"id":"7a3c09a3_5cfb10c1","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":20},"in_reply_to":"7a3c09a3_5845fcb0","updated":"2017-01-17 19:17:33.000000000","message":"It\u0027s there now.  Done.","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":10347,"name":"Wang Qing wu","email":"wqw2700@sina.com","username":"cody"},"change_message_id":"bcc04c05a8cc4f2a43f3a8ed75bb66b78bb66257","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.3.9 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":19,"id":"7a3c09a3_1b2c7daa","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":20},"in_reply_to":"9a57fde8_215a5084","updated":"2017-01-17 05:39:09.000000000","message":"Done","commit_id":"c0ed87b21f78ef0dc52a06ac8f4e452b59680a83"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"854d7807f42b49bc53e4de4721f82ed81c92a6f4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.4 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":23,"id":"7a3c09a3_b914034d","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":31},"updated":"2017-01-17 20:19:58.000000000","message":"Global req being updated to support that?","commit_id":"883f7436ef8fbc712e8a757ec33752d5ef5b0b16"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7105e3d962a689a1d4b1bc2a331493f0250124a4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.4 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":23,"id":"7a3c09a3_7f50bb32","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":31},"in_reply_to":"7a3c09a3_b914034d","updated":"2017-01-17 21:02:57.000000000","message":"https://review.openstack.org/421515","commit_id":"883f7436ef8fbc712e8a757ec33752d5ef5b0b16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6c6548bfa1cbab1d45bca77fa32487cc1f8913e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.1.1 # Apache-2.0"},{"line_number":62,"context_line":"pypowervm\u003e\u003d1.0.0.4 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":24,"id":"7a3c09a3_53fe93ae","line":62,"updated":"2017-01-17 23:49:51.000000000","message":"Add this to the commit message and zuul won\u0027t fail the reqs job anymore:\n\nDepends-On: I239b81a7a37d1340923513c409df5d68567d626d","commit_id":"ff01a0fb70b1fc7e110053f4a1097609f563c462"}]}
