)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1c04c37321b944463b1a80b88384771e49885524","unresolved":false,"context_lines":[{"line_number":7,"context_line":"loadimpact perf improvement with batch vsctl/native commands"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Few modifications to group some ovs-vsctl ops as transactions."},{"line_number":10,"context_line":"Some of the vsctl calls cannot be clubbed due to their"},{"line_number":11,"context_line":"inter-dependencies for data/logic as it is structured in the"},{"line_number":12,"context_line":"current agent code. Also there is open flow add/mod calls"},{"line_number":13,"context_line":"to ofctl which also could be optimized if they can be clubbed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa0719c6_98b655f7","line":10,"range":{"start_line":10,"start_character":34,"end_line":10,"end_character":41},"updated":"2016-03-24 02:48:02.000000000","message":"clubbed?  I\u0027m not sure what you mean here.  :)","commit_id":"8d79d492ba5ec1d59e488e6f0ec946f58ae37e6c"}],"neutron/agent/common/ovs_lib.py":[{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"f55ebce1c1380c58ee3244fe93327604e5e55270","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    def destroy(self):"},{"line_number":283,"context_line":"        self.delete_bridge(self.br_name)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def add_port(self, port_name, txn, *interface_attr_tuples):"},{"line_number":286,"context_line":"        if not txn:"},{"line_number":287,"context_line":"            with self.ovsdb.transaction() as txn:"},{"line_number":288,"context_line":"                txn.add(self.ovsdb.add_port(self.br_name, port_name))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_872673b8","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":16},"updated":"2016-03-08 05:06:12.000000000","message":"Currently ofagent ml2 driver uses add_port(). And some drivers also may be affected by it.","commit_id":"b1e05e3c4205f7a37f37cbd9578e70fd421bdd31"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"e849385a81adfd466ad023dd3934ef6a8dfa561d","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    def destroy(self):"},{"line_number":283,"context_line":"        self.delete_bridge(self.br_name)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def add_port(self, port_name, txn, *interface_attr_tuples):"},{"line_number":286,"context_line":"        if not txn:"},{"line_number":287,"context_line":"            with self.ovsdb.transaction() as txn:"},{"line_number":288,"context_line":"                txn.add(self.ovsdb.add_port(self.br_name, port_name))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_665e8d77","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":16},"in_reply_to":"1af94dfe_f413ba5a","updated":"2016-03-17 10:19:03.000000000","message":"I pushed the following patch for our networking-ofagent project.\n\nhttps://review.openstack.org/#/c/289710/\n\nBut I don\u0027t check it about other projects.","commit_id":"b1e05e3c4205f7a37f37cbd9578e70fd421bdd31"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"bd2ba78d89b24704cddb40493b63d6c1fa29a38c","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    def destroy(self):"},{"line_number":283,"context_line":"        self.delete_bridge(self.br_name)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def add_port(self, port_name, txn, *interface_attr_tuples):"},{"line_number":286,"context_line":"        if not txn:"},{"line_number":287,"context_line":"            with self.ovsdb.transaction() as txn:"},{"line_number":288,"context_line":"                txn.add(self.ovsdb.add_port(self.br_name, port_name))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_f413ba5a","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":16},"in_reply_to":"3afc51ec_6085ca05","updated":"2016-03-15 22:13:13.000000000","message":"Neutron has many sub-projects and those are on another repository.\nIn the case of ofagent, it is the following.\n\nhttp://git.openstack.org/cgit/openstack/networking-ofagent/tree/networking_ofagent/plugins/ofagent/agent/ofa_neutron_agent.py#n626","commit_id":"b1e05e3c4205f7a37f37cbd9578e70fd421bdd31"},{"author":{"_account_id":18289,"name":"Sreekumar S","email":"sreesiv@gmail.com","username":"sreesiv"},"change_message_id":"d2f000bf7c8e62e60fb53f584cc7fa09bfd1ecb8","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    def destroy(self):"},{"line_number":283,"context_line":"        self.delete_bridge(self.br_name)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def add_port(self, port_name, txn, *interface_attr_tuples):"},{"line_number":286,"context_line":"        if not txn:"},{"line_number":287,"context_line":"            with self.ovsdb.transaction() as txn:"},{"line_number":288,"context_line":"                txn.add(self.ovsdb.add_port(self.br_name, port_name))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_6085ca05","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":16},"in_reply_to":"5aef4532_872673b8","updated":"2016-03-15 07:51:18.000000000","message":"I didn\u0027t understand your comments. Can you please elaborate? I believe I\u0027ve fixed up all places where add_port() is being called.","commit_id":"b1e05e3c4205f7a37f37cbd9578e70fd421bdd31"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"e23f070ecca37049f66e7a3823846f697fc837d0","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        \"\"\"Get the ports\u0027 assigned ofports, retrying if not yet assigned.\"\"\""},{"line_number":371,"context_line":"        ofports \u003d [INVALID_OFPORT for port_name in port_names]"},{"line_number":372,"context_line":"        try:"},{"line_number":373,"context_line":"            ofports \u003d self._get_ports_ofports(port_names)"},{"line_number":374,"context_line":"        except retrying.RetryError:"},{"line_number":375,"context_line":"            LOG.exception(_LE(\"Timed out retrieving ofports on ports %s.\"),"},{"line_number":376,"context_line":"                          port_names)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_d714b6f6","line":373,"updated":"2016-03-17 03:57:14.000000000","message":"get_ports_ofports() will return a list having dictionary item into as DbCommand class retuns it.\ne.g. [{u\u0027ofport\u0027: 2}]\nWe need an int type data as ofport.\nThis will cause the gate-tempest-dsvm-neutron-ovs-native ci to fail.\nhttp://logs.openstack.org/80/286580/5/experimental/gate-tempest-dsvm-neutron-ovs-native/d4df108/logs/screen-q-agt.txt.gz#_2016-03-07_11_15_21_099","commit_id":"e2e3278d02f7ac67586902f9ecefeb09c602b0a0"},{"author":{"_account_id":18289,"name":"Sreekumar S","email":"sreesiv@gmail.com","username":"sreesiv"},"change_message_id":"f2fb3a47c418cf30b4e1173c11ab1eaeff375bad","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        \"\"\"Get the ports\u0027 assigned ofports, retrying if not yet assigned.\"\"\""},{"line_number":371,"context_line":"        ofports \u003d [INVALID_OFPORT for port_name in port_names]"},{"line_number":372,"context_line":"        try:"},{"line_number":373,"context_line":"            ofports \u003d self._get_ports_ofports(port_names)"},{"line_number":374,"context_line":"        except retrying.RetryError:"},{"line_number":375,"context_line":"            LOG.exception(_LE(\"Timed out retrieving ofports on ports %s.\"),"},{"line_number":376,"context_line":"                          port_names)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_59a2109a","line":373,"in_reply_to":"1af94dfe_d714b6f6","updated":"2016-03-18 11:16:59.000000000","message":"Done","commit_id":"e2e3278d02f7ac67586902f9ecefeb09c602b0a0"},{"author":{"_account_id":18289,"name":"Sreekumar S","email":"sreesiv@gmail.com","username":"sreesiv"},"change_message_id":"347368aa1595bbc6bda92e65229afea9ce1c8fc3","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        \"\"\"Get the ports\u0027 assigned ofports, retrying if not yet assigned.\"\"\""},{"line_number":371,"context_line":"        ofports \u003d [INVALID_OFPORT for port_name in port_names]"},{"line_number":372,"context_line":"        try:"},{"line_number":373,"context_line":"            ofports \u003d self._get_ports_ofports(port_names)"},{"line_number":374,"context_line":"        except retrying.RetryError:"},{"line_number":375,"context_line":"            LOG.exception(_LE(\"Timed out retrieving ofports on ports %s.\"),"},{"line_number":376,"context_line":"                          port_names)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_e449c261","line":373,"in_reply_to":"1af94dfe_d714b6f6","updated":"2016-03-18 05:55:32.000000000","message":"Thanks kakuma San, I know of this issue.\nSorry I was busy for the last 2-3 days. I will fix this and refresh this patch with your other suggestions soon.","commit_id":"e2e3278d02f7ac67586902f9ecefeb09c602b0a0"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1c04c37321b944463b1a80b88384771e49885524","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def set_db_attribute(self, table_name, record, column, value,"},{"line_number":178,"context_line":"                         check_error\u003dFalse, log_errors\u003dTrue, txn\u003dNone):"},{"line_number":179,"context_line":"        if txn is None:"},{"line_number":180,"context_line":"            self.ovsdb.db_set(table_name, record, (column, value)).execute("},{"line_number":181,"context_line":"                check_error\u003dcheck_error, log_errors\u003dlog_errors)"},{"line_number":182,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_d8d9edf4","line":179,"range":{"start_line":179,"start_character":8,"end_line":179,"end_character":22},"updated":"2016-03-24 02:48:02.000000000","message":"I think a better pattern could be found.  I don\u0027t have it yet but I really don\u0027t like methods like this:\n\n  if argument is None:\n      # Do something\n  else:\n      # Do something different","commit_id":"8d79d492ba5ec1d59e488e6f0ec946f58ae37e6c"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1c04c37321b944463b1a80b88384771e49885524","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            self.ovsdb.db_set(table_name, record, (column, value)).execute("},{"line_number":181,"context_line":"                check_error\u003dcheck_error, log_errors\u003dlog_errors)"},{"line_number":182,"context_line":"        else:"},{"line_number":183,"context_line":"            txn.add(self.ovsdb.db_set(table_name, record, (column, value)))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def clear_db_attribute(self, table_name, record, column):"},{"line_number":186,"context_line":"        self.ovsdb.db_clear(table_name, record, column).execute()"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_d800cd36","line":183,"range":{"start_line":183,"start_character":20,"end_line":183,"end_character":73},"updated":"2016-03-24 02:48:02.000000000","message":"I notice that this bit of code is repeated.  Most of these methods follow this pattern:\n\n  if txn is None:\n      self.ovsdb.something.execute(...)\n  else:\n      txn.add(self.ovsdb.something)\n\nThe self.ovsdb.something is repeated in each case.","commit_id":"8d79d492ba5ec1d59e488e6f0ec946f58ae37e6c"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    \"\"\""},{"line_number":114,"context_line":"    @six.wraps(fn)"},{"line_number":115,"context_line":"    def wrapped(*args, **kwargs):"},{"line_number":116,"context_line":"        self \u003d args[0]"},{"line_number":117,"context_line":"        new_fn \u003d retrying.retry("},{"line_number":118,"context_line":"            retry_on_result\u003d_ofports_result_pending,"},{"line_number":119,"context_line":"            stop_max_delay\u003dself.vsctl_timeout * 1000,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_5920c049","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":22},"updated":"2016-05-13 16:32:35.000000000","message":"Just declare the method like this:\n\n  def wrapped(self, *args, **kwargs):","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            wait_exponential_multiplier\u003d10,"},{"line_number":121,"context_line":"            wait_exponential_max\u003d1000,"},{"line_number":122,"context_line":"            retry_on_exception\u003dlambda _: False)(fn)"},{"line_number":123,"context_line":"        return new_fn(*args, **kwargs)"},{"line_number":124,"context_line":"    return wrapped"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_391b3c1e","line":123,"updated":"2016-05-13 16:32:35.000000000","message":"... and pass self here.","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"}],"neutron/agent/ovsdb/impl_vsctl.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.args \u003d [] if args is None else args"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def execute(self, check_error\u003dFalse, log_errors\u003dTrue, txn\u003dNone):"},{"line_number":85,"context_line":"        if txn is None:"},{"line_number":86,"context_line":"            with Transaction(self.context, check_error\u003dcheck_error,"},{"line_number":87,"context_line":"                             log_errors\u003dlog_errors) as txn:"},{"line_number":88,"context_line":"                txn.add(self)"},{"line_number":89,"context_line":"            return self.result"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            txn.add(self)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def vsctl_args(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_c37b1ff3","line":90,"range":{"start_line":85,"start_character":8,"end_line":90,"end_character":13},"updated":"2016-05-13 16:32:35.000000000","message":"This whole diff would look better, and the resulting code would be a little better if written like this:\n\n  if txn is not None:\n      txn.add(self)\n      return\n  with Transaction(...","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"}],"neutron/agent/ovsdb/native/commands.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def execute(self, check_error\u003dFalse, log_errors\u003dTrue, txn\u003dNone):"},{"line_number":33,"context_line":"        try:"},{"line_number":34,"context_line":"            if txn is None:"},{"line_number":35,"context_line":"                with self.api.transaction(check_error, log_errors) as txn:"},{"line_number":36,"context_line":"                    txn.add(self)"},{"line_number":37,"context_line":"                return self.result"},{"line_number":38,"context_line":"            else:"},{"line_number":39,"context_line":"                txn.add(self)"},{"line_number":40,"context_line":"        except Exception:"},{"line_number":41,"context_line":"            with excutils.save_and_reraise_exception() as ctx:"},{"line_number":42,"context_line":"                if log_errors:"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_59ca8050","line":39,"range":{"start_line":34,"start_character":12,"end_line":39,"end_character":29},"updated":"2016-05-13 16:32:35.000000000","message":"ditto (from previous file)","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"}],"neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def fdb_add_tun(self, context, br, lvm, agent_ports, lookup_port,"},{"line_number":250,"context_line":"                    setup_port, get_txn, get_ports_ofports):"},{"line_number":251,"context_line":"        with get_txn(check_error\u003dTrue) as txn:"},{"line_number":252,"context_line":"            tun_names \u003d []"},{"line_number":253,"context_line":"            remote_ips \u003d []"},{"line_number":254,"context_line":"            portss \u003d []"},{"line_number":255,"context_line":"            txn.add_transactor(br)"},{"line_number":256,"context_line":"            for remote_ip, ports in agent_ports.items():"},{"line_number":257,"context_line":"                # Ensure we have a tunnel port with this remote agent"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_f95c147f","line":254,"range":{"start_line":252,"start_character":12,"end_line":254,"end_character":23},"updated":"2016-05-13 16:32:35.000000000","message":"I\u0027m not liking the three independent lists.  I\u0027m thinking maybe a single list of tuples might work.\n\n  tunnels \u003d []","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                                                       lvm.network_type,"},{"line_number":262,"context_line":"                                                       txn\u003dtxn)"},{"line_number":263,"context_line":"                    if port_name !\u003d 0:"},{"line_number":264,"context_line":"                        tun_names.append(port_name)"},{"line_number":265,"context_line":"                        remote_ips.append(remote_ip)"},{"line_number":266,"context_line":"                        portss.append(ports)"},{"line_number":267,"context_line":"                else:"},{"line_number":268,"context_line":"                    for port in ports:"},{"line_number":269,"context_line":"                        self.add_fdb_flow(br, port, remote_ip, lvm, ofport)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_d9c67015","line":266,"range":{"start_line":264,"start_character":24,"end_line":266,"end_character":44},"updated":"2016-05-13 16:32:35.000000000","message":"tunnels.append((portname, remote_ip, ports))","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                      {\u0027type\u0027: lvm.network_type})"},{"line_number":273,"context_line":"            return 0"},{"line_number":274,"context_line":"        # Wait for the ports to get created..."},{"line_number":275,"context_line":"        ofports \u003d get_ports_ofports(tun_names)"},{"line_number":276,"context_line":"        for i, ofport in enumerate(ofports):"},{"line_number":277,"context_line":"            if ofport \u003d\u003d ovs_lib.INVALID_OFPORT:"},{"line_number":278,"context_line":"                LOG.error(_LE(\"Failed to set-up %(type)s tunnel \""}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_5441a738","line":275,"range":{"start_line":275,"start_character":18,"end_line":275,"end_character":45},"updated":"2016-05-13 16:32:35.000000000","message":"ofports \u003d get_ports_ofports([tun_name for tun_name, _ip, _ports in tunnels])\n\nAdmittedly, this is a bit awkward.  Maybe the independent lists is the better way to go because this makes it even more awkward below.","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f932a881aab35a6a72bfd17704992fa38ad8b5ae","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            return 0"},{"line_number":274,"context_line":"        # Wait for the ports to get created..."},{"line_number":275,"context_line":"        ofports \u003d get_ports_ofports(tun_names)"},{"line_number":276,"context_line":"        for i, ofport in enumerate(ofports):"},{"line_number":277,"context_line":"            if ofport \u003d\u003d ovs_lib.INVALID_OFPORT:"},{"line_number":278,"context_line":"                LOG.error(_LE(\"Failed to set-up %(type)s tunnel \""},{"line_number":279,"context_line":"                              \"ports to remote IP %(remote_ip)\"),"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_b439f3a5","line":276,"range":{"start_line":276,"start_character":12,"end_line":276,"end_character":44},"updated":"2016-05-13 16:32:35.000000000","message":"I\u0027d rather you use zip here instead of getting an index with enumerate.\n\n  for ofport, remote_ip, ports in zip(ofports, remote_ips, portss):","commit_id":"a975c5578c8d8bb2ed8ceb5224e8a84d09a60c82"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"e23f070ecca37049f66e7a3823846f697fc837d0","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"                                                        tunnel_type,"},{"line_number":1741,"context_line":"                                                        txn\u003dtxn)"},{"line_number":1742,"context_line":"                    # Wait for the ports to get created..."},{"line_number":1743,"context_line":"                    ofports \u003d self.tun_br.get_ports_ofports(tun_names)"},{"line_number":1744,"context_line":"                    if ovs_lib.INVALID_OFPORT in ofports:"},{"line_number":1745,"context_line":"                        LOG.error(_LE(\"Failed to set-up %(type)s \""},{"line_number":1746,"context_line":"                                      \"tunnel ports to remote IPs\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_37e87ae2","line":1743,"updated":"2016-03-17 03:57:14.000000000","message":"it should be checked whether tun_names is empty list.","commit_id":"e2e3278d02f7ac67586902f9ecefeb09c602b0a0"},{"author":{"_account_id":18289,"name":"Sreekumar S","email":"sreesiv@gmail.com","username":"sreesiv"},"change_message_id":"f2fb3a47c418cf30b4e1173c11ab1eaeff375bad","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"                                                        tunnel_type,"},{"line_number":1741,"context_line":"                                                        txn\u003dtxn)"},{"line_number":1742,"context_line":"                    # Wait for the ports to get created..."},{"line_number":1743,"context_line":"                    ofports \u003d self.tun_br.get_ports_ofports(tun_names)"},{"line_number":1744,"context_line":"                    if ovs_lib.INVALID_OFPORT in ofports:"},{"line_number":1745,"context_line":"                        LOG.error(_LE(\"Failed to set-up %(type)s \""},{"line_number":1746,"context_line":"                                      \"tunnel ports to remote IPs\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_d9e3c0d7","line":1743,"in_reply_to":"1af94dfe_37e87ae2","updated":"2016-03-18 11:16:59.000000000","message":"Done","commit_id":"e2e3278d02f7ac67586902f9ecefeb09c602b0a0"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"e3fe524a88a3419f43032ec49f1fb86b4c903243","unresolved":false,"context_lines":[{"line_number":1722,"context_line":"                                                        tunnel[\u0027ip_address\u0027],"},{"line_number":1723,"context_line":"                                                        tunnel_type,"},{"line_number":1724,"context_line":"                                                        txn\u003dtxn)"},{"line_number":1725,"context_line":"                    if tun_names is None:"},{"line_number":1726,"context_line":"                        LOG.debug(\"No tunnels synced for %(type)s\","},{"line_number":1727,"context_line":"                                  {\u0027type\u0027: tunnel_type})"},{"line_number":1728,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_acf5caed","line":1725,"updated":"2016-03-18 14:26:38.000000000","message":"The initial value of tun_names is [].","commit_id":"40898f9e32b09208d6ca0c8ae9cf7bf8da6f9541"},{"author":{"_account_id":18289,"name":"Sreekumar S","email":"sreesiv@gmail.com","username":"sreesiv"},"change_message_id":"589cd17d20620582316eb200e19be7fb9dba67c3","unresolved":false,"context_lines":[{"line_number":1722,"context_line":"                                                        tunnel[\u0027ip_address\u0027],"},{"line_number":1723,"context_line":"                                                        tunnel_type,"},{"line_number":1724,"context_line":"                                                        txn\u003dtxn)"},{"line_number":1725,"context_line":"                    if tun_names is None:"},{"line_number":1726,"context_line":"                        LOG.debug(\"No tunnels synced for %(type)s\","},{"line_number":1727,"context_line":"                                  {\u0027type\u0027: tunnel_type})"},{"line_number":1728,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa0719c6_71acba35","line":1725,"in_reply_to":"1af94dfe_acf5caed","updated":"2016-03-22 07:02:11.000000000","message":"Done","commit_id":"40898f9e32b09208d6ca0c8ae9cf7bf8da6f9541"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1c04c37321b944463b1a80b88384771e49885524","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"        # tun_br.create() won\u0027t recreate bridge if it exists, but will handle"},{"line_number":1035,"context_line":"        # cases where something like datapath_type has changed"},{"line_number":1036,"context_line":"        with self.tun_br.ovsdb.transaction(check_error\u003dTrue) as txn:"},{"line_number":1037,"context_line":"            self.tun_br.create(secure_mode\u003dTrue, txn\u003dtxn)"},{"line_number":1038,"context_line":"            self.tun_br.setup_controllers(self.conf, txn\u003dtxn)"},{"line_number":1039,"context_line":"            if (not self.int_br.port_exists(self.conf.OVS.int_peer_patch_port)"},{"line_number":1040,"context_line":"                or self.patch_tun_ofport \u003d\u003d ovs_lib.INVALID_OFPORT):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_b8b5197f","line":1037,"range":{"start_line":1037,"start_character":12,"end_line":1037,"end_character":57},"updated":"2016-03-24 02:48:02.000000000","message":"Just a thought.  Maybe instead of passing txn to each method call, could you construct self.tun_br with it?  Or, make self.tun_br itself a context manager which could start the transaction internally.","commit_id":"8d79d492ba5ec1d59e488e6f0ec946f58ae37e6c"},{"author":{"_account_id":18289,"name":"Sreekumar S","email":"sreesiv@gmail.com","username":"sreesiv"},"change_message_id":"c1693a33b6c682e6a99f8eb83cd1ceb128cff440","unresolved":false,"context_lines":[{"line_number":1158,"context_line":"                    # Setup int_br to physical bridge patches.  If they already"},{"line_number":1159,"context_line":"                    # exist we leave them alone, otherwise we create them but"},{"line_number":1160,"context_line":"                    # don\u0027t connect them until after drop rules are in place."},{"line_number":1161,"context_line":"                    if (not self.int_br.port_exists(int_if_name)"},{"line_number":1162,"context_line":"                        or int_type \u003d\u003d \u0027veth\u0027):"},{"line_number":1163,"context_line":"                        self.int_br.add_patch_port(int_if_name,"},{"line_number":1164,"context_line":"                                                   constants.NONEXISTENT_PEER)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dab17558_7a99291f","line":1161,"range":{"start_line":1161,"start_character":40,"end_line":1161,"end_character":51},"updated":"2016-05-09 15:59:27.000000000","message":"port_exists() modification is part of another patch https://review.openstack.org/#/c/314112/ which I happened to fix in the course of enhancing this patch.\n\nI\u0027ve raised a Bug #1579769 for it, and submitted the PS separately because I felt it doesn\u0027t belong here. Just checked in the same fix here just so that I don\u0027t forget!","commit_id":"fd718f2725a428d4befdb79dc68b03164d0127cd"}]}
