)]}'
{"openstack/cloud/_compute.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"012dc1ce28229dd712a0ccff0d62256e136dec4d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def get_flavor_name(self, flavor_id):"},{"line_number":42,"context_line":"        return self.compute.get_flavor_name(flavor_id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def get_flavor_by_ram(self, ram, include\u003dNone, get_extra\u003dFalse):"},{"line_number":45,"context_line":"        \"\"\"Get a flavor based on amount of RAM available."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        Finds the flavor with the least amount of RAM that is at least"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_bcedcb26","line":44,"updated":"2019-06-03 08:17:04.000000000","message":"nit: this change should be mentioned in the commit message","commit_id":"4adbecb09a80939f50359726e6812b8e2e0a562b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"012dc1ce28229dd712a0ccff0d62256e136dec4d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        filter based on matching flavor name."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        :param int ram: Minimum amount of RAM."},{"line_number":52,"context_line":"        :param string include:"},{"line_number":53,"context_line":"            If given, will return a flavor whose name contains this string"},{"line_number":54,"context_line":"            as a substring."},{"line_number":55,"context_line":"        :param get_extra:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_5cf28f08","line":52,"updated":"2019-06-03 08:17:04.000000000","message":"Wow, this is quite a confusing parameter name!","commit_id":"4adbecb09a80939f50359726e6812b8e2e0a562b"}],"openstack/compute/v2/_proxy.py":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1aa35d4aeca39f2f5950b504932a4ffaa4945da2","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    details\u003dTrue, min_ram\u003dmin_ram,"},{"line_number":145,"context_line":"                    get_extra\u003dget_extra),"},{"line_number":146,"context_line":"                key\u003doperator.itemgetter(\u0027ram\u0027)):"},{"line_number":147,"context_line":"            if (flavor.ram \u003e\u003d int(min_ram)"},{"line_number":148,"context_line":"                    and (not include or include in flavor.name)):"},{"line_number":149,"context_line":"                return flavor"},{"line_number":150,"context_line":"        raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_83948037","line":147,"updated":"2019-04-09 08:13:23.000000000","message":"do we really need to check ram \u003e min_ram instead of trusting nova to respect query parameter?","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eb6611e62d4b5722105e22bbac7c8e76ab9f3872","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    details\u003dTrue, min_ram\u003dmin_ram,"},{"line_number":145,"context_line":"                    get_extra\u003dget_extra),"},{"line_number":146,"context_line":"                key\u003doperator.itemgetter(\u0027ram\u0027)):"},{"line_number":147,"context_line":"            if (flavor.ram \u003e\u003d int(min_ram)"},{"line_number":148,"context_line":"                    and (not include or include in flavor.name)):"},{"line_number":149,"context_line":"                return flavor"},{"line_number":150,"context_line":"        raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fce034c_c1a546b7","line":147,"in_reply_to":"5fc1f717_83948037","updated":"2019-04-11 15:27:04.000000000","message":"Nope. That\u0027s a leftover.","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1aa35d4aeca39f2f5950b504932a4ffaa4945da2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if is_public is None:"},{"line_number":176,"context_line":"            # Fake out the empty paramter filtering"},{"line_number":177,"context_line":"            is_public \u003d \u0027None\u0027"},{"line_number":178,"context_line":"        flv \u003d _flavor.FlavorDetail if details else _flavor.Flavor"},{"line_number":179,"context_line":"        for flavor in self._list(flv, is_public\u003dis_public, **query):"},{"line_number":180,"context_line":"            # TODO(mordred) Maybe instead of this we should make Flavor"},{"line_number":181,"context_line":"            #               smarter and have extra_specs be an on-demand"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_63695423","line":178,"updated":"2019-04-09 08:13:23.000000000","message":"while you are here, would you mind removing FlavorDetail and use instead base_path overloading like we do in other places?","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eb6611e62d4b5722105e22bbac7c8e76ab9f3872","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if is_public is None:"},{"line_number":176,"context_line":"            # Fake out the empty paramter filtering"},{"line_number":177,"context_line":"            is_public \u003d \u0027None\u0027"},{"line_number":178,"context_line":"        flv \u003d _flavor.FlavorDetail if details else _flavor.Flavor"},{"line_number":179,"context_line":"        for flavor in self._list(flv, is_public\u003dis_public, **query):"},{"line_number":180,"context_line":"            # TODO(mordred) Maybe instead of this we should make Flavor"},{"line_number":181,"context_line":"            #               smarter and have extra_specs be an on-demand"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fce034c_61aa5286","line":178,"in_reply_to":"5fc1f717_63695423","updated":"2019-04-11 15:27:04.000000000","message":"Good call.","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1aa35d4aeca39f2f5950b504932a4ffaa4945da2","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            is_public \u003d \u0027None\u0027"},{"line_number":178,"context_line":"        flv \u003d _flavor.FlavorDetail if details else _flavor.Flavor"},{"line_number":179,"context_line":"        for flavor in self._list(flv, is_public\u003dis_public, **query):"},{"line_number":180,"context_line":"            # TODO(mordred) Maybe instead of this we should make Flavor"},{"line_number":181,"context_line":"            #               smarter and have extra_specs be an on-demand"},{"line_number":182,"context_line":"            #               descriptor IIF get_extra is set? It\u0027s also"},{"line_number":183,"context_line":"            #               possible that\u0027s just a giant waste of effort."}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_e3f4645d","line":180,"updated":"2019-04-09 08:13:23.000000000","message":"yes, this would be nice (and I guess used not only here, so mechanism is really welcome). We might end up in 21 API request for 20 Flavors instead of 1 (when nova\u003c2.47 or policy forbids getting extra_spec). And if GET os-extra_specs is also forbidden we do 20 useless calls","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eb6611e62d4b5722105e22bbac7c8e76ab9f3872","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            is_public \u003d \u0027None\u0027"},{"line_number":178,"context_line":"        flv \u003d _flavor.FlavorDetail if details else _flavor.Flavor"},{"line_number":179,"context_line":"        for flavor in self._list(flv, is_public\u003dis_public, **query):"},{"line_number":180,"context_line":"            # TODO(mordred) Maybe instead of this we should make Flavor"},{"line_number":181,"context_line":"            #               smarter and have extra_specs be an on-demand"},{"line_number":182,"context_line":"            #               descriptor IIF get_extra is set? It\u0027s also"},{"line_number":183,"context_line":"            #               possible that\u0027s just a giant waste of effort."}],"source_content_type":"text/x-python","patch_set":2,"id":"3fce034c_81af3e93","line":180,"in_reply_to":"5fc1f717_e3f4645d","updated":"2019-04-11 15:27:04.000000000","message":"Yeah - I\u0027ll work on that and see what I can figure out.","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"012dc1ce28229dd712a0ccff0d62256e136dec4d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            flavor_obj._get_extra_specs(self)"},{"line_number":119,"context_line":"        return flavor_obj"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def get_flavor_name(self, flavor_id):"},{"line_number":122,"context_line":"        flavor \u003d self.get_flavor(flavor_id)"},{"line_number":123,"context_line":"        if flavor:"},{"line_number":124,"context_line":"            return flavor.name"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_7cf753f7","line":121,"updated":"2019-06-03 08:17:04.000000000","message":"docstring please?\n\nalso, hmmm, do we really need this in the public API?","commit_id":"4adbecb09a80939f50359726e6812b8e2e0a562b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"012dc1ce28229dd712a0ccff0d62256e136dec4d","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def get_flavor_name(self, flavor_id):"},{"line_number":122,"context_line":"        flavor \u003d self.get_flavor(flavor_id)"},{"line_number":123,"context_line":"        if flavor:"},{"line_number":124,"context_line":"            return flavor.name"},{"line_number":125,"context_line":"        return None"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_1cdc1773","line":123,"updated":"2019-06-03 08:17:04.000000000","message":"IIRC get methods raise, not return None","commit_id":"4adbecb09a80939f50359726e6812b8e2e0a562b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"012dc1ce28229dd712a0ccff0d62256e136dec4d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    details\u003dTrue, min_ram\u003dmin_ram,"},{"line_number":145,"context_line":"                    get_extra\u003dget_extra),"},{"line_number":146,"context_line":"                key\u003doperator.itemgetter(\u0027ram\u0027)):"},{"line_number":147,"context_line":"            if (not include or include in flavor.name):"},{"line_number":148,"context_line":"                return flavor"},{"line_number":149,"context_line":"        raise exceptions.SDKException("},{"line_number":150,"context_line":"            \"Could not find a flavor with {ram} and \u0027{include}\u0027\".format("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_3cd9db82","line":147,"updated":"2019-06-03 08:17:04.000000000","message":"nit: redundant brackets","commit_id":"4adbecb09a80939f50359726e6812b8e2e0a562b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fde64456ee8e98c8be42c07897b9ebe34fe083d8","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            flavor_obj._get_extra_specs(self)"},{"line_number":119,"context_line":"        return flavor_obj"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def get_flavor_name(self, flavor_id):"},{"line_number":122,"context_line":"        \"\"\"Get a name attribute of the flavor by it\u0027s id."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        :param flavor_id: The value can be the ID of a flavor or a"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fb8cfa7_30012a07","line":121,"updated":"2019-06-14 08:36:37.000000000","message":"I still think this call is redundant","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a3458ae8f8499772f433df669090eccdb1800d2c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            flavor_obj._get_extra_specs(self)"},{"line_number":119,"context_line":"        return flavor_obj"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def get_flavor_name(self, flavor_id):"},{"line_number":122,"context_line":"        \"\"\"Get a name attribute of the flavor by it\u0027s id."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        :param flavor_id: The value can be the ID of a flavor or a"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_eb76de06","line":121,"in_reply_to":"9fb8cfa7_30012a07","updated":"2019-07-09 11:53:11.000000000","message":"Agree - it\u0027s a silly old method.","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fde64456ee8e98c8be42c07897b9ebe34fe083d8","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                    details\u003dTrue, min_ram\u003dmin_ram,"},{"line_number":153,"context_line":"                    get_extra\u003dget_extra),"},{"line_number":154,"context_line":"                key\u003doperator.itemgetter(\u0027ram\u0027)):"},{"line_number":155,"context_line":"            if not name_contains or name_contains in flavor.name:"},{"line_number":156,"context_line":"                return flavor"},{"line_number":157,"context_line":"        raise exceptions.SDKException("},{"line_number":158,"context_line":"            \"Could not find a flavor with {ram} and \u0027{name_contains}\u0027\".format("}],"source_content_type":"text/x-python","patch_set":11,"id":"9fb8cfa7_a4015f07","line":155,"updated":"2019-06-14 08:36:37.000000000","message":"Why not implement name_contains handling inside of flavors()? this way it would be more useful.","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fde64456ee8e98c8be42c07897b9ebe34fe083d8","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            \"Could not find a flavor with {ram} and \u0027{name_contains}\u0027\".format("},{"line_number":159,"context_line":"                ram\u003dmin_ram, name_contains\u003dname_contains))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def flavors(self, details\u003dTrue, get_extra\u003dFalse, is_public\u003dNone, **query):"},{"line_number":162,"context_line":"        \"\"\"Return a generator of flavors"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :param bool details: When ``True``, returns"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fb8cfa7_c4049317","line":161,"updated":"2019-06-14 08:36:37.000000000","message":"Support name_contains?","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fde64456ee8e98c8be42c07897b9ebe34fe083d8","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            # TODO(mordred) Maybe instead of this we should make Flavor"},{"line_number":190,"context_line":"            #               smarter and have extra_specs be an on-demand"},{"line_number":191,"context_line":"            #               descriptor IIF get_extra is set? It\u0027s also"},{"line_number":192,"context_line":"            #               possible that\u0027s just a giant waste of effort."},{"line_number":193,"context_line":"            if not flavor.extra_specs and get_extra:"},{"line_number":194,"context_line":"                if not flavor._get_extra_specs(self):"},{"line_number":195,"context_line":"                    # Do not try to fetch extra_specs for next flavors,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fb8cfa7_6407e719","line":192,"updated":"2019-06-14 08:36:37.000000000","message":"I\u0027m for it, but we don\u0027t have a track of supporting such smart accessors.","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a3458ae8f8499772f433df669090eccdb1800d2c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            # TODO(mordred) Maybe instead of this we should make Flavor"},{"line_number":190,"context_line":"            #               smarter and have extra_specs be an on-demand"},{"line_number":191,"context_line":"            #               descriptor IIF get_extra is set? It\u0027s also"},{"line_number":192,"context_line":"            #               possible that\u0027s just a giant waste of effort."},{"line_number":193,"context_line":"            if not flavor.extra_specs and get_extra:"},{"line_number":194,"context_line":"                if not flavor._get_extra_specs(self):"},{"line_number":195,"context_line":"                    # Do not try to fetch extra_specs for next flavors,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_ab79c6fc","line":192,"in_reply_to":"9fb8cfa7_6407e719","updated":"2019-07-09 11:53:11.000000000","message":"Yeah - it may be a TERRIBLE idea ... especially when one considered things like toDict() calls.","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"}],"openstack/compute/v2/flavor.py":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1aa35d4aeca39f2f5950b504932a4ffaa4945da2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        conn \u003d proxy._get_connection()"},{"line_number":70,"context_line":"        endpoint \u003d \"/flavors/{id}/os-extra_specs\".format(id\u003dself.id)"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            data \u003d _proxy._json_response("},{"line_number":73,"context_line":"                proxy.get(endpoint),"},{"line_number":74,"context_line":"                error_message\u003d\"Error fetching flavor extra specs\")"},{"line_number":75,"context_line":"            self.extra_specs \u003d conn._get_and_munchify(\u0027extra_specs\u0027, data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_e37d44e7","line":72,"updated":"2019-04-09 08:13:23.000000000","message":"why not to use session to remain consistent in the Resource classes?","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eb6611e62d4b5722105e22bbac7c8e76ab9f3872","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        conn \u003d proxy._get_connection()"},{"line_number":70,"context_line":"        endpoint \u003d \"/flavors/{id}/os-extra_specs\".format(id\u003dself.id)"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            data \u003d _proxy._json_response("},{"line_number":73,"context_line":"                proxy.get(endpoint),"},{"line_number":74,"context_line":"                error_message\u003d\"Error fetching flavor extra specs\")"},{"line_number":75,"context_line":"            self.extra_specs \u003d conn._get_and_munchify(\u0027extra_specs\u0027, data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fce034c_01c6ee68","line":72,"in_reply_to":"5fc1f717_e37d44e7","updated":"2019-04-11 15:27:04.000000000","message":"WELL ... I\u0027ve really been meaning to go through and rename the session parameter everywhere else - since it doesn\u0027t actually take a Session anymore, it takes a proxy.\n\nBut - it\u0027s a fair point. Maybe we should just call this one session for now and take care of it when we do the mass global rename. (that patch is going to SUCK)","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"1aa35d4aeca39f2f5950b504932a4ffaa4945da2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            data \u003d _proxy._json_response("},{"line_number":73,"context_line":"                proxy.get(endpoint),"},{"line_number":74,"context_line":"                error_message\u003d\"Error fetching flavor extra specs\")"},{"line_number":75,"context_line":"            self.extra_specs \u003d conn._get_and_munchify(\u0027extra_specs\u0027, data)"},{"line_number":76,"context_line":"        except exceptions.SDKException:"},{"line_number":77,"context_line":"            self.extra_specs \u003d {}"},{"line_number":78,"context_line":"            proxy.log.exception(\u0027Fetching extra specs for flavor failed\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_83300057","line":75,"updated":"2019-04-09 08:13:23.000000000","message":"I personally do not like using connection layer in Resource. It mixes usage too much (Resource in Connection and Connection in Resource) and brakes class hierarchy.","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eb6611e62d4b5722105e22bbac7c8e76ab9f3872","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            data \u003d _proxy._json_response("},{"line_number":73,"context_line":"                proxy.get(endpoint),"},{"line_number":74,"context_line":"                error_message\u003d\"Error fetching flavor extra specs\")"},{"line_number":75,"context_line":"            self.extra_specs \u003d conn._get_and_munchify(\u0027extra_specs\u0027, data)"},{"line_number":76,"context_line":"        except exceptions.SDKException:"},{"line_number":77,"context_line":"            self.extra_specs \u003d {}"},{"line_number":78,"context_line":"            proxy.log.exception(\u0027Fetching extra specs for flavor failed\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fce034c_61b572ee","line":75,"in_reply_to":"5fc1f717_83300057","updated":"2019-04-11 15:27:04.000000000","message":"Yeah - agree. I think this should be replaced by the on-demand extra-specs thing.","commit_id":"d4c4bec05b04c9b566adeccaa8f4c4da5f12569c"}],"releasenotes/notes/get-extra-specs-09ce8ab1838c6193.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f72d4a7027e3f7de77fd5987c42a220f161b8f93","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    if it was missing. This is expensive and nobody actually wanted this behavior."},{"line_number":7,"context_line":"    The default is now ``False``. Also, as of microversion ``2.61``, which sdk"},{"line_number":8,"context_line":"    now requests for flavors if it is available, extra_specs are included in the"},{"line_number":9,"context_line":"    flavor listing by default without an extra call."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"9fb8cfa7_e41af76c","line":9,"updated":"2019-06-14 08:37:37.000000000","message":"By the way, this looks like we\u0027re violating our own promise to smoothen the difference between API versions.","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a3458ae8f8499772f433df669090eccdb1800d2c","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    if it was missing. This is expensive and nobody actually wanted this behavior."},{"line_number":7,"context_line":"    The default is now ``False``. Also, as of microversion ``2.61``, which sdk"},{"line_number":8,"context_line":"    now requests for flavors if it is available, extra_specs are included in the"},{"line_number":9,"context_line":"    flavor listing by default without an extra call."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"7faddb67_2b2876e0","line":9,"in_reply_to":"9fb8cfa7_e41af76c","updated":"2019-07-09 11:53:11.000000000","message":"Yeah - it\u0027s a violation of that. Unfortunately people got grumpy about list_flavors doing all the extra_specs calls (it could be a LOT on a cloud with many flavors) ... and it turns out almost nobody wants that data anyway.","commit_id":"9f7d8b9f686288856c79002229ca2db67ac6a8cd"}]}
