)]}'
{"octavia/amphorae/backends/agent/api_server/exabgp.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ac59b3332e355bc5dfc8525e4734c4b2ed21ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"df87a7cf_4edbd64d","updated":"2017-12-11 23:06:55.000000000","message":"This is all missing unit tests","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ac59b3332e355bc5dfc8525e4734c4b2ed21ed","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"EXABGP_CLI \u003d (\u0027python /usr/local/lib/python2.7/dist-packages/exabgp/\u0027"},{"line_number":37,"context_line":"              \u0027application/cli.py --root \u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_ba4e6194","line":36,"range":{"start_line":36,"start_character":22,"end_line":36,"end_character":68},"updated":"2017-12-11 23:06:55.000000000","message":"This is not good.  Two issues:\n1. Some distributions (CentOS for example) put these packages in a different path.\n2. This assumes python2.7, but we support python3.5 as well.","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"EXABGP_CLI \u003d (\u0027python /usr/local/lib/python2.7/dist-packages/exabgp/\u0027"},{"line_number":37,"context_line":"              \u0027application/cli.py --root \u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7f96bb07_47214b4d","line":36,"range":{"start_line":36,"start_character":22,"end_line":36,"end_character":68},"in_reply_to":"df87a7cf_ba4e6194","updated":"2018-04-09 19:06:27.000000000","message":"Done","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ac59b3332e355bc5dfc8525e4734c4b2ed21ed","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                message\u003d\u0027Invalid Request\u0027,"},{"line_number":53,"context_line":"                details\u003d\"Unknown action: {0}\".format(action)), status\u003d400)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        cmd \u003d (\"/bin/systemctl {action} exabgp\".format("},{"line_number":56,"context_line":"            action\u003daction))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_6e581a30","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":30},"updated":"2017-12-11 23:06:55.000000000","message":"This assumes that the amphora is using systemd.  Currently we support: sysvinit, upstart, and systemd.\nWe could make an argument to deprecate the others, but that would need to happen before we merge this.","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                message\u003d\u0027Invalid Request\u0027,"},{"line_number":53,"context_line":"                details\u003d\"Unknown action: {0}\".format(action)), status\u003d400)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        cmd \u003d (\"/bin/systemctl {action} exabgp\".format("},{"line_number":56,"context_line":"            action\u003daction))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f96bb07_87275365","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":30},"in_reply_to":"df87a7cf_6e581a30","updated":"2018-04-09 19:06:27.000000000","message":"Done","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ac59b3332e355bc5dfc8525e4734c4b2ed21ed","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                details\u003d\"unknown IP version\"), status\u003d500)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        ip \u003d pyroute2.IPDB(nl\u003dpyroute2.NetNS(consts.AMPHORA_NAMESPACE))"},{"line_number":175,"context_line":"        ip.interfaces[\u0027lo\u0027].up().commit()"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        ip.interfaces[\u0027lo\u0027].add_ip(vip_with_prefix).commit()"},{"line_number":178,"context_line":"        ip.release()"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_4e0d16e6","line":175,"range":{"start_line":175,"start_character":22,"end_line":175,"end_character":26},"updated":"2017-12-11 23:06:55.000000000","message":"Should this be dummy?\nAlso, this will not survive a reboot.  These should probably go into interfaces files in the namespace.","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                details\u003d\"unknown IP version\"), status\u003d500)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        ip \u003d pyroute2.IPDB(nl\u003dpyroute2.NetNS(consts.AMPHORA_NAMESPACE))"},{"line_number":175,"context_line":"        ip.interfaces[\u0027lo\u0027].up().commit()"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        ip.interfaces[\u0027lo\u0027].add_ip(vip_with_prefix).commit()"},{"line_number":178,"context_line":"        ip.release()"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f96bb07_2718bf1b","line":175,"range":{"start_line":175,"start_character":22,"end_line":175,"end_character":26},"in_reply_to":"df87a7cf_4e0d16e6","updated":"2018-04-09 19:06:27.000000000","message":"Added dummy interface","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ac59b3332e355bc5dfc8525e4734c4b2ed21ed","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        LOG.debug(\"Adding VIP to loopback completed.\")"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        cmd \u003d (EXABGP_CLI + CONF.amphora_agent.exabgp_base_path +"},{"line_number":183,"context_line":"               \" announce route \" + vip_with_prefix + \" next-hop \" +"},{"line_number":184,"context_line":"               nexthop_ip + \" origin igp\")"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_5a0b9528","line":182,"updated":"2017-12-11 23:06:55.000000000","message":"Does this survive reboots?  Why aren\u0027t we just updating the configuration file and reload/restart exabgp?","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        LOG.debug(\"Adding VIP to loopback completed.\")"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        cmd \u003d (EXABGP_CLI + CONF.amphora_agent.exabgp_base_path +"},{"line_number":183,"context_line":"               \" announce route \" + vip_with_prefix + \" next-hop \" +"},{"line_number":184,"context_line":"               nexthop_ip + \" origin igp\")"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7f96bb07_e7d73723","line":182,"in_reply_to":"df87a7cf_5a0b9528","updated":"2018-04-09 19:06:27.000000000","message":"Done","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ac59b3332e355bc5dfc8525e4734c4b2ed21ed","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                message\u003d\"Failed to stop exabgp service\","},{"line_number":247,"context_line":"                details\u003de.output), status\u003d500)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        cmd \u003d \"/bin/systemctl disable exabgp\""},{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            subprocess.check_output(cmd.split(), stderr\u003dsubprocess.STDOUT)"},{"line_number":252,"context_line":"        except subprocess.CalledProcessError as e:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_4e075619","line":249,"updated":"2017-12-11 23:06:55.000000000","message":"Where do we enable?","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"},{"author":{"_account_id":20226,"name":"Ganpat Agarwal","email":"gans.developer@gmail.com","username":"gans"},"change_message_id":"2dcf62fa0f37914f274cdaa6cf77cf0f2f5329e9","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        return out"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def get_status(self, exabgp_id):"},{"line_number":133,"context_line":"        self._check_exabgp_exists()"},{"line_number":134,"context_line":"        stats \u003d []"},{"line_number":135,"context_line":"        status \u003d self._check_exabgp_status()"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f96bb07_2b1a5e6e","line":132,"range":{"start_line":132,"start_character":25,"end_line":132,"end_character":34},"updated":"2018-01-16 08:29:14.000000000","message":"Remove exabgp_id","commit_id":"dbb0cb3ec890c34d211ebe0305af7d57102ef2c8"},{"author":{"_account_id":20226,"name":"Ganpat Agarwal","email":"gans.developer@gmail.com","username":"gans"},"change_message_id":"6acc0ce7c68877067698369c84458135632bb0e0","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        return out"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def get_status(self, exabgp_id):"},{"line_number":133,"context_line":"        self._check_exabgp_exists()"},{"line_number":134,"context_line":"        stats \u003d []"},{"line_number":135,"context_line":"        status \u003d self._check_exabgp_status()"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f96bb07_d4c492f7","line":132,"range":{"start_line":132,"start_character":25,"end_line":132,"end_character":34},"in_reply_to":"7f96bb07_2b1a5e6e","updated":"2018-01-17 10:20:07.000000000","message":"Done","commit_id":"dbb0cb3ec890c34d211ebe0305af7d57102ef2c8"},{"author":{"_account_id":20226,"name":"Ganpat Agarwal","email":"gans.developer@gmail.com","username":"gans"},"change_message_id":"812ee4fbd8d199688089b6d3bd0c9d7515c5ea7c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        file \u003d flask.request.files[\u0027conf_file\u0027]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # uploading init scripts"},{"line_number":131,"context_line":"        self._upload_exabgp_init_config()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        exabgp_base_path \u003d util.exabgp_dir()"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa0c359_f703770e","line":131,"range":{"start_line":131,"start_character":8,"end_line":131,"end_character":41},"updated":"2018-02-05 09:50:55.000000000","message":"we should check the response here and then proceed","commit_id":"33c1464aa39ff614b06bbfdda79ab35a80d1507b"},{"author":{"_account_id":27256,"name":"Vadim Ponomarev","email":"velizarx@gmail.com","username":"velizarx"},"change_message_id":"96051fb3fe6c0f88e21c9883f0e53793e63082f7","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class ExaBGP(object):"},{"line_number":48,"context_line":"    def __init__(self):"},{"line_number":49,"context_line":"        self._osutils \u003d osutils.BaseOS.get_os_util()"},{"line_number":50,"context_line":"        self.exabgp_cli \u003d self._osutils.get_exabgp_cli()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def manager_exabgp_service(self, action):"}],"source_content_type":"text/x-python","patch_set":25,"id":"df7087c5_5d922f4d","line":49,"updated":"2018-03-21 14:06:59.000000000","message":"Code duplicate, we already have os_utils in server.py file, so maybe we can reuse it and receive os_utils in the constructor?","commit_id":"2016b88be74bbad5ce7157dd69ef1528c6e4d22e"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class ExaBGP(object):"},{"line_number":48,"context_line":"    def __init__(self):"},{"line_number":49,"context_line":"        self._osutils \u003d osutils.BaseOS.get_os_util()"},{"line_number":50,"context_line":"        self.exabgp_cli \u003d self._osutils.get_exabgp_cli()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def manager_exabgp_service(self, action):"}],"source_content_type":"text/x-python","patch_set":25,"id":"bf659307_c83442e1","line":49,"in_reply_to":"df7087c5_5d922f4d","updated":"2018-04-09 19:06:27.000000000","message":"Done","commit_id":"2016b88be74bbad5ce7157dd69ef1528c6e4d22e"},{"author":{"_account_id":27256,"name":"Vadim Ponomarev","email":"velizarx@gmail.com","username":"velizarx"},"change_message_id":"0ce50d9db17cae72452e2c84b0991b422b4bb167","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import webob"},{"line_number":28,"context_line":"from werkzeug import exceptions"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# from octavia.amphorae.backends.agent.api_server import osutils"},{"line_number":31,"context_line":"from octavia.amphorae.backends.agent.api_server import util"},{"line_number":32,"context_line":"from octavia.common import constants as consts"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"bf659307_083eba28","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":64},"updated":"2018-04-09 19:14:15.000000000","message":"can we delete this? or we need it for something?","commit_id":"05cdf576057e87c526905d5577d83730dd16a0cd"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"dd71974c916944992b3c1d5f20497047861c899d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import webob"},{"line_number":28,"context_line":"from werkzeug import exceptions"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# from octavia.amphorae.backends.agent.api_server import osutils"},{"line_number":31,"context_line":"from octavia.amphorae.backends.agent.api_server import util"},{"line_number":32,"context_line":"from octavia.common import constants as consts"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"bf659307_7065d444","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":64},"in_reply_to":"bf659307_083eba28","updated":"2018-04-10 02:14:47.000000000","message":"Done","commit_id":"05cdf576057e87c526905d5577d83730dd16a0cd"}],"octavia/amphorae/backends/agent/api_server/server.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"55f1717f80ece1cea89db47e7e08cf3b7cb0db88","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self._listener \u003d listener.Listener()"},{"line_number":52,"context_line":"        self._plug \u003d plug.Plug(self._osutils)"},{"line_number":53,"context_line":"        self._amphora_info \u003d amphora_info.AmphoraInfo(self._osutils)"},{"line_number":54,"context_line":"        self._exabgp \u003d exabgp.ExaBGP()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        register_app_error_handler(self.app)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_8ab59680","line":54,"updated":"2017-10-25 13:48:53.000000000","message":"You use os_utils and the others pass it in the constructor - so maybe we should mimic that","commit_id":"d281c43de4709f4f66034ed2f6e8acd93fdf0e0b"},{"author":{"_account_id":20226,"name":"Ganpat Agarwal","email":"gans.developer@gmail.com","username":"gans"},"change_message_id":"2dcf62fa0f37914f274cdaa6cf77cf0f2f5329e9","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                              view_func\u003dself.upload_exabgp_config,"},{"line_number":120,"context_line":"                              methods\u003d[\u0027PUT\u0027])"},{"line_number":121,"context_line":"        self.app.add_url_rule(rule\u003dPATH_PREFIX +"},{"line_number":122,"context_line":"                              \u0027/exabgp/\u003cexabgp_id\u003e\u0027,"},{"line_number":123,"context_line":"                              view_func\u003dself.get_exabgp_status,"},{"line_number":124,"context_line":"                              methods\u003d[\u0027GET\u0027])"},{"line_number":125,"context_line":"        self.app.add_url_rule(rule\u003dPATH_PREFIX +"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f96bb07_cb0bba21","line":122,"range":{"start_line":122,"start_character":40,"end_line":122,"end_character":49},"updated":"2018-01-16 08:29:14.000000000","message":"ExaBGP status can be determined using the amphora details only. We do not need ID here","commit_id":"dbb0cb3ec890c34d211ebe0305af7d57102ef2c8"},{"author":{"_account_id":20226,"name":"Ganpat Agarwal","email":"gans.developer@gmail.com","username":"gans"},"change_message_id":"6acc0ce7c68877067698369c84458135632bb0e0","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                              view_func\u003dself.upload_exabgp_config,"},{"line_number":120,"context_line":"                              methods\u003d[\u0027PUT\u0027])"},{"line_number":121,"context_line":"        self.app.add_url_rule(rule\u003dPATH_PREFIX +"},{"line_number":122,"context_line":"                              \u0027/exabgp/\u003cexabgp_id\u003e\u0027,"},{"line_number":123,"context_line":"                              view_func\u003dself.get_exabgp_status,"},{"line_number":124,"context_line":"                              methods\u003d[\u0027GET\u0027])"},{"line_number":125,"context_line":"        self.app.add_url_rule(rule\u003dPATH_PREFIX +"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f96bb07_34b3769a","line":122,"range":{"start_line":122,"start_character":40,"end_line":122,"end_character":49},"in_reply_to":"7f96bb07_cb0bba21","updated":"2018-01-17 10:20:07.000000000","message":"Done","commit_id":"dbb0cb3ec890c34d211ebe0305af7d57102ef2c8"}],"octavia/amphorae/backends/agent/api_server/templates/exabgp.conf.j2":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"da0d6ceaeeb7e78f0d6d0d069f76793a38afc361","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"df87a7cf_15ea48ab","updated":"2017-12-15 23:15:51.000000000","message":"Why is this file here?\nIt is in https://review.openstack.org/#/c/527009 where it belongs.","commit_id":"d337e01571adb4018ef7dcd7c8d7fbc8a3a13b70"}],"octavia/amphorae/backends/agent/api_server/templates/exabgp.sysvinit.j2":[{"author":{"_account_id":27256,"name":"Vadim Ponomarev","email":"velizarx@gmail.com","username":"velizarx"},"change_message_id":"96051fb3fe6c0f88e21c9883f0e53793e63082f7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  ;;"},{"line_number":62,"context_line":" *)"},{"line_number":63,"context_line":"  # For invalid arguments, print the usage message."},{"line_number":64,"context_line":"  echo \"Usage: $0 {start|stop|restart|reload|status}\""},{"line_number":65,"context_line":"  exit 2"},{"line_number":66,"context_line":"  ;;"},{"line_number":67,"context_line":"esac"}],"source_content_type":"text/x-jinja2","patch_set":25,"id":"df7087c5_c021744f","line":64,"range":{"start_line":64,"start_character":37,"end_line":64,"end_character":51},"updated":"2018-03-21 14:06:59.000000000","message":"Unsupported arguments, but the reload action require in exabgp.py (for API)","commit_id":"2016b88be74bbad5ce7157dd69ef1528c6e4d22e"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  ;;"},{"line_number":62,"context_line":" *)"},{"line_number":63,"context_line":"  # For invalid arguments, print the usage message."},{"line_number":64,"context_line":"  echo \"Usage: $0 {start|stop|restart|reload|status}\""},{"line_number":65,"context_line":"  exit 2"},{"line_number":66,"context_line":"  ;;"},{"line_number":67,"context_line":"esac"}],"source_content_type":"text/x-jinja2","patch_set":25,"id":"bf659307_0840fa34","line":64,"range":{"start_line":64,"start_character":37,"end_line":64,"end_character":51},"in_reply_to":"df7087c5_c021744f","updated":"2018-04-09 19:06:27.000000000","message":"Done","commit_id":"2016b88be74bbad5ce7157dd69ef1528c6e4d22e"}],"octavia/amphorae/backends/agent/api_server/templates/exabgp.upstart.j2":[{"author":{"_account_id":27256,"name":"Vadim Ponomarev","email":"velizarx@gmail.com","username":"velizarx"},"change_message_id":"96051fb3fe6c0f88e21c9883f0e53793e63082f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"description \"Start up the ExaBGP service\""},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"start on runlevel [2345]"},{"line_number":4,"context_line":"stop on runlevel [!2345]"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"respawn"},{"line_number":7,"context_line":"respawn limit 2 2"}],"source_content_type":"text/x-jinja2","patch_set":25,"id":"df7087c5_831ce66a","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":24},"updated":"2018-03-21 14:06:59.000000000","message":"Upstart use signal SIGHUP for the reload action as default, but exabgp require USR1 signal. To fix it, we should add string: `reload signal USR1`","commit_id":"2016b88be74bbad5ce7157dd69ef1528c6e4d22e"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"08018b7a33703aeb3d32b3598ef3a936f8b86b67","unresolved":false,"context_lines":[{"line_number":1,"context_line":"description \"Start up the ExaBGP service\""},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"start on runlevel [2345]"},{"line_number":4,"context_line":"stop on runlevel [!2345]"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"respawn"},{"line_number":7,"context_line":"respawn limit 2 2"}],"source_content_type":"text/x-jinja2","patch_set":25,"id":"bf659307_e8710646","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":24},"in_reply_to":"df7087c5_831ce66a","updated":"2018-04-09 19:06:27.000000000","message":"Done","commit_id":"2016b88be74bbad5ce7157dd69ef1528c6e4d22e"}],"octavia/amphorae/backends/agent/api_server/util.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"55f1717f80ece1cea89db47e7e08cf3b7cb0db88","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    return consts.INIT_UNKOWN"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"def get_process_id(process_name):"},{"line_number":147,"context_line":"    child \u003d subprocess.Popen(\u0027pgrep {process_name}\u0027.format("},{"line_number":148,"context_line":"                             process_name\u003dprocess_name).split(),"},{"line_number":149,"context_line":"                             stdout\u003dsubprocess.PIPE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_ca7a6eef","line":146,"updated":"2017-10-25 13:48:53.000000000","message":"explore using psutils for this part --","commit_id":"d281c43de4709f4f66034ed2f6e8acd93fdf0e0b"}],"octavia/common/config.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"55f1717f80ece1cea89db47e7e08cf3b7cb0db88","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                      \"controller to run before terminating the socket.\")),"},{"line_number":119,"context_line":"    # Do not specify in octavia.conf, loaded at runtime"},{"line_number":120,"context_line":"    cfg.StrOpt(\u0027amphora_id\u0027, help\u003d_(\"The amphora ID.\")),"},{"line_number":121,"context_line":"    cfg.StrOpt(\u0027exabgp_base_path\u0027, default\u003d\u0027/var/run/exabgp\u0027,"},{"line_number":122,"context_line":"               help\u003d_(\"The exabgp conf path.\")),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_ea708a0a","line":121,"updated":"2017-10-25 13:48:53.000000000","message":"most of our config is on /var/lib/octavia -- any reason we can\u0027t put it there?","commit_id":"d281c43de4709f4f66034ed2f6e8acd93fdf0e0b"},{"author":{"_account_id":23889,"name":"Santhosh Fernandes","email":"santhosh.fernandes@gmail.com","username":"santhosh-fernandes"},"change_message_id":"b214a8f6b412c5f3247b00249a6d098ad3e9f502","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                      \"controller to run before terminating the socket.\")),"},{"line_number":119,"context_line":"    # Do not specify in octavia.conf, loaded at runtime"},{"line_number":120,"context_line":"    cfg.StrOpt(\u0027amphora_id\u0027, help\u003d_(\"The amphora ID.\")),"},{"line_number":121,"context_line":"    cfg.StrOpt(\u0027exabgp_base_path\u0027, default\u003d\u0027/var/run/exabgp\u0027,"},{"line_number":122,"context_line":"               help\u003d_(\"The exabgp conf path.\")),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_e5eb1475","line":121,"in_reply_to":"3f4b6375_ea708a0a","updated":"2017-10-25 18:25:05.000000000","message":"Changing to /var/lib/octavia/exabgp","commit_id":"d281c43de4709f4f66034ed2f6e8acd93fdf0e0b"}],"octavia/tests/unit/amphorae/backends/agent/test_agent_jinja_cfg.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"55f1717f80ece1cea89db47e7e08cf3b7cb0db88","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                           \u0027amphora_id \u003d \u0027 + AMP_ID + \u0027\\n\u0027"},{"line_number":85,"context_line":"                           \u0027exabgp_base_path \u003d /var/run/exabgp\u0027)"},{"line_number":86,"context_line":"        agent_cfg \u003d ajc.build_agent_config(AMP_ID)"},{"line_number":87,"context_line":"        self.assertNotEqual(expected_config, agent_cfg)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_build_agent_config_with_interfaces_file(self):"},{"line_number":90,"context_line":"        ajc \u003d agent_jinja_cfg.AgentJinjaTemplater()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_8a9c760e","line":87,"updated":"2017-10-25 13:48:53.000000000","message":"Please adjust the test so we can keep the equal. Otherwise the test\u0027s utility will be pretty limited --","commit_id":"d281c43de4709f4f66034ed2f6e8acd93fdf0e0b"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"55f1717f80ece1cea89db47e7e08cf3b7cb0db88","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                           \u0027amphora_id \u003d \u0027 + AMP_ID + \u0027\\n\u0027"},{"line_number":121,"context_line":"                           \u0027exabgp_base_path \u003d /var/run/exabgp\u0027)"},{"line_number":122,"context_line":"        agent_cfg \u003d ajc.build_agent_config(AMP_ID)"},{"line_number":123,"context_line":"        self.assertNotEqual(expected_config, agent_cfg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_6aa13a46","line":123,"updated":"2017-10-25 13:48:53.000000000","message":"same","commit_id":"d281c43de4709f4f66034ed2f6e8acd93fdf0e0b"}]}
