)]}'
{"novaclient/v1_1/flavors.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"45eec29969ec2ab93bb5467b1ab23f44dc6c328d","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return self._create(\"/flavors\", body, \"flavor\")"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_keys(self, flavor):"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            _resp, body \u003d self.api.client.get(\"/flavors/%s/os-extra_specs\" %"},{"line_number":95,"context_line":"                                               base.getid(flavor))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FoJg%3D","line":92,"updated":"2012-08-24 18:18:15.000000000","message":"This function kinda needs a docstring.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1aabc241751541e3f0050242256def320cff299b","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return self._create(\"/flavors\", body, \"flavor\")"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_keys(self, flavor):"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            _resp, body \u003d self.api.client.get(\"/flavors/%s/os-extra_specs\" %"},{"line_number":95,"context_line":"                                               base.getid(flavor))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FcGI%3D","line":92,"in_reply_to":"AAAALH%2F%2FoJg%3D","updated":"2012-09-12 12:29:08.000000000","message":"Done.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"45eec29969ec2ab93bb5467b1ab23f44dc6c328d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            _resp, body \u003d self.api.client.get(\"/flavors/%s/os-extra_specs\" %"},{"line_number":95,"context_line":"                                               base.getid(flavor))"},{"line_number":96,"context_line":"        except exceptions.NotFound:"},{"line_number":97,"context_line":"            return \"N/A\""},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            return body[\"extra_specs\"]"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FoJo%3D","line":97,"updated":"2012-08-24 18:18:15.000000000","message":"Why return \"N/A\" here?  Why not just let the NotFound exception bubble up?  If it\u0027s because of how you use this method in shell.py, I\u0027d suggest using an adapter function that catches the NotFound and returns N/A; for someone using the pythonic API, you want to avoid magic strings like this.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1aabc241751541e3f0050242256def320cff299b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            _resp, body \u003d self.api.client.get(\"/flavors/%s/os-extra_specs\" %"},{"line_number":95,"context_line":"                                               base.getid(flavor))"},{"line_number":96,"context_line":"        except exceptions.NotFound:"},{"line_number":97,"context_line":"            return \"N/A\""},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            return body[\"extra_specs\"]"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FcGM%3D","line":97,"in_reply_to":"AAAALH%2F%2FoJo%3D","updated":"2012-09-12 12:29:08.000000000","message":"Changed by adding a wrapper in shell.py.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"cc73bbe7a8b3fb1b7ffa71cb03a37dac38d2c263","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        except exceptions.NotFound:"},{"line_number":97,"context_line":"            return \"N/A\""},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            return body[\"extra_specs\"]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def set_key(self, flavor, metadata):"},{"line_number":102,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F10U%3D","line":99,"updated":"2012-08-08 13:05:40.000000000","message":"as I indicated in another file, probably call this metadata rather than extra_specs. so that url becomes /flavors/%s/metadata which will be also inline with other OS urls.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"aba5fa40aa81b64a14987e8041e3d7eb8b0c107b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        except exceptions.NotFound:"},{"line_number":97,"context_line":"            return \"N/A\""},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            return body[\"extra_specs\"]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def set_key(self, flavor, metadata):"},{"line_number":102,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F1uU%3D","line":99,"in_reply_to":"AAAALH%2F%2F10U%3D","updated":"2012-08-08 15:03:21.000000000","message":"The whole extra specs is already implemented in nova, and the URL is already defined in nova API documentation, so that I don\u0027t  think it\u0027s appropriate to change it in the client side.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"45eec29969ec2ab93bb5467b1ab23f44dc6c328d","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def set_key(self, flavor, metadata):"},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        Set a extra spec to a flavor"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param flavor: The :class:`Flavor` to set extra spec to"},{"line_number":106,"context_line":"        :param metadata: A dict of key/value pair to set"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FoJY%3D","line":103,"updated":"2012-08-24 18:18:15.000000000","message":"In English, if a word begins with a vowel sound (as in \"extra\"), the article preceding that word should be \"an\" instead of \"a\".  I.e., this should read more like, \"Set an extra spec on a flavor.\"  (Note the to/on substitution and the addition of a period, as well.)","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1aabc241751541e3f0050242256def320cff299b","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def set_key(self, flavor, metadata):"},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        Set a extra spec to a flavor"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param flavor: The :class:`Flavor` to set extra spec to"},{"line_number":106,"context_line":"        :param metadata: A dict of key/value pair to set"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FcGE%3D","line":103,"in_reply_to":"AAAALH%2F%2FoJY%3D","updated":"2012-09-12 12:29:08.000000000","message":"Really thanks for pointing this out. Has fixed, including several other similar issues.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"45eec29969ec2ab93bb5467b1ab23f44dc6c328d","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def unset_key(self, flavor, keys):"},{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        Unset a extra spec to a flavor"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param flavor: The :class:`Flavor` to unset extra spec"},{"line_number":119,"context_line":"        :param keys: A list of keys to be unset"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FoJU%3D","line":116,"updated":"2012-08-24 18:18:15.000000000","message":"See previous in-line comment.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"}],"tests/v1_1/fakes.py":[{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"cc73bbe7a8b3fb1b7ffa71cb03a37dac38d2c263","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def get_flavors_1_os_extra_specs(self, **kw):"},{"line_number":402,"context_line":"        return (200,"},{"line_number":403,"context_line":"            {\u0027extra_specs\u0027: {\"k1\": \"v1\"}})"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def get_flavors_2_os_extra_specs(self, **kw):"},{"line_number":406,"context_line":"        return (200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F10Y%3D","line":403,"updated":"2012-08-08 13:05:40.000000000","message":"Another standard called CIMI normally defines extra data as metadata, very much like to see this being called metadata rather than extra_specs.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"aba5fa40aa81b64a14987e8041e3d7eb8b0c107b","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def get_flavors_1_os_extra_specs(self, **kw):"},{"line_number":402,"context_line":"        return (200,"},{"line_number":403,"context_line":"            {\u0027extra_specs\u0027: {\"k1\": \"v1\"}})"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def get_flavors_2_os_extra_specs(self, **kw):"},{"line_number":406,"context_line":"        return (200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F1uI%3D","line":403,"in_reply_to":"AAAALH%2F%2F10Y%3D","updated":"2012-08-08 15:03:21.000000000","message":"It has been in the nova API already, and I think it\u0027s named extra_specs because it\u0027s some added feature to the flavor/instance type.","commit_id":"6a76b9cf4fe9b53182d364d055596c358c9b372f"}]}
