)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"f72e1c171b3c93be554ca1d6dd5c806ba4f92f06","unresolved":false,"context_lines":[{"line_number":15,"context_line":"in volume api to provide full value task flow for manage"},{"line_number":16,"context_line":"existing command."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: #1364550"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I12a4311953c1c86d584b5bf2fe2888e5b5127d43"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_77ffc902","line":18,"updated":"2015-01-14 11:06:56.000000000","message":"No, it doesn\u0027t close this bug at all.\n\n\u0027cinder manage\u0027 is intended to manage volumes created outside of cinder. This patch does nothing to help in that case. It fixes the synthetic test case of managing a volume created by cinder that is already managed by cinder, but that is at best a subset of the bug.","commit_id":"354c8f00c9190a8de7f169b4622078a2d8b4f23d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"34b8cb9222572e92d822e98e45a5f393f7f25e6d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Anton Arefiev \u003caarefiev@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-02-11 11:31:06 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix lvm manage existing volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add manage existing api task in flow. Task used"},{"line_number":10,"context_line":"in volume api to provide full value task flow for manage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da86d52c_62c7a145","line":7,"updated":"2015-02-12 16:23:01.000000000","message":"Introducing flows for this probably needs a more descriptive commit summary, this sounds like it\u0027s a simple LVM driver fix.","commit_id":"993f47d965b6b0ad0cff93a5e3341ddb7778c014"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"01c76e30ee2c8d9162198a2ba0e8d505b65908b9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add entry create and cast tasks to manage workflow"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add manage existing api task in flow. Task used"},{"line_number":10,"context_line":"in volume api to provide full value task flow for manage"},{"line_number":11,"context_line":"existing process. All errors occurred during manage flow set"},{"line_number":12,"context_line":"folume to \u0027error\u0027 state."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da86d52c_3b63531b","line":9,"updated":"2015-02-18 13:10:54.000000000","message":"/add/adds/","commit_id":"71242a66e3bc6fc751c5a6cf22affe2529ac4eb1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"01c76e30ee2c8d9162198a2ba0e8d505b65908b9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change add manage existing api task in flow. Task used"},{"line_number":10,"context_line":"in volume api to provide full value task flow for manage"},{"line_number":11,"context_line":"existing process. All errors occurred during manage flow set"},{"line_number":12,"context_line":"folume to \u0027error\u0027 state."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Entry creating moved from volume api to EntryCreateTask. Also"},{"line_number":15,"context_line":"added ManageCastTask to provide manage process to scheduler."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da86d52c_7bb22b97","line":12,"updated":"2015-02-18 13:10:54.000000000","message":"/folume/volume/","commit_id":"71242a66e3bc6fc751c5a6cf22affe2529ac4eb1"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"23aaccd8421f509df2b2595d63bf6904fe758c26","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add entry create and cast tasks to manage workflow"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds manage existing api task in flow. Task used"},{"line_number":10,"context_line":"in volume api to provide full value task flow for manage"},{"line_number":11,"context_line":"existing process. All errors occurred during manage flow set"},{"line_number":12,"context_line":"volume to \u0027error\u0027 state."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"ba3cc151_91ce22b6","line":9,"updated":"2015-07-10 16:31:01.000000000","message":"Suggest: \"The task is used in the volume api to provide....\"","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"62234c32f4332ad6e3bc8b6362c7f7209c17966f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add entry create and cast tasks to manage workflow"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds manage existing api task in flow. Task used"},{"line_number":10,"context_line":"in volume api to provide full value task flow for manage"},{"line_number":11,"context_line":"existing process. All errors occurred during manage flow set"},{"line_number":12,"context_line":"volume to \u0027error\u0027 state."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"9a41bdd9_593f50b4","line":9,"in_reply_to":"ba3cc151_91ce22b6","updated":"2015-07-13 10:48:23.000000000","message":"Sure","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"}],"cinder/tests/test_volume_utils.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":752,"context_line":"            side_effect\u003dexception.VolumeNotFound(\u0027volume-214\u0027))"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"        # nothrow ManageExistingAlreadyManaged"},{"line_number":755,"context_line":"        volume_utils.validate_already_managed_volume(mock_db, \u0027volume-214\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_50dccb74","line":755,"updated":"2015-02-09 16:07:59.000000000","message":"Assert?","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"}],"cinder/tests/unit/volume/flows/fake_volume_api.py":[{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"34de7796e40f8bf1efca3df5554de946d008fcc1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                      source_replicaid\u003dNone):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        self.test_inst.assertEqual(self.expected_spec, request_spec)"},{"line_number":27,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027source_volid\u0027], source_volid)"},{"line_number":28,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027snapshot_id\u0027], snapshot_id)"},{"line_number":29,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027image_id\u0027], image_id)"},{"line_number":30,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027source_replicaid\u0027],"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a4dcd0f_6fe3c7d9","line":27,"updated":"2015-08-06 23:41:15.000000000","message":"Should the order of the arguments be switched for this and the following assertEqual calls? The order should be (expected, actual). I am not sure if source_volid is expected or actual in this case.","commit_id":"a1e4ad9ff2e9366a5f41b176b5a88d451079557c"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"568f9816da37a46ef11eeeef069ae46908f6509e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                      source_replicaid\u003dNone):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        self.test_inst.assertEqual(self.expected_spec, request_spec)"},{"line_number":27,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027source_volid\u0027], source_volid)"},{"line_number":28,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027snapshot_id\u0027], snapshot_id)"},{"line_number":29,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027image_id\u0027], image_id)"},{"line_number":30,"context_line":"        self.test_inst.assertEqual(request_spec[\u0027source_replicaid\u0027],"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a4dcd0f_3b1bb382","line":27,"in_reply_to":"1a4dcd0f_6fe3c7d9","updated":"2015-08-07 08:43:15.000000000","message":"It is right order, request_spec is provided args - expected","commit_id":"a1e4ad9ff2e9366a5f41b176b5a88d451079557c"}],"cinder/tests/volume/flows/test_create_volume_flow.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            fake_volume_api.FakeVolumeAPI(spec, self),"},{"line_number":68,"context_line":"            fake_volume_api.FakeDb())"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        task._cast_create_volume(self.ctxt, spec, props)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_9592b5f4","line":70,"updated":"2015-02-09 16:07:59.000000000","message":"What are you testing here? There is no assert calls","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"01c76e30ee2c8d9162198a2ba0e8d505b65908b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Canonical Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_9b0d1f92","line":1,"updated":"2015-02-18 13:10:54.000000000","message":"Is this copyright correct? Should at least state 2015.","commit_id":"71242a66e3bc6fc751c5a6cf22affe2529ac4eb1"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"041cddac198e6a4568aeb22ae35c57af887ec1be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Canonical Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_84c69c9a","line":1,"in_reply_to":"da86d52c_9b0d1f92","updated":"2015-02-18 14:10:48.000000000","message":"Sean, it isn\u0027t new file, I just moved it","commit_id":"71242a66e3bc6fc751c5a6cf22affe2529ac4eb1"}],"cinder/tests/volume/flows/test_manage_volume_flow.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":27,"context_line":"        self.counter \u003d float(0)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def test_cast_manage_existing(self):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        volume \u003d mock.MagicMock(return_value\u003dNone)"},{"line_number":32,"context_line":"        spec \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_3572e9e5","line":29,"updated":"2015-02-09 16:07:59.000000000","message":"Same comment as for test_create_volume_flow.py","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"}],"cinder/volume/api.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":1290,"context_line":"            flow_engine \u003d manage_existing.get_flow(self.scheduler_rpcapi,"},{"line_number":1291,"context_line":"                                                   self.db,"},{"line_number":1292,"context_line":"                                                   create_what)"},{"line_number":1293,"context_line":"        except Exception:"},{"line_number":1294,"context_line":"            LOG.exception(_LE(\"Failed to manage api volume flow\"))"},{"line_number":1295,"context_line":"            raise exception.CinderException("},{"line_number":1296,"context_line":"                _(\"Failed to manage api volume flow\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_95571526","line":1293,"updated":"2015-02-09 16:07:59.000000000","message":"Can we handle more specific exception here?","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"                                                   self.db,"},{"line_number":1292,"context_line":"                                                   create_what)"},{"line_number":1293,"context_line":"        except Exception:"},{"line_number":1294,"context_line":"            LOG.exception(_LE(\"Failed to manage api volume flow\"))"},{"line_number":1295,"context_line":"            raise exception.CinderException("},{"line_number":1296,"context_line":"                _(\"Failed to manage api volume flow\"))"},{"line_number":1297,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_f535b1f7","line":1294,"updated":"2015-02-09 16:07:59.000000000","message":"Please, add debug log with traceback","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"34b8cb9222572e92d822e98e45a5f393f7f25e6d","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                                 create_what)"},{"line_number":239,"context_line":"        except exception.CinderException:"},{"line_number":240,"context_line":"            LOG.exception(_LE(\"Failed to create api volume flow\"))"},{"line_number":241,"context_line":"            raise"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        # Attaching this listener will capture all of the notifications that"},{"line_number":244,"context_line":"        # taskflow sends out and redirect them to a more useful log for"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_62cec15b","line":241,"updated":"2015-02-12 16:23:01.000000000","message":"Why is this changed?","commit_id":"993f47d965b6b0ad0cff93a5e3341ddb7778c014"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"1e019f5d63fa7cd2b7ff3c9a972726ca672f12f6","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                                 create_what)"},{"line_number":239,"context_line":"        except exception.CinderException:"},{"line_number":240,"context_line":"            LOG.exception(_LE(\"Failed to create api volume flow\"))"},{"line_number":241,"context_line":"            raise"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        # Attaching this listener will capture all of the notifications that"},{"line_number":244,"context_line":"        # taskflow sends out and redirect them to a more useful log for"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_dd0af0d0","line":241,"in_reply_to":"da86d52c_62cec15b","updated":"2015-02-12 16:34:01.000000000","message":"Eric, it changed due Ivan\u0027s comments on manage_existing function https://review.openstack.org/#/c/139071/6/cinder/volume/api.py to keep consistency with code","commit_id":"993f47d965b6b0ad0cff93a5e3341ddb7778c014"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4b7d992b37371a5dfc19728195050378c28e8dcf","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                                 availability_zones,"},{"line_number":239,"context_line":"                                                 create_what)"},{"line_number":240,"context_line":"        except exception.CinderException:"},{"line_number":241,"context_line":"            msg \u003d _(\u0027Failed to create api volume flow.\u0027)"},{"line_number":242,"context_line":"            LOG.exception(msg)"},{"line_number":243,"context_line":"            raise"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_7cc3e8ec","line":241,"updated":"2015-02-25 14:42:17.000000000","message":"With switch from \"except Exception\" to \"except exception.CinderException\" and \"raise exception.CinderException(msg)\" to just \"raise\" the i18n marker is now incorrect.\n\nPlease change msg to be wrapped in _LE() instead of _() now. And since the string is now only used in the LOG.exception call I would rather have the extra variable assignment removed, i.e.:\n\nLOG.exception(_LE(\u0027Failed to create api volume flow.\u0027))","commit_id":"139471d19a2c459001d324787a849fae9eec6291"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0d69e3fcf39e4b0f9ea6d6e628a2291a6bade2e7","unresolved":false,"context_lines":[{"line_number":1476,"context_line":"                                                   self.db,"},{"line_number":1477,"context_line":"                                                   create_what)"},{"line_number":1478,"context_line":"        except exception.CinderException:"},{"line_number":1479,"context_line":"            LOG.exception(_LE(\"Failed to manage api volume flow\"))"},{"line_number":1480,"context_line":"            raise"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"        # Attaching this listener will capture all of the notifications that"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa32b979_8bf2479a","line":1479,"updated":"2015-06-28 15:04:45.000000000","message":". At eol","commit_id":"e5783dd7e772540232722b354813aaf83c9c3d20"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a871744ebf7e9ffac1fcf9acf63ffca78d1ddb98","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"                    LOG.error(_LE(\u0027Unable to find service for given host.\u0027))"},{"line_number":1452,"context_line":"            availability_zone \u003d service.get(\u0027availability_zone\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        create_what \u003d {"},{"line_number":1455,"context_line":"            \u0027context\u0027: context,"},{"line_number":1456,"context_line":"            \u0027name\u0027: name,"},{"line_number":1457,"context_line":"            \u0027description\u0027: description,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_c9f95c4f","line":1454,"updated":"2015-07-13 07:24:12.000000000","message":"create_what probably isn\u0027t the best name here. We\u0027re managing a volume, not creating it.","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"62234c32f4332ad6e3bc8b6362c7f7209c17966f","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"                    LOG.error(_LE(\u0027Unable to find service for given host.\u0027))"},{"line_number":1452,"context_line":"            availability_zone \u003d service.get(\u0027availability_zone\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        create_what \u003d {"},{"line_number":1455,"context_line":"            \u0027context\u0027: context,"},{"line_number":1456,"context_line":"            \u0027name\u0027: name,"},{"line_number":1457,"context_line":"            \u0027description\u0027: description,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_673dd42a","line":1454,"in_reply_to":"9a41bdd9_c9f95c4f","updated":"2015-07-13 10:48:23.000000000","message":"sure","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9d13a19e316186eb3ff09eadb5c6643dd7d16aed","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                                                 sched_rpcapi,"},{"line_number":288,"context_line":"                                                 volume_rpcapi)"},{"line_number":289,"context_line":"        except exception.CinderException:"},{"line_number":290,"context_line":"            LOG.exception(_LE(\u0027Failed to create api volume flow.\u0027))"},{"line_number":291,"context_line":"            raise"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Attaching this listener will capture all of the notifications that"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_bb520c12","line":290,"updated":"2015-07-13 14:59:04.000000000","message":"Is this related to the patch? I\u0027m okay with that, but it would be easier to review without such changes. Why are we actually changing the exception caught?","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"ee71856680fa3439c8e27d02af8f6e8753b3e61d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                                                 sched_rpcapi,"},{"line_number":288,"context_line":"                                                 volume_rpcapi)"},{"line_number":289,"context_line":"        except exception.CinderException:"},{"line_number":290,"context_line":"            LOG.exception(_LE(\u0027Failed to create api volume flow.\u0027))"},{"line_number":291,"context_line":"            raise"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Attaching this listener will capture all of the notifications that"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_e7b19f90","line":290,"in_reply_to":"9a41bdd9_4bac1fa0","updated":"2015-07-14 12:36:42.000000000","message":"Missing it, you are right exception from engine may occur here, but imo we should catch it, not abstract Exception, so it is work for another patch","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"abf5c8b88f280f487d6cf4b177af2551b73ce3bb","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                                                 sched_rpcapi,"},{"line_number":288,"context_line":"                                                 volume_rpcapi)"},{"line_number":289,"context_line":"        except exception.CinderException:"},{"line_number":290,"context_line":"            LOG.exception(_LE(\u0027Failed to create api volume flow.\u0027))"},{"line_number":291,"context_line":"            raise"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Attaching this listener will capture all of the notifications that"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_d91cae15","line":290,"in_reply_to":"9a41bdd9_bb520c12","updated":"2015-07-13 15:32:41.000000000","message":"Please read comments in patch set 6","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7d99f85db92a4500ef8ef3d75fb5737f860630a1","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                                                 sched_rpcapi,"},{"line_number":288,"context_line":"                                                 volume_rpcapi)"},{"line_number":289,"context_line":"        except exception.CinderException:"},{"line_number":290,"context_line":"            LOG.exception(_LE(\u0027Failed to create api volume flow.\u0027))"},{"line_number":291,"context_line":"            raise"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Attaching this listener will capture all of the notifications that"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_4bac1fa0","line":290,"in_reply_to":"9a41bdd9_d91cae15","updated":"2015-07-14 09:24:19.000000000","message":"Ah, that\u0027s a change for consistency... get_flow can throw also TaskFlow exceptions - for example when someone plays with requires/provides in tasks, so I\u0027m not sure if this is a good idea.","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9d13a19e316186eb3ff09eadb5c6643dd7d16aed","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"            elevated \u003d context.elevated()"},{"line_number":1445,"context_line":"            try:"},{"line_number":1446,"context_line":"                svc_host \u003d volume_utils.extract_host(host, \u0027backend\u0027)"},{"line_number":1447,"context_line":"                service \u003d self.db.service_get_by_host_and_topic("},{"line_number":1448,"context_line":"                    elevated, svc_host, CONF.volume_topic)"},{"line_number":1449,"context_line":"            except exception.ServiceNotFound:"},{"line_number":1450,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_f60f41df","line":1447,"updated":"2015-07-13 14:59:04.000000000","message":"Wouldn\u0027t it be better to do that inside of the flow?","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"abf5c8b88f280f487d6cf4b177af2551b73ce3bb","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"            elevated \u003d context.elevated()"},{"line_number":1445,"context_line":"            try:"},{"line_number":1446,"context_line":"                svc_host \u003d volume_utils.extract_host(host, \u0027backend\u0027)"},{"line_number":1447,"context_line":"                service \u003d self.db.service_get_by_host_and_topic("},{"line_number":1448,"context_line":"                    elevated, svc_host, CONF.volume_topic)"},{"line_number":1449,"context_line":"            except exception.ServiceNotFound:"},{"line_number":1450,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_f9b412f3","line":1447,"in_reply_to":"9a41bdd9_f60f41df","updated":"2015-07-13 15:32:41.000000000","message":"Maybe you right, I thought about it, but didn\u0027t see any benefits.","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7d99f85db92a4500ef8ef3d75fb5737f860630a1","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"            elevated \u003d context.elevated()"},{"line_number":1445,"context_line":"            try:"},{"line_number":1446,"context_line":"                svc_host \u003d volume_utils.extract_host(host, \u0027backend\u0027)"},{"line_number":1447,"context_line":"                service \u003d self.db.service_get_by_host_and_topic("},{"line_number":1448,"context_line":"                    elevated, svc_host, CONF.volume_topic)"},{"line_number":1449,"context_line":"            except exception.ServiceNotFound:"},{"line_number":1450,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_2b519b62","line":1447,"in_reply_to":"9a41bdd9_f9b412f3","updated":"2015-07-14 09:24:19.000000000","message":"I can see similar approach taken in create, so leaving it like that is probably fine for now.","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"315fcc9076d20c843286f89b8a41012f282bd53a","unresolved":false,"context_lines":[{"line_number":1475,"context_line":""},{"line_number":1476,"context_line":"        # Attaching this listener will capture all of the notifications that"},{"line_number":1477,"context_line":"        # taskflow sends out and redirect them to a more useful log for"},{"line_number":1478,"context_line":"        # cinders debugging (or error reporting) usage."},{"line_number":1479,"context_line":"        with flow_utils.DynamicLogListener(flow_engine, logger\u003dLOG):"},{"line_number":1480,"context_line":"            flow_engine.run()"},{"line_number":1481,"context_line":"            vol_ref \u003d flow_engine.storage.fetch(\u0027volume\u0027)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_bfe71d3f","line":1478,"updated":"2015-07-27 16:08:44.000000000","message":"cinders -\u003e cinder\u0027s","commit_id":"d845cca364260f41ce27f6de7aaeffa52b603d9a"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"d8ace3e409df33b82fd9b3f5eefc50942bdb8cfb","unresolved":false,"context_lines":[{"line_number":1475,"context_line":""},{"line_number":1476,"context_line":"        # Attaching this listener will capture all of the notifications that"},{"line_number":1477,"context_line":"        # taskflow sends out and redirect them to a more useful log for"},{"line_number":1478,"context_line":"        # cinders debugging (or error reporting) usage."},{"line_number":1479,"context_line":"        with flow_utils.DynamicLogListener(flow_engine, logger\u003dLOG):"},{"line_number":1480,"context_line":"            flow_engine.run()"},{"line_number":1481,"context_line":"            vol_ref \u003d flow_engine.storage.fetch(\u0027volume\u0027)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_b46c1f9d","line":1478,"in_reply_to":"3a50d1a3_bfe71d3f","updated":"2015-07-27 16:21:33.000000000","message":"Done","commit_id":"d845cca364260f41ce27f6de7aaeffa52b603d9a"}],"cinder/volume/flows/api/manage_existing.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo.config import cfg"},{"line_number":15,"context_line":"import taskflow.engines"},{"line_number":16,"context_line":"from taskflow.patterns import linear_flow"},{"line_number":17,"context_line":"from taskflow.types import failure as ft"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder import flow_utils"},{"line_number":20,"context_line":"from cinder.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_b5025909","line":17,"updated":"2015-02-09 16:07:59.000000000","message":"Add blank line between 3rd party and cinder imports","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8db74ba43130575f4aff9995b889958dab4bb947","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            \u0027bootable\u0027: kwargs.pop(\u0027bootable\u0027),"},{"line_number":70,"context_line":"        }"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        #volume_properties.update(kwargs)"},{"line_number":73,"context_line":"        volume \u003d self.db.volume_create(context, volume_properties)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return {"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_1020939a","line":72,"updated":"2015-02-09 16:07:59.000000000","message":"Remove commented code, please.","commit_id":"562054d9ab3a48fe3aa778c86ebbdce46593da2a"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0d69e3fcf39e4b0f9ea6d6e628a2291a6bade2e7","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            self.db.volume_destroy(context.elevated(), vol_id)"},{"line_number":101,"context_line":"        except exception.CinderException:"},{"line_number":102,"context_line":"            LOG.exception(_LE(\"Failed destroying volume entry %s\"), vol_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class ManageCastTask(flow_utils.CinderTask):"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa32b979_2b48dbcb","line":102,"updated":"2015-06-28 15:04:45.000000000","message":"entry: %s","commit_id":"e5783dd7e772540232722b354813aaf83c9c3d20"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0d69e3fcf39e4b0f9ea6d6e628a2291a6bade2e7","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":134,"context_line":"        common.restore_source_status(context, self.db, kwargs)"},{"line_number":135,"context_line":"        common.error_out_volume(context, self.db, volume_id)"},{"line_number":136,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed\"), volume_id)"},{"line_number":137,"context_line":"        exc_info \u003d False"},{"line_number":138,"context_line":"        if all(flow_failures[-1].exc_info):"},{"line_number":139,"context_line":"            exc_info \u003d flow_failures[-1].exc_info"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa32b979_4b43dfaf","line":136,"updated":"2015-06-28 15:04:45.000000000","message":". at eol.","commit_id":"e5783dd7e772540232722b354813aaf83c9c3d20"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"631d1a7371e493e71286c95511f5e58203949e41","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            \u0027bootable\u0027: kwargs.pop(\u0027bootable\u0027),"},{"line_number":70,"context_line":"        }"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        volume \u003d self.db.volume_create(context, volume_properties)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        return {"},{"line_number":75,"context_line":"            \u0027volume_properties\u0027: volume_properties,"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba3cc151_0ad5661a","line":72,"updated":"2015-07-02 12:37:43.000000000","message":"I think we shouldn\u0027t use db.volume_create more, creation of objects.Volume is better.","commit_id":"094df2b45cdffecd8ea1bd5e30f910c3c3f2535c"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"4d28a39602a787b62ba6033c43b280a805fdbb2d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            \u0027bootable\u0027: kwargs.pop(\u0027bootable\u0027),"},{"line_number":70,"context_line":"        }"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        volume \u003d self.db.volume_create(context, volume_properties)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        return {"},{"line_number":75,"context_line":"            \u0027volume_properties\u0027: volume_properties,"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba3cc151_08eb2fe0","line":72,"in_reply_to":"ba3cc151_0ad5661a","updated":"2015-07-02 12:57:32.000000000","message":"Using  objects.Volume  work should be done in separate patch, since we don\u0027t use it all over the code yet.","commit_id":"094df2b45cdffecd8ea1bd5e30f910c3c3f2535c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a871744ebf7e9ffac1fcf9acf63ffca78d1ddb98","unresolved":false,"context_lines":[{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class EntryCreateTask(flow_utils.CinderTask):"},{"line_number":32,"context_line":"    \"\"\"Creates an entry for the given volume creation in the database."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Reversion strategy: remove the volume_id created from the database."}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_4d3b17d2","line":31,"updated":"2015-07-13 07:24:12.000000000","message":"This task is very similar to the one in flows.api.create_volume. Maybe you can reuse it? Or at least inherit from it and overwrite execute method to reuse revert method?","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"62234c32f4332ad6e3bc8b6362c7f7209c17966f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class EntryCreateTask(flow_utils.CinderTask):"},{"line_number":32,"context_line":"    \"\"\"Creates an entry for the given volume creation in the database."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Reversion strategy: remove the volume_id created from the database."}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_7909f42b","line":31,"in_reply_to":"9a41bdd9_4d3b17d2","updated":"2015-07-13 10:48:23.000000000","message":"So revert methods is diff, and there is no need in it, also imo it is bad idea, create and manage EntryCreateTask create one entity, but in different context, so mixin them can leads to bugs in manage flow.","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a871744ebf7e9ffac1fcf9acf63ffca78d1ddb98","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        return {"},{"line_number":75,"context_line":"            \u0027volume_properties\u0027: volume_properties,"},{"line_number":76,"context_line":"            \u0027volume_type\u0027: volume_type,"},{"line_number":77,"context_line":"            \u0027ref\u0027: kwargs.pop(\u0027ref\u0027),"},{"line_number":78,"context_line":"            # NOTE(harlowja): it appears like further usage of this volume"},{"line_number":79,"context_line":"            # result actually depend on it being a sqlalchemy object and not"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_6dadbbe8","line":76,"updated":"2015-07-13 07:24:12.000000000","message":"volume_type is already in engine\u0027s storage, you don\u0027t need to pass it here.","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"62234c32f4332ad6e3bc8b6362c7f7209c17966f","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        return {"},{"line_number":75,"context_line":"            \u0027volume_properties\u0027: volume_properties,"},{"line_number":76,"context_line":"            \u0027volume_type\u0027: volume_type,"},{"line_number":77,"context_line":"            \u0027ref\u0027: kwargs.pop(\u0027ref\u0027),"},{"line_number":78,"context_line":"            # NOTE(harlowja): it appears like further usage of this volume"},{"line_number":79,"context_line":"            # result actually depend on it being a sqlalchemy object and not"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_16f0b78f","line":76,"in_reply_to":"9a41bdd9_6dadbbe8","updated":"2015-07-13 10:48:23.000000000","message":"remove","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a871744ebf7e9ffac1fcf9acf63ffca78d1ddb98","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return {"},{"line_number":75,"context_line":"            \u0027volume_properties\u0027: volume_properties,"},{"line_number":76,"context_line":"            \u0027volume_type\u0027: volume_type,"},{"line_number":77,"context_line":"            \u0027ref\u0027: kwargs.pop(\u0027ref\u0027),"},{"line_number":78,"context_line":"            # NOTE(harlowja): it appears like further usage of this volume"},{"line_number":79,"context_line":"            # result actually depend on it being a sqlalchemy object and not"},{"line_number":80,"context_line":"            # just a plain dictionary so that\u0027s why we are storing this here."}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_0dbaef23","line":77,"updated":"2015-07-13 07:24:12.000000000","message":"Same thing with ref.","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"62234c32f4332ad6e3bc8b6362c7f7209c17966f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return {"},{"line_number":75,"context_line":"            \u0027volume_properties\u0027: volume_properties,"},{"line_number":76,"context_line":"            \u0027volume_type\u0027: volume_type,"},{"line_number":77,"context_line":"            \u0027ref\u0027: kwargs.pop(\u0027ref\u0027),"},{"line_number":78,"context_line":"            # NOTE(harlowja): it appears like further usage of this volume"},{"line_number":79,"context_line":"            # result actually depend on it being a sqlalchemy object and not"},{"line_number":80,"context_line":"            # just a plain dictionary so that\u0027s why we are storing this here."}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_963a8735","line":77,"in_reply_to":"9a41bdd9_0dbaef23","updated":"2015-07-13 10:48:23.000000000","message":"remove","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a871744ebf7e9ffac1fcf9acf63ffca78d1ddb98","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if isinstance(result, ft.Failure):"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if optional_args[\u0027is_quota_committed\u0027]:"},{"line_number":95,"context_line":"            # Committed quota doesn\u0027t rollback as the volume has already been"},{"line_number":96,"context_line":"            # created at this point, and the quota has already been absorbed."},{"line_number":97,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_4dc5578c","line":94,"updated":"2015-07-13 07:24:12.000000000","message":"Do we need quota check here? We don\u0027t do any quota operations in this flow. Maybe we should?","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"62234c32f4332ad6e3bc8b6362c7f7209c17966f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if isinstance(result, ft.Failure):"},{"line_number":92,"context_line":"            return"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if optional_args[\u0027is_quota_committed\u0027]:"},{"line_number":95,"context_line":"            # Committed quota doesn\u0027t rollback as the volume has already been"},{"line_number":96,"context_line":"            # created at this point, and the quota has already been absorbed."},{"line_number":97,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a41bdd9_f6f2f399","line":94,"in_reply_to":"9a41bdd9_4dc5578c","updated":"2015-07-13 10:48:23.000000000","message":"Yep, you are right, we don\u0027t use quota for manage","commit_id":"4f047508d9915edda99942e962f94cb3dd75ff9f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9d13a19e316186eb3ff09eadb5c6643dd7d16aed","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def revert(self, context, result, flow_failures, **kwargs):"},{"line_number":123,"context_line":"        if isinstance(result, ft.Failure):"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_3605a979","line":124,"updated":"2015-07-13 14:59:04.000000000","message":"This will stop executing revert if exception occurred when sending the message over RPC. Is it intentional?","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"abf5c8b88f280f487d6cf4b177af2551b73ce3bb","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def revert(self, context, result, flow_failures, **kwargs):"},{"line_number":123,"context_line":"        if isinstance(result, ft.Failure):"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_d4555550","line":124,"in_reply_to":"9a41bdd9_3605a979","updated":"2015-07-13 15:32:41.000000000","message":"This strategy we are using in create flow, just return if any exception occurs in this task, you have any suggestions about it?","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"ee71856680fa3439c8e27d02af8f6e8753b3e61d","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def revert(self, context, result, flow_failures, **kwargs):"},{"line_number":123,"context_line":"        if isinstance(result, ft.Failure):"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_c247a949","line":124,"in_reply_to":"9a41bdd9_cb56efd1","updated":"2015-07-14 12:36:42.000000000","message":"I\u0027m agree with you on it, I\u0027ll update patch to change volume status to error for all cases during revert","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7d99f85db92a4500ef8ef3d75fb5737f860630a1","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def revert(self, context, result, flow_failures, **kwargs):"},{"line_number":123,"context_line":"        if isinstance(result, ft.Failure):"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_cb56efd1","line":124,"in_reply_to":"9a41bdd9_d4555550","updated":"2015-07-14 09:24:19.000000000","message":"Ah, you\u0027re right, create_volume has the same behavior. Funny thing is if exception occurred inside ManageCastTask\u0027s execute method, then we won\u0027t call error_out_volume. But - we will delete the volume from the DB in EntryCreateTask\u0027s revert method...\n\nI think that\u0027s a bug in create_volume flow and we should error_out_volume even if we didn\u0027t produced the result.","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9d13a19e316186eb3ff09eadb5c6643dd7d16aed","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"},{"line_number":128,"context_line":"        common.error_out_volume(context, self.db, volume_id)"},{"line_number":129,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"},{"line_number":130,"context_line":"        exc_info \u003d False"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_56d70d23","line":127,"updated":"2015-07-13 14:59:04.000000000","message":"Where did we actually changed source volume status?","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"abf5c8b88f280f487d6cf4b177af2551b73ce3bb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"},{"line_number":128,"context_line":"        common.error_out_volume(context, self.db, volume_id)"},{"line_number":129,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"},{"line_number":130,"context_line":"        exc_info \u003d False"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_146f3dc6","line":127,"in_reply_to":"9a41bdd9_56d70d23","updated":"2015-07-13 15:32:41.000000000","message":"wow missing it, I\u0027ll remove it, thanks","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9d13a19e316186eb3ff09eadb5c6643dd7d16aed","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"},{"line_number":128,"context_line":"        common.error_out_volume(context, self.db, volume_id)"},{"line_number":129,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"},{"line_number":130,"context_line":"        exc_info \u003d False"},{"line_number":131,"context_line":"        if all(flow_failures[-1].exc_info):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_56a5cdb2","line":128,"updated":"2015-07-13 14:59:04.000000000","message":"I think volume will get deleted anyway when revert for EntryCreateTask will happen. So why change it\u0027s status here?","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"abf5c8b88f280f487d6cf4b177af2551b73ce3bb","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"},{"line_number":128,"context_line":"        common.error_out_volume(context, self.db, volume_id)"},{"line_number":129,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"},{"line_number":130,"context_line":"        exc_info \u003d False"},{"line_number":131,"context_line":"        if all(flow_failures[-1].exc_info):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_74ed6924","line":128,"in_reply_to":"9a41bdd9_56a5cdb2","updated":"2015-07-13 15:32:41.000000000","message":"Maybe will deleted, maybe not, who knows, I\u0027d prefer to change status to error.","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7d99f85db92a4500ef8ef3d75fb5737f860630a1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # Restore the source volume status and set the volume to error status."},{"line_number":126,"context_line":"        volume_id \u003d kwargs[\u0027volume_id\u0027]"},{"line_number":127,"context_line":"        common.restore_source_status(context, self.db, kwargs)"},{"line_number":128,"context_line":"        common.error_out_volume(context, self.db, volume_id)"},{"line_number":129,"context_line":"        LOG.error(_LE(\"Volume %s: manage failed.\"), volume_id)"},{"line_number":130,"context_line":"        exc_info \u003d False"},{"line_number":131,"context_line":"        if all(flow_failures[-1].exc_info):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_2b1d1b0f","line":128,"in_reply_to":"9a41bdd9_74ed6924","updated":"2015-07-14 09:24:19.000000000","message":"I get the point, your approach is right. Please see the comment on line 124 tough.","commit_id":"7ecf747eab01b87db8c10dde568ad80408ce8c8b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"315fcc9076d20c843286f89b8a41012f282bd53a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        exc_info \u003d False"},{"line_number":128,"context_line":"        if all(flow_failures[-1].exc_info):"},{"line_number":129,"context_line":"            exc_info \u003d flow_failures[-1].exc_info"},{"line_number":130,"context_line":"        LOG.error(_LE(\u0027Unexpected build error:\u0027), exc_info\u003dexc_info)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def get_flow(scheduler_rpcapi, db_api, create_what):"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_9f9ee1b6","line":130,"updated":"2015-07-27 16:08:44.000000000","message":"It looks like this was copied over from volume/flows/api/create_volume.py .  So, it is valid, but this method for using LOG.error is rather confusing.  Can you please use LOG.exception instead as that approach is more recognized.","commit_id":"d845cca364260f41ce27f6de7aaeffa52b603d9a"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"d8ace3e409df33b82fd9b3f5eefc50942bdb8cfb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        exc_info \u003d False"},{"line_number":128,"context_line":"        if all(flow_failures[-1].exc_info):"},{"line_number":129,"context_line":"            exc_info \u003d flow_failures[-1].exc_info"},{"line_number":130,"context_line":"        LOG.error(_LE(\u0027Unexpected build error:\u0027), exc_info\u003dexc_info)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def get_flow(scheduler_rpcapi, db_api, create_what):"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_31b6e18a","line":130,"in_reply_to":"3a50d1a3_9f9ee1b6","updated":"2015-07-27 16:21:33.000000000","message":"Not sure it is good idea, Logger.exception should only be called from an exception handler.","commit_id":"d845cca364260f41ce27f6de7aaeffa52b603d9a"}]}
