)]}'
{"octavia/api/common/types.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"814da2292ee41b527adbf89bac05e4582458b5ce","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        ret_dict \u003d {}"},{"line_number":90,"context_line":"        for attr in dir(self):"},{"line_number":91,"context_line":"            if attr \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":92,"context_line":"                continue"},{"line_number":93,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":94,"context_line":"                continue"},{"line_number":95,"context_line":"            value \u003d getattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_2858c289","line":92,"updated":"2017-01-30 23:11:28.000000000","message":"unnecessary due to L100","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"a0cfdff18378437a7284ec0e473d575bd5291635","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        ret_dict \u003d {}"},{"line_number":90,"context_line":"        for attr in dir(self):"},{"line_number":91,"context_line":"            if attr \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":92,"context_line":"                continue"},{"line_number":93,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":94,"context_line":"                continue"},{"line_number":95,"context_line":"            value \u003d getattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_be46a84c","line":92,"in_reply_to":"3a461143_2858c289","updated":"2017-01-31 02:04:15.000000000","message":"Done","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"bcdfb2bbf6a0718f020efda5d56f4b1b0f49ac77","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        ret_dict \u003d {}"},{"line_number":90,"context_line":"        for attr in dir(self):"},{"line_number":91,"context_line":"            if attr \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":92,"context_line":"                continue"},{"line_number":93,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":94,"context_line":"                continue"},{"line_number":95,"context_line":"            value \u003d getattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_7a2c4999","line":92,"in_reply_to":"3a461143_be46a84c","updated":"2017-01-31 02:06:00.000000000","message":"also still here. fail","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9e9c8bbca95d4450739019c6125a72a71139cc5a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                if key in dm_to_type_map:"},{"line_number":82,"context_line":"                    new_dict[dm_to_type_map[key]] \u003d value"},{"line_number":83,"context_line":"                    del new_dict[key]"},{"line_number":84,"context_line":"        # Handle project_id and tenant_id duality"},{"line_number":85,"context_line":"        # if \u0027project_id\u0027 in new_dict and hasattr(cls, \u0027tenant_id\u0027):"},{"line_number":86,"context_line":"        #     new_dict[\u0027tenant_id\u0027] \u003d new_dict[\u0027project_id\u0027]"},{"line_number":87,"context_line":"        return cls(**new_dict)"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_fb4d37c5","line":84,"updated":"2017-02-17 01:08:57.000000000","message":"This should either be uncommented or removed if it is not necessary.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                if key in dm_to_type_map:"},{"line_number":82,"context_line":"                    new_dict[dm_to_type_map[key]] \u003d value"},{"line_number":83,"context_line":"                    del new_dict[key]"},{"line_number":84,"context_line":"        # Handle project_id and tenant_id duality"},{"line_number":85,"context_line":"        # if \u0027project_id\u0027 in new_dict and hasattr(cls, \u0027tenant_id\u0027):"},{"line_number":86,"context_line":"        #     new_dict[\u0027tenant_id\u0027] \u003d new_dict[\u0027project_id\u0027]"},{"line_number":87,"context_line":"        return cls(**new_dict)"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_22607b35","line":84,"in_reply_to":"fa31d9ce_fb4d37c5","updated":"2017-02-20 19:03:58.000000000","message":"Done","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"}],"octavia/api/v2/controllers/__init__.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"9dcfe9c3da3eaec065ea50752e64fc880ae73ded","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    To be removed once LBaasV2 has been removed."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":"    loadbalancers \u003d load_balancer.LoadBalancersController()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class V2Controller(BaseV2Controller):"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba2be162_63ca9970","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":59},"updated":"2017-03-06 21:29:13.000000000","message":"should be pass.","commit_id":"f121c6e94ff3cbc933e685c10e6cd3d4232e0dd6"}],"octavia/api/v2/controllers/load_balancer.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"814da2292ee41b527adbf89bac05e4582458b5ce","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # around for a long amount of time."},{"line_number":59,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":60,"context_line":"        project_id \u003d context.project_id or project_id or tenant_id"},{"line_number":61,"context_line":"        project_id \u003d \u00276b1c38609de749709b1134def1c9d4e7\u0027"},{"line_number":62,"context_line":"        load_balancers \u003d self.repositories.load_balancer.get_all("},{"line_number":63,"context_line":"            context.session, project_id\u003dproject_id)"},{"line_number":64,"context_line":"        result \u003d self._convert_db_to_type(load_balancers,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_a84cb2c8","line":61,"updated":"2017-01-30 23:11:28.000000000","message":"artifact from testing?","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"a0cfdff18378437a7284ec0e473d575bd5291635","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # around for a long amount of time."},{"line_number":59,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":60,"context_line":"        project_id \u003d context.project_id or project_id or tenant_id"},{"line_number":61,"context_line":"        project_id \u003d \u00276b1c38609de749709b1134def1c9d4e7\u0027"},{"line_number":62,"context_line":"        load_balancers \u003d self.repositories.load_balancer.get_all("},{"line_number":63,"context_line":"            context.session, project_id\u003dproject_id)"},{"line_number":64,"context_line":"        result \u003d self._convert_db_to_type(load_balancers,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_3ea8f8da","line":61,"in_reply_to":"3a461143_a84cb2c8","updated":"2017-01-31 02:04:15.000000000","message":"yea will remove on later date :)","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e0e0a51ec50efed516e9472d53172ed8bc18fd25","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # around for a long amount of time."},{"line_number":59,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":60,"context_line":"        project_id \u003d context.project_id or project_id or tenant_id"},{"line_number":61,"context_line":"        project_id \u003d \u00276b1c38609de749709b1134def1c9d4e7\u0027"},{"line_number":62,"context_line":"        load_balancers \u003d self.repositories.load_balancer.get_all("},{"line_number":63,"context_line":"            context.session, project_id\u003dproject_id)"},{"line_number":64,"context_line":"        result \u003d self._convert_db_to_type(load_balancers,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_52837dcc","line":61,"updated":"2017-02-10 19:38:16.000000000","message":"This should be removed.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # around for a long amount of time."},{"line_number":59,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":60,"context_line":"        project_id \u003d context.project_id or project_id or tenant_id"},{"line_number":61,"context_line":"        project_id \u003d \u00276b1c38609de749709b1134def1c9d4e7\u0027"},{"line_number":62,"context_line":"        load_balancers \u003d self.repositories.load_balancer.get_all("},{"line_number":63,"context_line":"            context.session, project_id\u003dproject_id)"},{"line_number":64,"context_line":"        result \u003d self._convert_db_to_type(load_balancers,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_ca0c0645","line":61,"in_reply_to":"fa31d9ce_52837dcc","updated":"2017-02-11 04:33:00.000000000","message":"Done","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"b2f397b16cf5a3f3d3965a094b2ec99eb026b7a8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                         body\u003dlb_types.LoadBalancerRootPOST, status_code\u003d202)"},{"line_number":80,"context_line":"    def post(self, load_balancer):"},{"line_number":81,"context_line":"        \"\"\"Creates a load balancer.\"\"\""},{"line_number":82,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":83,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":84,"context_line":"        # Validate the subnet id"},{"line_number":85,"context_line":"        if load_balancer.vip_subnet_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_bd5ac981","line":82,"updated":"2017-02-10 19:42:15.000000000","message":"Actually I think this is wrong.  Shouldn\u0027t it be loadbalancer?","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8364e2a1b6b4c8b4374f0fc37f33c5671be3946d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                         body\u003dlb_types.LoadBalancerRootPOST, status_code\u003d202)"},{"line_number":80,"context_line":"    def post(self, load_balancer):"},{"line_number":81,"context_line":"        \"\"\"Creates a load balancer.\"\"\""},{"line_number":82,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":83,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":84,"context_line":"        # Validate the subnet id"},{"line_number":85,"context_line":"        if load_balancer.vip_subnet_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_ca13265b","line":82,"in_reply_to":"fa31d9ce_8fab0089","updated":"2017-02-11 01:10:47.000000000","message":"Wait, what? \"loadbalancer_\"? I think that\u0027s actually *worse*, though it does make me sad every time I see any underscores at all here.\nIf loadbalancer doesn\u0027t work, I think the way you have it now is second best.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"362daac568a4b1fd309ee773427597414c6e218d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                         body\u003dlb_types.LoadBalancerRootPOST, status_code\u003d202)"},{"line_number":80,"context_line":"    def post(self, load_balancer):"},{"line_number":81,"context_line":"        \"\"\"Creates a load balancer.\"\"\""},{"line_number":82,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":83,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":84,"context_line":"        # Validate the subnet id"},{"line_number":85,"context_line":"        if load_balancer.vip_subnet_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_8fab0089","line":82,"in_reply_to":"fa31d9ce_bd5ac981","updated":"2017-02-11 00:55:36.000000000","message":"actually, this can be named anything except loadbalancer due to a wsme quirk.  wsme will look at the body being passed in, recognize it is json, and check if this method takes in an argument with the name of any of the top level json keys.  For example a client makes a post request with: \n{\"loadbalancer\": {\"name\": \"lb\"}}\n\nif this method took an argument named loadbalancer then wsme would see this and expect to call the method like:\n\ncontroller.post(loadbalancer\u003d{\"name\": \"lb\"})\n\nactually, wsme will try to convert the {\"name\": \"lb\"} to a LoadBalancerRootResponse object and fail bc that type doesn\u0027t define a \"name\" field.\n\nI would support just renaming this parameter to loadbalancer_ to be consistent with the rest of the controllers.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                         body\u003dlb_types.LoadBalancerRootPOST, status_code\u003d202)"},{"line_number":80,"context_line":"    def post(self, load_balancer):"},{"line_number":81,"context_line":"        \"\"\"Creates a load balancer.\"\"\""},{"line_number":82,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":83,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":84,"context_line":"        # Validate the subnet id"},{"line_number":85,"context_line":"        if load_balancer.vip_subnet_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_65042b15","line":82,"in_reply_to":"fa31d9ce_ca13265b","updated":"2017-02-11 04:33:00.000000000","message":"leaving the way it is for now :|","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e0e0a51ec50efed516e9472d53172ed8bc18fd25","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            lock_session.rollback()"},{"line_number":97,"context_line":"            raise exceptions.QuotaException"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # TODO(blogan): lb graph, look at v1 code"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            lb_dict \u003d db_prepare.create_load_balancer(load_balancer.to_dict("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_72ede18a","line":99,"updated":"2017-02-10 19:38:16.000000000","message":"Yes, we either need to add the lb graph code here or open a bug to track that it needs to be added in a future patch.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8364e2a1b6b4c8b4374f0fc37f33c5671be3946d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            lock_session.rollback()"},{"line_number":97,"context_line":"            raise exceptions.QuotaException"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # TODO(blogan): lb graph, look at v1 code"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            lb_dict \u003d db_prepare.create_load_balancer(load_balancer.to_dict("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_ea10ea50","line":99,"in_reply_to":"fa31d9ce_2f9db465","updated":"2017-02-11 01:10:47.000000000","message":"Agree.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"362daac568a4b1fd309ee773427597414c6e218d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            lock_session.rollback()"},{"line_number":97,"context_line":"            raise exceptions.QuotaException"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # TODO(blogan): lb graph, look at v1 code"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            lb_dict \u003d db_prepare.create_load_balancer(load_balancer.to_dict("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_2f9db465","line":99,"in_reply_to":"fa31d9ce_72ede18a","updated":"2017-02-11 00:55:36.000000000","message":"I think another patch would be best because that\u0027ll make this patch super big.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            lock_session.rollback()"},{"line_number":97,"context_line":"            raise exceptions.QuotaException"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # TODO(blogan): lb graph, look at v1 code"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            lb_dict \u003d db_prepare.create_load_balancer(load_balancer.to_dict("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_253233f2","line":99,"in_reply_to":"fa31d9ce_ea10ea50","updated":"2017-02-11 04:33:00.000000000","message":"https://bugs.launchpad.net/octavia/+bug/1663784\n\nAs such. Done","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9e9c8bbca95d4450739019c6125a72a71139cc5a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                session, id, lb_status):"},{"line_number":72,"context_line":"            LOG.info(_LI(\"Load Balancer %s is immutable.\"), id)"},{"line_number":73,"context_line":"            db_lb \u003d lb_repo.get(session, id\u003did)"},{"line_number":74,"context_line":"            raise exceptions.ImmutableObject(resource\u003ddb_lb._name(),"},{"line_number":75,"context_line":"                                             id\u003did)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_5b672325","line":74,"updated":"2017-02-17 01:08:57.000000000","message":"This response does not match:\n{\"NeutronError\": {\"message\": \"Invalid state PENDING_CREATE of loadbalancer resource 59096be8-70fe-4f5e-b2e8-caa1b88d46f2\", \"type\": \"StateInvalid\", \"detail\": \"\"}}\nThe type and message should at least match.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                session, id, lb_status):"},{"line_number":72,"context_line":"            LOG.info(_LI(\"Load Balancer %s is immutable.\"), id)"},{"line_number":73,"context_line":"            db_lb \u003d lb_repo.get(session, id\u003did)"},{"line_number":74,"context_line":"            raise exceptions.ImmutableObject(resource\u003ddb_lb._name(),"},{"line_number":75,"context_line":"                                             id\u003did)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_93c41b93","line":74,"in_reply_to":"fa31d9ce_5b672325","updated":"2017-02-20 19:03:58.000000000","message":"There is a difference in that Octavia returns\n\"debuginfo\"\n\"faultcode\"\n\"faultstring\"\n\nthe return message was changed to match Neutron... so that the faultstring matches the \u0027message\u0027 in Neutron.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9e9c8bbca95d4450739019c6125a72a71139cc5a","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return lb_types.LoadBalancerRootResponse(loadbalancer\u003dresult)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"},{"line_number":129,"context_line":"                         wtypes.text, status_code\u003d202,"},{"line_number":130,"context_line":"                         body\u003dlb_types.LoadBalancerRootPUT)"},{"line_number":131,"context_line":"    def put(self, id, load_balancer):"},{"line_number":132,"context_line":"        \"\"\"Updates a load balancer.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_fb2e17a4","line":129,"updated":"2017-02-17 01:08:57.000000000","message":"This is a 200 on nlbaas","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return lb_types.LoadBalancerRootResponse(loadbalancer\u003dresult)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"},{"line_number":129,"context_line":"                         wtypes.text, status_code\u003d202,"},{"line_number":130,"context_line":"                         body\u003dlb_types.LoadBalancerRootPUT)"},{"line_number":131,"context_line":"    def put(self, id, load_balancer):"},{"line_number":132,"context_line":"        \"\"\"Updates a load balancer.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_d355b3c6","line":129,"in_reply_to":"fa31d9ce_fb2e17a4","updated":"2017-02-20 19:03:58.000000000","message":"Done","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fa408cb442ba88c3c8cb97861bb55302793963c8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"},{"line_number":129,"context_line":"                         wtypes.text, status_code\u003d202,"},{"line_number":130,"context_line":"                         body\u003dlb_types.LoadBalancerRootPUT)"},{"line_number":131,"context_line":"    def put(self, id, load_balancer):"},{"line_number":132,"context_line":"        \"\"\"Updates a load balancer.\"\"\""},{"line_number":133,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":134,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_fb753732","line":131,"updated":"2017-02-17 00:33:05.000000000","message":"This fails with:\n{\"debuginfo\": null, \"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute load_balancer. Value: \u0027{\u0027loadbalancer\u0027: {\u0027description\u0027: \u0027new description\u0027, \u0027name\u0027: \u0027new_name\u0027, \u0027admin_state_up\u0027: \u0027True\u0027}}\u0027. Value not an unambiguous boolean: True\"}","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"},{"line_number":129,"context_line":"                         wtypes.text, status_code\u003d202,"},{"line_number":130,"context_line":"                         body\u003dlb_types.LoadBalancerRootPUT)"},{"line_number":131,"context_line":"    def put(self, id, load_balancer):"},{"line_number":132,"context_line":"        \"\"\"Updates a load balancer.\"\"\""},{"line_number":133,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":134,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_73b967e9","line":131,"in_reply_to":"fa31d9ce_fb753732","updated":"2017-02-20 19:03:58.000000000","message":"True and False for admin_state_up need to be \u0027false\u0027 and \u0027true\u0027","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fa408cb442ba88c3c8cb97861bb55302793963c8","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        return lb_types.LoadBalancersRootResponse(loadbalancer\u003dresult)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @wsme_pecan.wsexpose(None, wtypes.text, status_code\u003d202)"},{"line_number":170,"context_line":"    def delete(self, id):"},{"line_number":171,"context_line":"        \"\"\"Deletes a load balancer.\"\"\""},{"line_number":172,"context_line":"        return self._delete(id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_5b080392","line":170,"updated":"2017-02-17 00:33:05.000000000","message":"This returns 202 instead of 204","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        return lb_types.LoadBalancersRootResponse(loadbalancer\u003dresult)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @wsme_pecan.wsexpose(None, wtypes.text, status_code\u003d202)"},{"line_number":170,"context_line":"    def delete(self, id):"},{"line_number":171,"context_line":"        \"\"\"Deletes a load balancer.\"\"\""},{"line_number":172,"context_line":"        return self._delete(id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_33a60fc2","line":170,"in_reply_to":"fa31d9ce_5b080392","updated":"2017-02-20 19:03:58.000000000","message":"Done\n\nnlbaasv2 status code for successful delete is 204","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"0e8299208fce5ebe45345c7ae0ec56a58f1f167d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            prov_status \u003d lb_repo.get(session, id\u003did).provisioning_status"},{"line_number":73,"context_line":"            db_lb \u003d lb_repo.get(session, id\u003did)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            if prov_status \u003d\u003d \"PENDING_CREATE\":"},{"line_number":76,"context_line":"                LOG.info(_LI(\"Invalid state \" + prov_status +"},{"line_number":77,"context_line":"                             \" of loadbalancer resource %s\"), id)"},{"line_number":78,"context_line":"                raise exceptions.LBPendingCreateStateError("}],"source_content_type":"text/x-python","patch_set":26,"id":"da36d5c6_b322ffb7","line":75,"updated":"2017-02-20 19:06:04.000000000","message":"Although we could generalize since there are probably other statuses that when set, the action cannot be completed","commit_id":"bfcd571ae759741bf31d3c68651b63d85fec74d0"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"7e26e62649d07647f6a2fc4e4b8471c019082076","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            prov_status \u003d lb_repo.get(session, id\u003did).provisioning_status"},{"line_number":73,"context_line":"            db_lb \u003d lb_repo.get(session, id\u003did)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            if prov_status \u003d\u003d \"PENDING_CREATE\":"},{"line_number":76,"context_line":"                LOG.info(_LI(\"Invalid state \" + prov_status +"},{"line_number":77,"context_line":"                             \" of loadbalancer resource %s\"), id)"},{"line_number":78,"context_line":"                raise exceptions.LBPendingCreateStateError("}],"source_content_type":"text/x-python","patch_set":26,"id":"da36d5c6_e2571e00","line":75,"in_reply_to":"da36d5c6_1ffacdbd","updated":"2017-02-21 16:05:21.000000000","message":"Nvm. I realized the if no condition takes care of it, so everything past that point means the LB is in immutable state","commit_id":"bfcd571ae759741bf31d3c68651b63d85fec74d0"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"3b2b8202b4a9eacbd4b34232ed15f2540970e42f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            prov_status \u003d lb_repo.get(session, id\u003did).provisioning_status"},{"line_number":73,"context_line":"            db_lb \u003d lb_repo.get(session, id\u003did)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            if prov_status \u003d\u003d \"PENDING_CREATE\":"},{"line_number":76,"context_line":"                LOG.info(_LI(\"Invalid state \" + prov_status +"},{"line_number":77,"context_line":"                             \" of loadbalancer resource %s\"), id)"},{"line_number":78,"context_line":"                raise exceptions.LBPendingCreateStateError("}],"source_content_type":"text/x-python","patch_set":26,"id":"da36d5c6_1ffacdbd","line":75,"in_reply_to":"da36d5c6_59e3a1a3","updated":"2017-02-21 15:55:01.000000000","message":"Yes, but the problem is that the error only happens with specific statuses. I am assuming only PENDING_CREATE and PENDING_DELETE. But possibly also PENDING_UPDATE.\n\nIf I know all the statuses that cause immutable state I can wrap logic around that and pass prov_status to the Exception","commit_id":"bfcd571ae759741bf31d3c68651b63d85fec74d0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"91f6e27a1793cc17d736dd10e260d90b970228bc","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            prov_status \u003d lb_repo.get(session, id\u003did).provisioning_status"},{"line_number":73,"context_line":"            db_lb \u003d lb_repo.get(session, id\u003did)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            if prov_status \u003d\u003d \"PENDING_CREATE\":"},{"line_number":76,"context_line":"                LOG.info(_LI(\"Invalid state \" + prov_status +"},{"line_number":77,"context_line":"                             \" of loadbalancer resource %s\"), id)"},{"line_number":78,"context_line":"                raise exceptions.LBPendingCreateStateError("}],"source_content_type":"text/x-python","patch_set":26,"id":"da36d5c6_59e3a1a3","line":75,"in_reply_to":"da36d5c6_b322ffb7","updated":"2017-02-20 20:51:57.000000000","message":"I think you can handle this without \"\u003d\u003d \"PENDING_CREATE\"\"\nCan\u0027t you just fill in the prov_status in the exception and not care what it was that caused the above test to fail?","commit_id":"bfcd571ae759741bf31d3c68651b63d85fec74d0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"91f6e27a1793cc17d736dd10e260d90b970228bc","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"},{"line_number":137,"context_line":"                         wtypes.text, status_code\u003d200,"},{"line_number":138,"context_line":"                         body\u003dlb_types.LoadBalancerRootPUT)"},{"line_number":139,"context_line":"    def put(self, id, load_balancer):"},{"line_number":140,"context_line":"        \"\"\"Updates a load balancer.\"\"\""},{"line_number":141,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":142,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"da36d5c6_d98871ea","line":139,"updated":"2017-02-20 20:51:57.000000000","message":"Did this get fixed to match nlbaas?  I think nlbaas accepts True as well as true","commit_id":"bfcd571ae759741bf31d3c68651b63d85fec74d0"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"a81717161bb59ec1f739fe7f3faea034b2634d07","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    @wsme_pecan.wsexpose(lb_types.LoadBalancerRootResponse,"},{"line_number":137,"context_line":"                         wtypes.text, status_code\u003d200,"},{"line_number":138,"context_line":"                         body\u003dlb_types.LoadBalancerRootPUT)"},{"line_number":139,"context_line":"    def put(self, id, load_balancer):"},{"line_number":140,"context_line":"        \"\"\"Updates a load balancer.\"\"\""},{"line_number":141,"context_line":"        load_balancer \u003d load_balancer.loadbalancer"},{"line_number":142,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"da36d5c6_e5cac8a0","line":139,"in_reply_to":"da36d5c6_d98871ea","updated":"2017-02-21 22:54:54.000000000","message":"Seems like just lowercase for neutron lbaas","commit_id":"bfcd571ae759741bf31d3c68651b63d85fec74d0"}],"octavia/api/v2/types/load_balancer.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"814da2292ee41b527adbf89bac05e4582458b5ce","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class LoadBalancerRootResponse(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_e8615a3a","line":42,"updated":"2017-01-30 23:11:28.000000000","message":"Add this method here so that LoadBalancerResponse can correctly bring over the vip information from the data model.\n\n    @classmethod\n    def from_data_model(cls, data_model, children\u003dFalse):\n        result \u003d super(BaseLoadBalancerType, cls).from_data_model(\n            data_model, children\u003dchildren)\n        if data_model.vip:\n            result.vip_subnet_id \u003d data_model.vip.subnet_id\n            result.vip_port_id \u003d data_model.vip.port_id\n            result.vip_address \u003d data_model.vip.ip_address\n        return result","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"a0cfdff18378437a7284ec0e473d575bd5291635","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class LoadBalancerRootResponse(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_54292489","line":42,"in_reply_to":"3a461143_e8615a3a","updated":"2017-01-31 02:04:15.000000000","message":"Done","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a0a2a69e4ad55861a07fdbc9288d1c4cc815b7dd","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class BaseLoadBalancerType(types.BaseType):"},{"line_number":21,"context_line":"    _type_to_model_map \u003d {\u0027vip_address\u0027: \u0027vip.ip_address\u0027,"},{"line_number":22,"context_line":"                          \u0027vip_subnet_id\u0027: \u0027vip.subnet_id\u0027,"},{"line_number":23,"context_line":"                          \u0027vip_port_id\u0027: \u0027vip.port_id\u0027,"},{"line_number":24,"context_line":"                          \u0027admin_state_up\u0027: \u0027enabled\u0027}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_2283c557","line":22,"updated":"2017-02-06 23:02:55.000000000","message":"Neutron-LbaaS supports vip_network_id which seems to be missing from Octavia. We will need to add this.","commit_id":"1be2c5b9906d43079e9031aa08c7a8681c9a1a92"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b0eb5645dfdbe7617514d2143b625cec643800c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def from_data_model(cls, data_model, children\u003dFalse):"},{"line_number":46,"context_line":"        result \u003d super(BaseLoadBalancerType, cls).from_data_model("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_4f04a87d","line":43,"updated":"2017-02-11 00:58:07.000000000","message":"pools is also missing here","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"57d3754f4b1a34393baef2d60db8470ea020d860","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def from_data_model(cls, data_model, children\u003dFalse):"},{"line_number":46,"context_line":"        result \u003d super(BaseLoadBalancerType, cls).from_data_model("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_8aa5ae05","line":43,"in_reply_to":"fa31d9ce_4f04a87d","updated":"2017-02-11 01:13:15.000000000","message":"good catch","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def from_data_model(cls, data_model, children\u003dFalse):"},{"line_number":46,"context_line":"        result \u003d super(BaseLoadBalancerType, cls).from_data_model("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_c541573b","line":43,"in_reply_to":"fa31d9ce_8aa5ae05","updated":"2017-02-11 04:33:00.000000000","message":"Added TODO","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9c56f1898e75ca64feb145042ef811529b0864a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":71,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":72,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":73,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_2f0134af","line":73,"updated":"2017-02-11 00:51:09.000000000","message":"tenant_id is missing here as an optional/backward compat attribute.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8364e2a1b6b4c8b4374f0fc37f33c5671be3946d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":71,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":72,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":73,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_6a2b1a83","line":73,"in_reply_to":"fa31d9ce_2f0134af","updated":"2017-02-11 01:10:47.000000000","message":"We seriously have to continue to carry this baggage? How long until tenant_id is fully deprecated? Hasn\u0027t it been like 5 cycles now?","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":71,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":72,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":73,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_25495360","line":73,"in_reply_to":"fa31d9ce_4ad01654","updated":"2017-02-11 04:33:00.000000000","message":"Done","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"3c45881c1f7456ac764d9f4098fc702a2f74e96b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":71,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":72,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":73,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_4ad01654","line":73,"in_reply_to":"fa31d9ce_6a2b1a83","updated":"2017-02-11 01:15:41.000000000","message":"Yes unfortunately we have to.  I was investigating a way to make this invisibly accept tenant_id and set project_id equal to what is passed in, but there\u0027s not an easy way to do this.  So it might just be best to accept tenant_id in this type for now.","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e0e0a51ec50efed516e9472d53172ed8bc18fd25","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"},{"line_number":77,"context_line":"    loadbalancer \u003d wtypes.wsattr(LoadBalancerPOST)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class LoadBalancerPUT(BaseLoadBalancerType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_5d746d34","line":77,"updated":"2017-02-10 19:38:16.000000000","message":"This doesn\u0027t seem to be working, I get a 400 error:\n{\"debuginfo\": null, \"faultcode\": \"Client\", \"faultstring\": \"Unknown attribute for argument load_balancer: loadbalancer\"}","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"335e63c156b109af67fdfd0c94e8f2c3d125e989","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"},{"line_number":77,"context_line":"    loadbalancer \u003d wtypes.wsattr(LoadBalancerPOST)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class LoadBalancerPUT(BaseLoadBalancerType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_8f0f80e0","line":77,"in_reply_to":"fa31d9ce_5d746d34","updated":"2017-02-11 00:47:56.000000000","message":"Ignore this, my mistake","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LoadBalancerRootPOST(types.BaseType):"},{"line_number":77,"context_line":"    loadbalancer \u003d wtypes.wsattr(LoadBalancerPOST)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class LoadBalancerPUT(BaseLoadBalancerType):"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_4574879b","line":77,"in_reply_to":"fa31d9ce_8f0f80e0","updated":"2017-02-11 04:33:00.000000000","message":"Done","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f941293ed66c0322d4883e378c7d527a576065f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def from_data_model(cls, data_model, children\u003dFalse):"},{"line_number":46,"context_line":"        result \u003d super(BaseLoadBalancerType, cls).from_data_model("}],"source_content_type":"text/x-python","patch_set":24,"id":"fa31d9ce_b2a16496","line":43,"updated":"2017-02-15 17:15:17.000000000","message":"Was there a bad merge here?  The TODO for pools missing is now gone which makes me thing a patch reverted a bunch of changes....","commit_id":"3bfd208d2e76fdbf341693f84781ba4452823af9"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fa408cb442ba88c3c8cb97861bb55302793963c8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":34,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":35,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":36,"context_line":"    tenant_id \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_db3dd3bc","line":36,"updated":"2017-02-17 00:33:05.000000000","message":"This is not working for me on LB create.  The JSON output on LB create did not include tenant_id:\n\n{\"loadbalancer\": {\"description\": \"test description\", \"admin_state_up\": false, \"created_at\": \"2017-02-17T00:04:30.349113\", \"provisioning_status\": \"PENDING_CREATE\", \"updated_at\": null, \"vip_port_id\": null, \"vip_address\": \"10.0.0.10\", \"vip_subnet_id\": \"947552cc-e723-4329-8fdd-d82d16a94fab\", \"project_id\": \"41d935b5d0f14c26827db925aff5ca93\", \"id\": \"8ead1ac4-11fb-4566-856c-72e6c24e2cac\", \"operating_status\": \"OFFLINE\", \"name\": \"testname\"}}","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":34,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":35,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":36,"context_line":"    tenant_id \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_dd76a23d","line":36,"in_reply_to":"fa31d9ce_db3dd3bc","updated":"2017-02-20 19:03:58.000000000","message":"Done","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fa408cb442ba88c3c8cb97861bb55302793963c8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":"    # TODO(ankur-gupta-f): add pools once that has been merged"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_bb673fe9","line":40,"updated":"2017-02-17 00:33:05.000000000","message":"The vip_port_id is coming back empty after a lb create call.  nlbaas the JSON returned from create contains this ID.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a07e8b39e74325ee1809001b6f10e841dfc5dcae","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":"    # TODO(ankur-gupta-f): add pools once that has been merged"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_573e8ada","line":40,"in_reply_to":"da36d5c6_0a9c2568","updated":"2017-02-23 21:12:32.000000000","message":"the shim layer for the drivers can handle that for them.  Of course, that getting completed soon isn\u0027t looking great unless someone takes that over from me as well.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"60df4890539e1c4765201dd3ea3c2ef30740c14e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":"    # TODO(ankur-gupta-f): add pools once that has been merged"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_e5aba887","line":40,"in_reply_to":"da36d5c6_597f21aa","updated":"2017-02-21 16:33:51.000000000","message":"it\u0027ll be a good chunk of work to get this to work like nlbaas in that a vip_port_id is created synchronously.  It is possible, but to make it like the nlbaas behavior we\u0027d have to have the load balancer create call synchronously call the handler, then with the ref implemenation, the handler would have to synchrounsly call the controller worker and wait fro the controller worker to allocate a vip, which would just be to create a neutron port.  Then it could proceed with teh normal asynchronous handler call to create a load balancer.  But it\u0027d have to do all of that so that create load balancer will always return with vip_port_id populated.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1d739f638a9fcedde1dbd166ae99007769c8b04d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":"    # TODO(ankur-gupta-f): add pools once that has been merged"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_597f21aa","line":40,"in_reply_to":"da36d5c6_7db5b6cb","updated":"2017-02-20 20:51:46.000000000","message":"Discuss this with Brandon. It\u0027s a bit of chicken/egg.  We need to consider how the drivers are expected to handle the VIP port.  If we expect drivers to manage their own VIP ports, maybe we let this one go.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"8d8ce6bf82c1878273ab28a60d2ccf36f42f20d4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":"    # TODO(ankur-gupta-f): add pools once that has been merged"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_0a9c2568","line":40,"in_reply_to":"da36d5c6_e5aba887","updated":"2017-02-22 14:43:08.000000000","message":"Yeah, if the other vendor drivers also create their own VIPs, I think we should just release note the fact that this will come back empty initially.\nThe interesting question with that is how would it ever get populated by the drivers without giving them DB access somehow.","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"68a0b8b20ad3ec28106d70ca4d634677872575c7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":39,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":40,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":42,"context_line":"    # TODO(blogan): add listeners once that has been merged"},{"line_number":43,"context_line":"    # TODO(ankur-gupta-f): add pools once that has been merged"}],"source_content_type":"text/x-python","patch_set":25,"id":"da36d5c6_7db5b6cb","line":40,"in_reply_to":"fa31d9ce_bb673fe9","updated":"2017-02-20 19:03:58.000000000","message":"Hmm this is neither the function of v1 either. This will require extra work. Will need your help","commit_id":"bf3d6b306a645dbc3a530636a70ecf1eadefa904"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0933f74dcc87c98872fd1791939fd6b1bba064e4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"class LoadBalancerPOST(BaseLoadBalancerType):"},{"line_number":66,"context_line":"    \"\"\"Defines mandatory and optional attributes of a POST request.\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":69,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":70,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":71,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba2be162_7a95cc3e","line":68,"updated":"2017-03-01 01:17:56.000000000","message":"I don\u0027t think we should have ID here","commit_id":"4016768f7e4fb7bae8b5c6a28caed51de82d18c4"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d5c987aa96fa5c7e0ff278ef5b60f6d6c4dc43f3","unresolved":false,"context_lines":[{"line_number":65,"context_line":"class LoadBalancerPOST(BaseLoadBalancerType):"},{"line_number":66,"context_line":"    \"\"\"Defines mandatory and optional attributes of a POST request.\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":69,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":70,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":71,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba2be162_f9732a13","line":68,"in_reply_to":"ba2be162_7a95cc3e","updated":"2017-03-02 15:36:00.000000000","message":"Done","commit_id":"4016768f7e4fb7bae8b5c6a28caed51de82d18c4"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"94ef0efb8af1eab25d60d6675108a6820dd5412c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":72,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":73,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":74,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":75,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":76,"context_line":"    tenant_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ba2be162_f54c6d78","line":74,"updated":"2017-03-01 01:42:20.000000000","message":"vip_netowrk_id is missing here.","commit_id":"4016768f7e4fb7bae8b5c6a28caed51de82d18c4"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d5c987aa96fa5c7e0ff278ef5b60f6d6c4dc43f3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":72,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":73,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":74,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":75,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":76,"context_line":"    tenant_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ba2be162_d97826f5","line":74,"in_reply_to":"ba2be162_f54c6d78","updated":"2017-03-02 15:36:00.000000000","message":"Done","commit_id":"4016768f7e4fb7bae8b5c6a28caed51de82d18c4"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"605d0479aca53374c85f56db4d256a31db4556d4","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":72,"context_line":"    vip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":73,"context_line":"    vip_port_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":74,"context_line":"    vip_subnet_id \u003d wtypes.wsattr(wtypes.UuidType(), mandatory\u003dTrue)"},{"line_number":75,"context_line":"    vip_network_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":76,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":77,"context_line":"    tenant_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba2be162_d9b1ed48","line":74,"updated":"2017-03-03 00:10:06.000000000","message":"subnet is not mandatory","commit_id":"907af6ac515daa478649b9fcd7c38501a1dff59b"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"9dcfe9c3da3eaec065ea50752e64fc880ae73ded","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def from_data_model(cls, data_model, children\u003dFalse):"},{"line_number":48,"context_line":"        result \u003d super(BaseLoadBalancerType, cls).from_data_model("},{"line_number":49,"context_line":"            data_model, children\u003dchildren)"},{"line_number":50,"context_line":"        if data_model.vip:"},{"line_number":51,"context_line":"            result.vip_subnet_id \u003d data_model.vip.subnet_id"},{"line_number":52,"context_line":"            result.vip_port_id \u003d data_model.vip.port_id"},{"line_number":53,"context_line":"            result.vip_address \u003d data_model.vip.ip_address"},{"line_number":54,"context_line":"        result.tenant_id \u003d data_model.project_id"},{"line_number":55,"context_line":"        return result"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_e75ce2ef","line":53,"range":{"start_line":50,"start_character":8,"end_line":53,"end_character":58},"updated":"2017-03-06 21:29:13.000000000","message":"It\u0027s already specified in _type_to_model_map. Why we\u0027re doing this again?","commit_id":"f121c6e94ff3cbc933e685c10e6cd3d4232e0dd6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b40f1d4b6ea859053d5624dbb5458791c88a4254","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def from_data_model(cls, data_model, children\u003dFalse):"},{"line_number":48,"context_line":"        result \u003d super(BaseLoadBalancerType, cls).from_data_model("},{"line_number":49,"context_line":"            data_model, children\u003dchildren)"},{"line_number":50,"context_line":"        if data_model.vip:"},{"line_number":51,"context_line":"            result.vip_subnet_id \u003d data_model.vip.subnet_id"},{"line_number":52,"context_line":"            result.vip_port_id \u003d data_model.vip.port_id"},{"line_number":53,"context_line":"            result.vip_address \u003d data_model.vip.ip_address"},{"line_number":54,"context_line":"        result.tenant_id \u003d data_model.project_id"},{"line_number":55,"context_line":"        return result"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_d19cdd6b","line":53,"range":{"start_line":50,"start_character":8,"end_line":53,"end_character":58},"in_reply_to":"9a30ddce_e75ce2ef","updated":"2017-03-07 12:40:06.000000000","message":"Yeah, IIRC that should already take care of things? Unless I\u0027m misunderstanding how that function works.","commit_id":"f121c6e94ff3cbc933e685c10e6cd3d4232e0dd6"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"9dcfe9c3da3eaec065ea50752e64fc880ae73ded","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            result.vip_subnet_id \u003d data_model.vip.subnet_id"},{"line_number":52,"context_line":"            result.vip_port_id \u003d data_model.vip.port_id"},{"line_number":53,"context_line":"            result.vip_address \u003d data_model.vip.ip_address"},{"line_number":54,"context_line":"        result.tenant_id \u003d data_model.project_id"},{"line_number":55,"context_line":"        return result"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_6769d28b","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":48},"updated":"2017-03-06 21:29:13.000000000","message":"We\u0027re sure about it?","commit_id":"f121c6e94ff3cbc933e685c10e6cd3d4232e0dd6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b40f1d4b6ea859053d5624dbb5458791c88a4254","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            result.vip_subnet_id \u003d data_model.vip.subnet_id"},{"line_number":52,"context_line":"            result.vip_port_id \u003d data_model.vip.port_id"},{"line_number":53,"context_line":"            result.vip_address \u003d data_model.vip.ip_address"},{"line_number":54,"context_line":"        result.tenant_id \u003d data_model.project_id"},{"line_number":55,"context_line":"        return result"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_d1005dad","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":48},"in_reply_to":"9a30ddce_6769d28b","updated":"2017-03-07 12:40:06.000000000","message":"I believe internally we are using project_id in all cases now, and just mapping back to tenant_id for backwards-compatibility, so this should be correct.","commit_id":"f121c6e94ff3cbc933e685c10e6cd3d4232e0dd6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ed9d3614ea8c1d637164cf7a60ce2acd82f7c193","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            result.vip_subnet_id \u003d data_model.vip.subnet_id"},{"line_number":52,"context_line":"            result.vip_port_id \u003d data_model.vip.port_id"},{"line_number":53,"context_line":"            result.vip_address \u003d data_model.vip.ip_address"},{"line_number":54,"context_line":"        result.tenant_id \u003d data_model.project_id"},{"line_number":55,"context_line":"        return result"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_6dbb36c5","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":48},"in_reply_to":"9a30ddce_d1005dad","updated":"2017-03-07 22:46:59.000000000","message":"Yeah, agree, this is correct.  We should be setting the tenant_id from the project_id.\ntenant_id will go away in a future release.","commit_id":"f121c6e94ff3cbc933e685c10e6cd3d4232e0dd6"}],"octavia/common/data_models.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"814da2292ee41b527adbf89bac05e4582458b5ce","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from sqlalchemy.orm import collections"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from octavia.common import constants"},{"line_number":22,"context_line":"from octavia.common import decorators"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class BaseDataModel(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_c849feb8","line":22,"updated":"2017-01-30 23:11:28.000000000","message":"not needed anymore","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"a0cfdff18378437a7284ec0e473d575bd5291635","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from sqlalchemy.orm import collections"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from octavia.common import constants"},{"line_number":22,"context_line":"from octavia.common import decorators"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class BaseDataModel(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_de837454","line":22,"in_reply_to":"3a461143_c849feb8","updated":"2017-01-31 02:04:15.000000000","message":"Done","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"bcdfb2bbf6a0718f020efda5d56f4b1b0f49ac77","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from sqlalchemy.orm import collections"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from octavia.common import constants"},{"line_number":22,"context_line":"from octavia.common import decorators"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class BaseDataModel(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_da161d4b","line":22,"in_reply_to":"3a461143_de837454","updated":"2017-01-31 02:06:00.000000000","message":"Oh well it\u0027s still there. need to remove on next one","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"}],"octavia/tests/functional/api/v2/base.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"814da2292ee41b527adbf89bac05e4582458b5ce","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def post(self, path, body, headers\u003dNone, status\u003d202, expect_errors\u003dFalse):"},{"line_number":103,"context_line":"        headers \u003d headers or {}"},{"line_number":104,"context_line":"        body \u003d {\u0027loadbalancer\u0027: body}"},{"line_number":105,"context_line":"        full_path \u003d self._get_full_path(path)"},{"line_number":106,"context_line":"        response \u003d self.app.post_json(full_path,"},{"line_number":107,"context_line":"                                      params\u003dbody,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_08cea62d","line":104,"updated":"2017-01-30 23:11:28.000000000","message":"since this method is used by all resources, it might be better to have an optional root_tag kwarg that can be passed in.  in this case the caller of this method would pass in root_tag\u003d\u0027loadbalancer\u0027.","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"a0cfdff18378437a7284ec0e473d575bd5291635","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def post(self, path, body, headers\u003dNone, status\u003d202, expect_errors\u003dFalse):"},{"line_number":103,"context_line":"        headers \u003d headers or {}"},{"line_number":104,"context_line":"        body \u003d {\u0027loadbalancer\u0027: body}"},{"line_number":105,"context_line":"        full_path \u003d self._get_full_path(path)"},{"line_number":106,"context_line":"        response \u003d self.app.post_json(full_path,"},{"line_number":107,"context_line":"                                      params\u003dbody,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_fed6704d","line":104,"in_reply_to":"3a461143_08cea62d","updated":"2017-01-31 02:04:15.000000000","message":"I would rather not have any of the building of the body in the base class. Would rather have the test build the body and pass it in correctly. Will update all tests to reflect that","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"814da2292ee41b527adbf89bac05e4582458b5ce","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        return response"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def create_load_balancer(self, vip, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        response \u003d self.post(self.LBS_PATH, req_dict)"},{"line_number":137,"context_line":"        return response.json"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_88da96e6","line":134,"updated":"2017-01-30 23:11:28.000000000","message":"change vip to vip_subnet_id since vip_subnet_id is the required attribute for a v2 load balancer","commit_id":"70c458e56900a2318f933c5968041de6c40f1767"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"19af2a69b1950f628e12ec077979434c6453d4ca","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                                expect_errors\u003dexpect_errors)"},{"line_number":130,"context_line":"        return response"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone, **optionals):"},{"line_number":133,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":134,"context_line":"        req_dict.update(optionals)"},{"line_number":135,"context_line":"        body \u003d {root_tag: req_dict}"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a461143_cb2fae86","line":132,"range":{"start_line":132,"start_character":35,"end_line":132,"end_character":48},"updated":"2017-02-02 23:04:21.000000000","message":"add vip_subnet_id as a positional argument because its required to create a load balancer.","commit_id":"9f724e64a4f48b44ea5faf14ae449349839b056d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6ade6223bb00aabfc3692a3b902787d1e1e61d52","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return response"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_7ec87075","line":133,"updated":"2017-02-03 08:54:59.000000000","message":"OK you added it, but it isn\u0027t used...\nI assume Brandon meant you should then USE this vip_subnet_id in the dict definition below, and only generate a uuid if one is not passed?\nThat is my best guess, but maybe blogan can comment.","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"082bf7106a3772676adf134713a7b7736350c3d6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return response"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_cf10c151","line":133,"in_reply_to":"1a430d35_7ec87075","updated":"2017-02-03 16:49:00.000000000","message":"ah yea. :|","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6ade6223bb00aabfc3692a3b902787d1e1e61d52","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_bea018a7","line":134,"updated":"2017-02-03 08:54:59.000000000","message":"In that case this would be (allowing for pep8):\nreq_dict \u003d {\u0027vip_subnet_id\u0027: vip_subnet_id or uuidutils.generate_uuid()}","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"0c3bb86ebae344ba70bf7161c319c427a0da57fb","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_f2772200","line":134,"in_reply_to":"1a430d35_8f87990e","updated":"2017-02-03 17:30:56.000000000","message":"+1","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"f3523d2edb7d7107255bc9c45fd3b64c751152eb","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_d2f5c683","line":134,"in_reply_to":"1a430d35_8f87990e","updated":"2017-02-03 17:28:04.000000000","message":"AH right, you had said positional.","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"9bb3968b54cec399fc969a11bcb0c45da4969db3","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_95b088f6","line":134,"in_reply_to":"1a430d35_8f87990e","updated":"2017-02-03 17:48:52.000000000","message":"I agree it should be a positional argument, but when other test files call this function they don\u0027t have vip_subnet_id e.g., [1] , in that case don\u0027t we need to generate vip_subnet_id here? or do we do it in the respective test files?\n\n[1]https://review.openstack.org/#/c/424744/11/octavia/tests/functional/api/v2/test_listener.py@26","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"1ba8ffc440b9ed4111742757d8c0337999480a1e","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_119583e3","line":134,"in_reply_to":"1a430d35_95b088f6","updated":"2017-02-03 21:35:53.000000000","message":"the id should be generated by the tests themselves.  you want the tests to be in control of all the inputs and assert on the outputs.  The code that passes in an empty dictionary was written for v1 when vip was the positional arg. that arg was meant to be a dictionary with port_id, subnet_id, and ip_address as keys.  So since we\u0027re doing v2 now, vip is now not a sub dictionary of load balancer, its now just attributes of a laod balancer (vip_subnet_id, vip_port_id, vip_address).  That codes needs to be changed to pass in a generated subnet id.","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"082bf7106a3772676adf134713a7b7736350c3d6","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_ef1d7d67","line":134,"in_reply_to":"1a430d35_bea018a7","updated":"2017-02-03 16:49:00.000000000","message":"Done","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"2175f44dc4a1fb38f1d6437b8b87eaacb8035dbe","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: uuidutils.generate_uuid()}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"},{"line_number":137,"context_line":"        response \u003d self.post(self.LBS_PATH, body)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a430d35_8f87990e","line":134,"in_reply_to":"1a430d35_ef1d7d67","updated":"2017-02-03 16:58:17.000000000","message":"Actually, i think it should be the test that generates the vip_subnet_id, not the job of this method.  Plus, it should be positional to denote taht it is required, not a keyword arg.  That\u0027s the consistency of the rest of the methods below.","commit_id":"fd03e0781f89d1d4dc1c1046b6d901fcbf04c1d3"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"56fd8cd904c1e79ef7d7be4d69d6faff1b228cec","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return response"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, root_tag\u003dNone,"},{"line_number":133,"context_line":"                             vip_subnet_id\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: vip_subnet_id or"},{"line_number":135,"context_line":"                    uuidutils.generate_uuid()}"},{"line_number":136,"context_line":"        req_dict.update(optionals)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a430d35_b2267a14","line":133,"updated":"2017-02-03 17:29:34.000000000","message":"OK yeah, so I guess I gave bad advice last time, it needs to be non-optional, and there\u0027s no fancy logic below, just require it and use it. :P","commit_id":"440fcd4f333b67c35115e53e5c724f795a180f00"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"f16420eb98009fd45d445fe45741c1cc8efda6a2","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return response"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, vip_subnet_id,"},{"line_number":133,"context_line":"                             root_tag\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: vip_subnet_id}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_aa5d12eb","line":133,"range":{"start_line":133,"start_character":29,"end_line":133,"end_character":42},"updated":"2017-02-11 01:21:07.000000000","message":"i have to say i\u0027m not liking this root_tag kwarg anymore.  It looks kinda dumb (which was your argument against it).  I think you were originally right in letting this method just add the root_tag in.  I must have been drinking that day.  This will of course cause you to change everything below and also break other reviews that depend on yours now, sooo keep it if you like it :)","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return response"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_load_balancer(self, vip_subnet_id,"},{"line_number":133,"context_line":"                             root_tag\u003dNone, **optionals):"},{"line_number":134,"context_line":"        req_dict \u003d {\u0027vip_subnet_id\u0027: vip_subnet_id}"},{"line_number":135,"context_line":"        req_dict.update(optionals)"},{"line_number":136,"context_line":"        body \u003d {root_tag: req_dict}"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_459ba7c9","line":133,"range":{"start_line":133,"start_character":29,"end_line":133,"end_character":42},"in_reply_to":"fa31d9ce_aa5d12eb","updated":"2017-02-11 04:33:00.000000000","message":"I keep reading this over and over and laughing thinking about the guys doing the other controllers... \"you gotta be kidding me\" ..","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"b1267de557dbb137d7c28c1b1f0e3b312cc1f51d","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            expected_prov_status \u003d constants.DELETED"},{"line_number":304,"context_line":"            expected_op_status \u003d constants.OFFLINE"},{"line_number":305,"context_line":"        self.set_lb_status(lb_id, status\u003dexpected_prov_status)"},{"line_number":306,"context_line":"        self.assert_correct_listener_status(expected_prov_status, listener_id,"},{"line_number":307,"context_line":"                                            expected_op_status)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def assert_correct_lb_status(self, lb_id, provisioning_status,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_d18921cc","line":306,"updated":"2017-02-10 23:42:09.000000000","message":"The order of the arguments should be (expected_prov_status, expected_op_status, listener_id)","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"dd67101ac6f72ec71e5de76b9089edd8c84dbebd","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            expected_prov_status \u003d constants.DELETED"},{"line_number":304,"context_line":"            expected_op_status \u003d constants.OFFLINE"},{"line_number":305,"context_line":"        self.set_lb_status(lb_id, status\u003dexpected_prov_status)"},{"line_number":306,"context_line":"        self.assert_correct_listener_status(expected_prov_status, listener_id,"},{"line_number":307,"context_line":"                                            expected_op_status)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def assert_correct_lb_status(self, lb_id, provisioning_status,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_c5af97e1","line":306,"in_reply_to":"fa31d9ce_0a353ed9","updated":"2017-02-11 04:33:00.000000000","message":"Let me know if there is something I need/should change","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8364e2a1b6b4c8b4374f0fc37f33c5671be3946d","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            expected_prov_status \u003d constants.DELETED"},{"line_number":304,"context_line":"            expected_op_status \u003d constants.OFFLINE"},{"line_number":305,"context_line":"        self.set_lb_status(lb_id, status\u003dexpected_prov_status)"},{"line_number":306,"context_line":"        self.assert_correct_listener_status(expected_prov_status, listener_id,"},{"line_number":307,"context_line":"                                            expected_op_status)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def assert_correct_lb_status(self, lb_id, provisioning_status,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa31d9ce_0a353ed9","line":306,"in_reply_to":"fa31d9ce_d18921cc","updated":"2017-02-11 01:10:47.000000000","message":"Yep, it\u0027s just below at line 318.  I hope this is failing...","commit_id":"de8cad50bd520cfb1e392e6800ec155ea575e278"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"45769b7451f8886b7a3b2d2eed5965b34ab4ca72","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            expected_prov_status \u003d constants.DELETED"},{"line_number":303,"context_line":"            expected_op_status \u003d constants.OFFLINE"},{"line_number":304,"context_line":"        self.set_lb_status(lb_id, status\u003dexpected_prov_status)"},{"line_number":305,"context_line":"        self.assert_correct_listener_status(expected_prov_status, listener_id,"},{"line_number":306,"context_line":"                                            expected_op_status)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def assert_correct_lb_status(self, lb_id, provisioning_status,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa31d9ce_f9828051","line":305,"updated":"2017-02-11 21:44:58.000000000","message":"Yes, you need to change these three arguments from the current order to:\nself.assert_correct_listener_status(expected_prov_status, expected_op_status, listener_id)","commit_id":"d2c44eae74784b1b3ceefd6e43a04ea8894241d6"}],"octavia/tests/functional/api/v2/test_load_balancer.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"d9750e466fc7315043f66d6be6e5754179323d79","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_update_with_vip(self):"},{"line_number":204,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":205,"context_line":"                                       \u0027loadbalancer\u0027, name\u003d\u0027lb1\u0027,"},{"line_number":206,"context_line":"                                       description\u003d\u0027desc1\u0027,"},{"line_number":207,"context_line":"                                       admin_state_up\u003dFalse)"},{"line_number":208,"context_line":"        lb_dict \u003d lb.get(\u0027loadbalancer\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa31d9ce_61cb3854","line":205,"range":{"start_line":205,"start_character":39,"end_line":205,"end_character":53},"updated":"2017-02-13 21:48:52.000000000","message":"remove this and many more below","commit_id":"d2c44eae74784b1b3ceefd6e43a04ea8894241d6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            self.assertEqual(value, lb_json.get(key))"},{"line_number":57,"context_line":"        self.assert_final_lb_statuses(api_lb.get(\u0027id\u0027))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_create_with_duplicate_id(self):"},{"line_number":60,"context_line":"        lb \u003d self.create_load_balancer("},{"line_number":61,"context_line":"            uuidutils.generate_uuid()).get(\u0027loadbalancer\u0027)"},{"line_number":62,"context_line":"        body \u003d self._build_body({\u0027id\u0027: lb.get(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_7264eee4","line":59,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            self.assertEqual(value, lb_json.get(key))"},{"line_number":57,"context_line":"        self.assert_final_lb_statuses(api_lb.get(\u0027id\u0027))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_create_with_duplicate_id(self):"},{"line_number":60,"context_line":"        lb \u003d self.create_load_balancer("},{"line_number":61,"context_line":"            uuidutils.generate_uuid()).get(\u0027loadbalancer\u0027)"},{"line_number":62,"context_line":"        body \u003d self._build_body({\u0027id\u0027: lb.get(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_355ee076","line":59,"in_reply_to":"9a30ddce_7264eee4","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def test_create_with_project_id(self):"},{"line_number":72,"context_line":"        self.test_create(project_id\u003duuidutils.generate_uuid())"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_all(self):"},{"line_number":75,"context_line":"        root_tag \u003d \u0027loadbalancer\u0027"},{"line_number":76,"context_line":"        lb1 \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":77,"context_line":"                                        name\u003d\u0027lb1\u0027)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_32f7d6f6","line":74,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def test_create_with_project_id(self):"},{"line_number":72,"context_line":"        self.test_create(project_id\u003duuidutils.generate_uuid())"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_all(self):"},{"line_number":75,"context_line":"        root_tag \u003d \u0027loadbalancer\u0027"},{"line_number":76,"context_line":"        lb1 \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":77,"context_line":"                                        name\u003d\u0027lb1\u0027)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_d59584e4","line":74,"in_reply_to":"9a30ddce_32f7d6f6","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e43ba0fe9e99ec2e2794fccc0c1245740079a113","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        project1_path \u003d \"{0}?project_id\u003d{1}\".format(self.LBS_PATH, project1_id)"},{"line_number":107,"context_line":"        response \u003d self.get(project1_path)"},{"line_number":108,"context_line":"        lbs \u003d response.json.get(tag)"},{"line_number":109,"context_line":"        # Need to fix"},{"line_number":110,"context_line":"        if lbs is not None:"},{"line_number":111,"context_line":"            lb_id_names \u003d [(lb.get(\u0027id\u0027), lb.get(\u0027name\u0027)) for lb in lbs]"},{"line_number":112,"context_line":"            self.assertEqual(2, len(lbs))"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_0f454d6f","line":109,"updated":"2017-03-08 00:07:24.000000000","message":"Ok, so fix....  grin\nLooks like we are not failing if you don\u0027t get anything back.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(1, len(lbs))"},{"line_number":121,"context_line":"            self.assertIn((lb3.get(\u0027id\u0027), lb3.get(\u0027name\u0027)), lb_id_names)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_get(self):"},{"line_number":124,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":125,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":126,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_b219067c","line":123,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(1, len(lbs))"},{"line_number":121,"context_line":"            self.assertIn((lb3.get(\u0027id\u0027), lb3.get(\u0027name\u0027)), lb_id_names)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_get(self):"},{"line_number":124,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":125,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":126,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f5bfe85d","line":123,"in_reply_to":"9a30ddce_b219067c","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        lb_json \u003d {\u0027vip\u0027: {\u0027subnet_id\u0027: \u0027HI\u0027}}"},{"line_number":177,"context_line":"        self.post(self.LBS_PATH, lb_json, status\u003d400)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_update(self):"},{"line_number":180,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":181,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":182,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f229be8a","line":179,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        self.assertIsNotNone(api_lb.get(\u0027updated_at\u0027))"},{"line_number":198,"context_line":"        self.assert_final_lb_statuses(api_lb.get(\u0027id\u0027))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def test_update_with_vip(self):"},{"line_number":201,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":202,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":203,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f250de0c","line":200,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        path \u003d self.LB_PATH.format(lb_id\u003d\u0027SEAN-CONNERY\u0027)"},{"line_number":213,"context_line":"        self.put(path, body\u003d{}, status\u003d404)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def test_update_pending_create(self):"},{"line_number":216,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":217,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":218,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_d29bdac7","line":215,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        path \u003d self.LB_PATH.format(lb_id\u003d\u0027SEAN-CONNERY\u0027)"},{"line_number":213,"context_line":"        self.put(path, body\u003d{}, status\u003d404)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def test_update_pending_create(self):"},{"line_number":216,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":217,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":218,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_5578b4c4","line":215,"in_reply_to":"9a30ddce_d29bdac7","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        self.put(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)),"},{"line_number":223,"context_line":"                 lb_json, status\u003d409)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_delete_pending_create(self):"},{"line_number":226,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":227,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":228,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_3280b646","line":225,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        self.put(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)),"},{"line_number":223,"context_line":"                 lb_json, status\u003d409)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_delete_pending_create(self):"},{"line_number":226,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":227,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":228,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_b57d70b3","line":225,"in_reply_to":"9a30ddce_3280b646","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        lb_dict \u003d lb.get(\u0027loadbalancer\u0027)"},{"line_number":231,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d409)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def test_update_pending_update(self):"},{"line_number":234,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":235,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":236,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f277fe9c","line":233,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        lb_dict \u003d lb.get(\u0027loadbalancer\u0027)"},{"line_number":231,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d409)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def test_update_pending_update(self):"},{"line_number":234,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":235,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":236,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_d54ae482","line":233,"in_reply_to":"9a30ddce_f277fe9c","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        self.put(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)),"},{"line_number":243,"context_line":"                 lb_json, status\u003d409)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def test_delete_pending_update(self):"},{"line_number":246,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":247,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":248,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_b28ca680","line":245,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        self.put(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)),"},{"line_number":243,"context_line":"                 lb_json, status\u003d409)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def test_delete_pending_update(self):"},{"line_number":246,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":247,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":248,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f54d289a","line":245,"in_reply_to":"9a30ddce_b28ca680","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                 status\u003d200)"},{"line_number":255,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d409)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def test_delete_with_error_status(self):"},{"line_number":258,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":259,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":260,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_b247464a","line":257,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                 status\u003d200)"},{"line_number":255,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d409)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def test_delete_with_error_status(self):"},{"line_number":258,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":259,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":260,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f53448fc","line":257,"in_reply_to":"9a30ddce_b247464a","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        lb \u003d self.set_lb_status(lb_dict.get(\u0027id\u0027), status\u003dconstants.ERROR)"},{"line_number":264,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d204)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def test_update_pending_delete(self):"},{"line_number":267,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":268,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":269,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_7236aee8","line":266,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        lb \u003d self.set_lb_status(lb_dict.get(\u0027id\u0027), status\u003dconstants.ERROR)"},{"line_number":264,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d204)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def test_update_pending_delete(self):"},{"line_number":267,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":268,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":269,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_153c7ce1","line":266,"in_reply_to":"9a30ddce_7236aee8","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self.put(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)),"},{"line_number":276,"context_line":"                 lb_json, status\u003d409)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_delete_pending_delete(self):"},{"line_number":279,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":280,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":281,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_52428a3f","line":278,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self.put(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)),"},{"line_number":276,"context_line":"                 lb_json, status\u003d409)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_delete_pending_delete(self):"},{"line_number":279,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":280,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":281,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_353fc0d7","line":278,"in_reply_to":"9a30ddce_52428a3f","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"453a6ee57adce7988c9cb4240666c7094ea45590","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)))"},{"line_number":286,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d409)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def test_delete(self):"},{"line_number":289,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":290,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":291,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_52b0ca43","line":288,"updated":"2017-03-08 00:12:41.000000000","message":"Test is not handling project_id correctly.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5928ff68a9b187b166b09840e97fc7dc3531ce7d","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)))"},{"line_number":286,"context_line":"        self.delete(self.LB_PATH.format(lb_id\u003dlb_dict.get(\u0027id\u0027)), status\u003d409)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def test_delete(self):"},{"line_number":289,"context_line":"        lb \u003d self.create_load_balancer(uuidutils.generate_uuid(),"},{"line_number":290,"context_line":"                                       name\u003d\u0027lb1\u0027,"},{"line_number":291,"context_line":"                                       description\u003d\u0027desc1\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_5526f4ce","line":288,"in_reply_to":"9a30ddce_52b0ca43","updated":"2017-03-08 01:30:59.000000000","message":"Done","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e43ba0fe9e99ec2e2794fccc0c1245740079a113","unresolved":false,"context_lines":[{"line_number":821,"context_line":"        create_listener, expected_listener \u003d self._get_listener_bodies()"},{"line_number":822,"context_line":"        create_lb, _ \u003d self._get_lb_bodies([create_listener],"},{"line_number":823,"context_line":"                                           [expected_listener])"},{"line_number":824,"context_line":"        # with mock.patch(\u0027octavia.db.repositories.Repositories\u0027) as repo_mock:"},{"line_number":825,"context_line":"        with mock.patch(\u0027octavia.db.repositories.Repositories.\u0027"},{"line_number":826,"context_line":"                        \u0027create_load_balancer_tree\u0027) as repo_mock:"},{"line_number":827,"context_line":"            repo_mock.side_effect \u003d Exception(\u0027I am a DB Error\u0027)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_ef663928","line":824,"updated":"2017-03-08 00:07:24.000000000","message":"Remove if not needed.","commit_id":"fc6ce2cb34d7588aaa91506cc97438e898f775af"}]}
