)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ad1c8ae5ccd00dbe30f7b428c271bef976121f1c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Terry Wilson \u003ctwilson@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-08-19 15:55:31 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make get_agents wait for sb_cfg to increment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make agent API get commands increment nb_cfg and wait for the"},{"line_number":10,"context_line":"appropriate chassis nb_cfg values to be incremented before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f79a3b5_1474bb98","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":44},"updated":"2018-08-20 06:08:07.000000000","message":"Is there any issue( Bz, LP ) related to this ? I am just thinking it might be a great thing to track :)","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7d0ab4cb98774641ace9dddf92664359d3c2809d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Terry Wilson \u003ctwilson@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-08-19 15:55:31 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make get_agents wait for sb_cfg to increment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make agent API get commands increment nb_cfg and wait for the"},{"line_number":10,"context_line":"appropriate chassis nb_cfg values to be incremented before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f79a3b5_10d59ce5","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":44},"in_reply_to":"3f79a3b5_1474bb98","updated":"2018-08-20 15:33:15.000000000","message":"There is the general bug for agent api support #1719574 which I suppose this patch should complete/close. There isn\u0027t a bug for the specific race condition that this bug addresses with the original patch that had partial-bug: 1719574.","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"}],"networking_ovn/common/config.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"0e78cc48c6b307f4bb72f7a3bb12a4d6e2afd4c2","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                       \"this option is empty, then the DNS resolvers on the \""},{"line_number":156,"context_line":"                       \"host running the neutron server will be used.\")),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027agent_alive_timeout\u0027, default\u003d60,"},{"line_number":158,"context_line":"               help\u003d_(\u0027Time in seconds to wait for ovn-controller to update a \u0027"},{"line_number":159,"context_line":"                      \u0027chassis before responding that it is dead.\u0027)),"},{"line_number":160,"context_line":"]"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_9e0bbd7b","line":158,"range":{"start_line":158,"start_character":51,"end_line":158,"end_character":65},"updated":"2018-08-10 10:05:54.000000000","message":"it\u0027d be also for metadata agent right? maybe \u0027agents\u0027 instead?","commit_id":"1cf751f430209ba6bca599b35fe6b7badad6b056"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d1bfd17139681d6cc3a5d178ab1dbec0867f6f75","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                       \"this option is empty, then the DNS resolvers on the \""},{"line_number":156,"context_line":"                       \"host running the neutron server will be used.\")),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027agent_alive_timeout\u0027, default\u003d60,"},{"line_number":158,"context_line":"               help\u003d_(\u0027Time in seconds to wait for ovn-controller to update a \u0027"},{"line_number":159,"context_line":"                      \u0027chassis before responding that it is dead.\u0027)),"},{"line_number":160,"context_line":"]"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_bc9f0c64","line":158,"range":{"start_line":158,"start_character":51,"end_line":158,"end_character":65},"in_reply_to":"3f79a3b5_9e0bbd7b","updated":"2018-08-17 21:21:29.000000000","message":"It depends on if you are talking about multiple agents or the singular agent api. :)","commit_id":"1cf751f430209ba6bca599b35fe6b7badad6b056"}],"networking_ovn/ml2/mech_driver.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"ea6c6daed4deb29a8e8674f8192db90eb6e49117","unresolved":false,"context_lines":[{"line_number":873,"context_line":"    agents \u003d []"},{"line_number":874,"context_line":"    with _driver._sb_ovn.transaction(check_error\u003dTrue,"},{"line_number":875,"context_line":"                                     synchronous\u003dTrue) as txn:"},{"line_number":876,"context_line":"        clist \u003d txn.add(_driver._sb_ovn.chassis_list())"},{"line_number":877,"context_line":"    for c in clist.result:"},{"line_number":878,"context_line":"        a \u003d _driver.agent_from_chassis(c)"},{"line_number":879,"context_line":"        if all(a[k] in v for k, v in filters.items()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_65f30da2","line":876,"updated":"2018-07-24 06:57:21.000000000","message":"this waits for the sb_cfg of every chassis?\n\nLooks to me more like looking at the general sb_cfg that ovn-northd sets, right?\n\n\nMay be we can combine both things, this first, and then retrying until any agent which is down becomes up, unless it\u0027s \"very down\" (some threshold) and then we stop waiting for such chassis","commit_id":"cf6ce75341554c7170eced94cdc9b64603c9b4dc"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8541414caa511054d56520c58106a69c63f5e833","unresolved":false,"context_lines":[{"line_number":873,"context_line":"    agents \u003d []"},{"line_number":874,"context_line":"    with _driver._sb_ovn.transaction(check_error\u003dTrue,"},{"line_number":875,"context_line":"                                     synchronous\u003dTrue) as txn:"},{"line_number":876,"context_line":"        clist \u003d txn.add(_driver._sb_ovn.chassis_list())"},{"line_number":877,"context_line":"    for c in clist.result:"},{"line_number":878,"context_line":"        a \u003d _driver.agent_from_chassis(c)"},{"line_number":879,"context_line":"        if all(a[k] in v for k, v in filters.items()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f6690cc0","line":876,"in_reply_to":"5f7c97a3_3b31adbc","updated":"2018-07-24 14:41:22.000000000","message":"Ack, understood.","commit_id":"cf6ce75341554c7170eced94cdc9b64603c9b4dc"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"8b608b0360a56a52a588fff7182059ba09155545","unresolved":false,"context_lines":[{"line_number":873,"context_line":"    agents \u003d []"},{"line_number":874,"context_line":"    with _driver._sb_ovn.transaction(check_error\u003dTrue,"},{"line_number":875,"context_line":"                                     synchronous\u003dTrue) as txn:"},{"line_number":876,"context_line":"        clist \u003d txn.add(_driver._sb_ovn.chassis_list())"},{"line_number":877,"context_line":"    for c in clist.result:"},{"line_number":878,"context_line":"        a \u003d _driver.agent_from_chassis(c)"},{"line_number":879,"context_line":"        if all(a[k] in v for k, v in filters.items()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_3b31adbc","line":876,"in_reply_to":"5f7c97a3_65f30da2","updated":"2018-07-24 14:13:12.000000000","message":"Doing chassis_list() executes an actual transaction, which increments nb_global.nb_cfg (whereas just reading from the local cache doesn\u0027t), and then the post_commit checks the global sb_cfg.","commit_id":"cf6ce75341554c7170eced94cdc9b64603c9b4dc"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"f110d31ef83d7a2c8fa4c45182e18a68b8618ab4","unresolved":false,"context_lines":[{"line_number":889,"context_line":"    filters \u003d filters or {}"},{"line_number":890,"context_line":"    agents \u003d []"},{"line_number":891,"context_line":"    chassis \u003d _driver._sb_ovn.tables[\u0027Chassis\u0027].rows.keys()"},{"line_number":892,"context_line":"    old_nb_cfg \u003d _driver.wait_for_chassis(10, *chassis)"},{"line_number":893,"context_line":"    for c in _driver._sb_ovn.tables[\u0027Chassis\u0027].rows.values():"},{"line_number":894,"context_line":"        a \u003d _driver.agent_from_chassis(c, old_nb_cfg)"},{"line_number":895,"context_line":"        if all(a[k] in v for k, v in filters.items()):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_86eb140f","line":892,"range":{"start_line":892,"start_character":42,"end_line":892,"end_character":44},"updated":"2018-08-01 15:11:05.000000000","message":"I know, another config option..., but I would make this configurable, and higher (\u003e60 secs at least).\n\nIn ml2/ovs is one of the vars that sometimes needs tunning during support sessions. In our case it wouldn\u0027t be more than an \"inactive\" agent from the list point of view, but...","commit_id":"cbb684b6a1580a04b540fea7a27e1b3baf544f31"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6b7567b028039d3c21f64506e24f3fad4399a98f","unresolved":false,"context_lines":[{"line_number":889,"context_line":"    filters \u003d filters or {}"},{"line_number":890,"context_line":"    agents \u003d []"},{"line_number":891,"context_line":"    chassis \u003d _driver._sb_ovn.tables[\u0027Chassis\u0027].rows.keys()"},{"line_number":892,"context_line":"    old_nb_cfg \u003d _driver.wait_for_chassis(10, *chassis)"},{"line_number":893,"context_line":"    for c in _driver._sb_ovn.tables[\u0027Chassis\u0027].rows.values():"},{"line_number":894,"context_line":"        a \u003d _driver.agent_from_chassis(c, old_nb_cfg)"},{"line_number":895,"context_line":"        if all(a[k] in v for k, v in filters.items()):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_c6c34c05","line":892,"range":{"start_line":892,"start_character":42,"end_line":892,"end_character":44},"in_reply_to":"5f7c97a3_86eb140f","updated":"2018-08-01 15:29:38.000000000","message":"Yeah, I had actually meant to comment myself that that would have to change. You beat me to it. :)","commit_id":"cbb684b6a1580a04b540fea7a27e1b3baf544f31"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ad1c8ae5ccd00dbe30f7b428c271bef976121f1c","unresolved":false,"context_lines":[{"line_number":874,"context_line":"    def wait_for_chassis(self, timeout, *chassis):"},{"line_number":875,"context_line":"        \"\"\"Update nb_global.nb_cfg and wait for all chassis to catch up"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        returns nb_cfg the chassis.nb_cfg needs be bigger than to be \u0027up\u0027"},{"line_number":878,"context_line":"        \"\"\""},{"line_number":879,"context_line":"        # ideally we would check against the nb_cfg that check_liveness would"},{"line_number":880,"context_line":"        # return, but we need to listen for the event before we increment to"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_549f93b3","line":877,"range":{"start_line":877,"start_character":23,"end_line":877,"end_character":73},"updated":"2018-08-20 06:08:07.000000000","message":"Sorry, wasnt able to understand it.\nCan you please explain it to me? ( seems a bit confusing to me )","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7d0ab4cb98774641ace9dddf92664359d3c2809d","unresolved":false,"context_lines":[{"line_number":874,"context_line":"    def wait_for_chassis(self, timeout, *chassis):"},{"line_number":875,"context_line":"        \"\"\"Update nb_global.nb_cfg and wait for all chassis to catch up"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        returns nb_cfg the chassis.nb_cfg needs be bigger than to be \u0027up\u0027"},{"line_number":878,"context_line":"        \"\"\""},{"line_number":879,"context_line":"        # ideally we would check against the nb_cfg that check_liveness would"},{"line_number":880,"context_line":"        # return, but we need to listen for the event before we increment to"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_f06ca09d","line":877,"range":{"start_line":877,"start_character":23,"end_line":877,"end_character":73},"in_reply_to":"3f79a3b5_549f93b3","updated":"2018-08-20 15:33:15.000000000","message":"It is a bit confusing. I had trouble coming up with a better one-line description.\n\nTo be considered \u0027up\u0027, a Chassis needs to have its nb_cfg be greater than the value of NB_Global.nb_cfg, which this function returns.\n\nMaybe I could just say \"returns the NB_Global.nb_cfg value at the time of calling\" or something.","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ad1c8ae5ccd00dbe30f7b428c271bef976121f1c","unresolved":false,"context_lines":[{"line_number":927,"context_line":"    # is being set to False, otherwise the end-state will be fine"},{"line_number":928,"context_line":"    if not agent.get(\u0027admin_state_up\u0027, True):"},{"line_number":929,"context_line":"        pass"},{"line_number":930,"context_line":"    elif \u0027description\u0027 in agent:"},{"line_number":931,"context_line":"        _driver._sb_ovn.set_chassis_neutron_description("},{"line_number":932,"context_line":"            chassis.name, agent[\u0027description\u0027]).execute(check_error\u003dTrue)"},{"line_number":933,"context_line":"        return _driver.agent_from_chassis(chassis, old_nb_cfg)"},{"line_number":934,"context_line":"    else:"},{"line_number":935,"context_line":"        # admin_state_up\u003dTrue w/o description"},{"line_number":936,"context_line":"        return _driver.agent_from_chassis(chassis, old_nb_cfg)"},{"line_number":937,"context_line":"    raise n_exc.BadRequest(resource\u003d\u0027agent\u0027,"},{"line_number":938,"context_line":"                           msg\u003d\u0027OVN agent status cannot be updated\u0027)"},{"line_number":939,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_14827b50","line":936,"range":{"start_line":930,"start_character":0,"end_line":936,"end_character":62},"updated":"2018-08-20 06:08:07.000000000","message":"I dont think the elif/else condition is required , I mean yes, we need 2 loops but we need only one return statement, isnt it? I think if we write it as \n\n  else:\n    if \u0027description\u0027 in agent:\n        _driver._sb_ovn.set_chassis_neutron_description(\n            chassis.name, \n          agent[\u0027description\u0027]).execute(check_error\u003dTrue)\n    return _driver.agent_from_chassis(chassis, old_nb_cfg)\n\nBut yes, its purely optional for you to consider this. :)","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7d0ab4cb98774641ace9dddf92664359d3c2809d","unresolved":false,"context_lines":[{"line_number":927,"context_line":"    # is being set to False, otherwise the end-state will be fine"},{"line_number":928,"context_line":"    if not agent.get(\u0027admin_state_up\u0027, True):"},{"line_number":929,"context_line":"        pass"},{"line_number":930,"context_line":"    elif \u0027description\u0027 in agent:"},{"line_number":931,"context_line":"        _driver._sb_ovn.set_chassis_neutron_description("},{"line_number":932,"context_line":"            chassis.name, agent[\u0027description\u0027]).execute(check_error\u003dTrue)"},{"line_number":933,"context_line":"        return _driver.agent_from_chassis(chassis, old_nb_cfg)"},{"line_number":934,"context_line":"    else:"},{"line_number":935,"context_line":"        # admin_state_up\u003dTrue w/o description"},{"line_number":936,"context_line":"        return _driver.agent_from_chassis(chassis, old_nb_cfg)"},{"line_number":937,"context_line":"    raise n_exc.BadRequest(resource\u003d\u0027agent\u0027,"},{"line_number":938,"context_line":"                           msg\u003d\u0027OVN agent status cannot be updated\u0027)"},{"line_number":939,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_d0be44d3","line":936,"range":{"start_line":930,"start_character":0,"end_line":936,"end_character":62},"in_reply_to":"3f79a3b5_14827b50","updated":"2018-08-20 15:33:15.000000000","message":"I\u0027m always happy to remove an unneeded line of code. (well, same number of lines I guess, but repeated code anyway) :)","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2a25bb9f70ef2166610aa923a5f8eda618aeabb4","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        if (\u0027enable-chassis-as-gw\u0027 in"},{"line_number":829,"context_line":"                chassis.external_ids.get(\u0027ovn-cms-options\u0027, [])):"},{"line_number":830,"context_line":"            agent_type \u003d ovn_const.OVN_CONTROLLER_GW_AGENT"},{"line_number":831,"context_line":"        alive \u003d chassis.nb_cfg \u003e old_nb_cfg"},{"line_number":832,"context_line":"        return {"},{"line_number":833,"context_line":"            \u0027binary\u0027: \"ovn-controller\","},{"line_number":834,"context_line":"            \u0027host\u0027: chassis.hostname,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_20f1ea6b","line":831,"range":{"start_line":831,"start_character":17,"end_line":831,"end_character":43},"updated":"2018-09-06 12:03:23.000000000","message":"if it is Equal, then is that an issue ?","commit_id":"81fdb7fcee40ca0f27464104eb035b392582e8cc"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"86124035633e781122b3b09df0290c35ce6ef847","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    filters \u003d filters or {}"},{"line_number":902,"context_line":"    agents \u003d []"},{"line_number":903,"context_line":"    chassis \u003d _driver._sb_ovn.tables[\u0027Chassis\u0027].rows.keys()"},{"line_number":904,"context_line":"    old_nb_cfg \u003d _driver.wait_for_chassis(config.get_agents_alive_timeout(),"},{"line_number":905,"context_line":"                                          *chassis)"},{"line_number":906,"context_line":"    for c in _driver._sb_ovn.tables[\u0027Chassis\u0027].rows.values():"},{"line_number":907,"context_line":"        a \u003d _driver.agent_from_chassis(c, old_nb_cfg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_f52767b5","line":904,"updated":"2018-09-04 14:39:31.000000000","message":"can we add a mechanism to stop waiting, and start showing up just as \"DEAD\" chassis that have a \"very old\" nbcfg, where \"very old\" would be a constant.\n\nAnother alternative could be recording the failed chassis, and their respective nb_cfg, if on next listing of chassis, the nb_cfg is still the same we can probably assume (for that request) that the chassis is still down.\n\n\nIf we don\u0027t do that, once one is down every request will wait for the 60 secs timeout.","commit_id":"81fdb7fcee40ca0f27464104eb035b392582e8cc"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"884b0eb971cda51ad355043b6a702ad03ee3dbf4","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        if self._nb_ovn.nb_global.nb_cfg \u003d\u003d chassis.nb_cfg:"},{"line_number":829,"context_line":"            return True"},{"line_number":830,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":831,"context_line":"        updated_at \u003d stats.AgentStats.get_stat(chassis.uuid).updated_at"},{"line_number":832,"context_line":"        if (now - updated_at).total_seconds() \u003c cfg.CONF.agent_down_time:"},{"line_number":833,"context_line":"            return True"},{"line_number":834,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_b6c7b645","line":831,"range":{"start_line":831,"start_character":0,"end_line":831,"end_character":71},"updated":"2018-09-17 14:55:04.000000000","message":"This requires pretty good time sync between nodes. Is this written somewhere?","commit_id":"eb7a2519ffea39f4c511110b97c615b3e6b9b893"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"1d4a82013990461cd8ecb92fa22b3ad3eb322441","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        if self._nb_ovn.nb_global.nb_cfg \u003d\u003d chassis.nb_cfg:"},{"line_number":829,"context_line":"            return True"},{"line_number":830,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":831,"context_line":"        updated_at \u003d stats.AgentStats.get_stat(chassis.uuid).updated_at"},{"line_number":832,"context_line":"        if (now - updated_at).total_seconds() \u003c cfg.CONF.agent_down_time:"},{"line_number":833,"context_line":"            return True"},{"line_number":834,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_36f4065b","line":831,"range":{"start_line":831,"start_character":0,"end_line":831,"end_character":71},"in_reply_to":"3f79a3b5_56d502e5","updated":"2018-09-17 15:00:53.000000000","message":"Ok ignore this :) I got confused! This is just updated by add_stat so the comparison is local. All good, sorry!!!","commit_id":"eb7a2519ffea39f4c511110b97c615b3e6b9b893"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"a8e1cb76d716ba13decfd4c9fa772daa6aa65c73","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        if self._nb_ovn.nb_global.nb_cfg \u003d\u003d chassis.nb_cfg:"},{"line_number":829,"context_line":"            return True"},{"line_number":830,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":831,"context_line":"        updated_at \u003d stats.AgentStats.get_stat(chassis.uuid).updated_at"},{"line_number":832,"context_line":"        if (now - updated_at).total_seconds() \u003c cfg.CONF.agent_down_time:"},{"line_number":833,"context_line":"            return True"},{"line_number":834,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_56d502e5","line":831,"range":{"start_line":831,"start_character":0,"end_line":831,"end_character":71},"in_reply_to":"3f79a3b5_b6c7b645","updated":"2018-09-17 14:55:35.000000000","message":"sorry, L832 does :)","commit_id":"eb7a2519ffea39f4c511110b97c615b3e6b9b893"}],"networking_ovn/ovsdb/commands.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7b59c29101e3a9356a8cf41381c2096618ff4872","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def run_idl(self, txn):"},{"line_number":95,"context_line":"        # txn.pre_commit responsible for updating nb_global.nb_cfg, but"},{"line_number":96,"context_line":"        # python-ovs will not update nb_cfg if no other changes are made"},{"line_number":97,"context_line":"        self.api.nb_global.setkey(\u0027external_ids\u0027, \u0027networking_ovn_junk\u0027,"},{"line_number":98,"context_line":"                                  str(datetime.datetime.utcnow()))"},{"line_number":99,"context_line":"        self.result \u003d self.api.nb_global.nb_cfg"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_2661e0a2","line":97,"range":{"start_line":97,"start_character":51,"end_line":97,"end_character":70},"updated":"2018-08-01 15:33:56.000000000","message":"heh we should name it differently, and perhaps use the \"neutron:\" prefix as we do for other neutron related external_ids stuff","commit_id":"cbb684b6a1580a04b540fea7a27e1b3baf544f31"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"60dea342ed4d722d16e0f4d3b8b5f3a2e6bc0cb1","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def run_idl(self, txn):"},{"line_number":95,"context_line":"        # txn.pre_commit responsible for updating nb_global.nb_cfg, but"},{"line_number":96,"context_line":"        # python-ovs will not update nb_cfg if no other changes are made"},{"line_number":97,"context_line":"        self.api.nb_global.setkey(\u0027external_ids\u0027, \u0027networking_ovn_junk\u0027,"},{"line_number":98,"context_line":"                                  str(datetime.datetime.utcnow()))"},{"line_number":99,"context_line":"        self.result \u003d self.api.nb_global.nb_cfg"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_30a6f50e","line":97,"range":{"start_line":97,"start_character":51,"end_line":97,"end_character":70},"in_reply_to":"5f7c97a3_2661e0a2","updated":"2018-08-01 16:58:24.000000000","message":"yeah, this was pretty much the \"well, do tests pass?\" attempt. And they seem to be failing, but oddly functional tests passed locally.","commit_id":"cbb684b6a1580a04b540fea7a27e1b3baf544f31"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7b59c29101e3a9356a8cf41381c2096618ff4872","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        # txn.pre_commit responsible for updating nb_global.nb_cfg, but"},{"line_number":96,"context_line":"        # python-ovs will not update nb_cfg if no other changes are made"},{"line_number":97,"context_line":"        self.api.nb_global.setkey(\u0027external_ids\u0027, \u0027networking_ovn_junk\u0027,"},{"line_number":98,"context_line":"                                  str(datetime.datetime.utcnow()))"},{"line_number":99,"context_line":"        self.result \u003d self.api.nb_global.nb_cfg"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_a60ad0cc","line":98,"range":{"start_line":98,"start_character":38,"end_line":98,"end_character":62},"updated":"2018-08-01 15:33:56.000000000","message":"from oslo_utils import timeutils\n\ntimeutils.utcnow()","commit_id":"cbb684b6a1580a04b540fea7a27e1b3baf544f31"}],"networking_ovn/ovsdb/impl_idl_ovn.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"da2d7eec48689ed32ddb4d57c878f97fdcd1d6c9","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def do_post_commit(self, txn):"},{"line_number":58,"context_line":"        nb_cfg \u003d txn.get_increment_new_value()"},{"line_number":59,"context_line":"        while not self.timeout_exceeded():"},{"line_number":60,"context_line":"            self.api.idl.run()"},{"line_number":61,"context_line":"            if self.controller_has_completed(nb_cfg):"},{"line_number":62,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_238d9234","line":59,"range":{"start_line":59,"start_character":18,"end_line":59,"end_character":41},"updated":"2018-07-30 09:15:25.000000000","message":"What\u0027s the current timeout time ?","commit_id":"cb57f505ac03563409df61e643ddecf96d60070e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"da2d7eec48689ed32ddb4d57c878f97fdcd1d6c9","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            self.ovsdb_connection.poller.block()"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            raise ovsdb_exc.TimeoutException(commands\u003dself.commands,"},{"line_number":69,"context_line":"                                             timeout\u003dself.timeout)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def controller_has_completed(self, nb_cfg):"},{"line_number":72,"context_line":"        return self.api.nb_global.sb_cfg \u003e\u003d nb_cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_63a70abd","line":69,"updated":"2018-07-30 09:15:25.000000000","message":"Quick q: At this point the transaction should be already committed in the OVN NB database so, even if we raise this TimetouException it won\u0027t be rolled back, right ?\n\nJust asking cause maybe we should indicate that in the error log.","commit_id":"cb57f505ac03563409df61e643ddecf96d60070e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ad1c8ae5ccd00dbe30f7b428c271bef976121f1c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return self.is_table_present(table_name) and ("},{"line_number":80,"context_line":"            col_name in self._tables[table_name].columns)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def create_transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":83,"context_line":"        return idl_trans.Transaction("},{"line_number":84,"context_line":"            self, self.ovsdb_connection, self.ovsdb_connection.timeout,"},{"line_number":85,"context_line":"            check_error, log_errors)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_14f7dbf7","line":82,"range":{"start_line":82,"start_character":69,"end_line":82,"end_character":77},"updated":"2018-08-20 06:08:07.000000000","message":"do we need to use this in the function?\nI cant find its usage here","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7d0ab4cb98774641ace9dddf92664359d3c2809d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return self.is_table_present(table_name) and ("},{"line_number":80,"context_line":"            col_name in self._tables[table_name].columns)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def create_transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":83,"context_line":"        return idl_trans.Transaction("},{"line_number":84,"context_line":"            self, self.ovsdb_connection, self.ovsdb_connection.timeout,"},{"line_number":85,"context_line":"            check_error, log_errors)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_50f314e8","line":82,"range":{"start_line":82,"start_character":69,"end_line":82,"end_character":77},"in_reply_to":"3f79a3b5_14f7dbf7","updated":"2018-08-20 15:33:15.000000000","message":"This is a hold-over from a previous version of the patch. Technically create_transaction in the api definition has **kwargs in it: https://github.com/openstack/ovsdbapp/blob/f15d014fc7cb4111c132e7e2b3b3f35e0dbf5e82/ovsdbapp/api.py#L73\n\nso I went ahead and left it even though technically it probably should be a separate patch. I can go ahead and remove it.","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"2b72664fab07e9bb55706a015eb15b9c30efe9fd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return self.is_table_present(table_name) and ("},{"line_number":80,"context_line":"            col_name in self._tables[table_name].columns)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def create_transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":83,"context_line":"        return idl_trans.Transaction("},{"line_number":84,"context_line":"            self, self.ovsdb_connection, self.ovsdb_connection.timeout,"},{"line_number":85,"context_line":"            check_error, log_errors)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_4bfe0939","line":82,"range":{"start_line":82,"start_character":69,"end_line":82,"end_character":77},"in_reply_to":"3f79a3b5_50f314e8","updated":"2018-08-20 16:21:16.000000000","message":"I should clarify, yes create_transaction() itself is required, it is called by ovsdbapp in transaction(). But adding **kwargs doesn\u0027t need to be done for this patch.","commit_id":"12c2c222c51e255be5f146b6c651d64e166d343a"}]}
