)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Shilpa \u003cshilpa.devharakar@nttdata.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-02-12 20:36:47 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for multiple filters"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add support to read multiple options of filter"},{"line_number":10,"context_line":"(recovery_method|service_type) for listing FailoverSegments."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_d4c69a9b","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":32},"updated":"2020-02-13 04:31:08.000000000","message":"Add support to specify multiple values for filter options","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for multiple filters"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add support to read multiple options of filter"},{"line_number":10,"context_line":"(recovery_method|service_type) for listing FailoverSegments."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I3f3f2a25824263ef89d6be27f78bf92dfbc2a9a0"},{"line_number":13,"context_line":"Closes-Bug: #1854903"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_54bcead3","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":60},"updated":"2020-02-13 04:31:08.000000000","message":"Previously, if user passes recovery_method query parameter as auto,reserved_host as shown in the below url:\n\n  http://\u003cIP address\u003e/instance-ha/v1/5822950ca0fe4399886e695c26dae6c1/segments?\nrecovery_method\u003dauto%2Creserved_host\n\nThen, it wasn\u0027t returning failover segments with recovery method auto and reserved_host. It was treating `auto,reserved_host` as one recovery method.\n\nThis patch allows user to pass multiple values in recovery_method query parameter with a \u0027,\u0027 as delimiter.\n\nFor e.g.\nIf user wants to search for failover segments with recovery methods auto and reserved_host, it can be passed in recovery_method query parameter as `auto,reserved_host`.","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I3f3f2a25824263ef89d6be27f78bf92dfbc2a9a0"},{"line_number":13,"context_line":"Closes-Bug: #1854903"},{"line_number":14,"context_line":"Depends-On: I834f11e2cb3d147150dd28150bc79d4b6c99ae35"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_b4c3de8b","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":53},"updated":"2020-02-13 04:31:08.000000000","message":"No need to mention this dependency as it\u0027s not required.\npython-masakariclient changes are dependent on this patch which you have mentioned correctly in patch https://review.opendev.org/#/c/707417.","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"}],"api-ref/source/failover-segments.inc":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":".. note::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"   One can pass multiple values for filters in `service_type` and"},{"line_number":50,"context_line":"   `recovery_method` with a \u0027,\u0027 as delimiter. For example below request will"},{"line_number":51,"context_line":"   return segments with `recovery_method` as `auto` and `reserved_host`."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"   `http://\u003cIP address\u003e/instance-ha/v1/segments?recovery_method\u003dauto%2Creserved_host`"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":4,"id":"1fa4df85_392b09ec","line":51,"range":{"start_line":49,"start_character":1,"end_line":51,"end_character":72},"updated":"2020-02-26 05:47:41.000000000","message":"You can pass multiple values for query parameter ``service_type`` and ``recovery_method`` with \u0027,\u0027 as a delimiter. For example, below HTTP request will get segments matching ``recovery_method``  as `auto` and `reserved_host`.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":".. note::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"   One can pass multiple values for filters in `service_type` and"},{"line_number":50,"context_line":"   `recovery_method` with a \u0027,\u0027 as delimiter. For example below request will"},{"line_number":51,"context_line":"   return segments with `recovery_method` as `auto` and `reserved_host`."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"   `http://\u003cIP address\u003e/instance-ha/v1/segments?recovery_method\u003dauto%2Creserved_host`"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":4,"id":"1fa4df85_eeaa8183","line":51,"range":{"start_line":49,"start_character":1,"end_line":51,"end_character":72},"in_reply_to":"1fa4df85_392b09ec","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":47,"context_line":".. note::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"   You can pass multiple values for query parameter ``service_type`` and"},{"line_number":50,"context_line":"   ``recovery_method`` with \u0027,\u0027 as a delimiter. For example, below HTTP"},{"line_number":51,"context_line":"   request will get segments matching ``recovery_method``  as `auto` and"},{"line_number":52,"context_line":"   `reserved_host`."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"ff570b3c_73b0698b","line":50,"range":{"start_line":50,"start_character":28,"end_line":50,"end_character":32},"updated":"2020-05-18 05:25:19.000000000","message":"``comma``","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":47,"context_line":".. note::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"   You can pass multiple values for query parameter ``service_type`` and"},{"line_number":50,"context_line":"   ``recovery_method`` with \u0027,\u0027 as a delimiter. For example, below HTTP"},{"line_number":51,"context_line":"   request will get segments matching ``recovery_method``  as `auto` and"},{"line_number":52,"context_line":"   `reserved_host`."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"ff570b3c_1c756bfa","line":50,"range":{"start_line":50,"start_character":28,"end_line":50,"end_character":32},"in_reply_to":"ff570b3c_73b0698b","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"}],"masakari/api/openstack/ha/schemas/segments.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        },"},{"line_number":64,"context_line":"        \u0027service_type\u0027: parameter_types.name"},{"line_number":65,"context_line":"    },"},{"line_number":66,"context_line":"    # NOTE(shilpasd): This is kept True since failing for sort_keys, sort_dirs"},{"line_number":67,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":68,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_23bbd8c4","line":66,"range":{"start_line":66,"start_character":58,"end_line":66,"end_character":78},"updated":"2020-05-22 01:21:14.000000000","message":"You should validate sort_keys, sort_dirs as well here so that additionalProperties can be set to False to allow only valida query params.\n\nsort_dirs: enum[\u0027asc\u0027, \u0027desc\u0027]\nsort_keys: include all fields that\u0027s applicable for sorting segment.","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        },"},{"line_number":64,"context_line":"        \u0027service_type\u0027: parameter_types.name"},{"line_number":65,"context_line":"    },"},{"line_number":66,"context_line":"    # NOTE(shilpasd): This is kept True since failing for sort_keys, sort_dirs"},{"line_number":67,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":68,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_50096993","line":66,"range":{"start_line":66,"start_character":58,"end_line":66,"end_character":78},"in_reply_to":"ff570b3c_23bbd8c4","updated":"2020-05-22 14:10:58.000000000","message":"Done","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"3d8a078f4fb602be5b09fb996158c8eed3206027","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from masakari.api.validation import parameter_types"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"VALID_SORT_KEYS \u003d ["},{"line_number":21,"context_line":"    \u0027uuid\u0027, \u0027name\u0027, \u0027description\u0027, \u0027service_type\u0027, \u0027recovery_method\u0027]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"VALID_SORT_DIR \u003d [\u0027asc\u0027, \u0027desc\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_56476cbd","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":15},"updated":"2020-06-11 06:48:46.000000000","message":"As per API docs [1], sort_keys should be one of below:\n\n  created_at\n  description\n  name\n  updated_at\n  uuid\n  recovery_method\n  service_type\n\n[1] : https://docs.openstack.org/api-ref/instance-ha/?expanded\u003dlist-failoversegments-detail#list-failoversegments","commit_id":"798990d2bd03df371e649b75fb601a02c65ae4af"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"3d8a078f4fb602be5b09fb996158c8eed3206027","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            \u0027type\u0027: \u0027string\u0027, \u0027enum\u0027: VALID_SORT_KEYS}),"},{"line_number":71,"context_line":"        \u0027sort_dir\u0027: parameter_types.multi_params({"},{"line_number":72,"context_line":"            \u0027type\u0027: \u0027string\u0027, \u0027enum\u0027: VALID_SORT_DIR}),"},{"line_number":73,"context_line":"        \u0027limit\u0027: parameter_types.multi_params("},{"line_number":74,"context_line":"            parameter_types.non_negative_integer),"},{"line_number":75,"context_line":"        \u0027marker\u0027: parameter_types.multi_params({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":76,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_364918b7","line":73,"range":{"start_line":73,"start_character":33,"end_line":73,"end_character":45},"updated":"2020-06-11 06:48:46.000000000","message":"No need to accept this request parameter as type list, as per API doc, it should be a non-negative integer single value.","commit_id":"798990d2bd03df371e649b75fb601a02c65ae4af"}],"masakari/api/openstack/ha/segments.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"            filters \u003d {}"},{"line_number":49,"context_line":"            if \u0027recovery_method\u0027 in req.params:"},{"line_number":50,"context_line":"                recovery_method \u003d req.params[\u0027recovery_method\u0027].split(\u0027,\u0027)"},{"line_number":51,"context_line":"                filters[\u0027recovery_method\u0027] \u003d recovery_method"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"            if \u0027service_type\u0027 in req.params:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_99fa3d40","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":31},"updated":"2020-02-26 05:47:41.000000000","message":"I think recovery method should be validated against the expected ones\ni..e [\"auto\", \"reserved_host\", \"auto_priority\", \"rh_priority\"]\n\nReason: When you add a segment with invalid recovery_method, it returns 400 error. On the same lines, I think you should validate recovery method passed in the query parameters too.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"            filters \u003d {}"},{"line_number":49,"context_line":"            if \u0027recovery_method\u0027 in req.params:"},{"line_number":50,"context_line":"                recovery_method \u003d req.params[\u0027recovery_method\u0027].split(\u0027,\u0027)"},{"line_number":51,"context_line":"                filters[\u0027recovery_method\u0027] \u003d recovery_method"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"            if \u0027service_type\u0027 in req.params:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_ce91c554","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":31},"in_reply_to":"1fa4df85_99fa3d40","updated":"2020-02-26 13:39:06.000000000","message":"Agree, done.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                filters[\u0027recovery_method\u0027] \u003d recovery_method"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"                # Validate recovery_method"},{"line_number":55,"context_line":"                res \u003d [item for item in recovery_method if item not in list("},{"line_number":56,"context_line":"                    fields.FailoverSegmentRecoveryMethod.ALL)]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"                if len(res) \u003e 0:"},{"line_number":59,"context_line":"                    msg \u003d (\u0027Invalid recovery_method filter %s\u0027) % res"},{"line_number":60,"context_line":"                    raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            if \u0027service_type\u0027 in req.params:"},{"line_number":63,"context_line":"                service_type \u003d req.params[\u0027service_type\u0027].split(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_b3a68152","line":60,"range":{"start_line":55,"start_character":16,"end_line":60,"end_character":61},"updated":"2020-05-18 05:25:19.000000000","message":"This is one way of validating query parameter. but I would prefer to do such validation using jsonschema as it\u0027s done in other projects line Nova and Tacker.\n\nRefer patch : https://review.opendev.org/#/c/716248","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                filters[\u0027recovery_method\u0027] \u003d recovery_method"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"                # Validate recovery_method"},{"line_number":55,"context_line":"                res \u003d [item for item in recovery_method if item not in list("},{"line_number":56,"context_line":"                    fields.FailoverSegmentRecoveryMethod.ALL)]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"                if len(res) \u003e 0:"},{"line_number":59,"context_line":"                    msg \u003d (\u0027Invalid recovery_method filter %s\u0027) % res"},{"line_number":60,"context_line":"                    raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            if \u0027service_type\u0027 in req.params:"},{"line_number":63,"context_line":"                service_type \u003d req.params[\u0027service_type\u0027].split(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_5c64034a","line":60,"range":{"start_line":55,"start_character":16,"end_line":60,"end_character":61},"in_reply_to":"ff570b3c_b3a68152","updated":"2020-05-21 08:29:27.000000000","message":"removed, added schema validation as suggested.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"3d8a078f4fb602be5b09fb996158c8eed3206027","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"            filters \u003d {}"},{"line_number":50,"context_line":"            if \u0027recovery_method\u0027 in req.params:"},{"line_number":51,"context_line":"                recovery_method \u003d req.params[\u0027recovery_method\u0027].split(\u0027,\u0027)"},{"line_number":52,"context_line":"                filters[\u0027recovery_method\u0027] \u003d recovery_method"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"            if \u0027service_type\u0027 in req.params:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_b7ac02a0","line":51,"range":{"start_line":51,"start_character":70,"end_line":51,"end_character":73},"updated":"2020-06-11 06:48:46.000000000","message":"From consistency point of view, I think we should consider recovery_method and service_type request parameters should be provided in the form of list type similar to ``sort_key`` and ``sort_dir`` request query parameters.","commit_id":"798990d2bd03df371e649b75fb601a02c65ae4af"}],"masakari/api/validation/validators.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"@jsonschema.FormatChecker.cls_checks(\u0027multiple_recovery_method\u0027)"},{"line_number":118,"context_line":"def _validate_recovery_method(instance):"},{"line_number":119,"context_line":"    allowed_recovery_methods \u003d ["},{"line_number":120,"context_line":"        \"auto\", \"reserved_host\", \"auto_priority\", \"rh_priority\"]"},{"line_number":121,"context_line":"    bad_keys \u003d []"},{"line_number":122,"context_line":"    for key in instance.split(\",\"):"},{"line_number":123,"context_line":"        if key not in allowed_recovery_methods:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_43db6c20","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":64},"updated":"2020-05-22 01:21:14.000000000","message":"you should use fields.FailoverSegmentRecoveryMethod.ALL so that in future if a new recovery method is introduced, no changes are needed here.","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"@jsonschema.FormatChecker.cls_checks(\u0027multiple_recovery_method\u0027)"},{"line_number":118,"context_line":"def _validate_recovery_method(instance):"},{"line_number":119,"context_line":"    allowed_recovery_methods \u003d ["},{"line_number":120,"context_line":"        \"auto\", \"reserved_host\", \"auto_priority\", \"rh_priority\"]"},{"line_number":121,"context_line":"    bad_keys \u003d []"},{"line_number":122,"context_line":"    for key in instance.split(\",\"):"},{"line_number":123,"context_line":"        if key not in allowed_recovery_methods:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_90030174","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":64},"in_reply_to":"ff570b3c_43db6c20","updated":"2020-05-22 14:10:58.000000000","message":"Done","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":118,"context_line":"def _validate_recovery_method(instance):"},{"line_number":119,"context_line":"    allowed_recovery_methods \u003d ["},{"line_number":120,"context_line":"        \"auto\", \"reserved_host\", \"auto_priority\", \"rh_priority\"]"},{"line_number":121,"context_line":"    bad_keys \u003d []"},{"line_number":122,"context_line":"    for key in instance.split(\",\"):"},{"line_number":123,"context_line":"        if key not in allowed_recovery_methods:"},{"line_number":124,"context_line":"            bad_keys.append(key)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if len(bad_keys) \u003e 0:"},{"line_number":127,"context_line":"        msg \u003d _(\"Bad key(s) in recovery method: %s\") % \", \".join(bad_keys)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_03f2149b","line":124,"range":{"start_line":121,"start_character":3,"end_line":124,"end_character":32},"updated":"2020-05-22 01:21:14.000000000","message":"bad_keys \u003d [key for key in instance.split(\",\") if key not in allowed_recovery_methods]","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"def _validate_recovery_method(instance):"},{"line_number":119,"context_line":"    allowed_recovery_methods \u003d ["},{"line_number":120,"context_line":"        \"auto\", \"reserved_host\", \"auto_priority\", \"rh_priority\"]"},{"line_number":121,"context_line":"    bad_keys \u003d []"},{"line_number":122,"context_line":"    for key in instance.split(\",\"):"},{"line_number":123,"context_line":"        if key not in allowed_recovery_methods:"},{"line_number":124,"context_line":"            bad_keys.append(key)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if len(bad_keys) \u003e 0:"},{"line_number":127,"context_line":"        msg \u003d _(\"Bad key(s) in recovery method: %s\") % \", \".join(bad_keys)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_f0f7dd8b","line":124,"range":{"start_line":121,"start_character":3,"end_line":124,"end_character":32},"in_reply_to":"ff570b3c_03f2149b","updated":"2020-05-22 14:10:58.000000000","message":"Done","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if len(bad_keys) \u003e 0:"},{"line_number":127,"context_line":"        msg \u003d _(\"Bad key(s) in recovery method: %s\") % \", \".join(bad_keys)"},{"line_number":128,"context_line":"        raise jsonschema_exc.ValidationError(msg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    return True"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_638670de","line":128,"range":{"start_line":128,"start_character":14,"end_line":128,"end_character":44},"updated":"2020-05-22 01:21:14.000000000","message":"Use exception.InvalidInput","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if len(bad_keys) \u003e 0:"},{"line_number":127,"context_line":"        msg \u003d _(\"Bad key(s) in recovery method: %s\") % \", \".join(bad_keys)"},{"line_number":128,"context_line":"        raise jsonschema_exc.ValidationError(msg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    return True"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_d0f4598a","line":128,"range":{"start_line":128,"start_character":14,"end_line":128,"end_character":44},"in_reply_to":"ff570b3c_638670de","updated":"2020-05-22 14:10:58.000000000","message":"Done","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"}],"masakari/db/sqlalchemy/api.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    query \u003d model_query(context, models.FailoverSegment)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    if \u0027recovery_method\u0027 in filters:"},{"line_number":206,"context_line":"        recovery_method \u003d filters[\u0027recovery_method\u0027]"},{"line_number":207,"context_line":"        query \u003d query.filter("},{"line_number":208,"context_line":"            models.FailoverSegment.recovery_method.in_(recovery_method))"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_54606a9e","line":206,"range":{"start_line":206,"start_character":8,"end_line":206,"end_character":23},"updated":"2020-02-13 04:31:08.000000000","message":"nit: recovery_methods as it would contain more than one.\nIf possible, avoid adding this new variable as it\u0027s used only at below line.","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            models.FailoverSegment.recovery_method.in_(recovery_method))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    if \u0027service_type\u0027 in filters:"},{"line_number":211,"context_line":"        service_type \u003d filters[\u0027service_type\u0027]"},{"line_number":212,"context_line":"        query \u003d query.filter("},{"line_number":213,"context_line":"            models.FailoverSegment.service_type.in_(service_type))"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f40076b3","line":211,"range":{"start_line":211,"start_character":8,"end_line":211,"end_character":20},"updated":"2020-02-13 04:31:08.000000000","message":"ditto","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"}],"masakari/exception.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class Invalid(MasakariException):"},{"line_number":178,"context_line":"    msg_fmt \u003d _(\"Bad Request - Invalid Parameters\")"},{"line_number":179,"context_line":"    code \u003d 400"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class InvalidName(Invalid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_e371e00e","line":179,"range":{"start_line":179,"start_character":11,"end_line":179,"end_character":14},"updated":"2020-05-22 01:21:14.000000000","message":"Is there any issue using http.BAD_REQUEST?","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class Invalid(MasakariException):"},{"line_number":178,"context_line":"    msg_fmt \u003d _(\"Bad Request - Invalid Parameters\")"},{"line_number":179,"context_line":"    code \u003d 400"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class InvalidName(Invalid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_50ca091a","line":179,"range":{"start_line":179,"start_character":11,"end_line":179,"end_character":14},"in_reply_to":"ff570b3c_e371e00e","updated":"2020-05-22 14:10:58.000000000","message":"Yes resulting into below error.\nReferred nova/tacker, there it mentioned integer only.\n\n\n   File \"/usr/local/lib/python3.6/dist-packages/webob/response.py\", line 439, in _status__set\n     int(value.split()[0])\n ValueError: invalid literal for int() with base 10: \u0027HTTPStatus.BAD_REQUEST\u0027","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"3d8a078f4fb602be5b09fb996158c8eed3206027","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class Invalid(MasakariException):"},{"line_number":178,"context_line":"    msg_fmt \u003d _(\"Bad Request - Invalid Parameters\")"},{"line_number":179,"context_line":"    code \u003d http.BAD_REQUEST"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class InvalidName(Invalid):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_d7b096e0","side":"PARENT","line":179,"range":{"start_line":179,"start_character":11,"end_line":179,"end_character":27},"updated":"2020-06-11 06:48:46.000000000","message":"Any reason for this change?","commit_id":"e9dbb5df56d5249d27ca9505a9c34ad70edfaee4"}],"masakari/tests/unit/api/openstack/ha/test_segments.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                        \"The failover segment objects were not equal\")"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":85,"context_line":"    def test_index(self, mock_get_all):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_34960e4c","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":18},"updated":"2020-02-13 04:31:08.000000000","message":"Add unit tests for changes done in the api i..e api.openstack.ha.segments.py.","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"b670f87e1f4e6fac1af92ac6fd18fb6b0f6cb5df","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027\u0027"},{"line_number":120,"context_line":"                                                  \u0027get_all\u0027)"},{"line_number":121,"context_line":"    def test_index_filters(self, mock_get_all):"},{"line_number":122,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_23d46b1d","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":26},"updated":"2020-02-17 06:32:19.000000000","message":"Also, add unit tests for following cases:\n\n1. single recovery_method: auto\n2. single service_type: auto\n3. invalid recovery_method \u003d invalid","commit_id":"b78609cf840a0675fb74c0f53faf196cf38bb40b"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"fbe9d47ac83c2fafff8ea592aa19c41ccf1f7dc3","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027\u0027"},{"line_number":120,"context_line":"                                                  \u0027get_all\u0027)"},{"line_number":121,"context_line":"    def test_index_filters(self, mock_get_all):"},{"line_number":122,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d8377ddc","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":26},"in_reply_to":"3fa7e38b_23d46b1d","updated":"2020-02-17 14:46:15.000000000","message":"Done\nNewly added below Test Cases:\n1. test_index_filter_recovery_method\n2. test_index_filter_recovery_methods_valid_invalid\n3. test_index_filter_invalid_recovery_methods\n4. test_index_filters_service_type\n5. test_index_filter_service_types_valid_invalid\n6. test_index_filter_invalid_service_types","commit_id":"b78609cf840a0675fb74c0f53faf196cf38bb40b"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                  _make_segments_list(result))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":94,"context_line":"    def test_index_filter_recovery_method(self, mock_get_all):"},{"line_number":95,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_194bad84","line":94,"range":{"start_line":94,"start_character":19,"end_line":94,"end_character":24},"updated":"2020-02-26 05:47:41.000000000","message":"How about changing this to query_param?","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                  _make_segments_list(result))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":94,"context_line":"    def test_index_filter_recovery_method(self, mock_get_all):"},{"line_number":95,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_6e9e9164","line":94,"range":{"start_line":94,"start_character":19,"end_line":94,"end_character":24},"in_reply_to":"1fa4df85_194bad84","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":94,"context_line":"    def test_index_filter_recovery_method(self, mock_get_all):"},{"line_number":95,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":98,"context_line":"            \u0027/v1/segments?recovery_method\u003dauto\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_391469a0","line":95,"range":{"start_line":95,"start_character":36,"end_line":95,"end_character":52},"updated":"2020-02-26 05:47:41.000000000","message":"This should be a list and not dict.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":94,"context_line":"    def test_index_filter_recovery_method(self, mock_get_all):"},{"line_number":95,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":98,"context_line":"            \u0027/v1/segments?recovery_method\u003dauto\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_4e8f152a","line":95,"range":{"start_line":95,"start_character":36,"end_line":95,"end_character":52},"in_reply_to":"1fa4df85_391469a0","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":102,"context_line":"        result \u003d result[\u0027segments\u0027]"},{"line_number":103,"context_line":"        self._assert_segment_data(FAILOVER_SEGMENT, _make_segment_obj(result))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":106,"context_line":"    def test_index_filter_recovery_methods(self, mock_get_all):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_b9da99e6","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":78},"updated":"2020-02-26 05:47:41.000000000","message":"You can simply iterate through the result[\u0027segments\u0027] and confirm that recovery method is auto instead of comparing expected, actual segment list.\n\nPlease implement same assert for the rest of the newly added tests.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":102,"context_line":"        result \u003d result[\u0027segments\u0027]"},{"line_number":103,"context_line":"        self._assert_segment_data(FAILOVER_SEGMENT, _make_segment_obj(result))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":106,"context_line":"    def test_index_filter_recovery_methods(self, mock_get_all):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_ee836103","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":78},"in_reply_to":"1fa4df85_b9da99e6","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":119,"context_line":"    def test_index_filter_recovery_methods_valid_invalid(self, mock_get_all):"},{"line_number":120,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_79abc11c","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":56},"updated":"2020-02-26 05:47:41.000000000","message":"Rename it to test_index_filter_recovery_method_mixed and add a doc comment\n\n\"\"\"Test to list segments with valid and invalid recovery method\"\"\"","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":119,"context_line":"    def test_index_filter_recovery_methods_valid_invalid(self, mock_get_all):"},{"line_number":120,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_ce7a2523","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":56},"in_reply_to":"1fa4df85_79abc11c","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":133,"context_line":"    def test_index_filter_invalid_recovery_methods(self, mock_get_all):"},{"line_number":134,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_39bea965","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":50},"updated":"2020-02-26 05:47:41.000000000","message":"test_index_filter_recovery_method_invalid","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":133,"context_line":"    def test_index_filter_invalid_recovery_methods(self, mock_get_all):"},{"line_number":134,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_8e742d37","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":50},"in_reply_to":"1fa4df85_39bea965","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            \u0027/v1/segments?recovery_method\u003dfake_recovery_method\u0027,"},{"line_number":138,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":141,"context_line":"        result \u003d result[\u0027segments\u0027]"},{"line_number":142,"context_line":"        self.assertEqual([], result)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":145,"context_line":"    def test_index_filters_service_type(self, mock_get_all):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_7992e1f8","line":142,"range":{"start_line":140,"start_character":0,"end_line":142,"end_character":36},"updated":"2020-02-26 05:47:41.000000000","message":"self.assertEqual([], self.controller.index(req)[\u0027segments\u0027])","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            \u0027/v1/segments?recovery_method\u003dfake_recovery_method\u0027,"},{"line_number":138,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":141,"context_line":"        result \u003d result[\u0027segments\u0027]"},{"line_number":142,"context_line":"        self.assertEqual([], result)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":145,"context_line":"    def test_index_filters_service_type(self, mock_get_all):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_4e94f537","line":142,"range":{"start_line":140,"start_character":0,"end_line":142,"end_character":36},"in_reply_to":"1fa4df85_7992e1f8","updated":"2020-02-26 13:39:06.000000000","message":"Since added validation, raising \u0027HTTPBadRequest\u0027 for \u0027fake_recovery_method\u0027","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        self.assertEqual([], result)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":145,"context_line":"    def test_index_filters_service_type(self, mock_get_all):"},{"line_number":146,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_596845f4","line":145,"range":{"start_line":145,"start_character":8,"end_line":145,"end_character":39},"updated":"2020-02-26 05:47:41.000000000","message":"Rename it to test_index_filters_service_type","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        self.assertEqual([], result)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":145,"context_line":"    def test_index_filters_service_type(self, mock_get_all):"},{"line_number":146,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_ee98416b","line":145,"range":{"start_line":145,"start_character":8,"end_line":145,"end_character":39},"in_reply_to":"1fa4df85_596845f4","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":170,"context_line":"    def test_index_filter_service_types_valid_invalid(self, mock_get_all):"},{"line_number":171,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_997d5db3","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":53},"updated":"2020-02-26 05:47:41.000000000","message":"No need of this tests as it\u0027s possible to create segment with any service type.\n\nfake_service_type is not invalid.\n\nIf you intend to write test for non-existing service type, then please name the test   properly.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":170,"context_line":"    def test_index_filter_service_types_valid_invalid(self, mock_get_all):"},{"line_number":171,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_6eac518c","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":53},"in_reply_to":"1fa4df85_997d5db3","updated":"2020-02-26 13:39:06.000000000","message":"Keeping, modify test case name as suggested.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":183,"context_line":"    def test_index_filter_invalid_service_types(self, mock_get_all):"},{"line_number":184,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_394c699d","line":183,"range":{"start_line":183,"start_character":8,"end_line":183,"end_character":47},"updated":"2020-02-26 05:47:41.000000000","message":"ditto","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            FAILOVER_SEGMENT_LIST, _make_segments_list(result))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":183,"context_line":"    def test_index_filter_invalid_service_types(self, mock_get_all):"},{"line_number":184,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_8ea98d7c","line":183,"range":{"start_line":183,"start_character":8,"end_line":183,"end_character":47},"in_reply_to":"1fa4df85_394c699d","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self._assert_segment_data(FAILOVER_SEGMENT_LIST,"},{"line_number":91,"context_line":"                                  _make_segments_list(result))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":94,"context_line":"    def test_index_query_param_recovery_method(self, mock_get_all):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        failover_segment \u003d [{\"name\": \"segment1\", \"id\": \"1\","}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_3370b1dc","line":93,"range":{"start_line":93,"start_character":51,"end_line":93,"end_character":58},"updated":"2020-05-18 05:25:19.000000000","message":"get_all method should return list of objects objects.FailoverSegment.\nIMO, you should mock db.failover_segment_get_all_by_filters.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self._assert_segment_data(FAILOVER_SEGMENT_LIST,"},{"line_number":91,"context_line":"                                  _make_segments_list(result))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":94,"context_line":"    def test_index_query_param_recovery_method(self, mock_get_all):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        failover_segment \u003d [{\"name\": \"segment1\", \"id\": \"1\","}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_dc577357","line":93,"range":{"start_line":93,"start_character":51,"end_line":93,"end_character":58},"in_reply_to":"ff570b3c_3370b1dc","updated":"2020-05-21 08:29:27.000000000","message":"corrected return value.\nNot mocking db.failover_segment_get_all_by_filters, since API testing here.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":107,"context_line":"        for result in result[\u0027segments\u0027]:"},{"line_number":108,"context_line":"            self.assertEqual(\u0027auto\u0027, result[\u0027recovery_method\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_93789dc4","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":40},"updated":"2020-05-18 05:25:19.000000000","message":"for segment in result[\u0027segments\u0027]","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":107,"context_line":"        for result in result[\u0027segments\u0027]:"},{"line_number":108,"context_line":"            self.assertEqual(\u0027auto\u0027, result[\u0027recovery_method\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_1c4e0bc0","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":40},"in_reply_to":"ff570b3c_93789dc4","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self.assertEqual(\u0027auto\u0027, result[\u0027recovery_method\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":111,"context_line":"    def test_index_query_param_recovery_methods(self, mock_get_all):"},{"line_number":112,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d37e95ad","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":47},"updated":"2020-05-18 05:25:19.000000000","message":"Rename it to test_index_query_param_multiple_recovery_method","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self.assertEqual(\u0027auto\u0027, result[\u0027recovery_method\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":111,"context_line":"    def test_index_query_param_recovery_methods(self, mock_get_all):"},{"line_number":112,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_fc4877b3","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":47},"in_reply_to":"ff570b3c_d37e95ad","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":119,"context_line":"        for result in result[\u0027segments\u0027]:"},{"line_number":120,"context_line":"            self.assertIn("},{"line_number":121,"context_line":"                [\u0027auto\u0027, \u0027reserved_host\u0027], result[\u0027recovery_method\u0027])"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_737509cb","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":41},"updated":"2020-05-18 05:25:19.000000000","message":"for segment in result[\u0027segments\u0027]:","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":119,"context_line":"        for result in result[\u0027segments\u0027]:"},{"line_number":120,"context_line":"            self.assertIn("},{"line_number":121,"context_line":"                [\u0027auto\u0027, \u0027reserved_host\u0027], result[\u0027recovery_method\u0027])"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_5cc9a323","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":41},"in_reply_to":"ff570b3c_737509cb","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                [\u0027auto\u0027, \u0027reserved_host\u0027], result[\u0027recovery_method\u0027])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":124,"context_line":"    def test_index_query_param_recovery_method_mixed(self, mock_get_all):"},{"line_number":125,"context_line":"        \"\"\"Test to list segments with valid and invalid recovery method\"\"\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_134e4d96","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":52},"updated":"2020-05-18 05:25:19.000000000","message":"Rename it to test_index_query_param_invalid_recovery_method.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                [\u0027auto\u0027, \u0027reserved_host\u0027], result[\u0027recovery_method\u0027])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":124,"context_line":"    def test_index_query_param_recovery_method_mixed(self, mock_get_all):"},{"line_number":125,"context_line":"        \"\"\"Test to list segments with valid and invalid recovery method\"\"\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_3cccaf33","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":52},"in_reply_to":"ff570b3c_134e4d96","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":130,"context_line":"            \u0027/v1/segments?\u0027"},{"line_number":131,"context_line":"            \u0027recovery_method\u003dauto%2Creserved_host%2Cfake_recovery_method\u0027,"},{"line_number":132,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_f33759fe","line":131,"range":{"start_line":131,"start_character":29,"end_line":131,"end_character":72},"updated":"2020-05-18 05:25:19.000000000","message":"Instead of hard coding with encoded query parameter, you can use url encode.\nFix this comment for all such occurrences.\n\nfrom urllib.parse import urlencode\n\nfilter \u003d [\u0027auto\u0027, \u0027reserved_host\u0027, \u0027fake_recovery_method\u0027]\nencoded \u003d urlencode(dict(recovery_method\u003d\",\".join(filter)))\n\n\n\u0027/v1/segments?%s\u0027 % encoded","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":130,"context_line":"            \u0027/v1/segments?\u0027"},{"line_number":131,"context_line":"            \u0027recovery_method\u003dauto%2Creserved_host%2Cfake_recovery_method\u0027,"},{"line_number":132,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_9ccfbb27","line":131,"range":{"start_line":131,"start_character":29,"end_line":131,"end_character":72},"in_reply_to":"ff570b3c_f33759fe","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":137,"context_line":"    def test_index_query_param_recovery_method_invalid(self, mock_get_all):"},{"line_number":138,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_f352b93a","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":54},"updated":"2020-05-18 05:25:19.000000000","message":"No need of this unit test as it\u0027s getting covered in test_index_query_param_recovery_method_mixed.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":137,"context_line":"    def test_index_query_param_recovery_method_invalid(self, mock_get_all):"},{"line_number":138,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_7cd2a7d2","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":54},"in_reply_to":"ff570b3c_f352b93a","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        mock_get_all.return_value \u003d failover_segment"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":156,"context_line":"            \u0027/v1/segments?service_type\u003dCOMPUTE\u0027,"},{"line_number":157,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        result \u003d self.controller.index(req)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_9326ddcd","line":156,"range":{"start_line":156,"start_character":12,"end_line":156,"end_character":47},"updated":"2020-05-18 05:25:19.000000000","message":"filter \u003d \u0027COMPUTE\u0027\n\u0027/v1/segments?service_type\u003d%s\u0027 % filter\n....\n\nself.assertEqual(filter, result[\u0027service_type\u0027])","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        mock_get_all.return_value \u003d failover_segment"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":156,"context_line":"            \u0027/v1/segments?service_type\u003dCOMPUTE\u0027,"},{"line_number":157,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        result \u003d self.controller.index(req)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_dcdc93e5","line":156,"range":{"start_line":156,"start_character":12,"end_line":156,"end_character":47},"in_reply_to":"ff570b3c_9326ddcd","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":160,"context_line":"        for result in result[\u0027segments\u0027]:"},{"line_number":161,"context_line":"            self.assertEqual(\u0027COMPUTE\u0027, result[\u0027service_type\u0027])"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_5339e5ef","line":160,"range":{"start_line":160,"start_character":12,"end_line":160,"end_character":18},"updated":"2020-05-18 05:25:19.000000000","message":"segment","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            use_admin_context\u003dTrue)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        result \u003d self.controller.index(req)"},{"line_number":160,"context_line":"        for result in result[\u0027segments\u0027]:"},{"line_number":161,"context_line":"            self.assertEqual(\u0027COMPUTE\u0027, result[\u0027service_type\u0027])"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_bcd71fbf","line":160,"range":{"start_line":160,"start_character":12,"end_line":160,"end_character":18},"in_reply_to":"ff570b3c_5339e5ef","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            self.assertEqual(\u0027COMPUTE\u0027, result[\u0027service_type\u0027])"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":164,"context_line":"    def test_index_query_param_service_types(self, mock_get_all):"},{"line_number":165,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_732349be","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":44},"updated":"2020-05-18 05:25:19.000000000","message":"test_index_query_param_multiple_service_type","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            self.assertEqual(\u0027COMPUTE\u0027, result[\u0027service_type\u0027])"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":164,"context_line":"    def test_index_query_param_service_types(self, mock_get_all):"},{"line_number":165,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        req \u003d fakes.HTTPRequest.blank("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_1ce3aba5","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":44},"in_reply_to":"ff570b3c_732349be","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            self.assertIn([\u0027COMPUTE\u0027, \u0027CINDER\u0027], result[\u0027service_type\u0027])"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":176,"context_line":"    def test_index_query_param_service_type_mixed(self, mock_get_all):"},{"line_number":177,"context_line":"        \"\"\"Test to list segments for existing and non existing service type\"\"\""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d32cd5ad","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":49},"updated":"2020-05-18 05:25:19.000000000","message":"Rename it to test_index_query_param_invalid_service_type","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            self.assertIn([\u0027COMPUTE\u0027, \u0027CINDER\u0027], result[\u0027service_type\u0027])"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":176,"context_line":"    def test_index_query_param_service_type_mixed(self, mock_get_all):"},{"line_number":177,"context_line":"        \"\"\"Test to list segments for existing and non existing service type\"\"\""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        mock_get_all.return_value \u003d FAILOVER_SEGMENT_LIST"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_fcdd17dd","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":49},"in_reply_to":"ff570b3c_d32cd5ad","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            self.assertIn([\u0027COMPUTE\u0027, \u0027CINDER\u0027], result[\u0027service_type\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":190,"context_line":"    def test_index_query_param_for_non_existing_service_type("},{"line_number":191,"context_line":"            self, mock_get_all):"},{"line_number":192,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_b329619c","line":190,"range":{"start_line":190,"start_character":8,"end_line":190,"end_character":60},"updated":"2020-05-18 05:25:19.000000000","message":"No need of this test as it\u0027s getting covered in test_index_query_param_service_type_mixed.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            self.assertIn([\u0027COMPUTE\u0027, \u0027CINDER\u0027], result[\u0027service_type\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":190,"context_line":"    def test_index_query_param_for_non_existing_service_type("},{"line_number":191,"context_line":"            self, mock_get_all):"},{"line_number":192,"context_line":"        mock_get_all.return_value \u003d []"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_5cf24371","line":190,"range":{"start_line":190,"start_character":8,"end_line":190,"end_character":60},"in_reply_to":"ff570b3c_b329619c","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":136,"context_line":"            \u0027/v1/segments?%s\u0027 % encoded, use_admin_context\u003dTrue)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        self.assertRaises("},{"line_number":139,"context_line":"            exception.ValidationError, self.controller.index, req)"},{"line_number":140,"context_line":"        # self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_23f3d875","line":139,"range":{"start_line":138,"start_character":8,"end_line":139,"end_character":66},"updated":"2020-05-22 01:21:14.000000000","message":"I think it can fit in one line.\n\nself.assertRaises(exception.ValidationError, self.controller.index, req)","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":136,"context_line":"            \u0027/v1/segments?%s\u0027 % encoded, use_admin_context\u003dTrue)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        self.assertRaises("},{"line_number":139,"context_line":"            exception.ValidationError, self.controller.index, req)"},{"line_number":140,"context_line":"        # self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_b081e5c6","line":139,"range":{"start_line":138,"start_character":8,"end_line":139,"end_character":66},"in_reply_to":"ff570b3c_23f3d875","updated":"2020-05-22 14:10:58.000000000","message":"its resulting into 81 chracters per line, so keeping as is.","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        self.assertRaises("},{"line_number":139,"context_line":"            exception.ValidationError, self.controller.index, req)"},{"line_number":140,"context_line":"        # self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":143,"context_line":"    def test_index_query_param_service_type(self, mock_get_all):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_63edd08a","line":140,"range":{"start_line":140,"start_character":8,"end_line":140,"end_character":75},"updated":"2020-05-22 01:21:14.000000000","message":"Delete unwanted commented code.","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        self.assertRaises("},{"line_number":139,"context_line":"            exception.ValidationError, self.controller.index, req)"},{"line_number":140,"context_line":"        # self.assertRaises(exc.HTTPBadRequest, self.controller.index, req)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @mock.patch.object(ha_api.FailoverSegmentAPI, \u0027get_all\u0027)"},{"line_number":143,"context_line":"    def test_index_query_param_service_type(self, mock_get_all):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_f03cfd31","line":140,"range":{"start_line":140,"start_character":8,"end_line":140,"end_character":75},"in_reply_to":"ff570b3c_63edd08a","updated":"2020-05-22 14:10:58.000000000","message":"Done","commit_id":"4881a1dff526474d649fe62c50bad70bbc8a1147"}],"masakari/tests/unit/db/test_db_api.py":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":146,"context_line":"            context\u003dself.ctxt,"},{"line_number":147,"context_line":"            filters\u003d{\u0027recovery_method\u0027: [\u0027auto\u0027]})"},{"line_number":148,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_54f5cac7","line":147,"range":{"start_line":147,"start_character":22,"end_line":147,"end_character":37},"updated":"2020-02-13 04:31:08.000000000","message":"Also include service_type in the filters.","commit_id":"f45ffc7ec02ca12d9ea2122e98b2dbdd1661d61c"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                \u0027recovery_method\u0027: [\u0027auto\u0027],"},{"line_number":149,"context_line":"                \u0027service_type\u0027: [\u0027fake_service_type_1\u0027, \u0027fake_service_type_2\u0027]"},{"line_number":150,"context_line":"            })"},{"line_number":151,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":154,"context_line":"            context\u003dself.ctxt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_59360506","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":55},"updated":"2020-02-26 05:47:41.000000000","message":"Simply iterate through the list and assert for recovery_method and service type to check if it belongs to one of the required ones.","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                \u0027recovery_method\u0027: [\u0027auto\u0027],"},{"line_number":149,"context_line":"                \u0027service_type\u0027: [\u0027fake_service_type_1\u0027, \u0027fake_service_type_2\u0027]"},{"line_number":150,"context_line":"            })"},{"line_number":151,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":154,"context_line":"            context\u003dself.ctxt,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_eeb121e3","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":55},"in_reply_to":"1fa4df85_59360506","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            })"},{"line_number":151,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":154,"context_line":"            context\u003dself.ctxt,"},{"line_number":155,"context_line":"            filters\u003d{"},{"line_number":156,"context_line":"                \u0027recovery_method\u0027: [\u0027reserved_host\u0027],"},{"line_number":157,"context_line":"                \u0027service_type\u0027: [\u0027fake_service_type_3\u0027]})"},{"line_number":158,"context_line":"        self.assertEqual(1, len(real_failover_segment))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":161,"context_line":"            context\u003dself.ctxt,"},{"line_number":162,"context_line":"            filters\u003d{\u0027recovery_method\u0027: [\u0027auto\u0027, \u0027reserved_host\u0027]})"},{"line_number":163,"context_line":"        self.assertEqual(3, len(real_failover_segment))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt,"},{"line_number":167,"context_line":"            filters\u003d{"},{"line_number":168,"context_line":"                \u0027recovery_method\u0027: [\u0027fake_1\u0027, \u0027auto\u0027],"},{"line_number":169,"context_line":"                \u0027service_type\u0027: [\u0027fake_service_type_1\u0027,"},{"line_number":170,"context_line":"                                 \u0027fake_service_type_2\u0027, \u0027fake_service_type_3\u0027]"},{"line_number":171,"context_line":"            })"},{"line_number":172,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":175,"context_line":"            context\u003dself.ctxt,"},{"line_number":176,"context_line":"            filters\u003d{"},{"line_number":177,"context_line":"                \u0027recovery_method\u0027: [\u0027fake_1\u0027], \u0027service_type\u0027: [\u0027fake_1\u0027]})"},{"line_number":178,"context_line":"        self.assertEqual(0, len(real_failover_segment))"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_failover_segment_not_found(self):"},{"line_number":181,"context_line":"        self._create_failover_segment(self._get_fake_values())"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_99047d19","line":178,"range":{"start_line":153,"start_character":8,"end_line":178,"end_character":55},"updated":"2020-02-26 05:47:41.000000000","message":"Is it possible to add these  tests scenario using ddt?","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            })"},{"line_number":151,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":154,"context_line":"            context\u003dself.ctxt,"},{"line_number":155,"context_line":"            filters\u003d{"},{"line_number":156,"context_line":"                \u0027recovery_method\u0027: [\u0027reserved_host\u0027],"},{"line_number":157,"context_line":"                \u0027service_type\u0027: [\u0027fake_service_type_3\u0027]})"},{"line_number":158,"context_line":"        self.assertEqual(1, len(real_failover_segment))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":161,"context_line":"            context\u003dself.ctxt,"},{"line_number":162,"context_line":"            filters\u003d{\u0027recovery_method\u0027: [\u0027auto\u0027, \u0027reserved_host\u0027]})"},{"line_number":163,"context_line":"        self.assertEqual(3, len(real_failover_segment))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt,"},{"line_number":167,"context_line":"            filters\u003d{"},{"line_number":168,"context_line":"                \u0027recovery_method\u0027: [\u0027fake_1\u0027, \u0027auto\u0027],"},{"line_number":169,"context_line":"                \u0027service_type\u0027: [\u0027fake_service_type_1\u0027,"},{"line_number":170,"context_line":"                                 \u0027fake_service_type_2\u0027, \u0027fake_service_type_3\u0027]"},{"line_number":171,"context_line":"            })"},{"line_number":172,"context_line":"        self.assertEqual(2, len(real_failover_segment))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":175,"context_line":"            context\u003dself.ctxt,"},{"line_number":176,"context_line":"            filters\u003d{"},{"line_number":177,"context_line":"                \u0027recovery_method\u0027: [\u0027fake_1\u0027], \u0027service_type\u0027: [\u0027fake_1\u0027]})"},{"line_number":178,"context_line":"        self.assertEqual(0, len(real_failover_segment))"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_failover_segment_not_found(self):"},{"line_number":181,"context_line":"        self._create_failover_segment(self._get_fake_values())"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_0eb7ddd7","line":178,"range":{"start_line":153,"start_character":8,"end_line":178,"end_character":55},"in_reply_to":"1fa4df85_99047d19","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            \u0027recovery_method\u0027: [\u0027fake_1\u0027],"},{"line_number":162,"context_line":"            \u0027service_type\u0027: [\u0027fake_1\u0027]}"},{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_query_params(self, filter_dict):"},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_f320f9ae","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":53},"updated":"2020-05-18 05:25:19.000000000","message":"Rename it to test_failover_segment_get_all_by_filters.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            \u0027recovery_method\u0027: [\u0027fake_1\u0027],"},{"line_number":162,"context_line":"            \u0027service_type\u0027: [\u0027fake_1\u0027]}"},{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_query_params(self, filter_dict):"},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_3cf5cf57","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":53},"in_reply_to":"ff570b3c_f320f9ae","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            \u0027service_type\u0027: [\u0027fake_1\u0027]}"},{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_query_params(self, filter_dict):"},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        for failover_segment in real_failover_segment:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_8e14f245","line":165,"range":{"start_line":165,"start_character":35,"end_line":165,"end_character":70},"updated":"2020-05-18 05:25:19.000000000","message":"No test data is created before calling this method.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"a316030f76e72de10d954d71794ba489c120bd4c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            \u0027service_type\u0027: [\u0027fake_1\u0027]}"},{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_query_params(self, filter_dict):"},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        for failover_segment in real_failover_segment:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_7060ed36","line":165,"range":{"start_line":165,"start_character":35,"end_line":165,"end_character":70},"in_reply_to":"ff570b3c_43936c01","updated":"2020-05-22 14:10:58.000000000","message":"Added","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"93aab7d17ad815a3e96a0884219d4bd041eb52b3","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            \u0027service_type\u0027: [\u0027fake_1\u0027]}"},{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_query_params(self, filter_dict):"},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        for failover_segment in real_failover_segment:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_43936c01","line":165,"range":{"start_line":165,"start_character":35,"end_line":165,"end_character":70},"in_reply_to":"ff570b3c_7cebc776","updated":"2020-05-22 01:21:14.000000000","message":"I mean to say actual segments data.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            \u0027service_type\u0027: [\u0027fake_1\u0027]}"},{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_query_params(self, filter_dict):"},{"line_number":165,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        for failover_segment in real_failover_segment:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_7cebc776","line":165,"range":{"start_line":165,"start_character":35,"end_line":165,"end_character":70},"in_reply_to":"ff570b3c_8e14f245","updated":"2020-05-21 08:29:27.000000000","message":"test data will be ddt data here.","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        for failover_segment in real_failover_segment:"},{"line_number":169,"context_line":"            self.assertIn("},{"line_number":170,"context_line":"                failover_segment[\u0027recovery_method\u0027],"},{"line_number":171,"context_line":"                [\u0027auto\u0027, \u0027reserved_host\u0027])"},{"line_number":172,"context_line":"            self.assertIn("},{"line_number":173,"context_line":"                failover_segment[\u0027service_type\u0027],"},{"line_number":174,"context_line":"                [\u0027fake_service_type_1\u0027, \u0027fake_service_type_2\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_ee05ae12","line":171,"range":{"start_line":169,"start_character":12,"end_line":171,"end_character":42},"updated":"2020-05-18 05:25:19.000000000","message":"It should follow convention:\nself.assertIn(expected, actual)","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"452acb83632014b16d449b540104348c16421a2e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        for failover_segment in real_failover_segment:"},{"line_number":169,"context_line":"            self.assertIn("},{"line_number":170,"context_line":"                failover_segment[\u0027recovery_method\u0027],"},{"line_number":171,"context_line":"                [\u0027auto\u0027, \u0027reserved_host\u0027])"},{"line_number":172,"context_line":"            self.assertIn("},{"line_number":173,"context_line":"                failover_segment[\u0027service_type\u0027],"},{"line_number":174,"context_line":"                [\u0027fake_service_type_1\u0027, \u0027fake_service_type_2\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_dc05b347","line":171,"range":{"start_line":169,"start_character":12,"end_line":171,"end_character":42},"in_reply_to":"ff570b3c_ee05ae12","updated":"2020-05-21 08:29:27.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"02c318cc2510a4729783aa9986d3f40c0f0214c1","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    )"},{"line_number":164,"context_line":"    def test_failover_segment_get_all_by_filters(self, filter_dict):"},{"line_number":165,"context_line":"        [self._create_failover_segment(p)"},{"line_number":166,"context_line":"                             for p in self._get_fake_values_list()]"},{"line_number":167,"context_line":"        real_failover_segment \u003d db.failover_segment_get_all_by_filters("},{"line_number":168,"context_line":"            context\u003dself.ctxt, filters\u003dfilter_dict)"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_46508f0b","line":166,"updated":"2020-05-22 15:11:29.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"0044f6bbe2fe3856c0e558ce708970edabe85a8e"}],"releasenotes/notes/host-input-parameter-to-segement-list-62878af16b541f7d.yaml":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e37258f037197997c1ff3f8a37cb8c60e2e2006d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa7e38b_b4d43e1f","side":"PARENT","updated":"2020-02-13 04:31:08.000000000","message":"It\u0027s not required as you are not adding host parameter in this patch.","commit_id":"8b122a8627ab096603d895089efa81c683a6dd41"}],"releasenotes/notes/multiple_filter_parameters-8f321db52196d368.yaml":[{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"782a6f0fc6e61e490cb4da7cb03ef5e2e9e84229","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes `bug 1854903`_ which will return all segments with recovery_method"},{"line_number":5,"context_line":"    as `auto` and `reserved_host` for below \u0027GET /segments\u0027 request:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    http://\u003cIP address\u003e/instance-ha/v1/segments?recovery_method\u003dauto%2Creserved_host"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1fa4df85_1c0e3b34","line":5,"range":{"start_line":4,"start_character":25,"end_line":5,"end_character":68},"updated":"2020-02-26 05:47:41.000000000","message":"in which ``GET /segments`` API will accept query parameters ``recovery_method`` and ``service_type`` with multiple values separated with \u0027,\u0027 as a delimiter.\n\nFor example, below HTTP request will get segments matching ``recovery_method`` as auto and reserved_host.\n\n  http://\u003cIP address\u003e/instance-ha/v1/segments?recovery_method\u003dauto%2Creserved_host","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7f64630e8f8d10f0b354adcb0b4c1b16eb095e66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes `bug 1854903`_ which will return all segments with recovery_method"},{"line_number":5,"context_line":"    as `auto` and `reserved_host` for below \u0027GET /segments\u0027 request:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    http://\u003cIP address\u003e/instance-ha/v1/segments?recovery_method\u003dauto%2Creserved_host"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1fa4df85_cec8e556","line":5,"range":{"start_line":4,"start_character":25,"end_line":5,"end_character":68},"in_reply_to":"1fa4df85_1c0e3b34","updated":"2020-02-26 13:39:06.000000000","message":"Done","commit_id":"50cc292d4866c59e1ce60a3405fe44052974100e"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"e0b92c3a224321252c47ae3efebaff382610251c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes `bug 1854903`_ in which ``GET /segments`` API will accept query"},{"line_number":5,"context_line":"    parameters ``recovery_method`` and ``service_type`` with multiple values"},{"line_number":6,"context_line":"    separated with \u0027,\u0027 as a delimiter."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    For example, below HTTP request will get segments matching"},{"line_number":9,"context_line":"    ``recovery_method`` as auto and reserved_host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ff570b3c_6e119e52","line":6,"range":{"start_line":6,"start_character":19,"end_line":6,"end_character":23},"updated":"2020-05-18 05:25:19.000000000","message":"``comma``","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"},{"author":{"_account_id":27302,"name":"Shilpa Devharakar","email":"shilpa.devharakar@nttdata.com","username":"shilpa.devharakar"},"change_message_id":"7bc1aa09f5d0d3869b854177590181701baf29d6","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes `bug 1854903`_ in which ``GET /segments`` API will accept query"},{"line_number":5,"context_line":"    parameters ``recovery_method`` and ``service_type`` with multiple values"},{"line_number":6,"context_line":"    separated with \u0027,\u0027 as a delimiter."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    For example, below HTTP request will get segments matching"},{"line_number":9,"context_line":"    ``recovery_method`` as auto and reserved_host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ff570b3c_9cb69b89","line":6,"range":{"start_line":6,"start_character":19,"end_line":6,"end_character":23},"in_reply_to":"ff570b3c_6e119e52","updated":"2020-05-21 08:31:17.000000000","message":"Done","commit_id":"e3621a2d4fea51a6b6ddb56c27fca9b75b647d9f"}]}
