)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"824bf4210cd337a0e36e32da1f9e09ff8dd4c4b5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-02-19 16:46:44 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Implement poll util"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I62c4cd92925d0d09bd529cb1103519d3d84c2f1f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_2a6402e4","line":8,"updated":"2015-02-24 16:14:00.000000000","message":"Blueprint link missed.","commit_id":"059437263e3fc9422ff54feee1d9250b770c301b"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"b7b91130d7cd1d4ec99af150dfa2612d7208660d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-02 14:00:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement poll util and plugin poll util"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changes:"},{"line_number":10,"context_line":" * poll_utils module added;"},{"line_number":11,"context_line":" * implemented general poll util;"},{"line_number":12,"context_line":" * implemented plugin poll util;"},{"line_number":13,"context_line":" * poll util applied for spark"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"partially implements bp: add-timeout-for-polling"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba7be1f8_01649c20","line":13,"range":{"start_line":8,"start_character":0,"end_line":13,"end_character":30},"updated":"2015-03-02 11:44:55.000000000","message":"It\u0027s good to say why we do smthg, not what we do in commit messages.","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"4ab00e16ac463ccbaaa89dae9d0638af97030209","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-02 14:00:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement poll util and plugin poll util"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changes:"},{"line_number":10,"context_line":" * poll_utils module added;"},{"line_number":11,"context_line":" * implemented general poll util;"},{"line_number":12,"context_line":" * implemented plugin poll util;"},{"line_number":13,"context_line":" * poll util applied for spark"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"partially implements bp: add-timeout-for-polling"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba7be1f8_33af3396","line":13,"range":{"start_line":8,"start_character":0,"end_line":13,"end_character":30},"in_reply_to":"ba7be1f8_01649c20","updated":"2015-03-02 11:54:55.000000000","message":"\"Why we do this\" is written in spec for bp. Why not say changes now?","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"4a4d9c2b9105ea09f146e1df5e57e4ccc3c0c305","unresolved":false,"context_lines":[{"line_number":12,"context_line":" * implemented plugin poll util;"},{"line_number":13,"context_line":" * poll util applied for spark"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"partially implements bp: add-timeout-for-polling"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I62c4cd92925d0d09bd529cb1103519d3d84c2f1f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba7be1f8_6180f846","line":15,"updated":"2015-03-02 11:25:09.000000000","message":"Incorrect bp link, there is no bp with such name.","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"}],"sahara/plugins/spark/scaling.py":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"463cb8c45ccc4e6a5e28fe29275336a97d804b0b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                            inst_to_be_deleted))"},{"line_number":74,"context_line":"        run.refresh_nodes(remote.get_remote(nn), \"dfsadmin\")"},{"line_number":75,"context_line":"        context.sleep(3)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        poll_utils.plugin_option_poll("},{"line_number":78,"context_line":"            nn.cluster, _is_decommissioned, c_helper.DECOMMISSIONING_TIMEOUT,"},{"line_number":79,"context_line":"            _(\"Decommission %s\") % \"DataNodes\", 3, {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_23ed4f8c","line":76,"updated":"2015-03-11 16:06:34.000000000","message":"It looks a bit ugly and really difficult to read, what\u0027s about replacing it with a decorator? like to have\n\n@superduperpoll(params...)\ndef _is_decommissioned(r, inst_to_be_deleted):","commit_id":"8fafaf609fa4e2ac3dd7dd6891447cd0e6d944af"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"c53198b53ac20f3c66b5d887b2e299edaae513ca","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                            inst_to_be_deleted))"},{"line_number":74,"context_line":"        run.refresh_nodes(remote.get_remote(nn), \"dfsadmin\")"},{"line_number":75,"context_line":"        context.sleep(3)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        poll_utils.plugin_option_poll("},{"line_number":78,"context_line":"            nn.cluster, _is_decommissioned, c_helper.DECOMMISSIONING_TIMEOUT,"},{"line_number":79,"context_line":"            _(\"Decommission %s\") % \"DataNodes\", 3, {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_ba585957","line":76,"in_reply_to":"9a80dd14_23ed4f8c","updated":"2015-03-12 09:50:37.000000000","message":"I don\u0027t think it\u0027s a good idea. If we have plugin-specific option, such decorator should know about current cluster if we want to get current value of option","commit_id":"8fafaf609fa4e2ac3dd7dd6891447cd0e6d944af"}],"sahara/tests/unit/utils/test_poll_utils.py":[{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_d0591b36","line":16,"updated":"2015-03-03 19:02:31.000000000","message":"mock - third party lib","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"a55d22aa70f1ea457a2c77c3827b013665c86f88","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_23dc6a12","line":16,"updated":"2015-03-05 11:05:05.000000000","message":"look at http://docs.openstack.org/developer/hacking/#real-world-import-order-examples for proper imports order","commit_id":"de9b195bff3e83eca9a8df273d5607043f988051"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"b0f8c655068298221123405466e59739f8c13957","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_e3db32eb","line":16,"in_reply_to":"9a80dd14_23dc6a12","updated":"2015-03-05 11:10:26.000000000","message":"And what is wrong here?","commit_id":"de9b195bff3e83eca9a8df273d5607043f988051"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"dfbe277e80bc89aab53f82c8a4e3a4333dbee002","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_utils import timeutils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from sahara.tests.unit import base"},{"line_number":22,"context_line":"from sahara.utils import poll_utils"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_a1434411","line":19,"updated":"2015-03-10 10:21:34.000000000","message":"mock, six and oslo_utils - third party libs. please reorganise your imports","commit_id":"e34809d7f5d0273500764c3ca17fc228e489ce61"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"b2ae5221816d29ef3de6f6827a8b02180a3cd404","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from sahara.tests.unit import base"},{"line_number":22,"context_line":"from sahara.utils import poll_utils"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_22b3244e","line":20,"updated":"2015-03-13 12:01:01.000000000","message":"please use one indent line between imports","commit_id":"fd5365d518bf05ab0e369cdd5e8df7a0dfaf9e36"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"b2ae5221816d29ef3de6f6827a8b02180a3cd404","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestPollUtils(base.SaharaTestCase):"},{"line_number":30,"context_line":"    @mock.patch(\u0027sahara.utils.poll_utils.LOG.debug\u0027)"},{"line_number":31,"context_line":"    def test_poll_success(self, logger):"},{"line_number":32,"context_line":"        def n_get(x):"},{"line_number":33,"context_line":"            return get_status(x, 1)"},{"line_number":34,"context_line":"        st \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_a211d405","line":31,"updated":"2015-03-13 12:01:01.000000000","message":"This test is slow. http://logs.openstack.org/92/157392/18/check/gate-sahara-python27/d30c95c/console.html#_2015-03-12_11_57_57_225","commit_id":"fd5365d518bf05ab0e369cdd5e8df7a0dfaf9e36"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"b2ae5221816d29ef3de6f6827a8b02180a3cd404","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.assertEqual(1, logger.call_count)"},{"line_number":40,"context_line":"        self.assertEqual([expected_call], logger.call_args_list)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test_poll_failed_first_scenario(self):"},{"line_number":43,"context_line":"        def n_get(x):"},{"line_number":44,"context_line":"            return get_status(x, 6)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_22eb24dd","line":42,"updated":"2015-03-13 12:01:01.000000000","message":"ditto","commit_id":"fd5365d518bf05ab0e369cdd5e8df7a0dfaf9e36"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"b2ae5221816d29ef3de6f6827a8b02180a3cd404","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.assertEqual(expected_message, message)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_poll_failed_second_scenario(self):"},{"line_number":62,"context_line":"        def n_get(x):"},{"line_number":63,"context_line":"            return get_status(x, 6)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_c2cec882","line":61,"updated":"2015-03-13 12:01:01.000000000","message":"ditto","commit_id":"fd5365d518bf05ab0e369cdd5e8df7a0dfaf9e36"}],"sahara/utils/poll_utils.py":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"325eb3c54ae7225f7380a4c934fb1fdbb2a06776","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        desc \u003d _(\"Operation\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    if not extra:"},{"line_number":41,"context_line":"        LOG.info(_LI(\"{operation_description} was executed successfully in \""},{"line_number":42,"context_line":"                     \"timeout {timeout}\").format(operation_description\u003ddesc,"},{"line_number":43,"context_line":"                                                 timeout\u003dtimeout))"},{"line_number":44,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_e1e2282e","line":41,"updated":"2015-03-02 11:31:01.000000000","message":"Should it be LOG.info?","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"8d80ad27710b801b5395e06ad49d399487022fc8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        desc \u003d _(\"Operation\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    if not extra:"},{"line_number":41,"context_line":"        LOG.info(_LI(\"{operation_description} was executed successfully in \""},{"line_number":42,"context_line":"                     \"timeout {timeout}\").format(operation_description\u003ddesc,"},{"line_number":43,"context_line":"                                                 timeout\u003dtimeout))"},{"line_number":44,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_01057c79","line":41,"in_reply_to":"ba7be1f8_e1e2282e","updated":"2015-03-02 11:43:26.000000000","message":"Agree with @Sergey - better use LOG.debug here.","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"8d80ad27710b801b5395e06ad49d399487022fc8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        return"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    reason \u003d extra.get(\u0027reason\u0027, _(\"unspecified reason\"))"},{"line_number":47,"context_line":"    LOG.info(_LI(\"{operation_description} was stopped because of \""},{"line_number":48,"context_line":"                 \"reason: {reason}\").format(operation_description\u003ddesc,"},{"line_number":49,"context_line":"                                            reason\u003dreason))"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_612ab82d","line":47,"updated":"2015-03-02 11:43:26.000000000","message":"LOG.warning looks better here, as far as it not \u0027successful execution\u0027. Or you can use LOG.debug instead.","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"325eb3c54ae7225f7380a4c934fb1fdbb2a06776","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    timeout_name \u003d poll_description.get(\u0027timeout_name\u0027, None)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    # set 1 day timeout by default"},{"line_number":58,"context_line":"    timeout \u003d poll_description.get(\u0027timeout\u0027, 86400)"},{"line_number":59,"context_line":"    sleep_time \u003d poll_description.get(\u0027sleep\u0027, 5)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    extra_execution \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_015f3ce6","line":58,"updated":"2015-03-02 11:31:01.000000000","message":"It\u0027s too huge for the even default timeout, I think 3 hours is enough for any case.","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"325eb3c54ae7225f7380a4c934fb1fdbb2a06776","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    at_least_one \u003d True"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    while at_least_one or _get_consumed(started_at) \u003c timeout:"},{"line_number":69,"context_line":"        if get_status(obj, *args, **kwargs):"},{"line_number":70,"context_line":"            # stop polling because of success result"},{"line_number":71,"context_line":"            _write_to_log(poll_description)"},{"line_number":72,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_81208c4a","line":69,"updated":"2015-03-02 11:31:01.000000000","message":"We should handle exceptions that could be raised from the status check function. Additionally we should make behaviour configurable - to fail poll or note if exception raised from the status check function.","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":12038,"name":"Vitaly Gridnev","email":"gridnevvvit@gmail.com","username":"vgridnev"},"change_message_id":"2beb4673ce8e8c0b8f572febe0f4d69deea0caa0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    at_least_one \u003d True"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    while at_least_one or _get_consumed(started_at) \u003c timeout:"},{"line_number":69,"context_line":"        if get_status(obj, *args, **kwargs):"},{"line_number":70,"context_line":"            # stop polling because of success result"},{"line_number":71,"context_line":"            _write_to_log(poll_description)"},{"line_number":72,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_e1bf88a8","line":69,"in_reply_to":"ba7be1f8_81208c4a","updated":"2015-03-02 11:36:13.000000000","message":"Agreed, nice catch","commit_id":"7581e297bc72dca6639e8cd91619f02fd6fccb7d"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"8e4df1d1eef513bbf5dbd23945f6500bdd950428","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    reason \u003d extra.get(\u0027reason\u0027, _(\"unspecified reason\"))"},{"line_number":48,"context_line":"    LOG.info(_LI(\"{operation_description} was stopped because of \""},{"line_number":49,"context_line":"                 \"reason: {reason}\").format(operation_description\u003ddesc,"},{"line_number":50,"context_line":"                                            reason\u003dreason))"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_d6b6c5db","line":48,"updated":"2015-03-02 12:23:50.000000000","message":"LOG.warning looks better here, as far as it not \u0027successful execution\u0027. Or you can use LOG.debug instead.","commit_id":"ad3a38b21cb6ee274f070d4bacf044f422f5a68b"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _write_to_log(poll_description, extra\u003dNone):"},{"line_number":32,"context_line":"    timeout \u003d poll_description.get(\u0027timeout\u0027, 10800)"},{"line_number":33,"context_line":"    operation \u003d poll_description.get(\u0027operation\u0027, None)"},{"line_number":34,"context_line":"    if operation:"},{"line_number":35,"context_line":"        desc \u003d \"Operation with name {name}\".format(name\u003doperation)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_f0961f93","line":32,"range":{"start_line":32,"start_character":46,"end_line":32,"end_character":51},"updated":"2015-03-03 19:02:31.000000000","message":"maybe need to create constant for it?","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                        reason\u003dreason))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def poll(obj, get_status, poll_description, extra_spec\u003dNone, *args, **kwargs):"},{"line_number":52,"context_line":"    started_at \u003d timeutils.utcnow()"},{"line_number":53,"context_line":"    operation \u003d poll_description.get(\u0027operation\u0027, None)"},{"line_number":54,"context_line":"    timeout_name \u003d poll_description.get(\u0027timeout_name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_f0f9bfc8","line":51,"updated":"2015-03-03 19:02:31.000000000","message":"I think should add documentation for this method.","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    timeout_name \u003d poll_description.get(\u0027timeout_name\u0027, None)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # set 3 hours timeout by default"},{"line_number":57,"context_line":"    timeout \u003d poll_description.get(\u0027timeout\u0027, 10800)"},{"line_number":58,"context_line":"    sleep_time \u003d poll_description.get(\u0027sleep\u0027, 5)"},{"line_number":59,"context_line":"    exception_strategy \u003d poll_description.get(\u0027exception_strategy\u0027, \u0027reraise\u0027)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_d043db10","line":57,"range":{"start_line":57,"start_character":46,"end_line":57,"end_character":51},"updated":"2015-03-03 19:02:31.000000000","message":"ditto","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    while at_least_one or _get_consumed(started_at) \u003c timeout:"},{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            status \u003d get_status(obj, *args, **kwargs)"},{"line_number":71,"context_line":"        except Exception:"},{"line_number":72,"context_line":"            if exception_strategy \u003d\u003d \u0027reraise\u0027:"},{"line_number":73,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_5048cbb2","line":70,"range":{"start_line":70,"start_character":21,"end_line":70,"end_character":35},"updated":"2015-03-03 19:02:31.000000000","message":"if we have predicate without arguments?","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            status \u003d get_status(obj, *args, **kwargs)"},{"line_number":71,"context_line":"        except Exception:"},{"line_number":72,"context_line":"            if exception_strategy \u003d\u003d \u0027reraise\u0027:"},{"line_number":73,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":74,"context_line":"                    pass"},{"line_number":75,"context_line":"            status \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_10f6538f","line":72,"range":{"start_line":72,"start_character":37,"end_line":72,"end_character":46},"updated":"2015-03-03 19:02:31.000000000","message":"if not \u0027reraise\u0027? we have other values?","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"6f890a3154930e80b3ec8b8daf80d641d1c2df18","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            status \u003d get_status(obj, *args, **kwargs)"},{"line_number":71,"context_line":"        except Exception:"},{"line_number":72,"context_line":"            if exception_strategy \u003d\u003d \u0027reraise\u0027:"},{"line_number":73,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":74,"context_line":"                    pass"},{"line_number":75,"context_line":"            status \u003d False"},{"line_number":76,"context_line":"        if status:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_d0b2fbe3","line":73,"updated":"2015-03-03 19:02:31.000000000","message":"why you use save_and_reraise_exception?","commit_id":"9c34c807ae9abbd22cded80be64a8daff848654f"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"f5a0843a137e0ab3ac81e915613859ae4cac740e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    :parameter operation: name of polling process"},{"line_number":62,"context_line":"    :parameter timeout_name: name of timeout if there is some timeout"},{"line_number":63,"context_line":"    option for this polling process"},{"line_number":64,"context_line":"    :parameter timeout: value of timeout, in seconds"},{"line_number":65,"context_line":"    :parameter sleep: duration between two consecutive executions of"},{"line_number":66,"context_line":"    get_status function"},{"line_number":67,"context_line":"    :parameter exception_strategy: possible values (\u0027raise\u0027, \u0027mark_as_true\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_95873f0f","line":64,"range":{"start_line":64,"start_character":5,"end_line":64,"end_character":14},"updated":"2015-03-04 13:15:23.000000000","message":"typo: param\n\nsee http://docs.openstack.org/developer/hacking/#docstrings","commit_id":"37871984b4d27bb2621457502246aab6faa0d389"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"f5a0843a137e0ab3ac81e915613859ae4cac740e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            try:"},{"line_number":98,"context_line":"                status \u003d get_status(obj, *args, **kwargs)"},{"line_number":99,"context_line":"            except Exception:"},{"line_number":100,"context_line":"                status \u003d False"},{"line_number":101,"context_line":"                if exception_strategy \u003d\u003d \u0027mark_as_true\u0027:"},{"line_number":102,"context_line":"                    status \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_d5e37703","line":99,"range":{"start_line":99,"start_character":19,"end_line":99,"end_character":28},"updated":"2015-03-04 13:15:23.000000000","message":"need to catch all exceptions","commit_id":"37871984b4d27bb2621457502246aab6faa0d389"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"188235b8ac78db1c5a57808f492d0d778973711b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    to stop polling, and False if it\u0027s required to continue polling."},{"line_number":60,"context_line":"    :param poll_description: description of polling process, which may"},{"line_number":61,"context_line":"    consists with following parameters"},{"line_number":62,"context_line":"    :param operation: name of polling process"},{"line_number":63,"context_line":"    :param timeout_name: name of timeout if there is some timeout"},{"line_number":64,"context_line":"    option for this polling process"},{"line_number":65,"context_line":"    :param timeout: value of timeout, in seconds"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_6cfcb33f","line":62,"range":{"start_line":62,"start_character":5,"end_line":62,"end_character":20},"updated":"2015-03-04 20:17:51.000000000","message":"I don\u0027t see operation param","commit_id":"9903b7d296717c8be3dff2f00b86470113843bfc"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"188235b8ac78db1c5a57808f492d0d778973711b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    :param poll_description: description of polling process, which may"},{"line_number":61,"context_line":"    consists with following parameters"},{"line_number":62,"context_line":"    :param operation: name of polling process"},{"line_number":63,"context_line":"    :param timeout_name: name of timeout if there is some timeout"},{"line_number":64,"context_line":"    option for this polling process"},{"line_number":65,"context_line":"    :param timeout: value of timeout, in seconds"},{"line_number":66,"context_line":"    :param sleep: duration between two consecutive executions of"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_cc9aff13","line":63,"range":{"start_line":63,"start_character":6,"end_line":63,"end_character":23},"updated":"2015-03-04 20:17:51.000000000","message":"ditto and etc..","commit_id":"9903b7d296717c8be3dff2f00b86470113843bfc"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"463cb8c45ccc4e6a5e28fe29275336a97d804b0b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    By default it\u0027s \u0027raise\u0027."},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":"    start_time \u003d timeutils.utcnow()"},{"line_number":63,"context_line":"    # We shouldn\u0027t raise TimeoutException if timeout specified wrongly and"},{"line_number":64,"context_line":"    # status is ok now. In such way we should execute get_status at least one."},{"line_number":65,"context_line":"    at_least_one \u003d True"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_039f6b04","line":63,"updated":"2015-03-11 16:06:34.000000000","message":"wrongly -\u003e if incorrect timeout specified","commit_id":"8fafaf609fa4e2ac3dd7dd6891447cd0e6d944af"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"55274122fc0ad541aaca7aca631bdb5e9eae5ed8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    start_time \u003d timeutils.utcnow()"},{"line_number":63,"context_line":"    # We shouldn\u0027t raise TimeoutException if incorrect timeout specified and"},{"line_number":64,"context_line":"    # status is ok now. In such way we should execute get_status at least one."},{"line_number":65,"context_line":"    at_least_one \u003d True"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    while at_least_one or _get_consumed(start_time) \u003c timeout:"},{"line_number":68,"context_line":"        at_least_one \u003d False"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_97709573","line":65,"updated":"2015-03-13 09:20:29.000000000","message":"at_least_once ;)","commit_id":"fd5365d518bf05ab0e369cdd5e8df7a0dfaf9e36"}]}
