)]}'
{"octavia/api/v2/controllers/l7policy.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if not self.repositories.test_and_set_lb_and_listeners_prov_status("},{"line_number":76,"context_line":"                session, lb_id,"},{"line_number":77,"context_line":"                constants.PENDING_UPDATE, constants.PENDING_UPDATE,"},{"line_number":78,"context_line":"                listener_ids\u003dlistener_ids):"},{"line_number":79,"context_line":"            LOG.info(_LI(\"L7Policy cannot be created or modified because the \""},{"line_number":80,"context_line":"                         \"Load Balancer is in an immutable state\"))"},{"line_number":81,"context_line":"            raise exceptions.ImmutableObject(resource\u003d\u0027Load Balancer\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_14613837","line":78,"range":{"start_line":78,"start_character":16,"end_line":78,"end_character":43},"updated":"2017-04-01 00:22:40.000000000","message":"Pool here too?  Same taskflow work to do...","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if not self.repositories.test_and_set_lb_and_listeners_prov_status("},{"line_number":76,"context_line":"                session, lb_id,"},{"line_number":77,"context_line":"                constants.PENDING_UPDATE, constants.PENDING_UPDATE,"},{"line_number":78,"context_line":"                listener_ids\u003dlistener_ids):"},{"line_number":79,"context_line":"            LOG.info(_LI(\"L7Policy cannot be created or modified because the \""},{"line_number":80,"context_line":"                         \"Load Balancer is in an immutable state\"))"},{"line_number":81,"context_line":"            raise exceptions.ImmutableObject(resource\u003d\u0027Load Balancer\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_23c19755","line":78,"range":{"start_line":78,"start_character":16,"end_line":78,"end_character":43},"in_reply_to":"dfeb2761_14613837","updated":"2017-04-01 16:00:19.000000000","message":"Aren\u0027t L7Policies just on a Listener? Just because it *references* a pool, doesn\u0027t change that pool in any way, right?\nOr, are we worried about a referenced pool being *deleted*?","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a5b8470aed570249443e31093d19f60bd8ea70f4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    @wsme_pecan.wsexpose(l7policy_types.L7PolicyRootResponse,"},{"line_number":178,"context_line":"                         wtypes.text, body\u003dl7policy_types.L7PolicyRootPUT,"},{"line_number":179,"context_line":"                         status_code\u003d200)"},{"line_number":180,"context_line":"    def put(self, id, l7policy_):"},{"line_number":181,"context_line":"        \"\"\"Updates a l7policy.\"\"\""},{"line_number":182,"context_line":"        l7policy \u003d l7policy_.l7policy"},{"line_number":183,"context_line":"        l7policy_dict \u003d validate.sanitize_l7policy_api_args("}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_8fc5fd5d","line":180,"range":{"start_line":180,"start_character":3,"end_line":180,"end_character":33},"updated":"2017-04-03 18:13:21.000000000","message":"admin-state-up doesn\u0027t work","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a5b8470aed570249443e31093d19f60bd8ea70f4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    @wsme_pecan.wsexpose(l7policy_types.L7PolicyRootResponse,"},{"line_number":178,"context_line":"                         wtypes.text, body\u003dl7policy_types.L7PolicyRootPUT,"},{"line_number":179,"context_line":"                         status_code\u003d200)"},{"line_number":180,"context_line":"    def put(self, id, l7policy_):"},{"line_number":181,"context_line":"        \"\"\"Updates a l7policy.\"\"\""},{"line_number":182,"context_line":"        l7policy \u003d l7policy_.l7policy"},{"line_number":183,"context_line":"        l7policy_dict \u003d validate.sanitize_l7policy_api_args("}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_6fa2b9b0","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":32},"updated":"2017-04-03 18:13:21.000000000","message":"updating the position doesn\u0027t work","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cc79b8758cf164570cec2ff4fb08552b73784691","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    @wsme_pecan.wsexpose(l7policy_types.L7PolicyRootResponse,"},{"line_number":178,"context_line":"                         wtypes.text, body\u003dl7policy_types.L7PolicyRootPUT,"},{"line_number":179,"context_line":"                         status_code\u003d200)"},{"line_number":180,"context_line":"    def put(self, id, l7policy_):"},{"line_number":181,"context_line":"        \"\"\"Updates a l7policy.\"\"\""},{"line_number":182,"context_line":"        l7policy \u003d l7policy_.l7policy"},{"line_number":183,"context_line":"        l7policy_dict \u003d validate.sanitize_l7policy_api_args("}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_3e4d049a","line":180,"range":{"start_line":180,"start_character":3,"end_line":180,"end_character":33},"in_reply_to":"dfeb2761_8fc5fd5d","updated":"2017-04-03 19:28:07.000000000","message":"Working on it...","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"88cb32869f4c2f40659cf64f3d6cbcf2a93c8c5b","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    @wsme_pecan.wsexpose(l7policy_types.L7PolicyRootResponse,"},{"line_number":178,"context_line":"                         wtypes.text, body\u003dl7policy_types.L7PolicyRootPUT,"},{"line_number":179,"context_line":"                         status_code\u003d200)"},{"line_number":180,"context_line":"    def put(self, id, l7policy_):"},{"line_number":181,"context_line":"        \"\"\"Updates a l7policy.\"\"\""},{"line_number":182,"context_line":"        l7policy \u003d l7policy_.l7policy"},{"line_number":183,"context_line":"        l7policy_dict \u003d validate.sanitize_l7policy_api_args("}],"source_content_type":"text/x-python","patch_set":30,"id":"dfeb2761_a8cb1270","line":180,"range":{"start_line":180,"start_character":3,"end_line":180,"end_character":33},"updated":"2017-04-04 20:45:08.000000000","message":"position is still not updating","commit_id":"f2d22b31abb73e8c837343609d1b3a1c52b52da4"}],"octavia/api/v2/types/l7policy.py":[{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"81f14967f342fb1e7a198fc1f2e69c72681f779e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from wsme import types as wtypes"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from octavia.api.common import types"},{"line_number":18,"context_line":"from octavia.api.v1.types import l7rule"},{"line_number":19,"context_line":"from octavia.api.v1.types import pool"},{"line_number":20,"context_line":"from octavia.common import constants"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_41b3040a","line":18,"updated":"2017-01-31 18:59:45.000000000","message":"v2 types for l7rule\n\nnot that is makes a huge difference","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":22776,"name":"Nakul Dahiwade","email":"nakul.dahiwade@intel.com","username":"nakul.dahiwade"},"change_message_id":"61e8c3927d32c0a0162bc93246d1cf1a5b7a38a4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from wsme import types as wtypes"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from octavia.api.common import types"},{"line_number":18,"context_line":"from octavia.api.v1.types import l7rule"},{"line_number":19,"context_line":"from octavia.api.v1.types import pool"},{"line_number":20,"context_line":"from octavia.common import constants"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_b36b1384","line":18,"in_reply_to":"3a461143_41b3040a","updated":"2017-01-31 23:08:55.000000000","message":"I don\u0027t have v2 types for rules. When @Shashank rebases on top of this patch, he will make that change for rules.","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"81f14967f342fb1e7a198fc1f2e69c72681f779e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":73,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":74,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":75,"context_line":"    enabled \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":76,"context_line":"    action \u003d wtypes.wsattr("},{"line_number":77,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_L7POLICY_ACTIONS),"},{"line_number":78,"context_line":"        mandatory\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_81d16c25","line":75,"updated":"2017-01-31 18:59:45.000000000","message":"admin_state_up","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":22776,"name":"Nakul Dahiwade","email":"nakul.dahiwade@intel.com","username":"nakul.dahiwade"},"change_message_id":"61e8c3927d32c0a0162bc93246d1cf1a5b7a38a4","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":73,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":74,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":75,"context_line":"    enabled \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":76,"context_line":"    action \u003d wtypes.wsattr("},{"line_number":77,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_L7POLICY_ACTIONS),"},{"line_number":78,"context_line":"        mandatory\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_f3391ba5","line":75,"in_reply_to":"3a461143_81d16c25","updated":"2017-01-31 23:08:55.000000000","message":"Done","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"81f14967f342fb1e7a198fc1f2e69c72681f779e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"\"\"Defines attributes that are acceptable of a PUT request.\"\"\""},{"line_number":94,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":95,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":96,"context_line":"    enabled \u003d wtypes.wsattr(bool)"},{"line_number":97,"context_line":"    action \u003d wtypes.wsattr("},{"line_number":98,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_L7POLICY_ACTIONS))"},{"line_number":99,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_a1cca889","line":96,"updated":"2017-01-31 18:59:45.000000000","message":"ditto","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":22776,"name":"Nakul Dahiwade","email":"nakul.dahiwade@intel.com","username":"nakul.dahiwade"},"change_message_id":"61e8c3927d32c0a0162bc93246d1cf1a5b7a38a4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"\"\"Defines attributes that are acceptable of a PUT request.\"\"\""},{"line_number":94,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":95,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":96,"context_line":"    enabled \u003d wtypes.wsattr(bool)"},{"line_number":97,"context_line":"    action \u003d wtypes.wsattr("},{"line_number":98,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_L7POLICY_ACTIONS))"},{"line_number":99,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_33400307","line":96,"in_reply_to":"3a461143_a1cca889","updated":"2017-01-31 23:08:55.000000000","message":"Done","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":31,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":32,"context_line":"    provisioning_status \u003d wtypes.wsattr(wtypes.StringType())"},{"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":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":36,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType())"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_d4699025","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":57},"updated":"2017-04-01 00:22:40.000000000","message":"We need to think about this.  We have no way to measure this with the octavia driver as haproxy doesn\u0027t report these independently.  Maybe a vendor does however.  So, maybe we need to make sure we manage it\u0027s lifecycle in the octavia driver.  I.e. Be online all of the time except admin state down which would be offline.  then back admin state up.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":31,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":32,"context_line":"    provisioning_status \u003d wtypes.wsattr(wtypes.StringType())"},{"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":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":36,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType())"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_48c71814","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":57},"in_reply_to":"dfeb2761_d4699025","updated":"2017-04-01 16:00:19.000000000","message":"OK, so I *want* to set it to be OFFLINE by default on creation, and let the handler update it somewhere (which we can set in Octavia to follow admin_state_up). But, I\u0027m not sure where to do this -- the root issue is that the haproxy driver doesn\u0027t support this, right? So, it should be part of the haproxy driver code? Anywhere higher and we are in the common worker flows... But, we\u0027re not supposed to touch the db in the amphora-driver, right? So I\u0027m a bit confused as to where this can happen. Maybe the UDP health reporter can update this status also, just based on the configuration? :/\n\nI\u0027m leaving this alone for now and we can talk about it on IRC.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    redirect_url \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":42,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":43,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RuleResponse])"},{"line_number":44,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolResponse)"},{"line_number":45,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":46,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_740524c2","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":11},"updated":"2017-04-01 00:22:40.000000000","message":"This is rules in neutron-lbaas","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":41,"context_line":"    redirect_url \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":42,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":43,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RuleResponse])"},{"line_number":44,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolResponse)"},{"line_number":45,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":46,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_08359046","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":11},"in_reply_to":"dfeb2761_740524c2","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    redirect_url \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":42,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":43,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RuleResponse])"},{"line_number":44,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolResponse)"},{"line_number":45,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":46,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_340f9ce2","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":52},"updated":"2017-04-01 00:22:40.000000000","message":"neutron-lbaas does not have this. we only have the IDs above","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    redirect_url \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":42,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":43,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RuleResponse])"},{"line_number":44,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolResponse)"},{"line_number":45,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":46,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_a83b4436","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":52},"in_reply_to":"dfeb2761_340f9ce2","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class L7PolicyPOST(BaseMemberType):"},{"line_number":80,"context_line":"    \"\"\"Defines mandatory and optional attributes of a POST request.\"\"\""},{"line_number":81,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":82,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":83,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":84,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_74bc04dc","line":81,"range":{"start_line":81,"start_character":3,"end_line":81,"end_character":41},"updated":"2017-04-01 00:22:40.000000000","message":"No, we can\u0027t post an ID","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class L7PolicyPOST(BaseMemberType):"},{"line_number":80,"context_line":"    \"\"\"Defines mandatory and optional attributes of a POST request.\"\"\""},{"line_number":81,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":82,"context_line":"    name \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":83,"context_line":"    description \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d255))"},{"line_number":84,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_287e14e4","line":81,"range":{"start_line":81,"start_character":3,"end_line":81,"end_character":41},"in_reply_to":"dfeb2761_74bc04dc","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        mandatory\u003dTrue)"},{"line_number":92,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":93,"context_line":"    redirect_url \u003d wtypes.wsattr(types.URLType())"},{"line_number":94,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType(),"},{"line_number":95,"context_line":"                             default\u003dconstants.MAX_POLICY_POSITION)"},{"line_number":96,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolPOST)"},{"line_number":97,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RulePOST], default\u003d[])"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_949b0871","line":94,"range":{"start_line":94,"start_character":29,"end_line":94,"end_character":50},"updated":"2017-04-01 00:22:40.000000000","message":"Needs a range restriction:\n\u0027validate\u0027: {\u0027type:range\u0027: [1, 2147483647]},\nWith the comment: # range max is (2^31 - 1) to get around MySQL quirk","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        mandatory\u003dTrue)"},{"line_number":92,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":93,"context_line":"    redirect_url \u003d wtypes.wsattr(types.URLType())"},{"line_number":94,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType(),"},{"line_number":95,"context_line":"                             default\u003dconstants.MAX_POLICY_POSITION)"},{"line_number":96,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolPOST)"},{"line_number":97,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RulePOST], default\u003d[])"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_088350ce","line":94,"range":{"start_line":94,"start_character":29,"end_line":94,"end_character":50},"in_reply_to":"dfeb2761_949b0871","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType(),"},{"line_number":95,"context_line":"                             default\u003dconstants.MAX_POLICY_POSITION)"},{"line_number":96,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolPOST)"},{"line_number":97,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RulePOST], default\u003d[])"},{"line_number":98,"context_line":"    listener_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_d4919054","line":97,"range":{"start_line":97,"start_character":4,"end_line":97,"end_character":11},"updated":"2017-04-01 00:22:40.000000000","message":"rules","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType(),"},{"line_number":95,"context_line":"                             default\u003dconstants.MAX_POLICY_POSITION)"},{"line_number":96,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolPOST)"},{"line_number":97,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RulePOST], default\u003d[])"},{"line_number":98,"context_line":"    listener_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_085c707c","line":97,"range":{"start_line":97,"start_character":4,"end_line":97,"end_character":11},"in_reply_to":"dfeb2761_d4919054","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                             default\u003dconstants.MAX_POLICY_POSITION)"},{"line_number":96,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolPOST)"},{"line_number":97,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RulePOST], default\u003d[])"},{"line_number":98,"context_line":"    listener_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class L7PolicyRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_b4928cf5","line":98,"range":{"start_line":98,"start_character":4,"end_line":98,"end_character":50},"updated":"2017-04-01 00:22:40.000000000","message":"This is mandatory in neutron-lbaas","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                             default\u003dconstants.MAX_POLICY_POSITION)"},{"line_number":96,"context_line":"    redirect_pool \u003d wtypes.wsattr(pool.PoolPOST)"},{"line_number":97,"context_line":"    l7rules \u003d wtypes.wsattr([l7rule.L7RulePOST], default\u003d[])"},{"line_number":98,"context_line":"    listener_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class L7PolicyRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_e8602c35","line":98,"range":{"start_line":98,"start_character":4,"end_line":98,"end_character":50},"in_reply_to":"dfeb2761_b4928cf5","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_L7POLICY_ACTIONS))"},{"line_number":112,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":113,"context_line":"    redirect_url \u003d wtypes.wsattr(types.URLType())"},{"line_number":114,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class L7PolicyRootPUT(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_f47db41c","line":114,"range":{"start_line":114,"start_character":29,"end_line":114,"end_character":49},"updated":"2017-04-01 00:22:40.000000000","message":"Needs a range restriction: \u0027validate\u0027: {\u0027type:range\u0027: [1, 2147483647]},\nwith comment:  # range max is (2^31 - 1) to get around MySQL quirk","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_L7POLICY_ACTIONS))"},{"line_number":112,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":113,"context_line":"    redirect_url \u003d wtypes.wsattr(types.URLType())"},{"line_number":114,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class L7PolicyRootPUT(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_a8522466","line":114,"range":{"start_line":114,"start_character":29,"end_line":114,"end_character":49},"in_reply_to":"dfeb2761_f47db41c","updated":"2017-04-01 16:00:19.000000000","message":"Done","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"41b3fa16f07bacb7cca98d77cd504064277f08e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    _type_to_model_map \u003d {\u0027admin_state_up\u0027: \u0027enabled\u0027}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class L7PolicyResponse(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())"}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_24d298d3","line":26,"updated":"2017-04-03 17:58:04.000000000","message":"listener_id is missing","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cc79b8758cf164570cec2ff4fb08552b73784691","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    _type_to_model_map \u003d {\u0027admin_state_up\u0027: \u0027enabled\u0027}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class L7PolicyResponse(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())"}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_be6a34b0","line":26,"in_reply_to":"dfeb2761_24d298d3","updated":"2017-04-03 19:28:07.000000000","message":"Done","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"41b3fa16f07bacb7cca98d77cd504064277f08e2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":40,"context_line":"    redirect_url \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":41,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":42,"context_line":"    rules \u003d wtypes.wsattr([l7rule.L7RuleResponse])"},{"line_number":43,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":44,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_64630044","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":50},"updated":"2017-04-03 17:58:04.000000000","message":"This should return a [] when there are no rules.  Currently it just doesn\u0027t show up in the output.","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cc79b8758cf164570cec2ff4fb08552b73784691","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    redirect_pool_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":40,"context_line":"    redirect_url \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":41,"context_line":"    position \u003d wtypes.wsattr(wtypes.IntegerType())"},{"line_number":42,"context_line":"    rules \u003d wtypes.wsattr([l7rule.L7RuleResponse])"},{"line_number":43,"context_line":"    created_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":44,"context_line":"    updated_at \u003d wtypes.wsattr(wtypes.datetime.datetime)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_dea858dc","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":50},"in_reply_to":"dfeb2761_64630044","updated":"2017-04-03 19:28:07.000000000","message":"Are we *showing* rules? I can do this, as I think it should... But, previously nothing was showing sub-objects.\nShould pools show members? Right now it similarly does not.","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"}],"octavia/controller/worker/tasks/database_tasks.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"88cb32869f4c2f40659cf64f3d6cbcf2a93c8c5b","unresolved":false,"context_lines":[{"line_number":1727,"context_line":"        LOG.debug(\"Mark ACTIVE in DB for l7policy id: %s\","},{"line_number":1728,"context_line":"                  l7policy.id)"},{"line_number":1729,"context_line":""},{"line_number":1730,"context_line":"        op_status \u003d constants.ONLINE if l7policy.enabled else constants.O"},{"line_number":1731,"context_line":"        self.l7policy_repo.update(db_apis.get_session(),"},{"line_number":1732,"context_line":"                                  l7policy.id,"},{"line_number":1733,"context_line":"                                  provisioning_status\u003dconstants.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":30,"id":"dfeb2761_68c50a5b","line":1730,"range":{"start_line":1730,"start_character":72,"end_line":1730,"end_character":73},"updated":"2017-04-04 20:45:08.000000000","message":"OFFLINE","commit_id":"f2d22b31abb73e8c837343609d1b3a1c52b52da4"}],"octavia/db/migration/alembic_migrations/versions/034b2dc2f3e0_modernize_l7policy_fields.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"def upgrade():"},{"line_number":35,"context_line":"    op.add_column("},{"line_number":36,"context_line":"        u\u0027l7policy\u0027,"},{"line_number":37,"context_line":"        sa.Column(u\u0027operating_status\u0027, sa.String(16), nullable\u003dFalse)"},{"line_number":38,"context_line":"    )"},{"line_number":39,"context_line":"    op.create_foreign_key("},{"line_number":40,"context_line":"        u\u0027fk_l7policy_operating_status_name\u0027, u\u0027l7policy\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_d4cd105e","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":69},"updated":"2017-04-01 00:22:40.000000000","message":"nullable false here means we have to specify a default here too.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"def upgrade():"},{"line_number":35,"context_line":"    op.add_column("},{"line_number":36,"context_line":"        u\u0027l7policy\u0027,"},{"line_number":37,"context_line":"        sa.Column(u\u0027operating_status\u0027, sa.String(16), nullable\u003dFalse)"},{"line_number":38,"context_line":"    )"},{"line_number":39,"context_line":"    op.create_foreign_key("},{"line_number":40,"context_line":"        u\u0027fk_l7policy_operating_status_name\u0027, u\u0027l7policy\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_48d39839","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":69},"in_reply_to":"dfeb2761_d4cd105e","updated":"2017-04-01 16:00:19.000000000","message":"Ah, yes. Done.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        u\u0027fk_l7policy_operating_status_name\u0027, u\u0027l7policy\u0027,"},{"line_number":41,"context_line":"        u\u0027operating_status\u0027, [u\u0027operating_status\u0027], [u\u0027name\u0027]"},{"line_number":42,"context_line":"    )"},{"line_number":43,"context_line":"    prov_status \u003d table(u\u0027l7policy\u0027, column(u\u0027provisioning_status\u0027))"},{"line_number":44,"context_line":"    # We need to make this ... something. So, let\u0027s go with ACTIVE?"},{"line_number":45,"context_line":"    op.execute(prov_status.update().values("},{"line_number":46,"context_line":"        provisioning_status\u003dconstants.ACTIVE))"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_d4f63090","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":68},"updated":"2017-04-01 00:22:40.000000000","message":"We also need the foreign key constraint here","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        u\u0027fk_l7policy_operating_status_name\u0027, u\u0027l7policy\u0027,"},{"line_number":41,"context_line":"        u\u0027operating_status\u0027, [u\u0027operating_status\u0027], [u\u0027name\u0027]"},{"line_number":42,"context_line":"    )"},{"line_number":43,"context_line":"    prov_status \u003d table(u\u0027l7policy\u0027, column(u\u0027provisioning_status\u0027))"},{"line_number":44,"context_line":"    # We need to make this ... something. So, let\u0027s go with ACTIVE?"},{"line_number":45,"context_line":"    op.execute(prov_status.update().values("},{"line_number":46,"context_line":"        provisioning_status\u003dconstants.ACTIVE))"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_28a614c3","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":68},"in_reply_to":"dfeb2761_d4f63090","updated":"2017-04-01 16:00:19.000000000","message":"The model class shows it already existing.\nIt seems to have been added in: octavia/db/migration/alembic_migrations/versions/9b5473976d6d_add_provisioning_status_to_objects.py","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        u\u0027operating_status\u0027, [u\u0027operating_status\u0027], [u\u0027name\u0027]"},{"line_number":42,"context_line":"    )"},{"line_number":43,"context_line":"    prov_status \u003d table(u\u0027l7policy\u0027, column(u\u0027provisioning_status\u0027))"},{"line_number":44,"context_line":"    # We need to make this ... something. So, let\u0027s go with ACTIVE?"},{"line_number":45,"context_line":"    op.execute(prov_status.update().values("},{"line_number":46,"context_line":"        provisioning_status\u003dconstants.ACTIVE))"},{"line_number":47,"context_line":"    op.alter_column(u\u0027l7policy\u0027, u\u0027provisioning_status\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_74064489","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":67},"updated":"2017-04-01 00:22:40.000000000","message":"Yes, assume the best as we have no way to know the past.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    )"},{"line_number":43,"context_line":"    prov_status \u003d table(u\u0027l7policy\u0027, column(u\u0027provisioning_status\u0027))"},{"line_number":44,"context_line":"    # We need to make this ... something. So, let\u0027s go with ACTIVE?"},{"line_number":45,"context_line":"    op.execute(prov_status.update().values("},{"line_number":46,"context_line":"        provisioning_status\u003dconstants.ACTIVE))"},{"line_number":47,"context_line":"    op.alter_column(u\u0027l7policy\u0027, u\u0027provisioning_status\u0027,"},{"line_number":48,"context_line":"                    nullable\u003dFalse)"},{"line_number":49,"context_line":"    op.add_column("},{"line_number":50,"context_line":"        u\u0027l7policy\u0027,"},{"line_number":51,"context_line":"        sa.Column(u\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_f4f93480","line":48,"range":{"start_line":45,"start_character":4,"end_line":48,"end_character":35},"updated":"2017-04-01 00:22:40.000000000","message":"I think we can do this in one step by saying nullable\u003dfalse, default\u003dactive","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    )"},{"line_number":43,"context_line":"    prov_status \u003d table(u\u0027l7policy\u0027, column(u\u0027provisioning_status\u0027))"},{"line_number":44,"context_line":"    # We need to make this ... something. So, let\u0027s go with ACTIVE?"},{"line_number":45,"context_line":"    op.execute(prov_status.update().values("},{"line_number":46,"context_line":"        provisioning_status\u003dconstants.ACTIVE))"},{"line_number":47,"context_line":"    op.alter_column(u\u0027l7policy\u0027, u\u0027provisioning_status\u0027,"},{"line_number":48,"context_line":"                    nullable\u003dFalse)"},{"line_number":49,"context_line":"    op.add_column("},{"line_number":50,"context_line":"        u\u0027l7policy\u0027,"},{"line_number":51,"context_line":"        sa.Column(u\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_288f342b","line":48,"range":{"start_line":45,"start_character":4,"end_line":48,"end_character":35},"in_reply_to":"dfeb2761_f4f93480","updated":"2017-04-01 16:00:19.000000000","message":"The other nullable provisioning_status / operating_status columns don\u0027t have a default. But, this is a better way to do it. Switching to using a default in the alter, then dropping the default.\nAlso discovered some other objects that have the same bug, I\u0027ll fix them at the same time.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"}],"octavia/db/prepare.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    l7policy_dict \u003d validate.sanitize_l7policy_api_args(l7policy_dict,"},{"line_number":105,"context_line":"                                                        create\u003dTrue)"},{"line_number":106,"context_line":"    l7policy_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":107,"context_line":"    l7policy_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":108,"context_line":"    if not l7policy_dict.get(\u0027id\u0027):"},{"line_number":109,"context_line":"        l7policy_dict[\u0027id\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":110,"context_line":"    l7policy_dict[\u0027listener_id\u0027] \u003d listener_id"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_94730816","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":57},"updated":"2017-04-01 00:22:40.000000000","message":"See my earlier comment about this.  We need to manage this lifecycle as the health manager cannot measure this status in the octavia driver.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4071c2ad0e20a4710f3de3769ffecff8ec0b3c25","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    l7policy_dict \u003d validate.sanitize_l7policy_api_args(l7policy_dict,"},{"line_number":105,"context_line":"                                                        create\u003dTrue)"},{"line_number":106,"context_line":"    l7policy_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":107,"context_line":"    l7policy_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":108,"context_line":"    if not l7policy_dict.get(\u0027id\u0027):"},{"line_number":109,"context_line":"        l7policy_dict[\u0027id\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":110,"context_line":"    l7policy_dict[\u0027listener_id\u0027] \u003d listener_id"}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_0a879bd9","line":107,"range":{"start_line":107,"start_character":40,"end_line":107,"end_character":57},"updated":"2017-04-03 18:48:05.000000000","message":"Can we also update: https://github.com/openstack/octavia/blob/master/octavia/controller/healthmanager/update_db.py#L66\nTo accept this if one is sent?","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"7302d0f89dc34918cc69b8a7fea9080ba33181e4","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    l7policy_dict \u003d validate.sanitize_l7policy_api_args(l7policy_dict,"},{"line_number":105,"context_line":"                                                        create\u003dTrue)"},{"line_number":106,"context_line":"    l7policy_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":107,"context_line":"    l7policy_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":108,"context_line":"    if not l7policy_dict.get(\u0027id\u0027):"},{"line_number":109,"context_line":"        l7policy_dict[\u0027id\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":110,"context_line":"    l7policy_dict[\u0027listener_id\u0027] \u003d listener_id"}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_8fa85d77","line":107,"range":{"start_line":107,"start_character":3,"end_line":107,"end_character":57},"updated":"2017-04-03 18:15:24.000000000","message":"This is permanently OFFLINE...","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cc79b8758cf164570cec2ff4fb08552b73784691","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    l7policy_dict \u003d validate.sanitize_l7policy_api_args(l7policy_dict,"},{"line_number":105,"context_line":"                                                        create\u003dTrue)"},{"line_number":106,"context_line":"    l7policy_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":107,"context_line":"    l7policy_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":108,"context_line":"    if not l7policy_dict.get(\u0027id\u0027):"},{"line_number":109,"context_line":"        l7policy_dict[\u0027id\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":110,"context_line":"    l7policy_dict[\u0027listener_id\u0027] \u003d listener_id"}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_7e6eec95","line":107,"range":{"start_line":107,"start_character":3,"end_line":107,"end_character":57},"in_reply_to":"dfeb2761_6a2ce701","updated":"2017-04-03 19:28:07.000000000","message":"Doing it in the DB Tasks, but having it track admin_state_up / enabled.","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4071c2ad0e20a4710f3de3769ffecff8ec0b3c25","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    l7policy_dict \u003d validate.sanitize_l7policy_api_args(l7policy_dict,"},{"line_number":105,"context_line":"                                                        create\u003dTrue)"},{"line_number":106,"context_line":"    l7policy_dict[\u0027provisioning_status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":107,"context_line":"    l7policy_dict[\u0027operating_status\u0027] \u003d constants.OFFLINE"},{"line_number":108,"context_line":"    if not l7policy_dict.get(\u0027id\u0027):"},{"line_number":109,"context_line":"        l7policy_dict[\u0027id\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":110,"context_line":"    l7policy_dict[\u0027listener_id\u0027] \u003d listener_id"}],"source_content_type":"text/x-python","patch_set":26,"id":"dfeb2761_6a2ce701","line":107,"range":{"start_line":107,"start_character":3,"end_line":107,"end_character":57},"in_reply_to":"dfeb2761_8fa85d77","updated":"2017-04-03 18:48:05.000000000","message":"So, since there is no real way to get the l7policy ID from inside the amp, we can\u0027t really artificially send a status update.  I think we should just add it here: https://github.com/openstack/octavia/blob/master/octavia/controller/worker/tasks/database_tasks.py#L1731\nIt\u0027s a bit ugly, but will work.  I don\u0027t think it\u0027s worth creating a new task just for that.","commit_id":"8f53098b826ee1d2061aafe384fdd2f08413a16b"}],"octavia/db/repositories.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa87e2c690029e951bc27d841acb84c0cb65348d","unresolved":false,"context_lines":[{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        listener.l7policies.reorder()"},{"line_number":1236,"context_line":"        session.flush()"},{"line_number":1237,"context_line":"        l7policy.updated_at \u003d None"},{"line_number":1238,"context_line":"        return self.get(session, id\u003dl7policy.id)"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def delete(self, session, id, **filters):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_34355c47","line":1237,"range":{"start_line":1237,"start_character":0,"end_line":1237,"end_character":34},"updated":"2017-04-01 00:22:40.000000000","message":"Where is the created_at stamp?","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3171f18768addcbab99c5f229f6bed9c0473aac8","unresolved":false,"context_lines":[{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        listener.l7policies.reorder()"},{"line_number":1236,"context_line":"        session.flush()"},{"line_number":1237,"context_line":"        l7policy.updated_at \u003d None"},{"line_number":1238,"context_line":"        return self.get(session, id\u003dl7policy.id)"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def delete(self, session, id, **filters):"}],"source_content_type":"text/x-python","patch_set":21,"id":"dfeb2761_c8f9e880","line":1237,"range":{"start_line":1237,"start_character":0,"end_line":1237,"end_character":34},"in_reply_to":"dfeb2761_34355c47","updated":"2017-04-01 16:00:19.000000000","message":"It\u0027s added by default by the DB. The reason THIS has to exist is because since we create the policy and then touch it again already, it erroneously gets an \"updated_at\" timestamp from the DB, and we need to clear it.","commit_id":"b795d09eee6599caccbe3136b5274a79553bb388"}],"octavia/tests/functional/api/v2/test_l7policy.py":[{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"81f14967f342fb1e7a198fc1f2e69c72681f779e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_utils import uuidutils"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from octavia.common import constants"},{"line_number":18,"context_line":"from octavia.tests.functional.api.v1 import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestL7Policy(base.BaseAPITest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_e1eb10da","line":18,"updated":"2017-01-31 18:59:45.000000000","message":"v2","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"},{"author":{"_account_id":22776,"name":"Nakul Dahiwade","email":"nakul.dahiwade@intel.com","username":"nakul.dahiwade"},"change_message_id":"61e8c3927d32c0a0162bc93246d1cf1a5b7a38a4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_utils import uuidutils"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from octavia.common import constants"},{"line_number":18,"context_line":"from octavia.tests.functional.api.v1 import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestL7Policy(base.BaseAPITest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_330e43e5","line":18,"in_reply_to":"3a461143_e1eb10da","updated":"2017-01-31 23:08:55.000000000","message":"Done","commit_id":"e8bca521ec2bbbdd0c371a2f9b0dea6fbaef5c6c"}],"octavia/tests/unit/api/v2/types/test_l7policies.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"b1419b743c5a7f4f4eb8004a3cd8967d73132b46","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        body \u003d {\"listener_id\": self.listener_id,"},{"line_number":71,"context_line":"                \"action\": constants.L7POLICY_ACTION_REJECT,"},{"line_number":72,"context_line":"                \"position\": \"notvalid\"}"},{"line_number":73,"context_line":"        self.assertRaises(ValueError, wsme_json.fromjson, self._type,"},{"line_number":74,"context_line":"                          body)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_invalid_admin_state_up(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"dfeb2761_559670f2","line":73,"updated":"2017-04-03 16:14:16.000000000","message":"ok, what about using a number like 0 or -1? I also the column uis integer in the DB so we should try a number \u003e MAX_INT","commit_id":"ac40731f60243b13991060e52e1882187eefbbbc"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b7c0a3e5e4281380dc2a2da0962810c189cd1eb0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        body \u003d {\"listener_id\": self.listener_id,"},{"line_number":71,"context_line":"                \"action\": constants.L7POLICY_ACTION_REJECT,"},{"line_number":72,"context_line":"                \"position\": \"notvalid\"}"},{"line_number":73,"context_line":"        self.assertRaises(ValueError, wsme_json.fromjson, self._type,"},{"line_number":74,"context_line":"                          body)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_invalid_admin_state_up(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"dfeb2761_1b01376c","line":73,"in_reply_to":"dfeb2761_559670f2","updated":"2017-04-03 16:51:33.000000000","message":"Tests existed in PUT, but they should be in both. Done.","commit_id":"ac40731f60243b13991060e52e1882187eefbbbc"}]}
