)]}'
{"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5e696ea9ea62b9d34c896cb4f20993746bf5030c","unresolved":false,"context_lines":[{"line_number":4679,"context_line":"        vol_type \u003d db.volume_type_create("},{"line_number":4680,"context_line":"            elevated, {\u0027name\u0027: \u0027type1\u0027, \u0027extra_specs\u0027: {}})"},{"line_number":4681,"context_line":"        # create source volume"},{"line_number":4682,"context_line":"        volume_params \u003d {}"},{"line_number":4683,"context_line":"        volume_params[\u0027volume_type_id\u0027] \u003d vol_type.id"},{"line_number":4684,"context_line":"        volume_params[\u0027status\u0027] \u003d \u0027managing\u0027"},{"line_number":4685,"context_line":"        test_vol \u003d tests_utils.create_volume(self.context, **volume_params)"},{"line_number":4686,"context_line":"        mock_size.return_value \u003d 1"},{"line_number":4687,"context_line":"        mock_manage.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_59aa8ed3","line":4684,"range":{"start_line":4682,"start_character":0,"end_line":4684,"end_character":44},"updated":"2016-09-01 08:35:21.000000000","message":"nit:\n\n volume_params \u003d {\u0027volume_type_id\u0027: vol_type.id,\n                  \u0027status\u0027: \u0027managing\u0027}","commit_id":"b0cbb90330cab6d776fa6aee08058faa219c2cd8"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"a5fdbeb225c31fc76d40a604d1d83f202703a490","unresolved":false,"context_lines":[{"line_number":4679,"context_line":"        vol_type \u003d db.volume_type_create("},{"line_number":4680,"context_line":"            elevated, {\u0027name\u0027: \u0027type1\u0027, \u0027extra_specs\u0027: {}})"},{"line_number":4681,"context_line":"        # create source volume"},{"line_number":4682,"context_line":"        volume_params \u003d {}"},{"line_number":4683,"context_line":"        volume_params[\u0027volume_type_id\u0027] \u003d vol_type.id"},{"line_number":4684,"context_line":"        volume_params[\u0027status\u0027] \u003d \u0027managing\u0027"},{"line_number":4685,"context_line":"        test_vol \u003d tests_utils.create_volume(self.context, **volume_params)"},{"line_number":4686,"context_line":"        mock_size.return_value \u003d 1"},{"line_number":4687,"context_line":"        mock_manage.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_558311cc","line":4684,"range":{"start_line":4682,"start_character":0,"end_line":4684,"end_character":44},"in_reply_to":"fa7ab95a_59aa8ed3","updated":"2016-09-01 15:58:02.000000000","message":"Done","commit_id":"b0cbb90330cab6d776fa6aee08058faa219c2cd8"}],"cinder/tests/unit/volume/flows/test_manage_volume_flow.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"4119fb19d208beb2a2d71dddb2fcb88abe573ca8","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            \u0027optional_args\u0027,"},{"line_number":137,"context_line":"        ]"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        provides \u003d set([\u0027self\u0027])"},{"line_number":140,"context_line":"        revert_provides \u003d [\u0027self\u0027, \u0027result\u0027, \u0027flow_failures\u0027]"},{"line_number":141,"context_line":"        for node in volume_flow.iter_nodes():"},{"line_number":142,"context_line":"            task \u003d node[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_f584fbd3","line":139,"updated":"2016-09-02 10:31:48.000000000","message":"nit:\n\n provides \u003d {\u0027self\u0027}","commit_id":"f887e3f48d4a4b81527fefc731d8b9d37fc6a073"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"d9ac8bcc58edc812b92938083dc994e74fedf112","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            \u0027optional_args\u0027,"},{"line_number":137,"context_line":"        ]"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        provides \u003d set([\u0027self\u0027])"},{"line_number":140,"context_line":"        revert_provides \u003d [\u0027self\u0027, \u0027result\u0027, \u0027flow_failures\u0027]"},{"line_number":141,"context_line":"        for node in volume_flow.iter_nodes():"},{"line_number":142,"context_line":"            task \u003d node[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_310f483a","line":139,"in_reply_to":"fa7ab95a_f584fbd3","updated":"2016-09-02 14:58:08.000000000","message":"Done","commit_id":"f887e3f48d4a4b81527fefc731d8b9d37fc6a073"}],"cinder/volume/flows/manager/manage_existing.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1d4554663c5ff50adba216c0d696a91a07dd68ee","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    create_what \u003d {"},{"line_number":109,"context_line":"        \u0027context\u0027: context,"},{"line_number":110,"context_line":"        \u0027volume_ref\u0027: volume,"},{"line_number":111,"context_line":"        \u0027volume\u0027: volume,"},{"line_number":112,"context_line":"        \u0027manage_existing_ref\u0027: ref,"},{"line_number":113,"context_line":"        \u0027optional_args\u0027: {\u0027is_quota_committed\u0027: False}"},{"line_number":114,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_da4a22ac","line":111,"updated":"2016-08-26 21:06:29.000000000","message":"This works, but I don\u0027t think we need both \u0027volume_ref\u0027 and \u0027volume\u0027.  I think volume_ref should be replaced with volume through out this file.","commit_id":"d99f8b1f46ff86551fcc8d2048dd76e77a30c1be"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"66f39eb39653035ec4be9406bf17ead9a7a4b632","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    create_what \u003d {"},{"line_number":109,"context_line":"        \u0027context\u0027: context,"},{"line_number":110,"context_line":"        \u0027volume_ref\u0027: volume,"},{"line_number":111,"context_line":"        \u0027volume\u0027: volume,"},{"line_number":112,"context_line":"        \u0027manage_existing_ref\u0027: ref,"},{"line_number":113,"context_line":"        \u0027optional_args\u0027: {\u0027is_quota_committed\u0027: False}"},{"line_number":114,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_eba9d67c","line":111,"in_reply_to":"fa7ab95a_da4a22ac","updated":"2016-08-26 22:01:50.000000000","message":"Done","commit_id":"d99f8b1f46ff86551fcc8d2048dd76e77a30c1be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a432e701b7c26d900e30b858d0fcb8d258679417","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.driver \u003d driver"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def execute(self, context, volume, manage_existing_ref):"},{"line_number":43,"context_line":"        volume_id \u003d volume.id"},{"line_number":44,"context_line":"        if not self.driver.initialized:"},{"line_number":45,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":46,"context_line":"            LOG.error(_LE(\"Unable to manage existing volume. \""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_1cffeaaa","line":43,"updated":"2016-08-29 12:40:32.000000000","message":"nit: Not much value in this volume_id variable","commit_id":"23cba6c65386e312c670bace5498189d6e702897"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"c25973fa9a7601fa4739245f8f6ca08b6137bdf4","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.driver \u003d driver"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def execute(self, context, volume, manage_existing_ref):"},{"line_number":43,"context_line":"        volume_id \u003d volume.id"},{"line_number":44,"context_line":"        if not self.driver.initialized:"},{"line_number":45,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":46,"context_line":"            LOG.error(_LE(\"Unable to manage existing volume. \""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_633914d7","line":43,"in_reply_to":"fa7ab95a_1cffeaaa","updated":"2016-08-30 13:53:36.000000000","message":"Done","commit_id":"23cba6c65386e312c670bace5498189d6e702897"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a432e701b7c26d900e30b858d0fcb8d258679417","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                \u0027volume_id\u0027: volume_id}}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def revert(self, context, result, flow_failures, volume, **kwargs):"},{"line_number":63,"context_line":"        volume_id \u003d volume.id"},{"line_number":64,"context_line":"        reason \u003d _(\u0027Volume manage failed.\u0027)"},{"line_number":65,"context_line":"        flow_common.error_out(volume, reason\u003dreason)"},{"line_number":66,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_1c9b6a73","line":63,"updated":"2016-08-29 12:40:32.000000000","message":"ditto","commit_id":"23cba6c65386e312c670bace5498189d6e702897"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"c25973fa9a7601fa4739245f8f6ca08b6137bdf4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                \u0027volume_id\u0027: volume_id}}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def revert(self, context, result, flow_failures, volume, **kwargs):"},{"line_number":63,"context_line":"        volume_id \u003d volume.id"},{"line_number":64,"context_line":"        reason \u003d _(\u0027Volume manage failed.\u0027)"},{"line_number":65,"context_line":"        flow_common.error_out(volume, reason\u003dreason)"},{"line_number":66,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_833298f0","line":63,"in_reply_to":"fa7ab95a_1c9b6a73","updated":"2016-08-30 13:53:36.000000000","message":"Done","commit_id":"23cba6c65386e312c670bace5498189d6e702897"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5e696ea9ea62b9d34c896cb4f20993746bf5030c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # determined."},{"line_number":105,"context_line":"    create_what \u003d {"},{"line_number":106,"context_line":"        \u0027context\u0027: context,"},{"line_number":107,"context_line":"        \u0027volume\u0027: volume,"},{"line_number":108,"context_line":"        \u0027manage_existing_ref\u0027: ref,"},{"line_number":109,"context_line":"        \u0027optional_args\u0027: {\u0027is_quota_committed\u0027: False},"},{"line_number":110,"context_line":"    }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    volume_flow \u003d volume_flow_builder(flow_name, db, driver)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # Now load (but do not run) the flow using the provided initial data."},{"line_number":115,"context_line":"    return taskflow.engines.load(volume_flow, store\u003dcreate_what)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"def volume_flow_builder(flow_name, db, driver):"},{"line_number":119,"context_line":"    volume_flow \u003d linear_flow.Flow(flow_name)"},{"line_number":120,"context_line":"    volume_flow.add(create_mgr.NotifyVolumeActionTask(db,"},{"line_number":121,"context_line":"                                                      \"manage_existing.start\"),"},{"line_number":122,"context_line":"                    PrepareForQuotaReservationTask(db, driver),"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_99bfb6a9","line":119,"range":{"start_line":107,"start_character":0,"end_line":119,"end_character":45},"updated":"2016-09-01 08:35:21.000000000","message":"-1: Don\u0027t refactor this for the benefit of testing. There are alternative testing ways that will work with the old code.\n\nOne way to do it is, using the old code, mocking taskflow.engines.load and replace it with a test method that will do the asserts you currently do with returned value of new volume_flow builder, because you will be receiving volume_flow and store parameters in the test method.\n\nIf explanation is not clear, please ping me on IRC and I\u0027ll try to explain it better (geguileo).","commit_id":"b0cbb90330cab6d776fa6aee08058faa219c2cd8"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"a5fdbeb225c31fc76d40a604d1d83f202703a490","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # determined."},{"line_number":105,"context_line":"    create_what \u003d {"},{"line_number":106,"context_line":"        \u0027context\u0027: context,"},{"line_number":107,"context_line":"        \u0027volume\u0027: volume,"},{"line_number":108,"context_line":"        \u0027manage_existing_ref\u0027: ref,"},{"line_number":109,"context_line":"        \u0027optional_args\u0027: {\u0027is_quota_committed\u0027: False},"},{"line_number":110,"context_line":"    }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    volume_flow \u003d volume_flow_builder(flow_name, db, driver)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # Now load (but do not run) the flow using the provided initial data."},{"line_number":115,"context_line":"    return taskflow.engines.load(volume_flow, store\u003dcreate_what)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"def volume_flow_builder(flow_name, db, driver):"},{"line_number":119,"context_line":"    volume_flow \u003d linear_flow.Flow(flow_name)"},{"line_number":120,"context_line":"    volume_flow.add(create_mgr.NotifyVolumeActionTask(db,"},{"line_number":121,"context_line":"                                                      \"manage_existing.start\"),"},{"line_number":122,"context_line":"                    PrepareForQuotaReservationTask(db, driver),"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_3563ed42","line":119,"range":{"start_line":107,"start_character":0,"end_line":119,"end_character":45},"in_reply_to":"fa7ab95a_99bfb6a9","updated":"2016-09-01 15:58:02.000000000","message":"Thanks for the suggestion of using a stub method to perform the asserts.","commit_id":"b0cbb90330cab6d776fa6aee08058faa219c2cd8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"4119fb19d208beb2a2d71dddb2fcb88abe573ca8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except exception.CinderException:"},{"line_number":88,"context_line":"            LOG.exception(_LE(\"Failed updating model of volume %(volume_id)s\""},{"line_number":89,"context_line":"                              \" with creation provided model %(model)s\") %"},{"line_number":90,"context_line":"                          {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":91,"context_line":"                           \u0027model\u0027: model_update})"},{"line_number":92,"context_line":"            raise"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_d57e171a","line":90,"updated":"2016-09-02 10:31:48.000000000","message":"This should be volume.id, but i would feel wrong downvoting for this at this point.","commit_id":"f887e3f48d4a4b81527fefc731d8b9d37fc6a073"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"d9ac8bcc58edc812b92938083dc994e74fedf112","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except exception.CinderException:"},{"line_number":88,"context_line":"            LOG.exception(_LE(\"Failed updating model of volume %(volume_id)s\""},{"line_number":89,"context_line":"                              \" with creation provided model %(model)s\") %"},{"line_number":90,"context_line":"                          {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":91,"context_line":"                           \u0027model\u0027: model_update})"},{"line_number":92,"context_line":"            raise"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_0305970f","line":90,"in_reply_to":"fa7ab95a_d57e171a","updated":"2016-09-02 14:58:08.000000000","message":"Done","commit_id":"f887e3f48d4a4b81527fefc731d8b9d37fc6a073"}]}
