)]}'
{"nova/virt/powervm/tasks/base.py":[{"author":{"_account_id":20223,"name":"zhaolihui","email":"zhaolh@awcloud.com","username":"zhaolihui"},"change_message_id":"3f2586b80b2b177a6cc767bdb97c22bfe9b7ec5d","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"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":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_e8c3af36","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":63},"updated":"2017-02-28 07:28:28.000000000","message":"what about self.instance.uuid ?","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"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":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_6faf6c94","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":63},"in_reply_to":"ba2be162_c0814d4c","updated":"2017-03-02 17:34:30.000000000","message":"Yeah, thought we might care to have both the instance\u0027s name and UUID in the message (the latter is what comes out of the instance\u003dself.instance bit); but you\u0027re right, it\u0027s probably unnecessary.","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"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":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_c0814d4c","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":63},"in_reply_to":"da36d5c6_e8c3af36","updated":"2017-03-01 15:01:28.000000000","message":"Honestly, you could just take the \u0027for instance\u0027 bits out.  \"Running task %(task)s\" and then passing in the instance\u003dself.instance is enough for a clear message.\n\nI think this is how our OOT driver did it until we cleaned it up there.","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        run_time \u003d time.time() - start_time"},{"line_number":53,"context_line":"        LOG.info(_LI(\u0027Task %(task)s completed in %(seconds)d seconds for \u0027"},{"line_number":54,"context_line":"                     \u0027instance %(inst)s\u0027),"},{"line_number":55,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name,"},{"line_number":56,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":57,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_20e86910","line":54,"range":{"start_line":54,"start_character":22,"end_line":54,"end_character":39},"updated":"2017-03-01 15:01:28.000000000","message":"ditto to above.  May even save you 2 LOC here.  ;-)","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        run_time \u003d time.time() - start_time"},{"line_number":53,"context_line":"        LOG.info(_LI(\u0027Task %(task)s completed in %(seconds)d seconds for \u0027"},{"line_number":54,"context_line":"                     \u0027instance %(inst)s\u0027),"},{"line_number":55,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name,"},{"line_number":56,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":57,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_cc405f37","line":54,"range":{"start_line":54,"start_character":22,"end_line":54,"end_character":39},"in_reply_to":"ba2be162_20e86910","updated":"2017-03-02 17:34:30.000000000","message":"Done","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return ret"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def execute_impl(self, *args, **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):"},{"line_number":63,"context_line":"        LOG.info(_LW(\u0027Reverting task %(task)s for instance %(inst)s\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_8063d5b0","line":60,"updated":"2017-03-01 15:01:28.000000000","message":"Remind me...can/should we be adding the annotation to indicate this is an abstractmethod?  Same for revert_impl","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return ret"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def execute_impl(self, *args, **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):"},{"line_number":63,"context_line":"        LOG.info(_LW(\u0027Reverting task %(task)s for instance %(inst)s\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_5856edce","line":60,"in_reply_to":"ba2be162_8063d5b0","updated":"2017-03-02 17:34:30.000000000","message":"No, that forces the subclass to implement the method, or instantiation will fail with a TypeError.  We could conceivably do it for execute_impl, because all subclasses ought to be implementing that guy, but definitely not for revert_impl.  That said, the defaults of these guys should probably explicitly \u0027pass\u0027 for form\u0027s sake.","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"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):"},{"line_number":63,"context_line":"        LOG.info(_LW(\u0027Reverting task %(task)s for instance %(inst)s\u0027),"},{"line_number":64,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name},"},{"line_number":65,"context_line":"                 instance\u003dself.instance)"},{"line_number":66,"context_line":"        start_time \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_00e52508","line":63,"range":{"start_line":63,"start_character":45,"end_line":63,"end_character":67},"updated":"2017-03-01 15:01:28.000000000","message":"See above.","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"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):"},{"line_number":63,"context_line":"        LOG.info(_LW(\u0027Reverting task %(task)s for instance %(inst)s\u0027),"},{"line_number":64,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name},"},{"line_number":65,"context_line":"                 instance\u003dself.instance)"},{"line_number":66,"context_line":"        start_time \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_20f229d3","line":63,"range":{"start_line":63,"start_character":19,"end_line":63,"end_character":20},"updated":"2017-03-01 15:01:28.000000000","message":"Yikes, this should be LI.  Do we have a but OOT as well?","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"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):"},{"line_number":63,"context_line":"        LOG.info(_LW(\u0027Reverting task %(task)s for instance %(inst)s\u0027),"},{"line_number":64,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name},"},{"line_number":65,"context_line":"                 instance\u003dself.instance)"},{"line_number":66,"context_line":"        start_time \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_6c6cd3d0","line":63,"range":{"start_line":63,"start_character":45,"end_line":63,"end_character":67},"in_reply_to":"ba2be162_00e52508","updated":"2017-03-02 17:34:30.000000000","message":"Done","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"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):"},{"line_number":63,"context_line":"        LOG.info(_LW(\u0027Reverting task %(task)s for instance %(inst)s\u0027),"},{"line_number":64,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name},"},{"line_number":65,"context_line":"                 instance\u003dself.instance)"},{"line_number":66,"context_line":"        start_time \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_d8749d37","line":63,"range":{"start_line":63,"start_character":19,"end_line":63,"end_character":20},"in_reply_to":"ba2be162_20f229d3","updated":"2017-03-02 17:34:30.000000000","message":"Yup.  Which way do you want it?  On the one hand, I like warnings, because reverting should be unusual enough that we want to call it out.  On the other hand, the other logs are info, so symmetry.\n\nI\u0027m sure this is the same kind of internal debate that resulted in this mix-match in the first place ;-)\n\n[Later] Per IRC: \"info seems fine to me. they\u0027re part of an exception path, but they\u0027re info about the exception path.\"","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        ret \u003d self.revert_impl(*args, **kwargs)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        run_time \u003d time.time() - start_time"},{"line_number":71,"context_line":"        LOG.info(_LW(\u0027Revert task %(task)s completed in %(seconds)d seconds \u0027"},{"line_number":72,"context_line":"                     \u0027for instance %(inst)s\u0027),"},{"line_number":73,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name,"},{"line_number":74,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_c0b94deb","line":71,"range":{"start_line":71,"start_character":17,"end_line":71,"end_character":20},"updated":"2017-03-01 15:01:28.000000000","message":"Should be _LI.  Do we have a bug OOT as well?","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        ret \u003d self.revert_impl(*args, **kwargs)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        run_time \u003d time.time() - start_time"},{"line_number":71,"context_line":"        LOG.info(_LW(\u0027Revert task %(task)s completed in %(seconds)d seconds \u0027"},{"line_number":72,"context_line":"                     \u0027for instance %(inst)s\u0027),"},{"line_number":73,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name,"},{"line_number":74,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_0c47d74b","line":71,"range":{"start_line":71,"start_character":17,"end_line":71,"end_character":20},"in_reply_to":"ba2be162_c0b94deb","updated":"2017-03-02 17:34:30.000000000","message":"Done","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        run_time \u003d time.time() - start_time"},{"line_number":71,"context_line":"        LOG.info(_LW(\u0027Revert task %(task)s completed in %(seconds)d seconds \u0027"},{"line_number":72,"context_line":"                     \u0027for instance %(inst)s\u0027),"},{"line_number":73,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name,"},{"line_number":74,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":75,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_e0957140","line":72,"range":{"start_line":72,"start_character":22,"end_line":72,"end_character":42},"updated":"2017-03-01 15:01:28.000000000","message":"see above","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        run_time \u003d time.time() - start_time"},{"line_number":71,"context_line":"        LOG.info(_LW(\u0027Revert task %(task)s completed in %(seconds)d seconds \u0027"},{"line_number":72,"context_line":"                     \u0027for instance %(inst)s\u0027),"},{"line_number":73,"context_line":"                 {\u0027task\u0027: self.name, \u0027inst\u0027: self.instance.name,"},{"line_number":74,"context_line":"                  \u0027seconds\u0027: run_time}, instance\u003dself.instance)"},{"line_number":75,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_2c765ba4","line":72,"range":{"start_line":72,"start_character":22,"end_line":72,"end_character":42},"in_reply_to":"ba2be162_e0957140","updated":"2017-03-02 17:34:30.000000000","message":"Done","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"9c9cab87af3daf812a896d204057138421fbc564","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from taskflow import engines as tf_eng"},{"line_number":16,"context_line":"from taskflow.listeners import timing as tf_tm"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7ffa3b31_035ba986","line":17,"updated":"2017-04-21 14:13:50.000000000","message":"need a 2nd blank line after imports","commit_id":"9dcdabb8bf15d58f5386a8e2dd4c0ff1248976d6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bfed5f6115411cd57c9d48356bc32e61e62b03d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from taskflow import engines as tf_eng"},{"line_number":16,"context_line":"from taskflow.listeners import timing as tf_tm"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7ffa3b31_f7b99778","line":17,"in_reply_to":"7ffa3b31_035ba986","updated":"2017-04-21 15:58:18.000000000","message":"Done","commit_id":"9dcdabb8bf15d58f5386a8e2dd4c0ff1248976d6"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"5ca256b4d3cc7ccf1bf8b69d5419b73b2a73dfe2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        LOG.info(*args, **kwargs)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    eng \u003d tf_eng.load(flow)"},{"line_number":37,"context_line":"    with tf_tm.PrintingDurationListener(eng, printer\u003dlog_with_instance):"},{"line_number":38,"context_line":"        return eng.run()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5ff73747_a9bfbdce","line":38,"range":{"start_line":37,"start_character":1,"end_line":38,"end_character":24},"updated":"2017-04-25 13:08:55.000000000","message":"Nice.","commit_id":"64914fb15e7a930830b51fe9d37411be5ab499dc"}],"nova/virt/powervm/tasks/vm.py":[{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        :param host_wrapper: The managed system wrapper"},{"line_number":53,"context_line":"        :param instance: The nova instance."},{"line_number":54,"context_line":"        :param flavor: The nova flavor."},{"line_number":55,"context_line":"        :param stg_ftsk: (Optional, Default: None) A FeedTask managing storage"},{"line_number":56,"context_line":"                         I/O operations.  If None, one will be built locally"},{"line_number":57,"context_line":"                         and executed immediately. Otherwise it is the caller\u0027s"},{"line_number":58,"context_line":"                         responsibility to execute the FeedTask."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_e0a3b19c","line":55,"updated":"2017-03-01 15:01:28.000000000","message":"A pypowervm FeedTask?\n\nI\u0027m wondering if the pypowervm bits add anything to core nova reviewers to know its a powervm python library thing.","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        :param host_wrapper: The managed system wrapper"},{"line_number":53,"context_line":"        :param instance: The nova instance."},{"line_number":54,"context_line":"        :param flavor: The nova flavor."},{"line_number":55,"context_line":"        :param stg_ftsk: (Optional, Default: None) A FeedTask managing storage"},{"line_number":56,"context_line":"                         I/O operations.  If None, one will be built locally"},{"line_number":57,"context_line":"                         and executed immediately. Otherwise it is the caller\u0027s"},{"line_number":58,"context_line":"                         responsibility to execute the FeedTask."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_cc121f57","line":55,"in_reply_to":"ba2be162_e0a3b19c","updated":"2017-03-02 17:34:30.000000000","message":"Done","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"cb74ea491c00e6dcf49a32515b14ce49cee62c4d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                           self.flavor)"},{"line_number":72,"context_line":"        pvm_stg.add_lpar_storage_scrub_tasks([wrap.id], self.stg_ftsk,"},{"line_number":73,"context_line":"                                             lpars_exist\u003dTrue)"},{"line_number":74,"context_line":"        # If the stg_ftsk passed in was None and we initialized a"},{"line_number":75,"context_line":"        # \u0027create_scrubber\u0027 stg_ftsk then run it immediately. We do"},{"line_number":76,"context_line":"        # this because we moved the LPAR storage scrub tasks out of the"},{"line_number":77,"context_line":"        # build_map initialization. This was so that we could construct the"},{"line_number":78,"context_line":"        # build map earlier in the spawn, just before the LPAR is created."},{"line_number":79,"context_line":"        # Only rebuilds should be passing in None for stg_ftsk."},{"line_number":80,"context_line":"        if self.stg_ftsk.name \u003d\u003d \u0027create_scrubber\u0027:"},{"line_number":81,"context_line":"            LOG.info(_LI(\u0027Scrubbing storage for instance %s as part of \u0027"},{"line_number":82,"context_line":"                         \u0027rebuild.\u0027), self.instance.name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_60b6e1dd","line":79,"range":{"start_line":74,"start_character":0,"end_line":79,"end_character":63},"updated":"2017-03-01 15:01:28.000000000","message":"Hmm...build map stuff isn\u0027t in here.  Does that affect this?","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"396a574d7b2098f044fd0cbd7b3361625f4cb864","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                           self.flavor)"},{"line_number":72,"context_line":"        pvm_stg.add_lpar_storage_scrub_tasks([wrap.id], self.stg_ftsk,"},{"line_number":73,"context_line":"                                             lpars_exist\u003dTrue)"},{"line_number":74,"context_line":"        # If the stg_ftsk passed in was None and we initialized a"},{"line_number":75,"context_line":"        # \u0027create_scrubber\u0027 stg_ftsk then run it immediately. We do"},{"line_number":76,"context_line":"        # this because we moved the LPAR storage scrub tasks out of the"},{"line_number":77,"context_line":"        # build_map initialization. This was so that we could construct the"},{"line_number":78,"context_line":"        # build map earlier in the spawn, just before the LPAR is created."},{"line_number":79,"context_line":"        # Only rebuilds should be passing in None for stg_ftsk."},{"line_number":80,"context_line":"        if self.stg_ftsk.name \u003d\u003d \u0027create_scrubber\u0027:"},{"line_number":81,"context_line":"            LOG.info(_LI(\u0027Scrubbing storage for instance %s as part of \u0027"},{"line_number":82,"context_line":"                         \u0027rebuild.\u0027), self.instance.name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_0102400b","line":79,"range":{"start_line":74,"start_character":0,"end_line":79,"end_character":63},"in_reply_to":"ba2be162_60b6e1dd","updated":"2017-03-02 17:34:30.000000000","message":"Yeah, good call.  We\u0027re not using the stg_ftsk parameter, so it makes sense to take it out for now.  The question is whether it makes sense to run this scrubber at all.  I contend that it does, because we\u0027re not doing it elsewhere yet; and even though we don\u0027t have any storage support, we still don\u0027t want this LPAR accidentally getting access to storage from a previous incarnation (which may have been created somewhere/somehow different).\n\nRefactored accordingly.","commit_id":"38c7330f414caf6408814bcd7742793049a13814"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"9c9cab87af3daf812a896d204057138421fbc564","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from taskflow.types import failure as task_fail"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova.virt.powervm import vm"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7ffa3b31_83e339a4","line":23,"updated":"2017-04-21 14:13:50.000000000","message":"need a 2nd blank line after imports","commit_id":"9dcdabb8bf15d58f5386a8e2dd4c0ff1248976d6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bfed5f6115411cd57c9d48356bc32e61e62b03d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from taskflow.types import failure as task_fail"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova.virt.powervm import vm"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7ffa3b31_b7af8f28","line":23,"in_reply_to":"7ffa3b31_83e339a4","updated":"2017-04-21 15:58:18.000000000","message":"Done","commit_id":"9dcdabb8bf15d58f5386a8e2dd4c0ff1248976d6"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"9c9cab87af3daf812a896d204057138421fbc564","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        vm.power_on(self.adapter, self.instance)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def revert(self, result, flow_failures):"},{"line_number":85,"context_line":"        LOG.warning(\u0027Powering off instance.\u0027, instance\u003dself.instance)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if isinstance(result, task_fail.Failure):"},{"line_number":88,"context_line":"            # The power on itself failed...can\u0027t power off."}],"source_content_type":"text/x-python","patch_set":17,"id":"7ffa3b31_03b72988","line":85,"updated":"2017-04-21 14:13:50.000000000","message":"this log statement ends up being incorrect if the isinstance check passes. Should move this to right before the vm.power_off call.","commit_id":"9dcdabb8bf15d58f5386a8e2dd4c0ff1248976d6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bfed5f6115411cd57c9d48356bc32e61e62b03d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        vm.power_on(self.adapter, self.instance)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def revert(self, result, flow_failures):"},{"line_number":85,"context_line":"        LOG.warning(\u0027Powering off instance.\u0027, instance\u003dself.instance)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if isinstance(result, task_fail.Failure):"},{"line_number":88,"context_line":"            # The power on itself failed...can\u0027t power off."}],"source_content_type":"text/x-python","patch_set":17,"id":"7ffa3b31_97aa5316","line":85,"in_reply_to":"7ffa3b31_03b72988","updated":"2017-04-21 15:58:18.000000000","message":"Done","commit_id":"9dcdabb8bf15d58f5386a8e2dd4c0ff1248976d6"}]}
