)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Implements blueprint embrane-lbaas-driver"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit implements Embrane\u0027s driver for LBaaS,"},{"line_number":12,"context_line":"which used Embrane\u0027s heleos(tm) appliances to provide Load Balancing."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia76fbc8881d178cfe6df11a2cfe8e77d3f36094f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2FxoM%3D","line":12,"updated":"2013-10-29 14:57:19.000000000","message":"nit: used -\u003e uses","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Implements blueprint embrane-lbaas-driver"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit implements Embrane\u0027s driver for LBaaS,"},{"line_number":12,"context_line":"which used Embrane\u0027s heleos(tm) appliances to provide Load Balancing."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia76fbc8881d178cfe6df11a2cfe8e77d3f36094f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2FvAc%3D","line":12,"in_reply_to":"AAAATn%2F%2FxoM%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"}],"neutron/db/migration/alembic_migrations/versions/33dd0a9fa487_embrane_lbaas_driver.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        sa.ForeignKeyConstraint([\u0027port_id\u0027], [u\u0027ports.id\u0027],"},{"line_number":54,"context_line":"                                name\u003du\u0027embrane_pool_port_ibfk_2\u0027),"},{"line_number":55,"context_line":"        sa.PrimaryKeyConstraint(u\u0027pool_id\u0027),"},{"line_number":56,"context_line":"        mysql_default_charset\u003du\u0027utf8\u0027,"},{"line_number":57,"context_line":"        mysql_engine\u003du\u0027InnoDB\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FqLg%3D","line":56,"updated":"2014-03-04 20:48:01.000000000","message":"i\u0027m not sure mysql defaults are needed","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        sa.ForeignKeyConstraint([\u0027port_id\u0027], [u\u0027ports.id\u0027],"},{"line_number":54,"context_line":"                                name\u003du\u0027embrane_pool_port_ibfk_2\u0027),"},{"line_number":55,"context_line":"        sa.PrimaryKeyConstraint(u\u0027pool_id\u0027),"},{"line_number":56,"context_line":"        mysql_default_charset\u003du\u0027utf8\u0027,"},{"line_number":57,"context_line":"        mysql_engine\u003du\u0027InnoDB\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FpvQ%3D","line":56,"in_reply_to":"AAAAVn%2F%2FqLg%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"9dfc80c90e19bb36fdb3d513f2ca54ae504716a2","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    op.create_table("},{"line_number":48,"context_line":"        u\u0027embrane_pool_port\u0027,"},{"line_number":49,"context_line":"        sa.Column(u\u0027pool_id\u0027, mysql.VARCHAR(length\u003d36), nullable\u003dFalse),"},{"line_number":50,"context_line":"        sa.Column(u\u0027port_id\u0027, mysql.VARCHAR(length\u003d36), nullable\u003dFalse),"},{"line_number":51,"context_line":"        sa.ForeignKeyConstraint([\u0027pool_id\u0027], [u\u0027pools.id\u0027],"},{"line_number":52,"context_line":"                                name\u003du\u0027embrane_pool_port_ibfk_1\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Flkw%3D","line":49,"updated":"2014-03-06 20:11:21.000000000","message":"you should avoid mysql specific migrations\ns\na.String()","commit_id":"5c40d35ee62671f5f3df8c38182f12addcb71e58"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7f0644b74a30566fa2784ba8e2bbdb7e950ffaae","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\"embrane_lbaas_driver"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Revision ID: 33dd0a9fa487"},{"line_number":21,"context_line":"Revises: 157a5d299379"},{"line_number":22,"context_line":"Create Date: 2014-02-25 00:15:35.567111"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F%2Fwg%3D","line":21,"updated":"2014-03-12 14:00:56.000000000","message":"please sync with line 28 and ensure it\u0027s the current head","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"b8878dd0f615e71a027d9a74069cd664cfdcf645","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\"embrane_lbaas_driver"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Revision ID: 33dd0a9fa487"},{"line_number":21,"context_line":"Revises: 157a5d299379"},{"line_number":22,"context_line":"Create Date: 2014-02-25 00:15:35.567111"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F9LY%3D","line":21,"in_reply_to":"AAAAWH%2F%2F%2Fwg%3D","updated":"2014-03-12 19:26:48.000000000","message":"Done","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"5f67de9d39e90e0b81207195020dfdc5bc6ebea3","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# revision identifiers, used by Alembic."},{"line_number":27,"context_line":"revision \u003d \u002733dd0a9fa487\u0027"},{"line_number":28,"context_line":"down_revision \u003d \u002719180cf98af6\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F8ow%3D","line":28,"updated":"2014-03-12 19:16:38.000000000","message":"this will need to be changed too","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"}],"neutron/services/loadbalancer/drivers/embrane/__init__.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F7CY%3D","line":1,"updated":"2014-02-27 12:38:28.000000000","message":"files with no code should be empty https://bugs.launchpad.net/neutron/+bug/1262424","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F2nQ%3D","line":1,"in_reply_to":"AAAAVX%2F%2F7CY%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"}],"neutron/services/loadbalancer/drivers/embrane/agent/__init__.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F7Bc%3D","line":1,"updated":"2014-02-27 12:38:28.000000000","message":"ditto","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F2nI%3D","line":1,"in_reply_to":"AAAAVX%2F%2F7Bc%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"}],"neutron/services/loadbalancer/drivers/embrane/agent/dispatcher.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                    del self.sync_items[sync_item]"},{"line_number":73,"context_line":"                    return"},{"line_number":74,"context_line":"                try:"},{"line_number":75,"context_line":"                    operatioq_context \u003d sync_queue.get("},{"line_number":76,"context_line":"                        timeout\u003decon.QUEUE_TIMEOUT)"},{"line_number":77,"context_line":"                except queue.Empty:"},{"line_number":78,"context_line":"                    del self.sync_items[sync_item]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FwcA%3D","line":75,"updated":"2013-10-29 14:57:19.000000000","message":"nit: typo in operatioq_context","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                    del self.sync_items[sync_item]"},{"line_number":73,"context_line":"                    return"},{"line_number":74,"context_line":"                try:"},{"line_number":75,"context_line":"                    operatioq_context \u003d sync_queue.get("},{"line_number":76,"context_line":"                        timeout\u003decon.QUEUE_TIMEOUT)"},{"line_number":77,"context_line":"                except queue.Empty:"},{"line_number":78,"context_line":"                    del self.sync_items[sync_item]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvYY%3D","line":75,"in_reply_to":"AAAATn%2F%2FwcA%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F7BQ%3D","line":3,"updated":"2014-02-27 12:38:28.000000000","message":"2014, please check other files","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F11A%3D","line":3,"in_reply_to":"AAAAVX%2F%2F7BQ%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from eventlet import greenthread"},{"line_number":21,"context_line":"from eventlet import queue"},{"line_number":22,"context_line":"from heleosapi import exceptions as h_exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":25,"context_line":"from neutron.plugins.embrane.common import contexts as ctx"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F7A8%3D","line":22,"updated":"2014-02-27 12:38:28.000000000","message":"should this be added to requirements.txt?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7db9993ac436025409c116ccc7bb200ef4cc0b55","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from eventlet import greenthread"},{"line_number":21,"context_line":"from eventlet import queue"},{"line_number":22,"context_line":"from heleosapi import exceptions as h_exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":25,"context_line":"from neutron.plugins.embrane.common import contexts as ctx"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2FzGY%3D","line":22,"in_reply_to":"AAAAVX%2F%2F1xo%3D","updated":"2014-02-28 07:49:53.000000000","message":"if this lib isn\u0027t publicly available how can one install and use the driver? My concern is that if I uncomment Embrane provider in neutron.conf then neutron server will fail to start.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from eventlet import greenthread"},{"line_number":21,"context_line":"from eventlet import queue"},{"line_number":22,"context_line":"from heleosapi import exceptions as h_exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":25,"context_line":"from neutron.plugins.embrane.common import contexts as ctx"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1xo%3D","line":22,"in_reply_to":"AAAAVX%2F%2F7A8%3D","updated":"2014-02-27 23:00:33.000000000","message":"The library is not publicly available yet, should I add that to the requirements anyway?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"af123c66c852e3745537aea80c29fb488bb695ad","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from eventlet import greenthread"},{"line_number":21,"context_line":"from eventlet import queue"},{"line_number":22,"context_line":"from heleosapi import exceptions as h_exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":25,"context_line":"from neutron.plugins.embrane.common import contexts as ctx"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2FuYo%3D","line":22,"in_reply_to":"AAAAVX%2F%2FzGY%3D","updated":"2014-02-28 18:59:48.000000000","message":"This will likely happen anyway unless you have the heleos backend installed. However I\u0027ll make sure that the library gets available asap. I\u0027ll add the requirement once it is done.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def dispatch_lb(self, d_context, args\u003d(), kwargs\u003d{}):"},{"line_number":39,"context_line":"        item \u003d d_context.item"},{"line_number":40,"context_line":"        event \u003d d_context.event"},{"line_number":41,"context_line":"        q_context \u003d d_context.q_context"},{"line_number":42,"context_line":"        chain \u003d d_context.chain"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        item_id \u003d item[\"id\"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F61g%3D","line":41,"updated":"2014-02-27 12:38:28.000000000","message":"n_context? q_context may be misleading","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def dispatch_lb(self, d_context, args\u003d(), kwargs\u003d{}):"},{"line_number":39,"context_line":"        item \u003d d_context.item"},{"line_number":40,"context_line":"        event \u003d d_context.event"},{"line_number":41,"context_line":"        q_context \u003d d_context.q_context"},{"line_number":42,"context_line":"        chain \u003d d_context.chain"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        item_id \u003d item[\"id\"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1yk%3D","line":41,"in_reply_to":"AAAAVX%2F%2F61g%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.sync_items \u003d dict()"},{"line_number":37,"context_line":"        self.handlers \u003d lb_operations.handlers"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def dispatch_lb(self, d_context, args\u003d(), kwargs\u003d{}):"},{"line_number":40,"context_line":"        item \u003d d_context.item"},{"line_number":41,"context_line":"        event \u003d d_context.event"},{"line_number":42,"context_line":"        n_context \u003d d_context.n_context"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpto%3D","line":39,"updated":"2014-03-01 23:14:17.000000000","message":"def dispatch_lb(self, d_context, *args, **kwargs):","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.sync_items \u003d dict()"},{"line_number":37,"context_line":"        self.handlers \u003d lb_operations.handlers"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def dispatch_lb(self, d_context, args\u003d(), kwargs\u003d{}):"},{"line_number":40,"context_line":"        item \u003d d_context.item"},{"line_number":41,"context_line":"        event \u003d d_context.event"},{"line_number":42,"context_line":"        n_context \u003d d_context.n_context"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpjM%3D","line":39,"in_reply_to":"AAAAVX%2F%2Fpto%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                          self.sync_items[item_id][0],"},{"line_number":59,"context_line":"                                          self._driver,"},{"line_number":60,"context_line":"                                          self._async)"},{"line_number":61,"context_line":"                    self.sync_items[item_id] +\u003d (t,)"},{"line_number":62,"context_line":"                if not self._async:"},{"line_number":63,"context_line":"                    t \u003d self.sync_items[item_id][1]"},{"line_number":64,"context_line":"                    t.wait()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpts%3D","line":61,"updated":"2014-03-01 23:14:17.000000000","message":"Why tuple addition here?","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                          self.sync_items[item_id][0],"},{"line_number":59,"context_line":"                                          self._driver,"},{"line_number":60,"context_line":"                                          self._async)"},{"line_number":61,"context_line":"                    self.sync_items[item_id] +\u003d (t,)"},{"line_number":62,"context_line":"                if not self._async:"},{"line_number":63,"context_line":"                    t \u003d self.sync_items[item_id][1]"},{"line_number":64,"context_line":"                    t.wait()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpi4%3D","line":61,"in_reply_to":"AAAAVX%2F%2Fpts%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"}],"neutron/services/loadbalancer/drivers/embrane/agent/lb_operations.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def wrap(f):"},{"line_number":34,"context_line":"        if event not in handler.keys():"},{"line_number":35,"context_line":"            new_func_list \u003d [f]"},{"line_number":36,"context_line":"            handler[event] \u003d new_func_list"},{"line_number":37,"context_line":"        else:"},{"line_number":38,"context_line":"            handler[event].append(f)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FwdI%3D","line":36,"updated":"2013-10-29 14:57:19.000000000","message":"nit: handler[event] \u003d [f]","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def wrap(f):"},{"line_number":34,"context_line":"        if event not in handler.keys():"},{"line_number":35,"context_line":"            new_func_list \u003d [f]"},{"line_number":36,"context_line":"            handler[event] \u003d new_func_list"},{"line_number":37,"context_line":"        else:"},{"line_number":38,"context_line":"            handler[event].append(f)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvYI%3D","line":36,"in_reply_to":"AAAATn%2F%2FwdI%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"@handler(econ.Events.POLL_GRAPH, handlers)"},{"line_number":155,"context_line":"def _pool_graph(driver, context, vip):"},{"line_number":156,"context_line":"    api \u003d driver._heleos_api"},{"line_number":157,"context_line":"    return api.extract_dva_state(api.get_dva(vip[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F64A%3D","line":155,"updated":"2014-02-27 12:38:28.000000000","message":"_poll_graph?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"@handler(econ.Events.POLL_GRAPH, handlers)"},{"line_number":155,"context_line":"def _pool_graph(driver, context, vip):"},{"line_number":156,"context_line":"    api \u003d driver._heleos_api"},{"line_number":157,"context_line":"    return api.extract_dva_state(api.get_dva(vip[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1xY%3D","line":155,"in_reply_to":"AAAAVX%2F%2F64A%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                             vip_utif_info, vip_ip_allocation_info,"},{"line_number":51,"context_line":"                             pool_utif_info\u003dNone,"},{"line_number":52,"context_line":"                             pool_ip_allocation_info\u003dNone,"},{"line_number":53,"context_line":"                             pool\u003dNone, members\u003d[],"},{"line_number":54,"context_line":"                             monitors\u003d[]):"},{"line_number":55,"context_line":"    api \u003d driver._heleos_api"},{"line_number":56,"context_line":"    tenant_id \u003d context.tenant_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FuqA%3D","line":53,"updated":"2014-03-04 13:09:10.000000000","message":"mutable default values may have side effects:default argument values are evaluated only once at function definition time, which means that modifying the default value of the argument will affect all subsequent calls of the function. Consider using None for default","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                             vip_utif_info, vip_ip_allocation_info,"},{"line_number":51,"context_line":"                             pool_utif_info\u003dNone,"},{"line_number":52,"context_line":"                             pool_ip_allocation_info\u003dNone,"},{"line_number":53,"context_line":"                             pool\u003dNone, members\u003d[],"},{"line_number":54,"context_line":"                             monitors\u003d[]):"},{"line_number":55,"context_line":"    api \u003d driver._heleos_api"},{"line_number":56,"context_line":"    tenant_id \u003d context.tenant_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrEk%3D","line":53,"in_reply_to":"AAAAVn%2F%2FuqA%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                          old_pool_id\u003dNone, old_port_id\u003dNone,"},{"line_number":82,"context_line":"                          removed_ip\u003dNone, pool_utif_info\u003dNone,"},{"line_number":83,"context_line":"                          pool_ip_allocation_info\u003dNone,"},{"line_number":84,"context_line":"                          new_pool\u003dNone, members\u003d[],"},{"line_number":85,"context_line":"                          monitors\u003d[]):"},{"line_number":86,"context_line":"    api \u003d driver._heleos_api"},{"line_number":87,"context_line":"    tenant_id \u003d context.tenant_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2Fuqk%3D","line":84,"updated":"2014-03-04 13:09:10.000000000","message":"ditto","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                          old_pool_id\u003dNone, old_port_id\u003dNone,"},{"line_number":82,"context_line":"                          removed_ip\u003dNone, pool_utif_info\u003dNone,"},{"line_number":83,"context_line":"                          pool_ip_allocation_info\u003dNone,"},{"line_number":84,"context_line":"                          new_pool\u003dNone, members\u003d[],"},{"line_number":85,"context_line":"                          monitors\u003d[]):"},{"line_number":86,"context_line":"    api \u003d driver._heleos_api"},{"line_number":87,"context_line":"    tenant_id \u003d context.tenant_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrEc%3D","line":84,"in_reply_to":"AAAAVn%2F%2Fuqk%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"@handler(econ.Events.UPDATE_POOL, handlers)"},{"line_number":119,"context_line":"def _update_server_pool(driver, context, vip, pool,"},{"line_number":120,"context_line":"                        monitors\u003d[]):"},{"line_number":121,"context_line":"    api \u003d driver._heleos_api"},{"line_number":122,"context_line":"    cookie \u003d ((vip.get(\u0027session_persistence\u0027) or {}).get(\u0027type\u0027) \u003d\u003d"},{"line_number":123,"context_line":"              lcon.SESSION_PERSISTENCE_HTTP_COOKIE)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FuqY%3D","line":120,"updated":"2014-03-04 13:09:10.000000000","message":"ditto","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"@handler(econ.Events.UPDATE_POOL, handlers)"},{"line_number":119,"context_line":"def _update_server_pool(driver, context, vip, pool,"},{"line_number":120,"context_line":"                        monitors\u003d[]):"},{"line_number":121,"context_line":"    api \u003d driver._heleos_api"},{"line_number":122,"context_line":"    cookie \u003d ((vip.get(\u0027session_persistence\u0027) or {}).get(\u0027type\u0027) \u003d\u003d"},{"line_number":123,"context_line":"              lcon.SESSION_PERSISTENCE_HTTP_COOKIE)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrEY%3D","line":120,"in_reply_to":"AAAAVn%2F%2FuqY%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron.services.loadbalancer.drivers.embrane import constants as econ"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"handlers \u003d dict()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def handler(event, handler):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FqGw%3D","line":29,"updated":"2014-03-04 20:48:01.000000000","message":"nit: prefer handlers \u003d {} form","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron.services.loadbalancer.drivers.embrane import constants as econ"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"handlers \u003d dict()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def handler(event, handler):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fpuo%3D","line":29,"in_reply_to":"AAAAVn%2F%2FqGw%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"}],"neutron/services/loadbalancer/drivers/embrane/config.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"cfg.CONF.register_opts(heleos_opts, \u0027heleoslb\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx98%3D","line":57,"updated":"2013-10-29 07:40:55.000000000","message":"please add all of the options above to etc/services.conf file under [heleosb] section","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"cfg.CONF.register_opts(heleos_opts, \u0027heleoslb\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvDM%3D","line":57,"in_reply_to":"AAAATn%2F%2Fx98%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"}],"neutron/services/loadbalancer/drivers/embrane/constants.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    DELETE_MEMBER \u003d \u0027delete_member\u0027"},{"line_number":46,"context_line":"    POLL_GRAPH \u003d \u0027poll_graph\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"operation_filter \u003d {"},{"line_number":49,"context_line":"    ccon.ACTIVE: [Events.ADD_OR_UPDATE_MEMBER, Events.CREATE_VIP,"},{"line_number":50,"context_line":"                  Events.DELETE_MEMBER, Events.DELETE_VIP,"},{"line_number":51,"context_line":"                  Events.REMOVE_MEMBER, Events.UPDATE_MEMBER,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FwMI%3D","line":48,"updated":"2013-10-29 14:57:19.000000000","message":"Can you please clarify where this is used and where the status update is happeneng for loadbalancer resources, say from PENDING_CREATE to ACTIVE?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    DELETE_MEMBER \u003d \u0027delete_member\u0027"},{"line_number":46,"context_line":"    POLL_GRAPH \u003d \u0027poll_graph\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"operation_filter \u003d {"},{"line_number":49,"context_line":"    ccon.ACTIVE: [Events.ADD_OR_UPDATE_MEMBER, Events.CREATE_VIP,"},{"line_number":50,"context_line":"                  Events.DELETE_MEMBER, Events.DELETE_VIP,"},{"line_number":51,"context_line":"                  Events.REMOVE_MEMBER, Events.UPDATE_MEMBER,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvWY%3D","line":48,"in_reply_to":"AAAATn%2F%2FwMI%3D","updated":"2013-10-30 02:01:04.000000000","message":"This is not used anymore, I just forgot to remove it :) the status update happens in dispatcher.Dispatcher._consume. At the end of any given operation the system synchronize the \"physical status\" (e.g. heleos Load Balancer) with the Neutron model.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2014 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp1c%3D","line":1,"updated":"2014-03-04 20:48:01.000000000","message":"nit: there is a consensus about not adding vim config to the file header","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2014 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FpuA%3D","line":1,"in_reply_to":"AAAAVn%2F%2Fp1c%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"}],"neutron/services/loadbalancer/drivers/embrane/db.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def get_member_subnet(context, member_address):"},{"line_number":33,"context_line":"    session \u003d context.session or db.get_session()"},{"line_number":34,"context_line":"    tenant_id \u003d context.tenant_id"},{"line_number":35,"context_line":"    try:"},{"line_number":36,"context_line":"        allocations \u003d (session.query(nmodel.IPAllocation.subnet_id).filter_by("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx88%3D","line":33,"updated":"2013-10-29 07:40:55.000000000","message":"why do you need db.get_session()?\nIs there a case when context.session in None?\nhere and below.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def get_member_subnet(context, member_address):"},{"line_number":33,"context_line":"    session \u003d context.session or db.get_session()"},{"line_number":34,"context_line":"    tenant_id \u003d context.tenant_id"},{"line_number":35,"context_line":"    try:"},{"line_number":36,"context_line":"        allocations \u003d (session.query(nmodel.IPAllocation.subnet_id).filter_by("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvU8%3D","line":33,"in_reply_to":"AAAATn%2F%2Fx88%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    try:"},{"line_number":36,"context_line":"        allocations \u003d (session.query(nmodel.IPAllocation.subnet_id).filter_by("},{"line_number":37,"context_line":"            ip_address\u003dmember_address)).all()"},{"line_number":38,"context_line":"    except exc.NoResultFound:  # May happen if instance port is deleted."},{"line_number":39,"context_line":"        return"},{"line_number":40,"context_line":"    subnets \u003d (session.query(nmodel.Subnet).filter_by("},{"line_number":41,"context_line":"        tenant_id\u003dtenant_id))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx9w%3D","line":38,"updated":"2013-10-29 07:40:55.000000000","message":".all() doesn\u0027t throw NoResultFound, it returns an empty list.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    try:"},{"line_number":36,"context_line":"        allocations \u003d (session.query(nmodel.IPAllocation.subnet_id).filter_by("},{"line_number":37,"context_line":"            ip_address\u003dmember_address)).all()"},{"line_number":38,"context_line":"    except exc.NoResultFound:  # May happen if instance port is deleted."},{"line_number":39,"context_line":"        return"},{"line_number":40,"context_line":"    subnets \u003d (session.query(nmodel.Subnet).filter_by("},{"line_number":41,"context_line":"        tenant_id\u003dtenant_id))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvWE%3D","line":38,"in_reply_to":"AAAATn%2F%2Fx9w%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def add_backend_port(session, port_id, pool_id, net_id):"},{"line_number":56,"context_line":"    session \u003d session or db.get_session()"},{"line_number":57,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":58,"context_line":"        net_port \u003d models.BackendPort(port_id, pool_id, net_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx9A%3D","line":55,"updated":"2013-10-29 07:40:55.000000000","message":"i\u0027d prefer to pass context, not session for style consistency.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def add_backend_port(session, port_id, pool_id, net_id):"},{"line_number":56,"context_line":"    session \u003d session or db.get_session()"},{"line_number":57,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":58,"context_line":"        net_port \u003d models.BackendPort(port_id, pool_id, net_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvU4%3D","line":55,"in_reply_to":"AAAATn%2F%2Fx9A%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def get_backend_port_by_pool_and_network(session, pool_id, network_id):"},{"line_number":69,"context_line":"    try:"},{"line_number":70,"context_line":"        return (session.query(models.BackendPort).filter_by("},{"line_number":71,"context_line":"            pool_id\u003dpool_id, network_id\u003dnetwork_id)).one()"},{"line_number":72,"context_line":"    except exc.NoResultFound:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx8s%3D","line":69,"updated":"2013-10-29 07:40:55.000000000","message":"replace 69-73 by:\n return (session.query(models.BackendPort).filter_by(\n            pool_id\u003dpool_id, network_id\u003dnetwork_id)).first()","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def get_backend_port_by_pool_and_network(session, pool_id, network_id):"},{"line_number":69,"context_line":"    try:"},{"line_number":70,"context_line":"        return (session.query(models.BackendPort).filter_by("},{"line_number":71,"context_line":"            pool_id\u003dpool_id, network_id\u003dnetwork_id)).one()"},{"line_number":72,"context_line":"    except exc.NoResultFound:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvUU%3D","line":69,"in_reply_to":"AAAATn%2F%2Fx8s%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":84,"context_line":"def delete_backend(session, backend_port):"},{"line_number":85,"context_line":"    session \u003d session or db.get_session()"},{"line_number":86,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":87,"context_line":"        try:"},{"line_number":88,"context_line":"            port \u003d (session.query(nmodel.Port).filter_by("},{"line_number":89,"context_line":"                    id\u003dbackend_port[\u0027port_id\u0027])).one()"},{"line_number":90,"context_line":"        except exc.NoResultFound:  # May happen if instance port is deleted."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx74%3D","line":87,"updated":"2013-10-29 07:40:55.000000000","message":"replace 87-94 with:\n port \u003d (session.query(nmodel.Port).filter_by(\n            id\u003dbackend_port[\u0027port_id\u0027])).first()\n if port:\n    session.delete(backend_port)\n    session.delete(port)","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"def delete_backend(session, backend_port):"},{"line_number":85,"context_line":"    session \u003d session or db.get_session()"},{"line_number":86,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":87,"context_line":"        try:"},{"line_number":88,"context_line":"            port \u003d (session.query(nmodel.Port).filter_by("},{"line_number":89,"context_line":"                    id\u003dbackend_port[\u0027port_id\u0027])).one()"},{"line_number":90,"context_line":"        except exc.NoResultFound:  # May happen if instance port is deleted."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvUQ%3D","line":87,"in_reply_to":"AAAATn%2F%2Fx74%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"1153989b42ccddac26b4eb64ac184894284f76d7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        pool_port \u003d (session.query(models.PoolPort).filter_by(pool_id\u003dpool_id)."},{"line_number":42,"context_line":"                     first())"},{"line_number":43,"context_line":"        return pool_port"},{"line_number":44,"context_line":"    except exc.NoResultFound:"},{"line_number":45,"context_line":"        return"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Frt0%3D","line":44,"updated":"2013-11-05 11:32:46.000000000","message":"no need for try/except since first() doesn\u0027t throw errors - it returns None in case no result","commit_id":"f95bf0cb942741d7af6dde073e0f619188ebe1d9"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"975813f1831f4abcfc0a24c212e703ee095eeb30","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        pool_port \u003d (session.query(models.PoolPort).filter_by(pool_id\u003dpool_id)."},{"line_number":42,"context_line":"                     first())"},{"line_number":43,"context_line":"        return pool_port"},{"line_number":44,"context_line":"    except exc.NoResultFound:"},{"line_number":45,"context_line":"        return"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FRxs%3D","line":44,"in_reply_to":"AAAATn%2F%2Frt0%3D","updated":"2013-11-11 23:30:04.000000000","message":"Done","commit_id":"f95bf0cb942741d7af6dde073e0f619188ebe1d9"}],"neutron/services/loadbalancer/drivers/embrane/driver.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":41,"context_line":"conf \u003d cfg.CONF.heleoslb"},{"line_number":42,"context_line":"confh \u003d dict()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"try:"},{"line_number":45,"context_line":"    confh \u003d cfg.CONF.heleos"},{"line_number":46,"context_line":"except cfg.NoSuchOptError:"},{"line_number":47,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx60%3D","line":44,"updated":"2013-10-29 07:40:55.000000000","message":"what are you trying to achieve with L42-54?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"conf \u003d cfg.CONF.heleoslb"},{"line_number":42,"context_line":"confh \u003d dict()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"try:"},{"line_number":45,"context_line":"    confh \u003d cfg.CONF.heleos"},{"line_number":46,"context_line":"except cfg.NoSuchOptError:"},{"line_number":47,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvTU%3D","line":44,"in_reply_to":"AAAATn%2F%2Fx60%3D","updated":"2013-10-30 02:01:04.000000000","message":"The possibility to re-use configuration from [heleos] configuration if exists and not overridden by [heleosdb] (i.e. the Embrane core plugin is used)","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class EmbraneLbaas(abstract_driver.LoadBalancerAbstractDriver):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    supported_extension_aliases \u003d [\u0027lbaas\u0027]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __init__(self, plugin):"},{"line_number":62,"context_line":"        edb.initialize()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx6g%3D","line":59,"updated":"2013-10-29 07:40:55.000000000","message":"why is this needed?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class EmbraneLbaas(abstract_driver.LoadBalancerAbstractDriver):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    supported_extension_aliases \u003d [\u0027lbaas\u0027]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __init__(self, plugin):"},{"line_number":62,"context_line":"        edb.initialize()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvSo%3D","line":59,"in_reply_to":"AAAATn%2F%2Fx6g%3D","updated":"2013-10-30 02:01:04.000000000","message":"Initially (havana) this was a service by itself, now ported to be a driver of the official LBaaS service before pushing the code. And of course I forgot to remove it :)","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __init__(self, plugin):"},{"line_number":62,"context_line":"        edb.initialize()"},{"line_number":63,"context_line":"        config_esm_mgmt \u003d get_conf(\u0027esm_mgmt\u0027)"},{"line_number":64,"context_line":"        config_admin_username \u003d get_conf(\u0027admin_username\u0027)"},{"line_number":65,"context_line":"        config_admin_password \u003d get_conf(\u0027admin_password\u0027)"},{"line_number":66,"context_line":"        config_lb_image_id \u003d get_conf(\u0027lb_image\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx6s%3D","line":63,"updated":"2013-10-29 07:40:55.000000000","message":"i think you need to use a common way of accessing the conf","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __init__(self, plugin):"},{"line_number":62,"context_line":"        edb.initialize()"},{"line_number":63,"context_line":"        config_esm_mgmt \u003d get_conf(\u0027esm_mgmt\u0027)"},{"line_number":64,"context_line":"        config_admin_username \u003d get_conf(\u0027admin_username\u0027)"},{"line_number":65,"context_line":"        config_admin_password \u003d get_conf(\u0027admin_password\u0027)"},{"line_number":66,"context_line":"        config_lb_image_id \u003d get_conf(\u0027lb_image\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvSU%3D","line":63,"in_reply_to":"AAAATn%2F%2Fx6s%3D","updated":"2013-10-30 02:01:04.000000000","message":"See above for the reason why I am doing like this","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            return support_class()"},{"line_number":108,"context_line":"        except ImportError:"},{"line_number":109,"context_line":"            LOG.exception(_(\u0027Error loading plugin support\u0027))"},{"line_number":110,"context_line":"            raise Exception(_(\u0027Plugin support not found.\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _validate_vip(self, context, vip):"},{"line_number":113,"context_line":"        if vip.get(\u0027connection_limit\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fw6A%3D","line":110,"updated":"2013-10-29 14:57:19.000000000","message":"why different messages for log and exception?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            return support_class()"},{"line_number":108,"context_line":"        except ImportError:"},{"line_number":109,"context_line":"            LOG.exception(_(\u0027Error loading plugin support\u0027))"},{"line_number":110,"context_line":"            raise Exception(_(\u0027Plugin support not found.\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _validate_vip(self, context, vip):"},{"line_number":113,"context_line":"        if vip.get(\u0027connection_limit\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvR4%3D","line":110,"in_reply_to":"AAAATn%2F%2Fw6A%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            LOG.exception(_(\u0027Error loading plugin support\u0027))"},{"line_number":110,"context_line":"            raise Exception(_(\u0027Plugin support not found.\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _validate_vip(self, context, vip):"},{"line_number":113,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":114,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx5k%3D","line":112,"updated":"2013-10-29 07:40:55.000000000","message":"validation should raise in case input is incorrect, no?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            LOG.exception(_(\u0027Error loading plugin support\u0027))"},{"line_number":110,"context_line":"            raise Exception(_(\u0027Plugin support not found.\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _validate_vip(self, context, vip):"},{"line_number":113,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":114,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvQ8%3D","line":112,"in_reply_to":"AAAATn%2F%2Fx5k%3D","updated":"2013-10-30 02:01:04.000000000","message":"The name is confusing here, what I am actually doing here is correcting/warning if the input contains some unsupported values. Changing to a clearer name.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    self.plugin.update_status(context, ldb.Member,"},{"line_number":147,"context_line":"                                              member[\u0027id\u0027], member[\u0027status\u0027])"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _create_backend_port(self, context, db_pool, subnet):"},{"line_number":150,"context_line":"        fixed_ip \u003d {\u0027subnet_id\u0027: subnet[\u0027id\u0027],"},{"line_number":151,"context_line":"                    \u0027fixed_ips\u0027: attributes.ATTR_NOT_SPECIFIED}"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx5E%3D","line":149,"updated":"2013-10-29 07:40:55.000000000","message":"can you explain the purpose of the backend port?\nWhat is the difference between backend port and the port created for the VIP?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    self.plugin.update_status(context, ldb.Member,"},{"line_number":147,"context_line":"                                              member[\u0027id\u0027], member[\u0027status\u0027])"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _create_backend_port(self, context, db_pool, subnet):"},{"line_number":150,"context_line":"        fixed_ip \u003d {\u0027subnet_id\u0027: subnet[\u0027id\u0027],"},{"line_number":151,"context_line":"                    \u0027fixed_ips\u0027: attributes.ATTR_NOT_SPECIFIED}"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvMk%3D","line":149,"in_reply_to":"AAAATn%2F%2Fx5E%3D","updated":"2013-10-30 02:01:04.000000000","message":"VIP port is a port you create on the network in which the VIP lays... But you don\u0027t provide any info on the network in which the actual members are. I can see why this choice has been made (members may not refer to existing instances the moment you create them?) but nonetheless I need to place the virtual appliance interfaces in the correct networks in order to guarantee connectivity between the LB and the members (Note that each Embrane LB is a separate virtual appliance inserted in the network on demand).\nMoreover, since we proxy the requests coming to the VIP for the backend, we also need an IP address in the subnet in which the members are... And therefore the need to create a new port (one for each unique network of the members\u0027 set).\n\nLong story short: Backend ports represent the Load Balancer interfaces in the members\u0027 network.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        port[\u0027fixed_ips\u0027].append(fixed_ip)"},{"line_number":173,"context_line":"        self.plugin._core_plugin.update_port(context, {\u0027port\u0027: port})"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _retrieve_pool_member_subnets(self, context, pool_id):"},{"line_number":176,"context_line":"        result \u003d dict()"},{"line_number":177,"context_line":"        pool \u003d self.plugin.get_pool(context, pool_id)"},{"line_number":178,"context_line":"        for m_id in pool.get(\u0027members\u0027, []):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx4Y%3D","line":175,"updated":"2013-10-29 07:40:55.000000000","message":"i\u0027m wondering if this method and all the logic around \u0027member subnets\u0027 are required.\nWhile lbaas doesn\u0027t enforce members to be added from the subnet of the pool, it is implied.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        port[\u0027fixed_ips\u0027].append(fixed_ip)"},{"line_number":173,"context_line":"        self.plugin._core_plugin.update_port(context, {\u0027port\u0027: port})"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _retrieve_pool_member_subnets(self, context, pool_id):"},{"line_number":176,"context_line":"        result \u003d dict()"},{"line_number":177,"context_line":"        pool \u003d self.plugin.get_pool(context, pool_id)"},{"line_number":178,"context_line":"        for m_id in pool.get(\u0027members\u0027, []):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvFY%3D","line":175,"in_reply_to":"AAAATn%2F%2Fx4Y%3D","updated":"2013-10-30 02:01:04.000000000","message":"Discussed with enikarov on IRC.","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ca4c4e468a85f6d565a3f5a6546e98235f166521","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.plugin._core_plugin.update_port(context, {\u0027port\u0027: port})"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _retrieve_pool_member_subnets(self, context, pool_id):"},{"line_number":176,"context_line":"        result \u003d dict()"},{"line_number":177,"context_line":"        pool \u003d self.plugin.get_pool(context, pool_id)"},{"line_number":178,"context_line":"        for m_id in pool.get(\u0027members\u0027, []):"},{"line_number":179,"context_line":"            member \u003d self.plugin.get_member(context, m_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx5A%3D","line":176,"updated":"2013-10-29 07:40:55.000000000","message":"result\u003d{}","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.plugin._core_plugin.update_port(context, {\u0027port\u0027: port})"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _retrieve_pool_member_subnets(self, context, pool_id):"},{"line_number":176,"context_line":"        result \u003d dict()"},{"line_number":177,"context_line":"        pool \u003d self.plugin.get_pool(context, pool_id)"},{"line_number":178,"context_line":"        for m_id in pool.get(\u0027members\u0027, []):"},{"line_number":179,"context_line":"            member \u003d self.plugin.get_member(context, m_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvFM%3D","line":176,"in_reply_to":"AAAATn%2F%2Fx5A%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def update_health_monitor(self, context, old_health_monitor,"},{"line_number":389,"context_line":"                              health_monitor, pool_id):"},{"line_number":390,"context_line":"        pass"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":393,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FwfY%3D","line":390,"updated":"2013-10-29 14:57:19.000000000","message":"Do you plan to add support later?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def update_health_monitor(self, context, old_health_monitor,"},{"line_number":389,"context_line":"                              health_monitor, pool_id):"},{"line_number":390,"context_line":"        pass"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":393,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Ft0w%3D","line":390,"in_reply_to":"AAAATn%2F%2FwfY%3D","updated":"2013-10-30 02:01:04.000000000","message":"yeah I plan on doing some adaptation to support it","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        pass"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":393,"context_line":"        pass"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def delete_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":396,"context_line":"        self.plugin._delete_db_pool_health_monitor(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FwfU%3D","line":393,"updated":"2013-10-29 14:57:19.000000000","message":"TODO?","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        pass"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":393,"context_line":"        pass"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def delete_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":396,"context_line":"        self.plugin._delete_db_pool_health_monitor(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Ft0o%3D","line":393,"in_reply_to":"AAAATn%2F%2FwfU%3D","updated":"2013-10-30 02:01:04.000000000","message":"see above","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"1153989b42ccddac26b4eb64ac184894284f76d7","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def _warn_unsupported_values(self, context, vip):"},{"line_number":114,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":115,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":116,"context_line":"            LOG.warning(_(\u0027Connection limit is not supported by Embrane LB\u0027))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if (vip.get(\u0027session_persistence\u0027, {}).get(\u0027type\u0027) \u003d\u003d"},{"line_number":119,"context_line":"            lbcon.SESSION_PERSISTENCE_APP_COOKIE):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fd5c%3D","line":116,"updated":"2013-11-05 11:32:46.000000000","message":"with only warning in logs a user will not know that connection limin is not supported as the value will be returned from DB on GET calls.","commit_id":"f95bf0cb942741d7af6dde073e0f619188ebe1d9"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"975813f1831f4abcfc0a24c212e703ee095eeb30","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def _warn_unsupported_values(self, context, vip):"},{"line_number":114,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":115,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":116,"context_line":"            LOG.warning(_(\u0027Connection limit is not supported by Embrane LB\u0027))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if (vip.get(\u0027session_persistence\u0027, {}).get(\u0027type\u0027) \u003d\u003d"},{"line_number":119,"context_line":"            lbcon.SESSION_PERSISTENCE_APP_COOKIE):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fd2w%3D","line":116,"in_reply_to":"AAAATn%2F%2Fd5c%3D","updated":"2013-11-11 23:30:04.000000000","message":"The value is also set back to -1 (no connection limit) so that shouldn\u0027t been a problem as long as it is a documented behavior (in which case I\u0027ll add a note in the Embrane LBaaS driver wiki page)","commit_id":"f95bf0cb942741d7af6dde073e0f619188ebe1d9"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"1153989b42ccddac26b4eb64ac184894284f76d7","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        if (vip.get(\u0027session_persistence\u0027, {}).get(\u0027type\u0027) \u003d\u003d"},{"line_number":119,"context_line":"            lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":120,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":121,"context_line":"            LOG.warning(_(\u0027Session persistence %s not \u0027"},{"line_number":122,"context_line":"                          \u0027supported by Embrane LBaaS\u0027), p_type)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fd5I%3D","line":121,"updated":"2013-11-05 11:32:46.000000000","message":"ditto for session persistence: on show operations session persistence will be returned from DB so a user will think that it was actually applied. Should we fail such operations with unsupported features?","commit_id":"f95bf0cb942741d7af6dde073e0f619188ebe1d9"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"975813f1831f4abcfc0a24c212e703ee095eeb30","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        if (vip.get(\u0027session_persistence\u0027, {}).get(\u0027type\u0027) \u003d\u003d"},{"line_number":119,"context_line":"            lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":120,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":121,"context_line":"            LOG.warning(_(\u0027Session persistence %s not \u0027"},{"line_number":122,"context_line":"                          \u0027supported by Embrane LBaaS\u0027), p_type)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fd2k%3D","line":121,"in_reply_to":"AAAATn%2F%2Fd5I%3D","updated":"2013-11-11 23:30:04.000000000","message":"see above","commit_id":"f95bf0cb942741d7af6dde073e0f619188ebe1d9"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _warn_unsupported_values(self, context, vip):"},{"line_number":87,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":88,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":89,"context_line":"            LOG.warning(_(\u0027Connection limit is not supported by Embrane LB\u0027))"},{"line_number":90,"context_line":"        persistance \u003d vip.get(\u0027session_persistence\u0027)"},{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F6lc%3D","line":88,"updated":"2014-02-27 12:38:28.000000000","message":"seems reseting to -1 will have no effect as user will still get results from db where connection limit is untouched. This should be covered by flavors framework in future, for now I\u0027d suggest to fail such vips with kind of Unsupported exception.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7db9993ac436025409c116ccc7bb200ef4cc0b55","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _warn_unsupported_values(self, context, vip):"},{"line_number":87,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":88,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":89,"context_line":"            LOG.warning(_(\u0027Connection limit is not supported by Embrane LB\u0027))"},{"line_number":90,"context_line":"        persistance \u003d vip.get(\u0027session_persistence\u0027)"},{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2FzFA%3D","line":88,"in_reply_to":"AAAAVX%2F%2F1u8%3D","updated":"2014-02-28 07:49:53.000000000","message":"it shouldn\u0027t: -1 is the default value for conn limit and tempest tests doesn\u0027t specify it.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _warn_unsupported_values(self, context, vip):"},{"line_number":87,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":88,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":89,"context_line":"            LOG.warning(_(\u0027Connection limit is not supported by Embrane LB\u0027))"},{"line_number":90,"context_line":"        persistance \u003d vip.get(\u0027session_persistence\u0027)"},{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1u8%3D","line":88,"in_reply_to":"AAAAVX%2F%2F6lc%3D","updated":"2014-02-27 23:00:33.000000000","message":"I agree, but won\u0027t this break tempest API tests?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"af123c66c852e3745537aea80c29fb488bb695ad","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _warn_unsupported_values(self, context, vip):"},{"line_number":87,"context_line":"        if vip.get(\u0027connection_limit\u0027):"},{"line_number":88,"context_line":"            vip[\u0027connection_limit\u0027] \u003d -1"},{"line_number":89,"context_line":"            LOG.warning(_(\u0027Connection limit is not supported by Embrane LB\u0027))"},{"line_number":90,"context_line":"        persistance \u003d vip.get(\u0027session_persistence\u0027)"},{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2FuXs%3D","line":88,"in_reply_to":"AAAAVX%2F%2FzFA%3D","updated":"2014-02-28 18:59:48.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"},{"line_number":92,"context_line":"                lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":93,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":94,"context_line":"            LOG.warning(_(\u0027Session persistence %s not \u0027"},{"line_number":95,"context_line":"                          \u0027supported by Embrane LBaaS\u0027), p_type)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F6ms%3D","line":94,"updated":"2014-02-27 12:38:28.000000000","message":"same concern here - on vip GET requests a user will see session persistence on the vip, while actually it is not configured on the backend.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7db9993ac436025409c116ccc7bb200ef4cc0b55","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"},{"line_number":92,"context_line":"                lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":93,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":94,"context_line":"            LOG.warning(_(\u0027Session persistence %s not \u0027"},{"line_number":95,"context_line":"                          \u0027supported by Embrane LBaaS\u0027), p_type)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2FzC8%3D","line":94,"in_reply_to":"AAAAVX%2F%2F1u4%3D","updated":"2014-02-28 07:49:53.000000000","message":"Tempest test for session persistence is on review. When it\u0027s ready I think we may consider adding a check there and skip test for app_cookie persistence in case of Embrane provider.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"},{"line_number":92,"context_line":"                lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":93,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":94,"context_line":"            LOG.warning(_(\u0027Session persistence %s not \u0027"},{"line_number":95,"context_line":"                          \u0027supported by Embrane LBaaS\u0027), p_type)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1u4%3D","line":94,"in_reply_to":"AAAAVX%2F%2F6ms%3D","updated":"2014-02-27 23:00:33.000000000","message":"please see above","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"af123c66c852e3745537aea80c29fb488bb695ad","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if (persistance and persistance.get(\u0027type\u0027) \u003d\u003d"},{"line_number":92,"context_line":"                lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":93,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":94,"context_line":"            LOG.warning(_(\u0027Session persistence %s not \u0027"},{"line_number":95,"context_line":"                          \u0027supported by Embrane LBaaS\u0027), p_type)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2FuXk%3D","line":94,"in_reply_to":"AAAAVX%2F%2FzC8%3D","updated":"2014-02-28 18:59:48.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        else:"},{"line_number":301,"context_line":"            self._delete_member(context, member)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def stats(self, context, pool_id):"},{"line_number":304,"context_line":"        return {\u0027bytes_in\u0027: 0,"},{"line_number":305,"context_line":"                \u0027bytes_out\u0027: 0,"},{"line_number":306,"context_line":"                \u0027active_connections\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F6fo%3D","line":303,"updated":"2014-02-27 12:38:28.000000000","message":"is it planned to add statistics support?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        else:"},{"line_number":301,"context_line":"            self._delete_member(context, member)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def stats(self, context, pool_id):"},{"line_number":304,"context_line":"        return {\u0027bytes_in\u0027: 0,"},{"line_number":305,"context_line":"                \u0027bytes_out\u0027: 0,"},{"line_number":306,"context_line":"                \u0027active_connections\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1uU%3D","line":303,"in_reply_to":"AAAAVX%2F%2F6fo%3D","updated":"2014-02-27 23:00:33.000000000","message":"Stats and Health monitors support in this driver is planned for the J release.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def update_health_monitor(self, context, old_health_monitor,"},{"line_number":310,"context_line":"                              health_monitor, pool_id):"},{"line_number":311,"context_line":"        pass"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":314,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F6gI%3D","line":311,"updated":"2014-02-27 12:38:28.000000000","message":"is it planned to add health monitors support?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def update_health_monitor(self, context, old_health_monitor,"},{"line_number":310,"context_line":"                              health_monitor, pool_id):"},{"line_number":311,"context_line":"        pass"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":314,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1uI%3D","line":311,"in_reply_to":"AAAAVX%2F%2F6gI%3D","updated":"2014-02-27 23:00:33.000000000","message":"please see above","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            context, vip_port)"},{"line_number":170,"context_line":"        vip_ip_allocation_info.is_gw \u003d True"},{"line_number":171,"context_line":"        db_pool \u003d pool_utif_info \u003d pool_ip_allocation_info \u003d None"},{"line_number":172,"context_line":"        members \u003d monitors \u003d []"},{"line_number":173,"context_line":"        if db_vip[\u0027pool_id\u0027]:"},{"line_number":174,"context_line":"            db_pool \u003d self.plugin.get_pool("},{"line_number":175,"context_line":"                context, db_vip[\u0027pool_id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FptY%3D","line":172,"updated":"2014-03-01 23:14:17.000000000","message":"remove this line","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            context, vip_port)"},{"line_number":170,"context_line":"        vip_ip_allocation_info.is_gw \u003d True"},{"line_number":171,"context_line":"        db_pool \u003d pool_utif_info \u003d pool_ip_allocation_info \u003d None"},{"line_number":172,"context_line":"        members \u003d monitors \u003d []"},{"line_number":173,"context_line":"        if db_vip[\u0027pool_id\u0027]:"},{"line_number":174,"context_line":"            db_pool \u003d self.plugin.get_pool("},{"line_number":175,"context_line":"                context, db_vip[\u0027pool_id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpik%3D","line":172,"in_reply_to":"AAAAVX%2F%2FptY%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                pool_utif_info \u003d self._retrieve_utif_info(context, db_port)"},{"line_number":181,"context_line":"                pool_ip_allocation_info \u003d utils.retrieve_ip_allocation_info("},{"line_number":182,"context_line":"                    context, db_port)"},{"line_number":183,"context_line":"            for member in db_pool[\u0027members\u0027]:"},{"line_number":184,"context_line":"                members.append("},{"line_number":185,"context_line":"                    self.plugin.get_member(context, member))"},{"line_number":186,"context_line":"            for monitor in db_pool[\u0027health_monitors\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FptU%3D","line":183,"updated":"2014-03-01 23:14:17.000000000","message":"members \u003d [\n    self.plugin.get_member(context, member)\n    for member in db_pool[\u0027members\u0027]\n]","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                pool_utif_info \u003d self._retrieve_utif_info(context, db_port)"},{"line_number":181,"context_line":"                pool_ip_allocation_info \u003d utils.retrieve_ip_allocation_info("},{"line_number":182,"context_line":"                    context, db_port)"},{"line_number":183,"context_line":"            for member in db_pool[\u0027members\u0027]:"},{"line_number":184,"context_line":"                members.append("},{"line_number":185,"context_line":"                    self.plugin.get_member(context, member))"},{"line_number":186,"context_line":"            for monitor in db_pool[\u0027health_monitors\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpig%3D","line":183,"in_reply_to":"AAAAVX%2F%2FptU%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            for member in db_pool[\u0027members\u0027]:"},{"line_number":184,"context_line":"                members.append("},{"line_number":185,"context_line":"                    self.plugin.get_member(context, member))"},{"line_number":186,"context_line":"            for monitor in db_pool[\u0027health_monitors\u0027]:"},{"line_number":187,"context_line":"                monitors.append("},{"line_number":188,"context_line":"                    self.plugin.get_health_monitor(context, monitor))"},{"line_number":189,"context_line":"        self._dispatcher.dispatch_lb("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FptA%3D","line":186,"updated":"2014-03-01 23:14:17.000000000","message":"monitors \u003d [\n    self.plugin.get_health_monitor(context, monitor)\n    for monitor in db_pool[\u0027health_monitors\u0027]\n]","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            for member in db_pool[\u0027members\u0027]:"},{"line_number":184,"context_line":"                members.append("},{"line_number":185,"context_line":"                    self.plugin.get_member(context, member))"},{"line_number":186,"context_line":"            for monitor in db_pool[\u0027health_monitors\u0027]:"},{"line_number":187,"context_line":"                monitors.append("},{"line_number":188,"context_line":"                    self.plugin.get_health_monitor(context, monitor))"},{"line_number":189,"context_line":"        self._dispatcher.dispatch_lb("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpic%3D","line":186,"in_reply_to":"AAAAVX%2F%2FptA%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        self._dispatcher.dispatch_lb("},{"line_number":190,"context_line":"            d_context\u003dembrane_ctx.DispatcherContext(econ.Events.CREATE_VIP,"},{"line_number":191,"context_line":"                                                    db_vip, context, None),"},{"line_number":192,"context_line":"            args\u003d(self._flavor, vip_utif_info, vip_ip_allocation_info,"},{"line_number":193,"context_line":"                  pool_utif_info, pool_ip_allocation_info, db_pool, members,"},{"line_number":194,"context_line":"                  monitors))"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpsk%3D","line":192,"updated":"2014-03-01 23:14:17.000000000","message":"Should just just pass the args.","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        self._dispatcher.dispatch_lb("},{"line_number":190,"context_line":"            d_context\u003dembrane_ctx.DispatcherContext(econ.Events.CREATE_VIP,"},{"line_number":191,"context_line":"                                                    db_vip, context, None),"},{"line_number":192,"context_line":"            args\u003d(self._flavor, vip_utif_info, vip_ip_allocation_info,"},{"line_number":193,"context_line":"                  pool_utif_info, pool_ip_allocation_info, db_pool, members,"},{"line_number":194,"context_line":"                  monitors))"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpiY%3D","line":192,"in_reply_to":"AAAAVX%2F%2Fpsk%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        if old_vip[\u0027pool_id\u0027] !\u003d vip[\u0027pool_id\u0027]:"},{"line_number":202,"context_line":"            new_pool \u003d self.plugin.get_pool("},{"line_number":203,"context_line":"                context, vip[\u0027pool_id\u0027])"},{"line_number":204,"context_line":"            for member in new_pool[\u0027members\u0027]:"},{"line_number":205,"context_line":"                members.append(self.plugin.get_member(context, member))"},{"line_number":206,"context_line":"            for monitor in new_pool[\u0027health_monitors\u0027]:"},{"line_number":207,"context_line":"                monitors.append(self.plugin.get_health_monitor(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpss%3D","line":204,"updated":"2014-03-01 23:14:17.000000000","message":"Same comment as above for using a list comprehension.","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        if old_vip[\u0027pool_id\u0027] !\u003d vip[\u0027pool_id\u0027]:"},{"line_number":202,"context_line":"            new_pool \u003d self.plugin.get_pool("},{"line_number":203,"context_line":"                context, vip[\u0027pool_id\u0027])"},{"line_number":204,"context_line":"            for member in new_pool[\u0027members\u0027]:"},{"line_number":205,"context_line":"                members.append(self.plugin.get_member(context, member))"},{"line_number":206,"context_line":"            for monitor in new_pool[\u0027health_monitors\u0027]:"},{"line_number":207,"context_line":"                monitors.append(self.plugin.get_health_monitor(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpiU%3D","line":204,"in_reply_to":"AAAAVX%2F%2Fpss%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                context, vip[\u0027pool_id\u0027])"},{"line_number":204,"context_line":"            for member in new_pool[\u0027members\u0027]:"},{"line_number":205,"context_line":"                members.append(self.plugin.get_member(context, member))"},{"line_number":206,"context_line":"            for monitor in new_pool[\u0027health_monitors\u0027]:"},{"line_number":207,"context_line":"                monitors.append(self.plugin.get_health_monitor(context,"},{"line_number":208,"context_line":"                                                               monitor))"},{"line_number":209,"context_line":"            new_pool_port \u003d edb.get_pool_port(context, new_pool[\"id\"])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpso%3D","line":206,"updated":"2014-03-01 23:14:17.000000000","message":"same comment as above for using a list comprehension.","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                context, vip[\u0027pool_id\u0027])"},{"line_number":204,"context_line":"            for member in new_pool[\u0027members\u0027]:"},{"line_number":205,"context_line":"                members.append(self.plugin.get_member(context, member))"},{"line_number":206,"context_line":"            for monitor in new_pool[\u0027health_monitors\u0027]:"},{"line_number":207,"context_line":"                monitors.append(self.plugin.get_health_monitor(context,"},{"line_number":208,"context_line":"                                                               monitor))"},{"line_number":209,"context_line":"            new_pool_port \u003d edb.get_pool_port(context, new_pool[\"id\"])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpiQ%3D","line":206,"in_reply_to":"AAAAVX%2F%2Fpso%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                        context, ldb.Vip, old_pool[\u0027vip_id\u0027])"},{"line_number":249,"context_line":"                except lb_ext.VipNotFound:"},{"line_number":250,"context_line":"                    return"},{"line_number":251,"context_line":"                monitors \u003d []"},{"line_number":252,"context_line":"                for monitor in pool[\u0027health_monitors\u0027]:"},{"line_number":253,"context_line":"                    monitors.append(self.plugin.get_health_monitor("},{"line_number":254,"context_line":"                        context, monitor))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpsU%3D","line":251,"updated":"2014-03-01 23:14:17.000000000","message":"convert to list comprehension","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                        context, ldb.Vip, old_pool[\u0027vip_id\u0027])"},{"line_number":249,"context_line":"                except lb_ext.VipNotFound:"},{"line_number":250,"context_line":"                    return"},{"line_number":251,"context_line":"                monitors \u003d []"},{"line_number":252,"context_line":"                for monitor in pool[\u0027health_monitors\u0027]:"},{"line_number":253,"context_line":"                    monitors.append(self.plugin.get_health_monitor("},{"line_number":254,"context_line":"                        context, monitor))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpiM%3D","line":251,"in_reply_to":"AAAAVX%2F%2FpsU%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                              health_monitor, pool_id):"},{"line_number":313,"context_line":"        pass"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":316,"context_line":"        pass"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def update_pool_health_monitor(self, context, old_health_monitor,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FpsQ%3D","line":315,"updated":"2014-03-01 23:14:17.000000000","message":"These must be supported as they are part of the API.","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                              health_monitor, pool_id):"},{"line_number":313,"context_line":"        pass"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def create_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":316,"context_line":"        pass"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def update_pool_health_monitor(self, context, old_health_monitor,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2FphY%3D","line":315,"in_reply_to":"AAAAVX%2F%2FpsQ%3D","updated":"2014-03-02 00:42:03.000000000","message":"Even though this code has been here for quite some time (waiting for the internal CI to be completed) I\u0027ve never heard about this requirement :) .\nWe have this feature implemented in the new version of our product. The reason why I wanted to support this in J, is because I wanted to add full support to the 3.0 version of heleos in the next release (together with the FWaaS driver).\n\nHowever, since this is a requirement, I should be able to upgrade the heleos version we have in our lab for the CI, and include this feature quite soon. Hopefully the stability of the tests shouldn\u0027t be affected and everything should go fine.","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.plugin.update_status(context, ldb.Vip, vip[\u0027id\u0027],"},{"line_number":115,"context_line":"                                  vip[\u0027status\u0027])"},{"line_number":116,"context_line":"        if vip[\u0027status\u0027] !\u003d pcon.ERROR:"},{"line_number":117,"context_line":"            pool \u003d self.plugin._get_resource(context, ldb.Pool,"},{"line_number":118,"context_line":"                                             vip[\u0027pool_id\u0027])"},{"line_number":119,"context_line":"            pool_members \u003d pool[\u0027members\u0027]"},{"line_number":120,"context_line":"            # Manages possible manual changes and monitor actions"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2Fuxk%3D","line":117,"updated":"2014-03-04 13:09:10.000000000","message":"self.plugin.get_pool()?","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.plugin.update_status(context, ldb.Vip, vip[\u0027id\u0027],"},{"line_number":115,"context_line":"                                  vip[\u0027status\u0027])"},{"line_number":116,"context_line":"        if vip[\u0027status\u0027] !\u003d pcon.ERROR:"},{"line_number":117,"context_line":"            pool \u003d self.plugin._get_resource(context, ldb.Pool,"},{"line_number":118,"context_line":"                                             vip[\u0027pool_id\u0027])"},{"line_number":119,"context_line":"            pool_members \u003d pool[\u0027members\u0027]"},{"line_number":120,"context_line":"            # Manages possible manual changes and monitor actions"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrAg%3D","line":117,"in_reply_to":"AAAAVn%2F%2Fuxk%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":43,"context_line":"conf \u003d cfg.CONF.heleoslb"},{"line_number":44,"context_line":"confh \u003d dict()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"try:"},{"line_number":47,"context_line":"    confh \u003d cfg.CONF.heleos"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FqEc%3D","line":44,"updated":"2014-03-04 20:48:01.000000000","message":"not: confh \u003d {}","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":43,"context_line":"conf \u003d cfg.CONF.heleoslb"},{"line_number":44,"context_line":"confh \u003d dict()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"try:"},{"line_number":47,"context_line":"    confh \u003d cfg.CONF.heleos"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fpt4%3D","line":44,"in_reply_to":"AAAAVn%2F%2FqEc%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":94,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":95,"context_line":"            raise h_exc.UnsupportedException("},{"line_number":96,"context_line":"                err_msg\u003d_(\u0027Session persistence  %s \u0027"},{"line_number":97,"context_line":"                          \u0027not supported by Embrane LBaaS\u0027) % p_type)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FqDw%3D","line":96,"updated":"2014-03-04 20:48:01.000000000","message":"nit: extra space before %s","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                lbcon.SESSION_PERSISTENCE_APP_COOKIE):"},{"line_number":94,"context_line":"            p_type \u003d vip[\u0027session_persistence\u0027][\u0027type\u0027]"},{"line_number":95,"context_line":"            raise h_exc.UnsupportedException("},{"line_number":96,"context_line":"                err_msg\u003d_(\u0027Session persistence  %s \u0027"},{"line_number":97,"context_line":"                          \u0027not supported by Embrane LBaaS\u0027) % p_type)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def _delete_vip(self, context, vip):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fptk%3D","line":96,"in_reply_to":"AAAAVn%2F%2FqDw%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self._heleos_api.update_pool_status(vip[\u0027id\u0027], pool)"},{"line_number":121,"context_line":"            self._heleos_api.update_members_status(vip[\u0027id\u0027], pool[\u0027id\u0027],"},{"line_number":122,"context_line":"                                                   pool_members)"},{"line_number":123,"context_line":"            self.plugin.update_status(context, ldb.Pool, pool[\u0027id\u0027],"},{"line_number":124,"context_line":"                                      pool[\u0027status\u0027])"},{"line_number":125,"context_line":"            for member in pool_members:"},{"line_number":126,"context_line":"                self.plugin.update_status(context, ldb.Member,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp%2FI%3D","line":123,"updated":"2014-03-04 20:48:01.000000000","message":"I don\u0027t understand, what lines 123-127 are doing. they seem to be updating pool and members with states that they already have. Am I missing something?","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self._heleos_api.update_pool_status(vip[\u0027id\u0027], pool)"},{"line_number":121,"context_line":"            self._heleos_api.update_members_status(vip[\u0027id\u0027], pool[\u0027id\u0027],"},{"line_number":122,"context_line":"                                                   pool_members)"},{"line_number":123,"context_line":"            self.plugin.update_status(context, ldb.Pool, pool[\u0027id\u0027],"},{"line_number":124,"context_line":"                                      pool[\u0027status\u0027])"},{"line_number":125,"context_line":"            for member in pool_members:"},{"line_number":126,"context_line":"                self.plugin.update_status(context, ldb.Member,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FpsI%3D","line":123,"in_reply_to":"AAAAVn%2F%2Fp%2FI%3D","updated":"2014-03-04 22:10:16.000000000","message":"update_[pool/members]_status changes the state of the objects in order to match the actual state on the backend (that can change due to manual intervention or monitor action). So the following lines are just persisting the changes.","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        try:"},{"line_number":131,"context_line":"            subnet \u003d self.plugin._core_plugin.get_subnet(context,"},{"line_number":132,"context_line":"                                                         db_pool[\"subnet_id\"])"},{"line_number":133,"context_line":"        except n_exc.SubnetNotFound:"},{"line_number":134,"context_line":"            return"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        fixed_ip \u003d {\u0027subnet_id\u0027: subnet[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp9s%3D","line":133,"updated":"2014-03-04 20:48:01.000000000","message":"i think there\u0027s no need to swallow the exception. If there\u0027s no such subnet - it\u0027s better to raise.","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        try:"},{"line_number":131,"context_line":"            subnet \u003d self.plugin._core_plugin.get_subnet(context,"},{"line_number":132,"context_line":"                                                         db_pool[\"subnet_id\"])"},{"line_number":133,"context_line":"        except n_exc.SubnetNotFound:"},{"line_number":134,"context_line":"            return"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        fixed_ip \u003d {\u0027subnet_id\u0027: subnet[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FpDE%3D","line":133,"in_reply_to":"AAAAVn%2F%2Fp9s%3D","updated":"2014-03-04 22:10:16.000000000","message":"Removing it is breaking the unit tests. Not sure why, maybe subnets are not persisted when creating the pools in the tests","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                pool_utif_info \u003d self._retrieve_utif_info(context, db_port)"},{"line_number":186,"context_line":"                pool_ip_allocation_info \u003d utils.retrieve_ip_allocation_info("},{"line_number":187,"context_line":"                    context, db_port)"},{"line_number":188,"context_line":"            members \u003d [self.plugin.get_member(context, member)"},{"line_number":189,"context_line":"                       for member in db_pool[\u0027members\u0027]]"},{"line_number":190,"context_line":"            monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":191,"context_line":"                        for monitor in db_pool[\u0027health_monitors\u0027]]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp7c%3D","line":188,"updated":"2014-03-04 20:48:01.000000000","message":"members \u003d self.plugin.get_member(context, filters\u003d{\u0027id\u0027: db_pool[\u0027members\u0027]})\n Saves some db queries.\n Same for the next line","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                pool_utif_info \u003d self._retrieve_utif_info(context, db_port)"},{"line_number":186,"context_line":"                pool_ip_allocation_info \u003d utils.retrieve_ip_allocation_info("},{"line_number":187,"context_line":"                    context, db_port)"},{"line_number":188,"context_line":"            members \u003d [self.plugin.get_member(context, member)"},{"line_number":189,"context_line":"                       for member in db_pool[\u0027members\u0027]]"},{"line_number":190,"context_line":"            monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":191,"context_line":"                        for monitor in db_pool[\u0027health_monitors\u0027]]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fppo%3D","line":188,"in_reply_to":"AAAAVn%2F%2Fp7c%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    context, db_port)"},{"line_number":188,"context_line":"            members \u003d [self.plugin.get_member(context, member)"},{"line_number":189,"context_line":"                       for member in db_pool[\u0027members\u0027]]"},{"line_number":190,"context_line":"            monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":191,"context_line":"                        for monitor in db_pool[\u0027health_monitors\u0027]]"},{"line_number":192,"context_line":"        self._dispatcher.dispatch_lb("},{"line_number":193,"context_line":"            embrane_ctx.DispatcherContext(econ.Events.CREATE_VIP,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp6o%3D","line":190,"updated":"2014-03-04 20:48:01.000000000","message":"same","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    context, db_port)"},{"line_number":188,"context_line":"            members \u003d [self.plugin.get_member(context, member)"},{"line_number":189,"context_line":"                       for member in db_pool[\u0027members\u0027]]"},{"line_number":190,"context_line":"            monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":191,"context_line":"                        for monitor in db_pool[\u0027health_monitors\u0027]]"},{"line_number":192,"context_line":"        self._dispatcher.dispatch_lb("},{"line_number":193,"context_line":"            embrane_ctx.DispatcherContext(econ.Events.CREATE_VIP,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fppg%3D","line":190,"in_reply_to":"AAAAVn%2F%2Fp6o%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if old_vip[\u0027pool_id\u0027] !\u003d vip[\u0027pool_id\u0027]:"},{"line_number":205,"context_line":"            new_pool \u003d self.plugin.get_pool("},{"line_number":206,"context_line":"                context, vip[\u0027pool_id\u0027])"},{"line_number":207,"context_line":"            members \u003d [self.plugin.get_member(context, member)"},{"line_number":208,"context_line":"                       for member in new_pool[\u0027members\u0027]]"},{"line_number":209,"context_line":"            monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":210,"context_line":"                        for monitor in new_pool[\u0027health_monitors\u0027]]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp64%3D","line":207,"updated":"2014-03-04 20:48:01.000000000","message":"same as above","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if old_vip[\u0027pool_id\u0027] !\u003d vip[\u0027pool_id\u0027]:"},{"line_number":205,"context_line":"            new_pool \u003d self.plugin.get_pool("},{"line_number":206,"context_line":"                context, vip[\u0027pool_id\u0027])"},{"line_number":207,"context_line":"            members \u003d [self.plugin.get_member(context, member)"},{"line_number":208,"context_line":"                       for member in new_pool[\u0027members\u0027]]"},{"line_number":209,"context_line":"            monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":210,"context_line":"                        for monitor in new_pool[\u0027health_monitors\u0027]]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fpoo%3D","line":207,"in_reply_to":"AAAAVn%2F%2Fp64%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                        context, ldb.Vip, old_pool[\u0027vip_id\u0027])"},{"line_number":250,"context_line":"                except lb_ext.VipNotFound:"},{"line_number":251,"context_line":"                    return"},{"line_number":252,"context_line":"                monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":253,"context_line":"                            for monitor in pool[\u0027health_monitors\u0027]]"},{"line_number":254,"context_line":"                self._dispatcher.dispatch_lb("},{"line_number":255,"context_line":"                    embrane_ctx.DispatcherContext(econ.Events.UPDATE_POOL,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp6Q%3D","line":252,"updated":"2014-03-04 20:48:01.000000000","message":"same","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                        context, ldb.Vip, old_pool[\u0027vip_id\u0027])"},{"line_number":250,"context_line":"                except lb_ext.VipNotFound:"},{"line_number":251,"context_line":"                    return"},{"line_number":252,"context_line":"                monitors \u003d [self.plugin.get_health_monitor(context, monitor)"},{"line_number":253,"context_line":"                            for monitor in pool[\u0027health_monitors\u0027]]"},{"line_number":254,"context_line":"                self._dispatcher.dispatch_lb("},{"line_number":255,"context_line":"                    embrane_ctx.DispatcherContext(econ.Events.UPDATE_POOL,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fpnw%3D","line":252,"in_reply_to":"AAAAVn%2F%2Fp6Q%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7f0644b74a30566fa2784ba8e2bbdb7e950ffaae","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            subnet \u003d self.plugin._core_plugin.get_subnet(context,"},{"line_number":130,"context_line":"                                                         db_pool[\"subnet_id\"])"},{"line_number":131,"context_line":"        except n_exc.SubnetNotFound:"},{"line_number":132,"context_line":"            return"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        fixed_ip \u003d {\u0027subnet_id\u0027: subnet[\u0027id\u0027],"},{"line_number":135,"context_line":"                    \u0027fixed_ips\u0027: attributes.ATTR_NOT_SPECIFIED}"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F%2Ft4%3D","line":132,"updated":"2014-03-12 14:00:56.000000000","message":"is it worth adding some log here?","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"b8878dd0f615e71a027d9a74069cd664cfdcf645","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            subnet \u003d self.plugin._core_plugin.get_subnet(context,"},{"line_number":130,"context_line":"                                                         db_pool[\"subnet_id\"])"},{"line_number":131,"context_line":"        except n_exc.SubnetNotFound:"},{"line_number":132,"context_line":"            return"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        fixed_ip \u003d {\u0027subnet_id\u0027: subnet[\u0027id\u0027],"},{"line_number":135,"context_line":"                    \u0027fixed_ips\u0027: attributes.ATTR_NOT_SPECIFIED}"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F9HY%3D","line":132,"in_reply_to":"AAAAWH%2F%2F%2Ft4%3D","updated":"2014-03-12 19:26:48.000000000","message":"Done","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7f0644b74a30566fa2784ba8e2bbdb7e950ffaae","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            self._delete_member(context, member)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def stats(self, context, pool_id):"},{"line_number":303,"context_line":"        return {\u0027bytes_in\u0027: 0,"},{"line_number":304,"context_line":"                \u0027bytes_out\u0027: 0,"},{"line_number":305,"context_line":"                \u0027active_connections\u0027: 0,"},{"line_number":306,"context_line":"                \u0027total_connections\u0027: 0}"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F%2FtM%3D","line":303,"updated":"2014-03-12 14:00:56.000000000","message":"any plans to support?","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"b8878dd0f615e71a027d9a74069cd664cfdcf645","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            self._delete_member(context, member)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def stats(self, context, pool_id):"},{"line_number":303,"context_line":"        return {\u0027bytes_in\u0027: 0,"},{"line_number":304,"context_line":"                \u0027bytes_out\u0027: 0,"},{"line_number":305,"context_line":"                \u0027active_connections\u0027: 0,"},{"line_number":306,"context_line":"                \u0027total_connections\u0027: 0}"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAWH%2F%2F9Fw%3D","line":303,"in_reply_to":"AAAAWH%2F%2F%2FtM%3D","updated":"2014-03-12 19:26:48.000000000","message":"Yes, but this will require some extra work on the dispatcher.\nSince we are on FFE I don\u0027t want to change the driver too much (also other drivers are not implementing it yet either).","commit_id":"2df77a5965d71f4b993f090bd12d5bd8cd4397aa"}],"neutron/services/loadbalancer/drivers/embrane/models.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.db.models_v2 import model_base"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class BackendPort(model_base.BASEV2):"},{"line_number":26,"context_line":"    \"\"\"Represents the connection between pools and ports.\"\"\""},{"line_number":27,"context_line":"    __tablename__ \u003d \u0027embrane_lb_backend_port\u0027"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fw60%3D","line":25,"updated":"2013-10-29 14:57:19.000000000","message":"Since creating new table the patch needs a db migration","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.db.models_v2 import model_base"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class BackendPort(model_base.BASEV2):"},{"line_number":26,"context_line":"    \"\"\"Represents the connection between pools and ports.\"\"\""},{"line_number":27,"context_line":"    __tablename__ \u003d \u0027embrane_lb_backend_port\u0027"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Ft1A%3D","line":25,"in_reply_to":"AAAATn%2F%2Fw60%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"3089682c502ae7891d09a8f041d3b6c0e8c1a09d","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class PoolPort(model_base.BASEV2):"},{"line_number":26,"context_line":"    \"\"\"Represents the connection between pools and ports.\"\"\""},{"line_number":27,"context_line":"    __tablename__ \u003d \u0027embrane_pool_port\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    pool_id \u003d sql.Column(sql.String(36), sql.ForeignKey(\u0027pools.id\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F7wY%3D","line":26,"updated":"2014-02-27 10:56:33.000000000","message":"My concern is that currently we\u0027re working on object model redesign, so this may need to be changed, depending on the redesign.","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class PoolPort(model_base.BASEV2):"},{"line_number":26,"context_line":"    \"\"\"Represents the connection between pools and ports.\"\"\""},{"line_number":27,"context_line":"    __tablename__ \u003d \u0027embrane_pool_port\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    pool_id \u003d sql.Column(sql.String(36), sql.ForeignKey(\u0027pools.id\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F2pE%3D","line":26,"in_reply_to":"AAAAVX%2F%2F7wY%3D","updated":"2014-02-27 23:00:33.000000000","message":"What is your suggestion then? Given that the feature freeze is approaching, could I just adapt the driver to the new model in the J release?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    port_id \u003d sql.Column(sql.String(36), sql.ForeignKey(\u0027ports.id\u0027),"},{"line_number":32,"context_line":"                         nullable\u003dFalse)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, pool_id, port_id):"},{"line_number":35,"context_line":"        self.pool_id \u003d pool_id"},{"line_number":36,"context_line":"        self.port_id \u003d port_id"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpr8%3D","line":34,"updated":"2014-03-01 23:14:17.000000000","message":"This is not needed as this method add nothing over the default.","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    port_id \u003d sql.Column(sql.String(36), sql.ForeignKey(\u0027ports.id\u0027),"},{"line_number":32,"context_line":"                         nullable\u003dFalse)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, pool_id, port_id):"},{"line_number":35,"context_line":"        self.pool_id \u003d pool_id"},{"line_number":36,"context_line":"        self.port_id \u003d port_id"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpis%3D","line":34,"in_reply_to":"AAAAVX%2F%2Fpr8%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1fe898b273b240632761b9dd5b9e6abb25e6aa6a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.pool_id \u003d pool_id"},{"line_number":36,"context_line":"        self.port_id \u003d port_id"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __repr__(self):"},{"line_number":39,"context_line":"        return \"\u003cPoolPort(%s,%s)\u003e\" % (self.pool_id, self.port_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpr4%3D","line":38,"updated":"2014-03-01 23:14:17.000000000","message":"The base case does this for you","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"f4da7f91d4077e76b12511e222575acc4701ad76","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.pool_id \u003d pool_id"},{"line_number":36,"context_line":"        self.port_id \u003d port_id"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __repr__(self):"},{"line_number":39,"context_line":"        return \"\u003cPoolPort(%s,%s)\u003e\" % (self.pool_id, self.port_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2Fpio%3D","line":38,"in_reply_to":"AAAAVX%2F%2Fpr4%3D","updated":"2014-03-02 00:42:03.000000000","message":"Done","commit_id":"7b190605fdbc21cb74039d13480ec9936662e0f0"}],"neutron/services/loadbalancer/drivers/embrane/poller.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c80dddc031c6f0b07e8ad333dff81ff737fe9886","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        session \u003d ctx.session"},{"line_number":56,"context_line":"        vips \u003d session.query(ldb.Vip).join("},{"line_number":57,"context_line":"            sdb.ProviderResourceAssociation,"},{"line_number":58,"context_line":"            sdb.ProviderResourceAssociation.resource_id \u003d\u003d ldb.Vip.pool_id).\\"},{"line_number":59,"context_line":"            filter(sdb.ProviderResourceAssociation.provider_name \u003d\u003d \u0027embrane\u0027)"},{"line_number":60,"context_line":"        # No need to check pending states"},{"line_number":61,"context_line":"        for vip in vips:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FwQY%3D","line":58,"updated":"2013-10-29 14:57:19.000000000","message":"please avoid using \\","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7e1cf28cc1f5eb367a34966dcb7eb5775404d64b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        session \u003d ctx.session"},{"line_number":56,"context_line":"        vips \u003d session.query(ldb.Vip).join("},{"line_number":57,"context_line":"            sdb.ProviderResourceAssociation,"},{"line_number":58,"context_line":"            sdb.ProviderResourceAssociation.resource_id \u003d\u003d ldb.Vip.pool_id).\\"},{"line_number":59,"context_line":"            filter(sdb.ProviderResourceAssociation.provider_name \u003d\u003d \u0027embrane\u0027)"},{"line_number":60,"context_line":"        # No need to check pending states"},{"line_number":61,"context_line":"        for vip in vips:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FvEQ%3D","line":58,"in_reply_to":"AAAATn%2F%2FwQY%3D","updated":"2013-10-30 02:01:04.000000000","message":"Done","commit_id":"86da8d46890cd08642f0ad89d1d4c1e44ba131ce"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron.services.loadbalancer.drivers.embrane import constants as econ"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":"pending_states \u003d [ccon.PENDING_CREATE,"},{"line_number":33,"context_line":"                  ccon.PENDING_DELETE,"},{"line_number":34,"context_line":"                  ccon.PENDING_UPDATE]"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F6q4%3D","line":32,"updated":"2014-02-27 12:38:28.000000000","message":"should it be used somewhere near #60?","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron.services.loadbalancer.drivers.embrane import constants as econ"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":"pending_states \u003d [ccon.PENDING_CREATE,"},{"line_number":33,"context_line":"                  ccon.PENDING_DELETE,"},{"line_number":34,"context_line":"                  ccon.PENDING_UPDATE]"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F1wo%3D","line":32,"in_reply_to":"AAAAVX%2F%2F6q4%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            sdb.ProviderResourceAssociation,"},{"line_number":57,"context_line":"            sdb.ProviderResourceAssociation.resource_id \u003d\u003d"},{"line_number":58,"context_line":"            ldb.Vip.pool_id).filter("},{"line_number":59,"context_line":"                sdb.ProviderResourceAssociation.provider_name \u003d\u003d \u0027embrane\u0027)"},{"line_number":60,"context_line":"        # No need to check pending states"},{"line_number":61,"context_line":"        for vip in vips:"},{"line_number":62,"context_line":"            if vip[\u0027status\u0027] not in pending_states:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp4g%3D","line":59,"updated":"2014-03-04 20:48:01.000000000","message":"That\u0027s a weak assumption. provider name could be any, you can\u0027t rely on that.\nOne way of doing that is to find out provider name of the driver, e.g. find the name by the classpath.","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            sdb.ProviderResourceAssociation,"},{"line_number":57,"context_line":"            sdb.ProviderResourceAssociation.resource_id \u003d\u003d"},{"line_number":58,"context_line":"            ldb.Vip.pool_id).filter("},{"line_number":59,"context_line":"                sdb.ProviderResourceAssociation.provider_name \u003d\u003d \u0027embrane\u0027)"},{"line_number":60,"context_line":"        # No need to check pending states"},{"line_number":61,"context_line":"        for vip in vips:"},{"line_number":62,"context_line":"            if vip[\u0027status\u0027] not in pending_states:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FpQM%3D","line":59,"in_reply_to":"AAAAVn%2F%2Fp4g%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"376b0af247634059cae3cdbcdea4a6a768ffc318","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                sdb.ProviderResourceAssociation.provider_name \u003d\u003d \u0027embrane\u0027)"},{"line_number":60,"context_line":"        # No need to check pending states"},{"line_number":61,"context_line":"        for vip in vips:"},{"line_number":62,"context_line":"            if vip[\u0027status\u0027] not in pending_states:"},{"line_number":63,"context_line":"                self.dispatcher.dispatch_lb("},{"line_number":64,"context_line":"                    d_context\u003dembrane_ctx.DispatcherContext("},{"line_number":65,"context_line":"                        econ.Events.POLL_GRAPH, vip, ctx, None),"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fp2g%3D","line":62,"updated":"2014-03-04 20:48:01.000000000","message":"what if vip is in ERROR state?","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7f8f996bb9ffce56ad5201a43e0ad540d53c0d98","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                sdb.ProviderResourceAssociation.provider_name \u003d\u003d \u0027embrane\u0027)"},{"line_number":60,"context_line":"        # No need to check pending states"},{"line_number":61,"context_line":"        for vip in vips:"},{"line_number":62,"context_line":"            if vip[\u0027status\u0027] not in pending_states:"},{"line_number":63,"context_line":"                self.dispatcher.dispatch_lb("},{"line_number":64,"context_line":"                    d_context\u003dembrane_ctx.DispatcherContext("},{"line_number":65,"context_line":"                        econ.Events.POLL_GRAPH, vip, ctx, None),"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fpm4%3D","line":62,"in_reply_to":"AAAAVn%2F%2Fp2g%3D","updated":"2014-03-04 22:10:16.000000000","message":"Done","commit_id":"bfec635d51d7d3493ba0b72ae471b9ee4cab088f"}],"neutron/tests/unit/services/loadbalancer/drivers/embrane/__init__.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3cdd56cb97dadecac606c11ac611cabb555002c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F6eY%3D","line":1,"updated":"2014-02-27 12:38:28.000000000","message":"ditto on empty files","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"e956f6dd44b9f216e5bb9655b0dcab2f43a38981","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim:  tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Embrane, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2F2m4%3D","line":1,"in_reply_to":"AAAAVX%2F%2F6eY%3D","updated":"2014-02-27 23:00:33.000000000","message":"Done","commit_id":"93bfba525cd0f8a039642ab2f8ecc0590d49e541"}],"neutron/tests/unit/services/loadbalancer/drivers/embrane/test_plugin_driver.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def setUp(self):"},{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027admin_password\u0027, \"admin123\", \u0027heleoslb\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027sync_interval\u0027, 0, \u0027heleoslb\u0027)"},{"line_number":55,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":56,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(TestLoadBalancerPluginBase, self).setUp("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2Fujk%3D","line":55,"updated":"2014-03-04 13:09:10.000000000","message":"not needed - parent class has it already","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def setUp(self):"},{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027admin_password\u0027, \"admin123\", \u0027heleoslb\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027sync_interval\u0027, 0, \u0027heleoslb\u0027)"},{"line_number":55,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":56,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(TestLoadBalancerPluginBase, self).setUp("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrCc%3D","line":55,"in_reply_to":"AAAAVn%2F%2Fujk%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027admin_password\u0027, \"admin123\", \u0027heleoslb\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027sync_interval\u0027, 0, \u0027heleoslb\u0027)"},{"line_number":55,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":56,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(TestLoadBalancerPluginBase, self).setUp("},{"line_number":59,"context_line":"            lbaas_provider\u003dEMBRANE_PROVIDER)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FujQ%3D","line":56,"updated":"2014-03-04 13:09:10.000000000","message":"ditto","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.CONF.set_override(\u0027admin_password\u0027, \"admin123\", \u0027heleoslb\u0027)"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027sync_interval\u0027, 0, \u0027heleoslb\u0027)"},{"line_number":55,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":56,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(TestLoadBalancerPluginBase, self).setUp("},{"line_number":59,"context_line":"            lbaas_provider\u003dEMBRANE_PROVIDER)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrCU%3D","line":56,"in_reply_to":"AAAAVn%2F%2FujQ%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d45b849f303e1dc024c25b8d094452cfc0748f0d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                             TestLoadBalancerPluginBase):"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_driver_call_create_pool_health_monitor(self):"},{"line_number":67,"context_line":"        self.skip(\"This test fails when a provider driver is specified.\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_create_vip_with_session_persistence_with_app_cookie(self):"},{"line_number":70,"context_line":"        self.skip(\"App cookie persistence not supported.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2Fugo%3D","line":67,"updated":"2014-03-04 13:09:10.000000000","message":"it won\u0027t fail if replace \u0027embrane\u0027-\u003e\u0027lbaas\u0027 in provider name #33. Seems such replacement will not affect embrane plugin testing","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"7865d6f8ae4898a928dca95277643a199f426182","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                             TestLoadBalancerPluginBase):"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_driver_call_create_pool_health_monitor(self):"},{"line_number":67,"context_line":"        self.skip(\"This test fails when a provider driver is specified.\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_create_vip_with_session_persistence_with_app_cookie(self):"},{"line_number":70,"context_line":"        self.skip(\"App cookie persistence not supported.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FrB8%3D","line":67,"in_reply_to":"AAAAVn%2F%2Fugo%3D","updated":"2014-03-04 19:27:39.000000000","message":"Done","commit_id":"bde23d2fb8c755c0bb3f8c7e66ae355abe1489b6"}]}
