)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"bf029ceba8b3e01d7452512e5f11f7f2a3ff24c3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementing EventStreamer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"EvenStream will be used to serialize messages from the octavia database"},{"line_number":10,"context_line":"to neutron-lbaas database via oslo_messaging."},{"line_number":11,"context_line":"to"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"da20952f_0d84af08","line":9,"updated":"2015-09-04 21:29:10.000000000","message":"All this patch does seems to be rename the Mixin stuff to something else and remove the abstract classes. So either that functionality is still coming and this patch should be named WIP or the description should be adjusted","commit_id":"6c26dfa79c474ab9481d205a0d9097054499533e"}],"etc/octavia.conf":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a72ff9a6839f966ae1a90a0235d7f8a455fcef08","unresolved":false,"context_lines":[{"line_number":156,"context_line":"# topic \u003d octavia_prov"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"# Topic for neutron-lbaas event stream"},{"line_number":159,"context_line":"#octavia_event_stream_topic \u003d lbaas_neutron_event"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"[house_keeping]"},{"line_number":162,"context_line":"# Interval in seconds to initiate spare amphora checks"}],"source_content_type":"text/plain","patch_set":20,"id":"9a1a9d01_c3709574","line":159,"updated":"2015-09-30 23:24:50.000000000","message":"nit: all of these have a space after the # for some reason, can you make yours match?","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"dc67393b0b866f07b70b9a8504e02f8604649469","unresolved":false,"context_lines":[{"line_number":156,"context_line":"# topic \u003d octavia_prov"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"# Topic for neutron-lbaas event stream"},{"line_number":159,"context_line":"#octavia_event_stream_topic \u003d lbaas_neutron_event"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"[house_keeping]"},{"line_number":162,"context_line":"# Interval in seconds to initiate spare amphora checks"}],"source_content_type":"text/plain","patch_set":20,"id":"9a1a9d01_23f1516b","line":159,"in_reply_to":"9a1a9d01_c3709574","updated":"2015-09-30 23:40:09.000000000","message":"sure","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[health_manager]"},{"line_number":37,"context_line":"# event_streamer_driver \u003d noop_event_streamer"},{"line_number":38,"context_line":"# event_streamer_driver \u003d neutron_event_streamer"},{"line_number":39,"context_line":"# bind_ip \u003d 0.0.0.0"},{"line_number":40,"context_line":"# bind_port \u003d 5555"},{"line_number":41,"context_line":"# controller_ip_port_list example: 127.0.0.1:5555, 127.0.0.1:5555"}],"source_content_type":"text/plain","patch_set":27,"id":"fa80f949_7135a044","line":38,"updated":"2015-11-04 13:04:20.000000000","message":"You already list these below, I believe both of the above lines can be removed.","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"41e1fc381230ae3db49580048d6b33a5bda9bbf0","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[health_manager]"},{"line_number":37,"context_line":"# event_streamer_driver \u003d noop_event_streamer"},{"line_number":38,"context_line":"# event_streamer_driver \u003d neutron_event_streamer"},{"line_number":39,"context_line":"# bind_ip \u003d 0.0.0.0"},{"line_number":40,"context_line":"# bind_port \u003d 5555"},{"line_number":41,"context_line":"# controller_ip_port_list example: 127.0.0.1:5555, 127.0.0.1:5555"}],"source_content_type":"text/plain","patch_set":29,"id":"fa80f949_9fc6ee47","line":38,"updated":"2015-11-05 05:14:34.000000000","message":"Still need to remove these two redundant lines (the actual config for this is explained below at 51-54).","commit_id":"1bd987238e289882013ef4ba6add9daa04b0d847"}],"octavia/amphorae/drivers/driver_base.py":[{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"4be68d046a9df325ea5414dfb9e0129353e58533","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        Stop listener process and  calls HealthMixin to update"},{"line_number":182,"context_line":"        databases information."},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_4b3841d3","line":184,"updated":"2015-09-08 19:46:03.000000000","message":"I understands germans desire to use this as a abstract class to act as a java style interface but it looks like its useage in the UdpStatusGetter is desined to be optional. We can reintroduce these classes as a base class that defaults to update_halth() and update_stats() to be nop() calls so that if they are not implemented in child classes they will not raise any exaptions for people that don\u0027t intend to use db related functionality with their impls. I\u0027m not a fan of doing DB work in UdpStatusGetter either though. It\u0027s creeping into a god object.\n\nspeaking of why do we have an empty base.py file was this originally supposed to be the target for the contentds of drivert_base,py?","commit_id":"66f7eef9e3e07115258d6756dcc3a3e80fd5a748"}],"octavia/amphorae/drivers/noop_driver/driver.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cf8942671c7879d120ae56f3ca163d6d0c34b324","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class LoggingMixIn(object):"},{"line_number":23,"context_line":"    def update_stats(self, stats):"},{"line_number":24,"context_line":"        LOG.debug(\"Amphora %s no-op, update stats %s\","},{"line_number":25,"context_line":"                  self.__class__.__name__, stats)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_e66e35ff","line":22,"updated":"2015-09-05 07:27:10.000000000","message":"I am not sure if this is actually necessary -- even the no-op driver stores its data in the database, right? So it would use the same standard update functions that are used elsewhere.\n\nThere will need to be a LoggingEventStream class, but that would be elsewhere.","commit_id":"66f7eef9e3e07115258d6756dcc3a3e80fd5a748"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a72ff9a6839f966ae1a90a0235d7f8a455fcef08","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class LoggingMixIn(object):"},{"line_number":23,"context_line":"    def update_stats(self, stats):"},{"line_number":24,"context_line":"        LOG.debug(\"Amphora %s no-op, update stats %s\","},{"line_number":25,"context_line":"                  self.__class__.__name__, stats)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_430b25d6","line":22,"updated":"2015-09-30 23:24:50.000000000","message":"Why is this still named \"MixIn\"? I thought none of these were used as mixins anymore.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"a841335c6e2754a48f89fbfaff9db897489d6ac1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class LoggingMixIn(object):"},{"line_number":23,"context_line":"    def update_stats(self, stats):"},{"line_number":24,"context_line":"        LOG.debug(\"Amphora %s no-op, update stats %s\","},{"line_number":25,"context_line":"                  self.__class__.__name__, stats)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_837ff813","line":22,"in_reply_to":"9a1a9d01_430b25d6","updated":"2015-10-01 05:29:59.000000000","message":"naming it Logging for now till we get an actual name","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d927a5fc2181624d69e19367520471f7c7eceb10","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class LoggingMixIn(object):"},{"line_number":23,"context_line":"    def update_stats(self, stats):"},{"line_number":24,"context_line":"        LOG.debug(\"Amphora %s no-op, update stats %s\","},{"line_number":25,"context_line":"                  self.__class__.__name__, stats)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_661af2c7","line":22,"in_reply_to":"9a1a9d01_837ff813","updated":"2015-10-01 05:32:55.000000000","message":"Maybe it needs to be split and named UpdateStatsLogger() and UpdateHealthLogger() so it can actually be passed in to the UDPStatusGetter class the same way as the other ones.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"}],"octavia/cmd/health_manager.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cf8942671c7879d120ae56f3ca163d6d0c34b324","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def hm_listener():"},{"line_number":33,"context_line":"    # TODO(german): steved\u0027or load those drivers"},{"line_number":34,"context_line":"    udp_getter \u003d heartbeat_udp.UDPStatusGetter("},{"line_number":35,"context_line":"        update_db.UpdateHealthDb(),"},{"line_number":36,"context_line":"        update_db.UpdateStatsDb())"},{"line_number":37,"context_line":"    while True:"},{"line_number":38,"context_line":"        udp_getter.check()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_e645d56e","line":35,"updated":"2015-09-05 07:27:10.000000000","message":"Should these actually be called here and passed to the UDPStatusGetter? I think since they are no longer variable, maybe the should be used directly in that class, there is no real reason to pass them in from here. Again, the thing that will be variable is the EventStream stuff, not this, and even that will be loaded in-place via stevedore.","commit_id":"66f7eef9e3e07115258d6756dcc3a3e80fd5a748"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"4be68d046a9df325ea5414dfb9e0129353e58533","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def hm_listener():"},{"line_number":33,"context_line":"    # TODO(german): steved\u0027or load those drivers"},{"line_number":34,"context_line":"    udp_getter \u003d heartbeat_udp.UDPStatusGetter("},{"line_number":35,"context_line":"        update_db.UpdateHealthDb(),"},{"line_number":36,"context_line":"        update_db.UpdateStatsDb())"},{"line_number":37,"context_line":"    while True:"},{"line_number":38,"context_line":"        udp_getter.check()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_20b3ac99","line":35,"in_reply_to":"da20952f_e645d56e","updated":"2015-09-08 19:46:03.000000000","message":"I agree with harwell as well. I actually disagree further that the DB calls shouldn\u0027t be in the UdpStatusGetter class as they are db related methods and not network udp methods. This is expanding the UdpStatusGetter object into a god object. \n\nIt sounds like this could have actually been a mixin class if it was it used the mixin functions from inheretence rather then composition and contruction time.  see comment in heartbeat_udp","commit_id":"66f7eef9e3e07115258d6756dcc3a3e80fd5a748"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a72ff9a6839f966ae1a90a0235d7f8a455fcef08","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def hm_listener():"},{"line_number":33,"context_line":"    # TODO(german): steved\u0027or load those drivers"},{"line_number":34,"context_line":"    udp_getter \u003d heartbeat_udp.UDPStatusGetter("},{"line_number":35,"context_line":"        update_db.UpdateHealthDb(),"},{"line_number":36,"context_line":"        update_db.UpdateStatsDb())"},{"line_number":37,"context_line":"    while True:"},{"line_number":38,"context_line":"        udp_getter.check()"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_433245a8","line":35,"updated":"2015-09-30 23:24:50.000000000","message":"Is there a reason we pass these through here? I think it would be easier to simply instantiate them on the other side, unless I\u0027m missing something.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"dc67393b0b866f07b70b9a8504e02f8604649469","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def hm_listener():"},{"line_number":33,"context_line":"    # TODO(german): steved\u0027or load those drivers"},{"line_number":34,"context_line":"    udp_getter \u003d heartbeat_udp.UDPStatusGetter("},{"line_number":35,"context_line":"        update_db.UpdateHealthDb(),"},{"line_number":36,"context_line":"        update_db.UpdateStatsDb())"},{"line_number":37,"context_line":"    while True:"},{"line_number":38,"context_line":"        udp_getter.check()"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_a3dec1da","line":35,"in_reply_to":"9a1a9d01_433245a8","updated":"2015-09-30 23:40:09.000000000","message":"I don\u0027t know. I really didn\u0027t want these in the UdpGetter class due to Godification or passed in via the constructer since that means db calls are actually being made inside the UDPStatusGetter which is godifying the UdpStatusGetter class.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"b237a917edac2e160dc6d1713db73ddf8ccbffbb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def hm_listener():"},{"line_number":33,"context_line":"    # TODO(german): steved\u0027or load those drivers"},{"line_number":34,"context_line":"    udp_getter \u003d heartbeat_udp.UDPStatusGetter("},{"line_number":35,"context_line":"        update_db.UpdateHealthDb(),"},{"line_number":36,"context_line":"        update_db.UpdateStatsDb())"},{"line_number":37,"context_line":"    while True:"},{"line_number":38,"context_line":"        udp_getter.check()"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_a6248a0c","line":35,"in_reply_to":"9a1a9d01_a3dec1da","updated":"2015-10-01 05:32:26.000000000","message":"@carlos I\u0027m not sure I understand what you mean.  If you\u0027re passing these db objects into the UDPStatusGetter method, you\u0027re still technically making db calls.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    # TODO(german): steved\u0027or load those drivers"},{"line_number":34,"context_line":"    udp_getter \u003d heartbeat_udp.UDPStatusGetter("},{"line_number":35,"context_line":"        update_db.UpdateHealthDb(),"},{"line_number":36,"context_line":"        update_db.UpdateStatsDb())"},{"line_number":37,"context_line":"    while True:"},{"line_number":38,"context_line":"        udp_getter.check()"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_911124af","line":36,"updated":"2015-11-04 13:04:20.000000000","message":"I still don\u0027t understand why these are instantiated and immediately passed through like this. You tried to explain to me once (something about making the thing a god-object?), but I still don\u0027t really get it.","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"}],"octavia/common/config.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    cfg.IntOpt(\u0027heartbeat_interval\u0027,"},{"line_number":141,"context_line":"               default\u003d10,"},{"line_number":142,"context_line":"               help\u003d_(\u0027Sleep time between sending hearthbeats.\u0027)),"},{"line_number":143,"context_line":"    cfg.StrOpt(\u0027event_streamer_driver\u0027,"},{"line_number":144,"context_line":"               help\u003d_(\u0027specifies which driver to use for the event_streamer \u0027"},{"line_number":145,"context_line":"                      \u0027for syncing the octavia and neutron_lbaas. if you \u0027"},{"line_number":146,"context_line":"                      \u0027don\\\u0027t need to sync the database or are running \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_f1e510a8","line":143,"updated":"2015-11-04 13:04:20.000000000","message":"nitpick: grammar / capitalization issues in this help message","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"}],"octavia/common/constants.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"DEGRADED \u003d \u0027DEGRADED\u0027"},{"line_number":71,"context_line":"ERROR \u003d \u0027ERROR\u0027"},{"line_number":72,"context_line":"NO_MONITOR \u003d \u0027NO_MONITOR\u0027"},{"line_number":73,"context_line":"OPERATING_STATUS \u003d \u0027operating_status\u0027"},{"line_number":74,"context_line":"SUPPORTED_OPERATING_STATUSES \u003d (ONLINE, OFFLINE, DEGRADED, ERROR, NO_MONITOR)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"AMPHORA_VM \u003d \u0027VM\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_f1fc3040","line":73,"updated":"2015-11-04 13:04:20.000000000","message":"nitpick: everything else in *this* section is capitalized","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"}],"octavia/controller/healthmanager/update_db.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"63559322d6af7da414f22ca02db24cd3241dd615","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                    if pool_status is not None:"},{"line_number":179,"context_line":"                        self.pool_repo.update(session, pool_id,"},{"line_number":180,"context_line":"                                              operating_status\u003dpool_status)"},{"line_number":181,"context_line":"                        self.emit(\"pool_status\", pool_id,"},{"line_number":182,"context_line":"                                  {\"operating_status\": pool_status})"},{"line_number":183,"context_line":"                except sqlalchemy.orm.exc.NoResultFound:"},{"line_number":184,"context_line":"                    LOG.error(_LE(\"Pool %s is not in DB\"), pool_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a1a9d01_bb8baf67","line":181,"updated":"2015-09-28 23:14:03.000000000","message":"Why is this one called \"pool_status\" specifically, when the other objects are the objects alone","commit_id":"4b1a9f7756fab3b4c3ce39d16d278c6a3d5f45c9"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"7f462183350485116a7801be1f9f6259b154935d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                    if pool_status is not None:"},{"line_number":179,"context_line":"                        self.pool_repo.update(session, pool_id,"},{"line_number":180,"context_line":"                                              operating_status\u003dpool_status)"},{"line_number":181,"context_line":"                        self.emit(\"pool_status\", pool_id,"},{"line_number":182,"context_line":"                                  {\"operating_status\": pool_status})"},{"line_number":183,"context_line":"                except sqlalchemy.orm.exc.NoResultFound:"},{"line_number":184,"context_line":"                    LOG.error(_LE(\"Pool %s is not in DB\"), pool_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a1a9d01_9728c9e3","line":181,"in_reply_to":"9a1a9d01_bb8baf67","updated":"2015-09-30 01:22:48.000000000","message":"I\u0027ll replace it. I got this confused with the call I\u0027m going to mangle in the UpdateDBStats","commit_id":"4b1a9f7756fab3b4c3ce39d16d278c6a3d5f45c9"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a72ff9a6839f966ae1a90a0235d7f8a455fcef08","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                            self.member_repo.update(session, id\u003dmember_id,"},{"line_number":169,"context_line":"                                                    operating_status\u003d("},{"line_number":170,"context_line":"                                                        member_status))"},{"line_number":171,"context_line":"                            self.emit(\"member\", member_id,"},{"line_number":172,"context_line":"                                      {\"operating_status\": member_status})"},{"line_number":173,"context_line":"                    except sqlalchemy.orm.exc.NoResultFound:"},{"line_number":174,"context_line":"                        LOG.error(_LE(\"Member %s is not able to update \""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_83eb7ddb","line":171,"updated":"2015-09-30 23:24:50.000000000","message":"Are there or can there be constants for these strings? (\"member\", \"operating_status\")\n\nSame for the rest of the similar calls below.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"a841335c6e2754a48f89fbfaff9db897489d6ac1","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                            self.member_repo.update(session, id\u003dmember_id,"},{"line_number":169,"context_line":"                                                    operating_status\u003d("},{"line_number":170,"context_line":"                                                        member_status))"},{"line_number":171,"context_line":"                            self.emit(\"member\", member_id,"},{"line_number":172,"context_line":"                                      {\"operating_status\": member_status})"},{"line_number":173,"context_line":"                    except sqlalchemy.orm.exc.NoResultFound:"},{"line_number":174,"context_line":"                        LOG.error(_LE(\"Member %s is not able to update \""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_26d63a4f","line":171,"in_reply_to":"9a1a9d01_63a98923","updated":"2015-10-01 05:29:59.000000000","message":"making my line rapping really hard though.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"dc67393b0b866f07b70b9a8504e02f8604649469","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                            self.member_repo.update(session, id\u003dmember_id,"},{"line_number":169,"context_line":"                                                    operating_status\u003d("},{"line_number":170,"context_line":"                                                        member_status))"},{"line_number":171,"context_line":"                            self.emit(\"member\", member_id,"},{"line_number":172,"context_line":"                                      {\"operating_status\": member_status})"},{"line_number":173,"context_line":"                    except sqlalchemy.orm.exc.NoResultFound:"},{"line_number":174,"context_line":"                        LOG.error(_LE(\"Member %s is not able to update \""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_63a98923","line":171,"in_reply_to":"9a1a9d01_83eb7ddb","updated":"2015-09-30 23:40:09.000000000","message":"I guess. I\u0027ll do that. I\u0027m actually going to mangle the local emit function to take keyword args and stuf so that it better matches the repo calls.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import datetime"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"import sqlalchemy"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_b19548e5","line":17,"updated":"2015-11-04 13:04:20.000000000","message":"extra blank line?","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"import six"},{"line_number":31,"context_line":"from stevedore import driver as stevedor_driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_31b15890","line":31,"updated":"2015-11-04 13:04:20.000000000","message":"This is a fourth import section, and I think this bypasses the hacking/pep8 checks -- these are all things that should be in one of the previous sections. Also, misspelled stevedore, unless the truncation was intentional?","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                                  \"members\": {\"member-id-1\": constants.ONLINE}"},{"line_number":231,"context_line":"                                  }"},{"line_number":232,"context_line":"                }"},{"line_number":233,"context_line":"                }"},{"line_number":234,"context_line":"            }"},{"line_number":235,"context_line":"        }"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_d136cc02","line":233,"updated":"2015-11-04 13:04:20.000000000","message":"The indentation here is a mess, but I guess it\u0027s just a comment, so not a huge deal. Easy to fix though.","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"de04e12e10eafc2bfee92de56544449723937771","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                entity_type, entity_id,"},{"line_number":65,"context_line":"                {constants.OPERATING_STATUS: new_op_status})"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def update_health(self, health):"},{"line_number":68,"context_line":"        \"\"\"This function is to update db info based on amphora status"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        :param health: map object that contains amphora, listener, member info"}],"source_content_type":"text/x-python","patch_set":42,"id":"fa69d971_fdec9dbc","line":67,"updated":"2016-01-11 06:50:32.000000000","message":"this entire method should be decomposed, but it probably should be done in another review.  Most of it already existed outside this patch.","commit_id":"de5cd58bbc11020d234e05201593d0959db70272"}],"octavia/controller/healthmanager/update_serializer.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"bf029ceba8b3e01d7452512e5f11f7f2a3ff24c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Backspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_0db6eff8","line":1,"updated":"2015-09-04 21:29:10.000000000","message":"Backspace - a new company?","commit_id":"6c26dfa79c474ab9481d205a0d9097054499533e"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"80dbdf28b703648fbcb0928d78f6aa10cabb7848","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Backspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_e6d2b5d0","line":1,"in_reply_to":"da20952f_0db6eff8","updated":"2015-09-05 07:06:37.000000000","message":"Just checking if any one would notive.","commit_id":"6c26dfa79c474ab9481d205a0d9097054499533e"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"9ae72b7cba6548cd298c6166e637e31b2b8ccaae","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class InfoContainer(object):"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_55eddb8c","line":19,"updated":"2015-10-02 09:30:45.000000000","message":"log module imported but unused","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a96fda67bde16231405461907a71f922d0b71677","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_53983dc0","line":1,"updated":"2015-12-02 17:52:43.000000000","message":"wrong year","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a96fda67bde16231405461907a71f922d0b71677","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class InfoContainer(object):"},{"line_number":19,"context_line":"    @staticmethod"},{"line_number":20,"context_line":"    def from_dict(dict_obj):"},{"line_number":21,"context_line":"        return InfoContainer(dict_obj[\u0027info_type\u0027],"},{"line_number":22,"context_line":"                             dict_obj[\u0027info_id\u0027],"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_500ef33b","line":19,"updated":"2015-12-02 17:52:43.000000000","message":"oh staticmethods...","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a6dc53fa57e4bde8115ebb209f769edf3431fdb2","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class InfoContainer(object):"},{"line_number":19,"context_line":"    @staticmethod"},{"line_number":20,"context_line":"    def from_dict(dict_obj):"},{"line_number":21,"context_line":"        return InfoContainer(dict_obj[\u0027info_type\u0027],"},{"line_number":22,"context_line":"                             dict_obj[\u0027info_id\u0027],"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_ef84ddd3","line":19,"in_reply_to":"9a8ffd7b_500ef33b","updated":"2015-12-02 20:43:13.000000000","message":"To be fair, this makes sense as a static method. I would leave it?","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a96fda67bde16231405461907a71f922d0b71677","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def __init__(self, info_type, info_id, info_payload):"},{"line_number":26,"context_line":"        self.info_type \u003d copy.copy(info_type)"},{"line_number":27,"context_line":"        self.info_id \u003d copy.copy(info_id)"},{"line_number":28,"context_line":"        self.info_payload \u003d copy.deepcopy(info_payload)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def to_dict(self):"},{"line_number":31,"context_line":"        return {\u0027info_type\u0027: self.info_type,"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_3346d94f","line":28,"updated":"2015-12-02 17:52:43.000000000","message":"why the copy?","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a6dc53fa57e4bde8115ebb209f769edf3431fdb2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def __init__(self, info_type, info_id, info_payload):"},{"line_number":26,"context_line":"        self.info_type \u003d copy.copy(info_type)"},{"line_number":27,"context_line":"        self.info_id \u003d copy.copy(info_id)"},{"line_number":28,"context_line":"        self.info_payload \u003d copy.deepcopy(info_payload)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def to_dict(self):"},{"line_number":31,"context_line":"        return {\u0027info_type\u0027: self.info_type,"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_efd29dd0","line":28,"in_reply_to":"9a8ffd7b_3346d94f","updated":"2015-12-02 20:43:13.000000000","message":"I don\u0027t think we mangle these at all, and even so I am not sure copying them would be necessary, but maybe there was a reason?","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0968c63035ec8721554c55c7bef7c20a0d46d4f6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a5ae5dd_7fa3e64f","line":1,"updated":"2016-02-04 18:07:01.000000000","message":"nit: Is this year right?","commit_id":"c84021ac27e8fadc840934bdbf84577b8ab3e6ea"}],"octavia/controller/queue/neutron_queue.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a72ff9a6839f966ae1a90a0235d7f8a455fcef08","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import oslo_messaging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class EventStreamer(object):"},{"line_number":20,"context_line":"    def __init__(self):"},{"line_number":21,"context_line":"        topic \u003d cfg.CONF.oslo_messaging.octavia_event_stream_topic"},{"line_number":22,"context_line":"        self.transport \u003d oslo_messaging.get_transport(cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_232e31fb","line":19,"updated":"2015-09-30 23:24:50.000000000","message":"So this is \"neutron_queue.EventStreamer\"... I think we wanted to have an interface class \"EventStreamer\" that was generic, and have Stevedore load whichever driver we wanted, which the default would be \"QueueEventStreamer\". In that case, this would be QueueEventStreamer, and would just implement something like \"octavia.controller.event_streamer.EventStreamer\"? The alternative could be \"LoggingEventStreamer\" or something.\n\nThat said, we seem to have cemented Octavia as running ONLY as a backend for Neutron-LBaaS, and if that\u0027s the case, we may not have a need for another layer of abstraction here. Curious what other people\u0027s opinions are on that.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"dc67393b0b866f07b70b9a8504e02f8604649469","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import oslo_messaging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class EventStreamer(object):"},{"line_number":20,"context_line":"    def __init__(self):"},{"line_number":21,"context_line":"        topic \u003d cfg.CONF.oslo_messaging.octavia_event_stream_topic"},{"line_number":22,"context_line":"        self.transport \u003d oslo_messaging.get_transport(cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_5e1c5869","line":19,"in_reply_to":"9a1a9d01_232e31fb","updated":"2015-09-30 23:40:09.000000000","message":"yea I\u0027ll add a base class and keep this as QueueEventStreamer. Actually maby we should stick with EventScreamer.\n\n    From what I\u0027m hearing we want to eventually sync the Octavia and NeutronLbaas API so we woulden\u0027t need to run Octavia as a backend and would run it directly. Meaning sooner or later we can get rid of this Syncronizing db cruft. I\u0027m skeptical about running two databases and hoping they stay in sync. With shared authority over cloned records leads to ambiguous records. (When sync breaks)","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"a841335c6e2754a48f89fbfaff9db897489d6ac1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import oslo_messaging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class EventStreamer(object):"},{"line_number":20,"context_line":"    def __init__(self):"},{"line_number":21,"context_line":"        topic \u003d cfg.CONF.oslo_messaging.octavia_event_stream_topic"},{"line_number":22,"context_line":"        self.transport \u003d oslo_messaging.get_transport(cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_46480ecc","line":19,"in_reply_to":"9a1a9d01_5e1c5869","updated":"2015-10-01 05:29:59.000000000","message":"I\u0027ll work with pothole on how to stevadore this.","commit_id":"7762fc77e9b524eaef010c04e79cc20afbf0e275"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class EventStreamerNoop(EventStreamerBase):"},{"line_number":39,"context_line":"    \"\"\"Nop class implementation of EventStreamer"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    Usefull if your running in standalone mode and don\u0027t need to send"},{"line_number":42,"context_line":"    updates to Neutron Lbaas"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_e31d4367","line":39,"updated":"2015-11-04 13:04:20.000000000","message":"Nit: \"Noop class\"","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class EventStreamerNoop(EventStreamerBase):"},{"line_number":39,"context_line":"    \"\"\"Nop class implementation of EventStreamer"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    Usefull if your running in standalone mode and don\u0027t need to send"},{"line_number":42,"context_line":"    updates to Neutron Lbaas"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_832557ac","line":41,"updated":"2015-11-04 13:04:20.000000000","message":"Nit: \"Useful if you\u0027re\"","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    \"\"\"Nop class implementation of EventStreamer"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    Usefull if your running in standalone mode and don\u0027t need to send"},{"line_number":42,"context_line":"    updates to Neutron Lbaas"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def emit(self, cnt):"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_4338cfd3","line":42,"updated":"2015-11-04 13:04:20.000000000","message":"Nit: LBaaS\n\n(This nitpick and the rest of the ones in this file are just because I really like to stress consistency.)","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class EventStreamerNeutron(EventStreamerBase):"},{"line_number":50,"context_line":"    \"\"\"Neutron Lbaas"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    When your using Octavia alongside neutron lbaas this class provides"},{"line_number":53,"context_line":"    a mechanism to send updates to neutron lbaas database via"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_c3527f13","line":50,"updated":"2015-11-04 13:04:20.000000000","message":"Nit: LBaaS","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class EventStreamerNeutron(EventStreamerBase):"},{"line_number":50,"context_line":"    \"\"\"Neutron Lbaas"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    When your using Octavia alongside neutron lbaas this class provides"},{"line_number":53,"context_line":"    a mechanism to send updates to neutron lbaas database via"},{"line_number":54,"context_line":"    oslo_messaging queues."},{"line_number":55,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_433f6fb4","line":52,"updated":"2015-11-04 13:04:20.000000000","message":"Nit: \"When you\u0027re using Octavia alongside Neutron LBaaS\"\n\"updates to the Neutron LBaaS database\"","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a96fda67bde16231405461907a71f922d0b71677","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_10914bf1","line":23,"updated":"2015-12-02 17:52:43.000000000","message":"What other implementations of this will realistically exist?  I wonder if making this pluggable gives much value.","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"5d1f06d214263ebfd3ef4954725d7a65080c612b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"7a740942_8992b1f4","line":23,"in_reply_to":"9a8ffd7b_10914bf1","updated":"2015-12-08 22:53:17.000000000","message":"The noop queue","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"169e83f35d92ff3e16ee2d07567d4dc2e2663be4","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_d3de6d10","line":23,"in_reply_to":"9a8ffd7b_10914bf1","updated":"2015-12-02 17:54:41.000000000","message":"We might want to send stuff to Monasca... so keeping that pluggable is probably good","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"5d1f06d214263ebfd3ef4954725d7a65080c612b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"7a740942_4998491c","line":23,"in_reply_to":"9a8ffd7b_2f7f45e1","updated":"2015-12-08 22:53:17.000000000","message":"Done","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"5d1f06d214263ebfd3ef4954725d7a65080c612b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"7a740942_a9f68d5a","line":23,"in_reply_to":"9a8ffd7b_9b8797b4","updated":"2015-12-08 22:53:17.000000000","message":"Done","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a6dc53fa57e4bde8115ebb209f769edf3431fdb2","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_2f7f45e1","line":23,"in_reply_to":"9a8ffd7b_9b8797b4","updated":"2015-12-02 20:43:13.000000000","message":"Well, I had always assumed we\u0027d have an EventStreamerLogging (though I am not 100% sure of the usefulness) but I assume this would be useful if people wanted to send Octavia events to other places too -- like monitoring services / etc, especially if it were being run standalone.\n\nI wouldn\u0027t object to renaming to EventStreamerOsloMessaging (other than holy snikes that is long).","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"5d1f06d214263ebfd3ef4954725d7a65080c612b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"7a740942_099ec106","line":23,"in_reply_to":"9a8ffd7b_d3de6d10","updated":"2015-12-08 22:53:17.000000000","message":"Done","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"b16c40e2fcddfb5a931fcb187947e569783b07a9","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":23,"context_line":"class EventStreamerBase(object):"},{"line_number":24,"context_line":"    \"\"\"Base class for EventStreamer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    A stand in abstract class that defines what methods are stevedore loaded"}],"source_content_type":"text/x-python","patch_set":35,"id":"9a8ffd7b_9b8797b4","line":23,"in_reply_to":"9a8ffd7b_d3de6d10","updated":"2015-12-02 19:29:46.000000000","message":"Okay then I suggest renaming the EventStreamerNeutron class to something like EventStreamerOsloMessaging.  Doesn\u0027t make sense to say its Neutron in my mind.  Because neutron/neutron-lbaas could also add code to get events from Monasca.","commit_id":"f8dc4399d45cfe374eb5ba52c17ffba318366dec"}],"octavia/tests/unit/amphorae/drivers/test_noop_amphoraloadbalancer_driver.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cf8942671c7879d120ae56f3ca163d6d0c34b324","unresolved":false,"context_lines":[{"line_number":25,"context_line":"FAKE_UUID_1 \u003d uuidutils.generate_uuid()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class LoggingMixIn(base.TestCase):"},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(LoggingMixIn, self).setUp()"},{"line_number":31,"context_line":"        self.mixin \u003d driver.LoggingMixIn()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_462cc1ab","line":28,"updated":"2015-09-05 07:27:10.000000000","message":"I think this will probably be able to go away, per my comment in the noop_driver code","commit_id":"66f7eef9e3e07115258d6756dcc3a3e80fd5a748"}],"octavia/tests/unit/controller/healthmanager/test_update_serializer.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"13e24945b012ce06f0061276e02b038ba9406c3b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cloned_obj \u003d update_serializer.InfoContainer.from_dict(obj.to_dict())"},{"line_number":39,"context_line":"        self.assertEqual(obj, cloned_obj)"},{"line_number":40,"context_line":"        obj.info_payload[\u0027x\u0027][\u0027y\u0027] \u003d - 1"},{"line_number":41,"context_line":"        self.assertNotEqual(1, cloned_obj)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa80f949_a35e5be7","line":41,"updated":"2015-11-04 13:04:20.000000000","message":"I\u0027m not sure I understand this last assertNotEqual? Is this just a test to see if comparing something that isn\u0027t the same object works? I would have assumed it\u0027d be something to do with you changing the payload on the line before, but it seems unrelated.","commit_id":"7ccfd5b34b9c2dd7334e7ce155cb4fd56c15fce7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"41e1fc381230ae3db49580048d6b33a5bda9bbf0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        obj \u003d update_serializer.InfoContainer(obj_id, obj_type, obj_payload)"},{"line_number":38,"context_line":"        cloned_obj \u003d update_serializer.InfoContainer.from_dict(obj.to_dict())"},{"line_number":39,"context_line":"        self.assertEqual(obj, cloned_obj)"},{"line_number":40,"context_line":"        obj.info_payload[\u0027x\u0027][\u0027y\u0027] \u003d - 1"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_7fcb0a54","line":40,"updated":"2015-11-05 05:14:34.000000000","message":"Ok, so now what is this doing? I feel like you were planning to do some additional testing here and set up for it and then ... didn\u0027t.","commit_id":"1bd987238e289882013ef4ba6add9daa04b0d847"}]}
