)]}'
{"cinder/api/contrib/types_extra_specs.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15bc5f288bb6b3a36b905bdffccf130e4629c9ca","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        validate_body \u003d body[\u0027es-validate\u0027]"},{"line_number":172,"context_line":"        if not (\u0027name\u0027 in validate_body):"},{"line_number":173,"context_line":"            expl \u003d _(\u0027Missing host name\u0027)"},{"line_number":174,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":175,"context_line":"        if not (\u0027extra_specs\u0027 in validate_body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_6c036f10","line":172,"updated":"2015-03-12 21:23:24.000000000","message":"() not needed,","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"},{"author":{"_account_id":11592,"name":"Julie Gravel","email":"julie.gravel@suse.com","username":"jgravel"},"change_message_id":"23db5c2322e8136183b1a63170d0e6c311f405e6","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        validate_body \u003d body[\u0027es-validate\u0027]"},{"line_number":172,"context_line":"        if not (\u0027name\u0027 in validate_body):"},{"line_number":173,"context_line":"            expl \u003d _(\u0027Missing host name\u0027)"},{"line_number":174,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":175,"context_line":"        if not (\u0027extra_specs\u0027 in validate_body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_d9509634","line":172,"in_reply_to":"9a80dd14_6c036f10","updated":"2015-03-12 22:51:06.000000000","message":"Done","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15bc5f288bb6b3a36b905bdffccf130e4629c9ca","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        if not (\u0027name\u0027 in validate_body):"},{"line_number":173,"context_line":"            expl \u003d _(\u0027Missing host name\u0027)"},{"line_number":174,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":175,"context_line":"        if not (\u0027extra_specs\u0027 in validate_body):"},{"line_number":176,"context_line":"            expl \u003d _(\u0027Missing extra specs information\u0027)"},{"line_number":177,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_200c1b3b","line":175,"updated":"2015-03-12 21:23:24.000000000","message":"Same.","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"},{"author":{"_account_id":11592,"name":"Julie Gravel","email":"julie.gravel@suse.com","username":"jgravel"},"change_message_id":"23db5c2322e8136183b1a63170d0e6c311f405e6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        if not (\u0027name\u0027 in validate_body):"},{"line_number":173,"context_line":"            expl \u003d _(\u0027Missing host name\u0027)"},{"line_number":174,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":175,"context_line":"        if not (\u0027extra_specs\u0027 in validate_body):"},{"line_number":176,"context_line":"            expl \u003d _(\u0027Missing extra specs information\u0027)"},{"line_number":177,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_f941da63","line":175,"in_reply_to":"9a80dd14_200c1b3b","updated":"2015-03-12 22:51:06.000000000","message":"Done","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"}],"cinder/volume/manager.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15bc5f288bb6b3a36b905bdffccf130e4629c9ca","unresolved":false,"context_lines":[{"line_number":2467,"context_line":"        result \u003d []"},{"line_number":2468,"context_line":"        for key, value in extra_specs.items():"},{"line_number":2469,"context_line":"            spec \u003d (key, value)"},{"line_number":2470,"context_line":"            valid \u003d self.driver.validate_vol_type_extra_spec(ctxt, spec)"},{"line_number":2471,"context_line":"            if not valid[0]:"},{"line_number":2472,"context_line":"                result.append({key: value, \"reason\": valid[1]})"},{"line_number":2473,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_80b6a73c","line":2470,"updated":"2015-03-12 21:23:24.000000000","message":"If I understand this right, I think this would be a separate RPC call for each extra spec. Have you thought of passing all extra specs through in one call to reduce this overhead?","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8c224c472da738afc4ac218e9d7e342971e7a364","unresolved":false,"context_lines":[{"line_number":2467,"context_line":"        result \u003d []"},{"line_number":2468,"context_line":"        for key, value in extra_specs.items():"},{"line_number":2469,"context_line":"            spec \u003d (key, value)"},{"line_number":2470,"context_line":"            valid \u003d self.driver.validate_vol_type_extra_spec(ctxt, spec)"},{"line_number":2471,"context_line":"            if not valid[0]:"},{"line_number":2472,"context_line":"                result.append({key: value, \"reason\": valid[1]})"},{"line_number":2473,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_c3d18958","line":2470,"in_reply_to":"9a80dd14_80b6a73c","updated":"2015-03-12 21:47:22.000000000","message":"This isn\u0027t another RPC call.\n\nThe problem with passing all options into the driver, is that the driver is going to have to know how to format the response for each failure.   This way, the driver just returns False and the reason why.\n\n\nAlso, valid should be a tuple, not an array of entries.","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5b6d56ad8cbcb1cceb3920a1e11a690a5a273b63","unresolved":false,"context_lines":[{"line_number":2467,"context_line":"        result \u003d []"},{"line_number":2468,"context_line":"        for key, value in extra_specs.items():"},{"line_number":2469,"context_line":"            spec \u003d (key, value)"},{"line_number":2470,"context_line":"            valid \u003d self.driver.validate_vol_type_extra_spec(ctxt, spec)"},{"line_number":2471,"context_line":"            if not valid[0]:"},{"line_number":2472,"context_line":"                result.append({key: value, \"reason\": valid[1]})"},{"line_number":2473,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_e3184dd5","line":2470,"in_reply_to":"9a80dd14_c3d18958","updated":"2015-03-12 21:54:01.000000000","message":"Ah, makes sense. Thanks Walter.","commit_id":"3fda3a56f1925ea95df9b8312131cddad3ee05b7"}]}
