)]}'
{"openstack/compute/v2/flavor.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"25b8985b3c944599dd6a89276e5ca29cf05edee9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    allow_delete \u003d False"},{"line_number":65,"context_line":"    allow_list \u003d True"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class FlavorExtraSpecs(resource2.Resource):"},{"line_number":69,"context_line":"    resources_key \u003d \u0027os-extra_specs\u0027"},{"line_number":70,"context_line":"    base_path \u003d \u0027/flavors/%(flavor_id)s/os-extra_specs\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_4494bd8b","line":67,"updated":"2017-05-29 16:04:51.000000000","message":"The proposed interface looks weird. You propose two types of resources: flavor extra specs and flavor extra spec. However, what the compute API actually defines is just a flavor spec. Having a plural form resource looks odd.\n\nIn the flavor extra spec API, ID of an extra spec is a flavor extra spec key. You can use \u0027alternate_id\u0027 of Resource class.","commit_id":"54a1d81a33b531e33b94c22154cd7ceb2380c741"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"25b8985b3c944599dd6a89276e5ca29cf05edee9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    flavor_id \u003d resource2.URI(\u0027flavor_id\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    #: The key for the flavor extra spec."},{"line_number":96,"context_line":"    extra_spec_key \u003d resource2.URI(EXTRA_SPEC_KEY)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    #: The value for the flavor extra spec."},{"line_number":99,"context_line":"    extra_spec_value \u003d resource2.Body(EXTRA_SPEC_VALUE)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_24bf89fc","line":96,"range":{"start_line":96,"start_character":3,"end_line":96,"end_character":50},"updated":"2017-05-29 16:04:51.000000000","message":"This is the ID of flavor extra spec. Can\u0027t we treat a key as ID? I think you can leverage \u0027alternate_id\u0027 parameter of resource2.Body\n\nI understand we need some more work as the returned data is a form of {\u0027key1\u0027: \u0027value1\u0027}.","commit_id":"54a1d81a33b531e33b94c22154cd7ceb2380c741"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"25b8985b3c944599dd6a89276e5ca29cf05edee9","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    extra_spec_key \u003d resource2.URI(EXTRA_SPEC_KEY)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    #: The value for the flavor extra spec."},{"line_number":99,"context_line":"    extra_spec_value \u003d resource2.Body(EXTRA_SPEC_VALUE)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    # capabilities"},{"line_number":102,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_c43b2d9a","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":20},"updated":"2017-05-29 16:04:51.000000000","message":"IMHO \u0027key\u0027 and \u0027value\u0027 are the right attribute name because the class name is FlavorExtraSpec and it is already apparent they belong to \u0027extra_spec\u0027.","commit_id":"54a1d81a33b531e33b94c22154cd7ceb2380c741"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"25b8985b3c944599dd6a89276e5ca29cf05edee9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    allow_create \u003d True"},{"line_number":103,"context_line":"    allow_get \u003d True"},{"line_number":104,"context_line":"    allow_delete \u003d True"},{"line_number":105,"context_line":"    allow_list \u003d False"},{"line_number":106,"context_line":"    put_create \u003d True"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def __getattribute__(self, name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_a4403909","line":105,"range":{"start_line":105,"start_character":4,"end_line":105,"end_character":22},"updated":"2017-05-29 16:04:51.000000000","message":"IMHO the list operation should be implemented as part of this class.","commit_id":"54a1d81a33b531e33b94c22154cd7ceb2380c741"}]}
