)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"70148ce46b051464f490681e8c1cad8a980e98a1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"check on disabled) to be called inappropriately on devices that"},{"line_number":20,"context_line":"don\u0027t support replication."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"This patch adds a decorator to the new replication methods which wil"},{"line_number":23,"context_line":"check that the volume is of type with replication_enabled\u003dTrue before"},{"line_number":24,"context_line":"attempting any replication related operations."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a2fa921_50a91fde","line":22,"updated":"2015-10-07 20:33:32.000000000","message":"typo:  wil -\u003e will","commit_id":"d2e1d3e575981698347e69ff1f29319dfffb2f78"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"d893ec02ac24c074fca34320037158261c73c95a","unresolved":false,"context_lines":[{"line_number":6319,"context_line":"                                           host\u003dCONF.host,"},{"line_number":6320,"context_line":"                                           replication_status\u003d\u0027disabled\u0027)"},{"line_number":6321,"context_line":"        volume[\u0027volume_type_id\u0027] \u003d \u0027dab02f01-b50f-4ed6-8d42-2b5b9680996e\u0027"},{"line_number":6322,"context_line":"        fake_specs \u003d {\u0027replication_enabled\u0027: \u0027true\u0027}"},{"line_number":6323,"context_line":"        with mock.patch.object(volume_rpcapi.VolumeAPI,"},{"line_number":6324,"context_line":"                               \u0027enable_replication\u0027) as mock_enable_rep,\\"},{"line_number":6325,"context_line":"            mock.patch.object(volume_types,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a2fa921_bc540c21","line":6322,"updated":"2015-10-07 22:58:54.000000000","message":"I still don\u0027t think {\u0027replication_enabled\u0027: \u0027true\u0027} is a valid test case. For the capabilities matching to be correct, extra specs needs to look like this:\n{u\u0027replication_enabled\u0027: u\u0027\u003cis\u003e True\u0027, u\u0027volume_backend_name\u0027: u\u0027foo\u0027}\n\nIf replication_enabled was just \u0027true\u0027, replication would not actually be considered enabled. I see that in api.py you are grabbing the bool value, but that is not how the capabilities matching does it. I think fake_specs should \u003d {\u0027replication_enabled\u0027: \u0027\u003cis\u003e True\u0027}, and the valid_replication_volume should check for that.","commit_id":"2130482f56bac95e6f2de3eec1f9a75ece7bce28"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"91a09b5d4440504451e21cd9a38f4dec3f685f46","unresolved":false,"context_lines":[{"line_number":6319,"context_line":"                                           host\u003dCONF.host,"},{"line_number":6320,"context_line":"                                           replication_status\u003d\u0027disabled\u0027)"},{"line_number":6321,"context_line":"        volume[\u0027volume_type_id\u0027] \u003d \u0027dab02f01-b50f-4ed6-8d42-2b5b9680996e\u0027"},{"line_number":6322,"context_line":"        fake_specs \u003d {\u0027replication_enabled\u0027: \u0027true\u0027}"},{"line_number":6323,"context_line":"        with mock.patch.object(volume_rpcapi.VolumeAPI,"},{"line_number":6324,"context_line":"                               \u0027enable_replication\u0027) as mock_enable_rep,\\"},{"line_number":6325,"context_line":"            mock.patch.object(volume_types,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a2fa921_86a8da21","line":6322,"in_reply_to":"7a2fa921_bc540c21","updated":"2015-10-07 23:26:55.000000000","message":"Done","commit_id":"2130482f56bac95e6f2de3eec1f9a75ece7bce28"}],"cinder/volume/api.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"70148ce46b051464f490681e8c1cad8a980e98a1","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    This decorator requires the first 3 args of the wrapped function"},{"line_number":122,"context_line":"    to be (self, context, volume)"},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":"    import pdb;pdb.set_trace()"},{"line_number":125,"context_line":"    @functools.wraps(func)"},{"line_number":126,"context_line":"    def wrapped(self, context, volume, *args, **kwargs):"},{"line_number":127,"context_line":"        rep_capable \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_70ea1b11","line":124,"updated":"2015-10-07 20:33:32.000000000","message":"This shouldn\u0027t be here, should it?","commit_id":"d2e1d3e575981698347e69ff1f29319dfffb2f78"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"657b59754e54c3616842cfebc509e6eff52ee452","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    This decorator requires the first 3 args of the wrapped function"},{"line_number":122,"context_line":"    to be (self, context, volume)"},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":"    import pdb;pdb.set_trace()"},{"line_number":125,"context_line":"    @functools.wraps(func)"},{"line_number":126,"context_line":"    def wrapped(self, context, volume, *args, **kwargs):"},{"line_number":127,"context_line":"        rep_capable \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_9086d763","line":124,"updated":"2015-10-07 20:31:46.000000000","message":"pdb ?","commit_id":"d2e1d3e575981698347e69ff1f29319dfffb2f78"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"10a4b45d42b0980abab9a0ed7490c57cdce5b574","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            extra_specs \u003d volume_types.get_volume_type_extra_specs("},{"line_number":130,"context_line":"                volume.get(\u0027volume_type_id\u0027))"},{"line_number":131,"context_line":"            rep_capable \u003d extra_specs.get(\u0027replication_enabled\u0027, False)"},{"line_number":132,"context_line":"        if not rep_capable:"},{"line_number":133,"context_line":"            msg \u003d _(\"Volume is not a replication enabled volume, \""},{"line_number":134,"context_line":"                    \"replication operations can only be performed \""},{"line_number":135,"context_line":"                    \"on volumes that are of type replication_enabled.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_d068cf89","line":132,"updated":"2015-10-07 20:36:38.000000000","message":"extra_specs replication_enabled needs to be set to \u0027\u003cis\u003e True\u0027 in order for the scheduler to match the capability. That means you would need to do a check for \u0027\u003cis\u003e True\u0027 in order to tell if replication is enabled or not.","commit_id":"d2e1d3e575981698347e69ff1f29319dfffb2f78"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"223fc882961ac21f9a1d9d27b25e0761ffe59ce1","unresolved":false,"context_lines":[{"line_number":1615,"context_line":"    @wrap_check_policy"},{"line_number":1616,"context_line":"    @valid_replication_volume"},{"line_number":1617,"context_line":"    def enable_replication(self, ctxt, volume):"},{"line_number":1618,"context_line":"        import pdb;pdb.set_trace()"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        # NOTE(jdg): details like sync vs async"},{"line_number":1621,"context_line":"        # and replica count are to be set via the"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_101de70e","line":1618,"updated":"2015-10-07 20:38:25.000000000","message":"There\u0027s another here..","commit_id":"d2e1d3e575981698347e69ff1f29319dfffb2f78"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"e075612247708ecf520fdca8f00e2d91ae4a8056","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            extra_specs \u003d volume_types.get_volume_type_extra_specs("},{"line_number":129,"context_line":"                volume.get(\u0027volume_type_id\u0027))"},{"line_number":130,"context_line":"            rep_capable \u003d extra_specs.get(\u0027replication_enabled\u0027, False)"},{"line_number":131,"context_line":"        if not rep_capable:"},{"line_number":132,"context_line":"            msg \u003d _(\"Volume is not a replication enabled volume, \""},{"line_number":133,"context_line":"                    \"replication operations can only be performed \""},{"line_number":134,"context_line":"                    \"on volumes that are of type replication_enabled.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_30b103e2","line":131,"updated":"2015-10-07 20:42:46.000000000","message":"extra_specs replication_enabled needs to be set to \u0027\u003cis\u003e True\u0027 in order for the scheduler to match the capability. That means you would need to do a check for \u0027\u003cis\u003e True\u0027 in order to tell if replication is enabled or not.\n\nif not rep_capable will pass if there is any value for replication_enabled, which I don\u0027t think should be the case.","commit_id":"f6b554aafa75cf2b24882cf1116f4fb13096b601"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"d893ec02ac24c074fca34320037158261c73c95a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            extra_specs \u003d volume_types.get_volume_type_extra_specs("},{"line_number":129,"context_line":"                volume.get(\u0027volume_type_id\u0027))"},{"line_number":130,"context_line":"            rep_capable \u003d utils.get_bool_param(\u0027replication_enabled\u0027,"},{"line_number":131,"context_line":"                                               extra_specs)"},{"line_number":132,"context_line":"        if not rep_capable:"},{"line_number":133,"context_line":"            msg \u003d _(\"Volume is not a replication enabled volume, \""},{"line_number":134,"context_line":"                    \"replication operations can only be performed \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a2fa921_9c303003","line":131,"updated":"2015-10-07 22:58:54.000000000","message":"maybe something like:\nrep_capable \u003d extra_specs.get(\u0027replication_enabled\u0027, False) \u003d\u003d \"\u003cis\u003e True\"\n\nI feel this best represents the test case.","commit_id":"2130482f56bac95e6f2de3eec1f9a75ece7bce28"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"91a09b5d4440504451e21cd9a38f4dec3f685f46","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            extra_specs \u003d volume_types.get_volume_type_extra_specs("},{"line_number":129,"context_line":"                volume.get(\u0027volume_type_id\u0027))"},{"line_number":130,"context_line":"            rep_capable \u003d utils.get_bool_param(\u0027replication_enabled\u0027,"},{"line_number":131,"context_line":"                                               extra_specs)"},{"line_number":132,"context_line":"        if not rep_capable:"},{"line_number":133,"context_line":"            msg \u003d _(\"Volume is not a replication enabled volume, \""},{"line_number":134,"context_line":"                    \"replication operations can only be performed \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a2fa921_4665e21b","line":131,"in_reply_to":"7a2fa921_9c303003","updated":"2015-10-07 23:26:55.000000000","message":"Done","commit_id":"2130482f56bac95e6f2de3eec1f9a75ece7bce28"}]}
