)]}'
{"troveclient/base.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"67dbe845f8fb6b03ea762fdcaac9e78493f85b2c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        resp, body \u003d self.api.client.put(url, body\u003dbody)"},{"line_number":184,"context_line":"        return body"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _replace(self, url, body):"},{"line_number":187,"context_line":"        resp, body \u003d self.api.client.patch(url, body\u003dbody)"},{"line_number":188,"context_line":"        return body"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Bkl0%3D","line":186,"updated":"2014-03-25 20:18:05.000000000","message":"maybe better to name it as _patch ?","commit_id":"a41a7828e8badd2e63b22d1f88677c38429afcf8"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"e1c260e8f7ff63a11b9463aa2f95418fbeef8a15","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        resp, body \u003d self.api.client.put(url, body\u003dbody)"},{"line_number":184,"context_line":"        return body"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _replace(self, url, body):"},{"line_number":187,"context_line":"        resp, body \u003d self.api.client.patch(url, body\u003dbody)"},{"line_number":188,"context_line":"        return body"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9lCM%3D","line":186,"in_reply_to":"AAAAWH%2F%2Bkl0%3D","updated":"2014-04-03 15:18:36.000000000","message":"I kind of prefer _patch as well, though there is a precedence since the _update method isn\u0027t named _put.","commit_id":"a41a7828e8badd2e63b22d1f88677c38429afcf8"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"6816dcca15066cfd1ab011fbe9ed11d372dad096","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        resp, body \u003d self.api.client.put(url, body\u003dbody)"},{"line_number":184,"context_line":"        return body"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _replace(self, url, body):"},{"line_number":187,"context_line":"        resp, body \u003d self.api.client.patch(url, body\u003dbody)"},{"line_number":188,"context_line":"        return body"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWn%2F%2F7Cg%3D","line":186,"in_reply_to":"AAAAWH%2F9lCM%3D","updated":"2014-04-08 13:36:08.000000000","message":"not to mention _create isn\u0027t named _post.  Could we get a few more people to weigh in?  I\u0027m not really tied to any one name but this affects the project as a whole moving forward.","commit_id":"a41a7828e8badd2e63b22d1f88677c38429afcf8"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"4183613f918f724e7ae7479e39aa43217b99c7d4","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return body"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _edit(self, url, body):"},{"line_number":187,"context_line":"        resp, body \u003d self.api.client.patch(url, body\u003dbody)"},{"line_number":188,"context_line":"        return body"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"facab960_25bc986c","line":187,"updated":"2014-04-28 21:26:52.000000000","message":"oh nice.. i probably should have done that with the configuration patch call...","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"}],"troveclient/compat/client.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"becb21ca1c7df4f5b00cc344587ec81079e6e42f","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        self.configurations \u003d configurations.Configurations(self)"},{"line_number":350,"context_line":"        config_parameters \u003d configurations.ConfigurationParameters(self)"},{"line_number":351,"context_line":"        self.configuration_parameters \u003d config_parameters"},{"line_number":352,"context_line":"        self.metadata \u003d metadata.Metadata(self)"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        class Mgmt(object):"},{"line_number":355,"context_line":"            def __init__(self, dbaas):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad9bd40_f05fb770","line":352,"updated":"2014-04-30 17:13:48.000000000","message":"I dont think we should support the compat version as this version only exists for existing tests that uses the legacy client. Lets not add anything here. I spoke to Slicknik about porting new features to compat and he said it was not necessary.","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"}],"troveclient/compat/tests/test_common.py":[{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"b6bc1a69b0c7d330caf7c2b476d7d644268ccddf","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        orig_dumps \u003d json.dumps"},{"line_number":234,"context_line":"        json.dumps \u003d mock.Mock(return_value\u003d\"test-dump\")"},{"line_number":235,"context_line":"        self.assertEqual(\"test-dump\", self.cmd_base._dumps(\"item\"))"},{"line_number":236,"context_line":"        json.dumps \u003d orig_dumps"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test__pretty_list(self):"},{"line_number":239,"context_line":"        func \u003d mock.Mock(return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a1371a2_ea3363f4","line":236,"updated":"2014-04-28 20:16:18.000000000","message":"maybe could go in a teardown but no biggie to me.","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"}],"troveclient/v1/client.py":[{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"b6bc1a69b0c7d330caf7c2b476d7d644268ccddf","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                 database_service_name\u003dNone, retries\u003dNone,"},{"line_number":52,"context_line":"                 http_log_debug\u003dFalse,"},{"line_number":53,"context_line":"                 cacert\u003dNone, bypass_url\u003dNone):"},{"line_number":54,"context_line":"        # self.limits \u003d limits.LimitsManager(self)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # extensions"},{"line_number":57,"context_line":"        self.flavors \u003d flavors.Flavors(self)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a1371a2_4af8b7e5","line":54,"updated":"2014-04-28 20:16:18.000000000","message":"perhaps a TODO:","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"}],"troveclient/v1/metadata.py":[{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"0241b1d1fbd5018e20263b988dff804237397e63","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        :param value: A value of type dict, list, tuple, int, float, str"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        :returns value:"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        # NOTE(imsplitbit): if you give _parse_value invalid json you get"},{"line_number":86,"context_line":"        # the string passed back to you."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FUlQ%3D","line":83,"updated":"2014-04-22 14:27:13.000000000","message":"Was this intended to be filled in?","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"e65b03f39dabf10a1bba8ac838b196c0cbfcc36a","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        :param value: A value of type dict, list, tuple, int, float, str"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        :returns value:"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        # NOTE(imsplitbit): if you give _parse_value invalid json you get"},{"line_number":86,"context_line":"        # the string passed back to you."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FT%2FY%3D","line":83,"in_reply_to":"AAAAXH%2F%2FUlQ%3D","updated":"2014-04-22 15:21:57.000000000","message":"No, the value returned is whatever you put in unless it\u0027s a marshalled json object, then you get the object equivalent back.  The returns value would have to say *","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"0241b1d1fbd5018e20263b988dff804237397e63","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                value \u003d json.loads(value)"},{"line_number":90,"context_line":"            except ValueError:"},{"line_number":91,"context_line":"                # the value passed in was a string but not json"},{"line_number":92,"context_line":"                pass"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FUlk%3D","line":91,"updated":"2014-04-22 14:27:13.000000000","message":"Can you elaborate as to why you wouldn\u0027t throw an exception to indicate to the caller that the argument was bad?","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"e65b03f39dabf10a1bba8ac838b196c0cbfcc36a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                value \u003d json.loads(value)"},{"line_number":90,"context_line":"            except ValueError:"},{"line_number":91,"context_line":"                # the value passed in was a string but not json"},{"line_number":92,"context_line":"                pass"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FT%2BM%3D","line":91,"in_reply_to":"AAAAXH%2F%2FUlk%3D","updated":"2014-04-22 15:21:57.000000000","message":"Because metadata is free form and you are allowed to insert strings as metadata values.  So from the command line you can pass in a string as a value that may or may not be json so we don\u0027t want to raise we just send the string back to the user and assume that since it failed to load as json that they intended to insert a string.","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"4183613f918f724e7ae7479e39aa43217b99c7d4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    resource_class \u003d MetadataResource"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def list(self, instance_id):"},{"line_number":36,"context_line":"        return self._get(\u0027/instances/%s/metadata\u0027 % instance_id, \u0027metadata\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def show(self, instance_id, key):"},{"line_number":39,"context_line":"        return self._get(\u0027/instances/%s/metadata/%s\u0027 % (instance_id, key),"}],"source_content_type":"text/x-python","patch_set":10,"id":"facab960_48945337","line":36,"updated":"2014-04-28 21:26:52.000000000","message":"hmm should this a self._list(...) call?","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"4183613f918f724e7ae7479e39aa43217b99c7d4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        :returns value:"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        # NOTE(imsplitbit): if you give _parse_value invalid json you get"},{"line_number":86,"context_line":"        # the string passed back to you."},{"line_number":87,"context_line":"        if isinstance(value, str):"},{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                value \u003d json.loads(value)"}],"source_content_type":"text/x-python","patch_set":10,"id":"facab960_4809b394","line":86,"updated":"2014-04-28 21:26:52.000000000","message":"is that something that nova does as well?","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"73154d0a50658c8441609b7c3b624a5c9342537a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        :returns value:"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        # NOTE(imsplitbit): if you give _parse_value invalid json you get"},{"line_number":86,"context_line":"        # the string passed back to you."},{"line_number":87,"context_line":"        if isinstance(value, str):"},{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                value \u003d json.loads(value)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad9bd40_e56c6039","line":86,"in_reply_to":"facab960_4809b394","updated":"2014-04-30 14:04:39.000000000","message":"IIRC they don\u0027t allow complex values via the cli but I didn\u0027t see any reason not to.","commit_id":"2efab6c79a52e1f8322c45b417bd4e3e2914047f"}],"troveclient/v1/shell.py":[{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"0241b1d1fbd5018e20263b988dff804237397e63","unresolved":false,"context_lines":[{"line_number":819,"context_line":"@utils.arg(\u0027instance_id\u0027, metavar\u003d\u0027\u003cinstance_id\u003e\u0027, help\u003d\u0027UUID for instance\u0027)"},{"line_number":820,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":821,"context_line":"def do_metadata_list(cs, args):"},{"line_number":822,"context_line":"    \"\"\"Shows metadata for instance \u003cid\u003e\"\"\""},{"line_number":823,"context_line":"    result \u003d cs.metadata.list(args.instance_id)"},{"line_number":824,"context_line":"    _print_instance(result)"},{"line_number":825,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2Fd7o%3D","line":822,"updated":"2014-04-22 14:27:13.000000000","message":"This is the same as the description for do_metadata_show - should this be \"Shows all metadata for instance \u003cid\u003e\"?","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"},{"author":{"_account_id":971,"name":"Daniel Salinas","email":"imsplitbit@gmail.com","username":"imsplitbit"},"change_message_id":"e65b03f39dabf10a1bba8ac838b196c0cbfcc36a","unresolved":false,"context_lines":[{"line_number":819,"context_line":"@utils.arg(\u0027instance_id\u0027, metavar\u003d\u0027\u003cinstance_id\u003e\u0027, help\u003d\u0027UUID for instance\u0027)"},{"line_number":820,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":821,"context_line":"def do_metadata_list(cs, args):"},{"line_number":822,"context_line":"    \"\"\"Shows metadata for instance \u003cid\u003e\"\"\""},{"line_number":823,"context_line":"    result \u003d cs.metadata.list(args.instance_id)"},{"line_number":824,"context_line":"    _print_instance(result)"},{"line_number":825,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FT9M%3D","line":822,"in_reply_to":"AAAAXH%2F%2Fd7o%3D","updated":"2014-04-22 15:21:57.000000000","message":"Yes, I\u0027ll fix both.","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"0241b1d1fbd5018e20263b988dff804237397e63","unresolved":false,"context_lines":[{"line_number":828,"context_line":"@utils.arg(\u0027key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027key to display\u0027)"},{"line_number":829,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":830,"context_line":"def do_metadata_show(cs, args):"},{"line_number":831,"context_line":"    \"\"\"Shows metadata for instance \u003cid\u003e\"\"\""},{"line_number":832,"context_line":"    result \u003d cs.metadata.show(args.instance_id, args.key)"},{"line_number":833,"context_line":"    _print_instance(result)"},{"line_number":834,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2Fd7M%3D","line":831,"updated":"2014-04-22 14:27:13.000000000","message":"See comment above - maybe this is \"Shows value of key \u003ckey\u003e for instance \u003cid\u003e\"?","commit_id":"a474a5f7c977ccbf85be684fb4bc093c5af8b21d"}]}
