)]}'
{"octavia/api/v2/controllers/member.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"8b977d976ecffea4f4554127008b89b6dbdd150e","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            with (excutils.save_and_reraise_exception(reraise\u003dFalse) and"},{"line_number":202,"context_line":"                  db_api.get_lock_session()):"},{"line_number":203,"context_line":"                self._reset_lb_listener_pool_statuses("},{"line_number":204,"context_line":"                    context.session, member\u003ddb_member)"},{"line_number":205,"context_line":"                # Member now goes to ERROR"},{"line_number":206,"context_line":"                self.repositories.member.update("},{"line_number":207,"context_line":"                    context.session, db_member.id,"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_8e47754c","line":204,"range":{"start_line":204,"start_character":20,"end_line":204,"end_character":35},"updated":"2017-03-31 22:15:32.000000000","message":"So, this is wrong but talking to Adam he caught it and fixed in the next patch in the chain.  I can live with that if we don\u0027t need to respin for something else.","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1d5f9f96da7cab1bf4c2e9bf732706afec13ebcc","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            with (excutils.save_and_reraise_exception(reraise\u003dFalse) and"},{"line_number":202,"context_line":"                  db_api.get_lock_session()):"},{"line_number":203,"context_line":"                self._reset_lb_listener_pool_statuses("},{"line_number":204,"context_line":"                    context.session, member\u003ddb_member)"},{"line_number":205,"context_line":"                # Member now goes to ERROR"},{"line_number":206,"context_line":"                self.repositories.member.update("},{"line_number":207,"context_line":"                    context.session, db_member.id,"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_4805d8c1","line":204,"range":{"start_line":204,"start_character":20,"end_line":204,"end_character":35},"in_reply_to":"dfeb2761_115f0ae3","updated":"2017-04-01 14:40:33.000000000","message":"OK, I went ahead and fixed this for both pools and members, since there was enough stuff to fix to make another patchset anyway.\nDone.","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b3d904cb60c874a253860fd8c539ff6db1c2c481","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            with (excutils.save_and_reraise_exception(reraise\u003dFalse) and"},{"line_number":202,"context_line":"                  db_api.get_lock_session()):"},{"line_number":203,"context_line":"                self._reset_lb_listener_pool_statuses("},{"line_number":204,"context_line":"                    context.session, member\u003ddb_member)"},{"line_number":205,"context_line":"                # Member now goes to ERROR"},{"line_number":206,"context_line":"                self.repositories.member.update("},{"line_number":207,"context_line":"                    context.session, db_member.id,"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_115f0ae3","line":204,"range":{"start_line":204,"start_character":20,"end_line":204,"end_character":35},"in_reply_to":"dfeb2761_8e47754c","updated":"2017-03-31 22:23:18.000000000","message":"For reference: https://review.openstack.org/#/c/406328/21/octavia/api/v2/controllers/member.py","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"57953b97385b06d6a2e3eb8f50189b3c20ab7d31","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":58,"context_line":"        db_members \u003d self.repositories.member.get_all("},{"line_number":59,"context_line":"            context.session, pool_id\u003dself.pool_id)"},{"line_number":60,"context_line":"        result \u003d self._convert_db_to_type(db_members,"},{"line_number":61,"context_line":"                                          [member_types.MemberResponse])"},{"line_number":62,"context_line":"        return member_types.MembersRootResponse(members\u003dresult)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _get_affected_listener_ids(self, session, member\u003dNone):"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_554e706f","line":61,"range":{"start_line":60,"start_character":42,"end_line":61,"end_character":72},"updated":"2017-04-03 16:07:39.000000000","message":"As a side note, you can break the line before the db_members to make it look better.","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"f7b6db812bf2657b8820cb734c0b0329a4cd46cb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":58,"context_line":"        db_members \u003d self.repositories.member.get_all("},{"line_number":59,"context_line":"            context.session, pool_id\u003dself.pool_id)"},{"line_number":60,"context_line":"        result \u003d self._convert_db_to_type(db_members,"},{"line_number":61,"context_line":"                                          [member_types.MemberResponse])"},{"line_number":62,"context_line":"        return member_types.MembersRootResponse(members\u003dresult)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _get_affected_listener_ids(self, session, member\u003dNone):"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_3b03db0f","line":61,"range":{"start_line":60,"start_character":42,"end_line":61,"end_character":72},"in_reply_to":"dfeb2761_554e706f","updated":"2017-04-03 16:45:32.000000000","message":"Done","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"98d725eee13dd1945c1037995a2a7c8bfc4f54f9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            listener_ids \u003d [l.id for l in member.pool.listeners]"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            pool \u003d self._get_db_pool(session, self.pool_id)"},{"line_number":71,"context_line":"            for listener in pool.listeners:"},{"line_number":72,"context_line":"                if listener.id not in listener_ids:"},{"line_number":73,"context_line":"                    listener_ids.append(listener.id)"},{"line_number":74,"context_line":"        return listener_ids"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_3503ed75","line":71,"updated":"2017-04-03 16:00:31.000000000","message":"why not use a Set?","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"f7b6db812bf2657b8820cb734c0b0329a4cd46cb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            listener_ids \u003d [l.id for l in member.pool.listeners]"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            pool \u003d self._get_db_pool(session, self.pool_id)"},{"line_number":71,"context_line":"            for listener in pool.listeners:"},{"line_number":72,"context_line":"                if listener.id not in listener_ids:"},{"line_number":73,"context_line":"                    listener_ids.append(listener.id)"},{"line_number":74,"context_line":"        return listener_ids"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_f88699db","line":71,"in_reply_to":"dfeb2761_3503ed75","updated":"2017-04-03 16:45:32.000000000","message":"Err, technically this condition is impossible anyway. So, don\u0027t even need a set. Fixed.","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"57953b97385b06d6a2e3eb8f50189b3c20ab7d31","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            listener_ids \u003d [l.id for l in member.pool.listeners]"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            pool \u003d self._get_db_pool(session, self.pool_id)"},{"line_number":71,"context_line":"            for listener in pool.listeners:"},{"line_number":72,"context_line":"                if listener.id not in listener_ids:"},{"line_number":73,"context_line":"                    listener_ids.append(listener.id)"},{"line_number":74,"context_line":"        return listener_ids"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _test_lb_and_listener_and_pool_statuses(self, session, member\u003dNone):"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_3593ec51","line":73,"range":{"start_line":71,"start_character":12,"end_line":73,"end_character":52},"updated":"2017-04-03 16:07:39.000000000","message":"Should be replaced with set - code will be clearer and faster.","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"}],"octavia/api/v2/types/member.py":[{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"8a3aa8eb02229d79447809ae708fe91925ec8105","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":27,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":28,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":29,"context_line":"    ip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":30,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":31,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":32,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a461143_131867d2","line":29,"updated":"2017-01-31 23:20:41.000000000","message":"Needs to be \u0027address\u0027 as per: [1]. Also, I am not sure tenant_id should be included. \n\n[1] - http://developer.openstack.org/api-ref/networking/v2/?expanded\u003dupdate-pool-member-detail,list-pool-members-detail","commit_id":"89a39824b496f12880ec779792b020dc2ea3ac84"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d68e98d95307784b48135c594dad1baecd47bfc2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":27,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":28,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":29,"context_line":"    ip_address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":30,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":31,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":32,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a430d35_175cb7ec","line":29,"in_reply_to":"3a461143_131867d2","updated":"2017-02-09 17:14:12.000000000","message":"No tenant_id","commit_id":"89a39824b496f12880ec779792b020dc2ea3ac84"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":27,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":28,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":29,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":30,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":31,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":32,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType())"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_993b669b","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":20},"updated":"2017-03-31 00:21:16.000000000","message":"provisioning_status is missing.","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":27,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":28,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":29,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":30,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":31,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType())"},{"line_number":32,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType())"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_5d8818c5","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":20},"in_reply_to":"dfeb2761_993b669b","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":33,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":34,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":35,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":36,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":37,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_59d03e51","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":51},"updated":"2017-03-31 00:21:16.000000000","message":"Needs the # TODO(johnsom) Remove after deprecation (R series)\nAnd we need tenant_id","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":33,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":34,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":35,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":36,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":37,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_b1b195e4","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":51},"in_reply_to":"dfeb2761_59d03e51","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class MemberPOST(BaseMemberType):"},{"line_number":49,"context_line":"    \"\"\"Defines mandatory and optional attributes of a POST request.\"\"\""},{"line_number":50,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":51,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":52,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType(), mandatory\u003dTrue)"},{"line_number":53,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType(), mandatory\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_d95fae0c","line":50,"range":{"start_line":50,"start_character":25,"end_line":50,"end_character":45},"updated":"2017-03-31 00:21:16.000000000","message":"max length needed it is \"NAME_FIELD_SIZE\" in nlbaas.  It looks like 255.","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class MemberPOST(BaseMemberType):"},{"line_number":49,"context_line":"    \"\"\"Defines mandatory and optional attributes of a POST request.\"\"\""},{"line_number":50,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":51,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":52,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType(), mandatory\u003dTrue)"},{"line_number":53,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType(), mandatory\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_9d9ea005","line":50,"range":{"start_line":50,"start_character":25,"end_line":50,"end_character":45},"in_reply_to":"dfeb2761_d95fae0c","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":52,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType(), mandatory\u003dTrue)"},{"line_number":53,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType(), mandatory\u003dTrue)"},{"line_number":54,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType(), default\u003d1)"},{"line_number":55,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":56,"context_line":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":57,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_5974be99","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":59},"updated":"2017-03-31 00:21:16.000000000","message":"This should have a range limit.\nnlbaas has: \u0027type:range\u0027: [0, 256],","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":52,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType(), mandatory\u003dTrue)"},{"line_number":53,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType(), mandatory\u003dTrue)"},{"line_number":54,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType(), default\u003d1)"},{"line_number":55,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":56,"context_line":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":57,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_b10d1592","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":59},"in_reply_to":"dfeb2761_5974be99","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType(), default\u003d1)"},{"line_number":55,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":56,"context_line":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":57,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class MemberRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_b9750a9b","line":57,"updated":"2017-03-31 00:21:16.000000000","message":"Hate to say it, but tenant_id is needed here too.\nhttps://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/extensions/loadbalancerv2.py#L371","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType(), default\u003d1)"},{"line_number":55,"context_line":"    subnet_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":56,"context_line":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":57,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class MemberRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_31da2517","line":57,"in_reply_to":"dfeb2761_b9750a9b","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class MemberPUT(BaseMemberType):"},{"line_number":65,"context_line":"    \"\"\"Defines attributes that are acceptable of a PUT request.\"\"\""},{"line_number":66,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":67,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":68,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_59a95edd","line":66,"range":{"start_line":66,"start_character":25,"end_line":66,"end_character":44},"updated":"2017-03-31 00:21:16.000000000","message":"max length needed","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class MemberPUT(BaseMemberType):"},{"line_number":65,"context_line":"    \"\"\"Defines attributes that are acceptable of a PUT request.\"\"\""},{"line_number":66,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":67,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":68,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_dd9428eb","line":66,"range":{"start_line":66,"start_character":25,"end_line":66,"end_character":44},"in_reply_to":"dfeb2761_59a95edd","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1a677a4a31ac530417581e0b01018185555c0494","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \"\"\"Defines attributes that are acceptable of a PUT request.\"\"\""},{"line_number":66,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":67,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":68,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class MemberRootPUT(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_f9b7123a","line":68,"range":{"start_line":68,"start_character":27,"end_line":68,"end_character":47},"updated":"2017-03-31 00:21:16.000000000","message":"range like above.","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \"\"\"Defines attributes that are acceptable of a PUT request.\"\"\""},{"line_number":66,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":67,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"},{"line_number":68,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class MemberRootPUT(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_3d00b434","line":68,"range":{"start_line":68,"start_character":27,"end_line":68,"end_character":47},"in_reply_to":"dfeb2761_f9b7123a","updated":"2017-03-31 14:08:31.000000000","message":"Done","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6a7eff9770ed0ebbb70866cf31841e88f876fed5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class MemberResponse(BaseMemberType):"},{"line_number":27,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":28,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":29,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":30,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":31,"context_line":"    provisioning_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":32,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_14aa58d3","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":45},"updated":"2017-03-31 23:28:11.000000000","message":"name is returning null here, but \"\" on neutron-lbaas.  Opened bug: https://bugs.launchpad.net/octavia/+bug/1678336","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1d5f9f96da7cab1bf4c2e9bf732706afec13ebcc","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class MemberResponse(BaseMemberType):"},{"line_number":27,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":28,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":29,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":30,"context_line":"    operating_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":31,"context_line":"    provisioning_status \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":32,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool)"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_a8d90484","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":45},"in_reply_to":"dfeb2761_14aa58d3","updated":"2017-04-01 14:40:33.000000000","message":"Done","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c776c8076344c1870ca12ea9b6d53b2ab2f080e1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":64,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":65,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType(), mandatory\u003dTrue)"},{"line_number":66,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType(), mandatory\u003dTrue)"},{"line_number":67,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType(minimum\u003dconstants.MIN_WEIGHT,"},{"line_number":68,"context_line":"                                              maximum\u003dconstants.MAX_WEIGHT),"},{"line_number":69,"context_line":"                           default\u003d1)"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_1446d824","line":66,"range":{"start_line":66,"start_character":34,"end_line":66,"end_character":71},"updated":"2017-03-31 23:33:26.000000000","message":"This should have a range as well, neutron-lbaas has: validate\u0027: {\u0027type:range\u0027: [1, 65535]},\nOpened bug: https://bugs.launchpad.net/octavia/+bug/1678337","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1d5f9f96da7cab1bf4c2e9bf732706afec13ebcc","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":64,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":65,"context_line":"    address \u003d wtypes.wsattr(types.IPAddressType(), mandatory\u003dTrue)"},{"line_number":66,"context_line":"    protocol_port \u003d wtypes.wsattr(wtypes.IntegerType(), mandatory\u003dTrue)"},{"line_number":67,"context_line":"    weight \u003d wtypes.wsattr(wtypes.IntegerType(minimum\u003dconstants.MIN_WEIGHT,"},{"line_number":68,"context_line":"                                              maximum\u003dconstants.MAX_WEIGHT),"},{"line_number":69,"context_line":"                           default\u003d1)"}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_e8d02c53","line":66,"range":{"start_line":66,"start_character":34,"end_line":66,"end_character":71},"in_reply_to":"dfeb2761_1446d824","updated":"2017-04-01 14:40:33.000000000","message":"The constants already exist even! :)\nDone.","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"}],"octavia/db/prepare.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5cd4317b2cf2ea0122f7058e3e5bf3cd287f43e5","unresolved":false,"context_lines":[{"line_number":156,"context_line":"def create_member(member_dict, pool_id):"},{"line_number":157,"context_line":"    member_dict[\u0027pool_id\u0027] \u003d pool_id"},{"line_number":158,"context_line":"    member_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":159,"context_line":"    member_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":160,"context_line":"    return member_dict"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_912b1a93","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":55},"updated":"2017-03-31 23:06:57.000000000","message":"This should be NO_MONITOR if there is no health monitor assigned to the pool.  I have opened a bug for that: https://bugs.launchpad.net/octavia/+bug/1678330","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1d5f9f96da7cab1bf4c2e9bf732706afec13ebcc","unresolved":false,"context_lines":[{"line_number":156,"context_line":"def create_member(member_dict, pool_id):"},{"line_number":157,"context_line":"    member_dict[\u0027pool_id\u0027] \u003d pool_id"},{"line_number":158,"context_line":"    member_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":159,"context_line":"    member_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":160,"context_line":"    return member_dict"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"dfeb2761_28897474","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":55},"in_reply_to":"dfeb2761_912b1a93","updated":"2017-04-01 14:40:33.000000000","message":"Decided I may as well fix it here, there\u0027s enough to warrant a new patchset.\nDone.","commit_id":"620246327d45e8cc8079736b63b42bf090b9b088"}],"octavia/db/repositories.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4ee2d8cf81498cdeb6d63dc55e4a381b708f9542","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            self.listener.update(session, id,"},{"line_number":247,"context_line":"                                 provisioning_status\u003dlistener_prov_status)"},{"line_number":248,"context_line":"        if pool_id:"},{"line_number":249,"context_line":"            self.pool.update(session, pool_id,"},{"line_number":250,"context_line":"                             provisioning_status\u003dlb_prov_status)"},{"line_number":251,"context_line":"        return success"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_f91b9270","line":249,"updated":"2017-03-31 00:07:56.000000000","message":"Why do we need to do this?  The intent with this is to lock the load balancer and listener from being updated by multiple controllers.  My problem here is there is nothing to set it back to active in the flows.","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5a59dc3498df49ae83c231bd430a3ddbd8cae39a","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            self.listener.update(session, id,"},{"line_number":247,"context_line":"                                 provisioning_status\u003dlistener_prov_status)"},{"line_number":248,"context_line":"        if pool_id:"},{"line_number":249,"context_line":"            self.pool.update(session, pool_id,"},{"line_number":250,"context_line":"                             provisioning_status\u003dlb_prov_status)"},{"line_number":251,"context_line":"        return success"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"dfeb2761_9db7c087","line":249,"in_reply_to":"dfeb2761_f91b9270","updated":"2017-03-31 14:08:31.000000000","message":"The handler should set it back to active? It is only used if passed in, and should only be passed in if it is necessary? Adding the docstring for it, maybe that will help.","commit_id":"d1ace5407a51030e728232b58a99e7bb90b7b47b"}],"octavia/tests/functional/api/v2/base.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b69bbb838fd7c5c0c1638edb731dbc794348dbff","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return response.json"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def create_member(self, pool_id, address, protocol_port,"},{"line_number":195,"context_line":"                      status\u003d202, **optionals):"},{"line_number":196,"context_line":"        req_dict \u003d {\u0027address\u0027: address, \u0027protocol_port\u0027: protocol_port}"},{"line_number":197,"context_line":"        req_dict.update(optionals)"},{"line_number":198,"context_line":"        body \u003d {\u0027member\u0027: req_dict}"}],"source_content_type":"text/x-python","patch_set":25,"id":"ffe62b97_f3182582","line":195,"updated":"2017-03-24 22:02:04.000000000","message":"Reminder to self to change this to be default None, and then assemble an optionals dict to pass it through to response...\n\nstatus \u003d {\u0027status\u0027: status} if status else {}\nresponse \u003d self.post(path, body, **status)","commit_id":"f8ba8d331daf72021f02fada3922b3c625fa4f38"}],"octavia/tests/functional/api/v2/test_member.py":[{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"8a3aa8eb02229d79447809ae708fe91925ec8105","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from octavia.common import constants"},{"line_number":19,"context_line":"from octavia.network import base as network_base"},{"line_number":20,"context_line":"from octavia.tests.functional.api.v1 import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestMember(base.BaseAPITest):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a461143_d3717f0d","line":20,"updated":"2017-01-31 23:20:41.000000000","message":"Needs to be v2. Tests are running on older paths.","commit_id":"89a39824b496f12880ec779792b020dc2ea3ac84"}],"octavia/tests/unit/api/v2/types/test_members.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"57953b97385b06d6a2e3eb8f50189b3c20ab7d31","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_invalid_weight(self):"},{"line_number":67,"context_line":"        body \u003d {\"address\": \"10.0.0.1\", \"protocol_port\": 443,"},{"line_number":68,"context_line":"                \"weight\": \"test\"}"},{"line_number":69,"context_line":"        self.assertRaises(ValueError, wsme_json.fromjson, self._type, body)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_non_uuid_project_id(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_95cab86a","line":68,"range":{"start_line":68,"start_character":27,"end_line":68,"end_character":31},"updated":"2017-04-03 16:07:39.000000000","message":"Agree","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"98d725eee13dd1945c1037995a2a7c8bfc4f54f9","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_invalid_weight(self):"},{"line_number":67,"context_line":"        body \u003d {\"address\": \"10.0.0.1\", \"protocol_port\": 443,"},{"line_number":68,"context_line":"                \"weight\": \"test\"}"},{"line_number":69,"context_line":"        self.assertRaises(ValueError, wsme_json.fromjson, self._type, body)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_non_uuid_project_id(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_d59840c1","line":68,"updated":"2017-04-03 16:00:31.000000000","message":"would love to see a test with a number which is too high and too low","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"f7b6db812bf2657b8820cb734c0b0329a4cd46cb","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_invalid_weight(self):"},{"line_number":67,"context_line":"        body \u003d {\"address\": \"10.0.0.1\", \"protocol_port\": 443,"},{"line_number":68,"context_line":"                \"weight\": \"test\"}"},{"line_number":69,"context_line":"        self.assertRaises(ValueError, wsme_json.fromjson, self._type, body)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_non_uuid_project_id(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"dfeb2761_5b61ffa8","line":68,"range":{"start_line":68,"start_character":27,"end_line":68,"end_character":31},"in_reply_to":"dfeb2761_95cab86a","updated":"2017-04-03 16:45:32.000000000","message":"Done","commit_id":"41e7c716dadf38e47f3ef4fefbee18fb7c6475d0"}]}
