)]}'
{"api-ref/source/flavors.inc":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a662e450af6e9e50714ba1f0b21cc5e5361585cc","unresolved":false,"context_lines":[{"line_number":50,"context_line":".. literalinclude:: ../../doc/api_samples/flavors/v2.55/flavors-list-resp.json"},{"line_number":51,"context_line":"   :language: javascript"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Create Flavor"},{"line_number":54,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":".. rest_method:: POST /flavors"}],"source_content_type":"text/x-c++src","patch_set":1,"id":"bf659307_9dcd635f","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":13},"updated":"2018-03-26 07:01:58.000000000","message":"you need update it based on the proposed spec for create and update.","commit_id":"818cfaac1236676faea38cb0e072a1e42cae0c7d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"16374af5ea512fcce1fdb34468f69f39f64166b4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   - flavor: flavor"},{"line_number":96,"context_line":"   - name: flavor_name"},{"line_number":97,"context_line":"   - description: flavor_description_resp"},{"line_number":98,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":99,"context_line":"   - id: flavor_id_body"},{"line_number":100,"context_line":"   - ram: flavor_ram"},{"line_number":101,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_1f3a0798","line":98,"range":{"start_line":98,"start_character":5,"end_line":98,"end_character":34},"updated":"2018-04-02 08:55:58.000000000","message":"If the \"extra_specs\" parameter is always included after 2.61, it should be defined as required. \n\nhttp://lists.openstack.org/pipermail/openstack-dev/2017-July/119239.html\n\nIt should be defined as \"New in version 2.61\" instead of 2.47.\nThe \"extra_specs\" and \"description\" should be after \"os-flavor-access:is_public\" because they are added by microversion.","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cbcea0e48bd17bad39d65b1ad9c772b8e569da5b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   - flavor: flavor"},{"line_number":96,"context_line":"   - name: flavor_name"},{"line_number":97,"context_line":"   - description: flavor_description_resp"},{"line_number":98,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":99,"context_line":"   - id: flavor_id_body"},{"line_number":100,"context_line":"   - ram: flavor_ram"},{"line_number":101,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_fe960b4c","line":98,"range":{"start_line":98,"start_character":5,"end_line":98,"end_character":34},"in_reply_to":"bf659307_1f3a0798","updated":"2018-04-04 02:18:16.000000000","message":"right, reuse 2_47 seems not a good idea here","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   - flavor: flavor"},{"line_number":96,"context_line":"   - name: flavor_name"},{"line_number":97,"context_line":"   - description: flavor_description_resp"},{"line_number":98,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":99,"context_line":"   - id: flavor_id_body"},{"line_number":100,"context_line":"   - ram: flavor_ram"},{"line_number":101,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_fa7561fb","line":98,"range":{"start_line":98,"start_character":5,"end_line":98,"end_character":34},"in_reply_to":"bf659307_788c4b35","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"966183053c5e5238bb358828738837cf240ec494","unresolved":false,"context_lines":[{"line_number":95,"context_line":"   - flavor: flavor"},{"line_number":96,"context_line":"   - name: flavor_name"},{"line_number":97,"context_line":"   - description: flavor_description_resp"},{"line_number":98,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":99,"context_line":"   - id: flavor_id_body"},{"line_number":100,"context_line":"   - ram: flavor_ram"},{"line_number":101,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_788c4b35","line":98,"range":{"start_line":98,"start_character":5,"end_line":98,"end_character":34},"in_reply_to":"bf659307_fe960b4c","updated":"2018-04-04 07:52:00.000000000","message":"you can define this as new variable in parameters.yaml with min_version \u003d 2.61\n\n- https://github.com/openstack/nova/blob/2474f44b17b23f94d99e2f4548ea6c123d9c0ea1/api-ref/source/parameters.yaml#L2447","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"16374af5ea512fcce1fdb34468f69f39f64166b4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"   - flavors: flavors"},{"line_number":147,"context_line":"   - name: flavor_name"},{"line_number":148,"context_line":"   - description: flavor_description_resp"},{"line_number":149,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":150,"context_line":"   - id: flavor_id_body"},{"line_number":151,"context_line":"   - ram: flavor_ram"},{"line_number":152,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_ff42b30e","line":149,"range":{"start_line":149,"start_character":5,"end_line":149,"end_character":34},"updated":"2018-04-02 08:55:58.000000000","message":"ditto","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":146,"context_line":"   - flavors: flavors"},{"line_number":147,"context_line":"   - name: flavor_name"},{"line_number":148,"context_line":"   - description: flavor_description_resp"},{"line_number":149,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":150,"context_line":"   - id: flavor_id_body"},{"line_number":151,"context_line":"   - ram: flavor_ram"},{"line_number":152,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_1a71350d","line":149,"range":{"start_line":149,"start_character":5,"end_line":149,"end_character":34},"in_reply_to":"bf659307_ff42b30e","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"16374af5ea512fcce1fdb34468f69f39f64166b4","unresolved":false,"context_lines":[{"line_number":189,"context_line":"   - flavor: flavor"},{"line_number":190,"context_line":"   - name: flavor_name"},{"line_number":191,"context_line":"   - description: flavor_description_resp"},{"line_number":192,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":193,"context_line":"   - id: flavor_id_body"},{"line_number":194,"context_line":"   - ram: flavor_ram"},{"line_number":195,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_9f4db73f","line":192,"range":{"start_line":192,"start_character":5,"end_line":192,"end_character":34},"updated":"2018-04-02 08:55:58.000000000","message":"ditto","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":189,"context_line":"   - flavor: flavor"},{"line_number":190,"context_line":"   - name: flavor_name"},{"line_number":191,"context_line":"   - description: flavor_description_resp"},{"line_number":192,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":193,"context_line":"   - id: flavor_id_body"},{"line_number":194,"context_line":"   - ram: flavor_ram"},{"line_number":195,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_ba61293c","line":192,"range":{"start_line":192,"start_character":5,"end_line":192,"end_character":34},"in_reply_to":"bf659307_9f4db73f","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"16374af5ea512fcce1fdb34468f69f39f64166b4","unresolved":false,"context_lines":[{"line_number":245,"context_line":"   - flavor: flavor"},{"line_number":246,"context_line":"   - name: flavor_name"},{"line_number":247,"context_line":"   - description: flavor_description_resp"},{"line_number":248,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":249,"context_line":"   - id: flavor_id_body"},{"line_number":250,"context_line":"   - ram: flavor_ram"},{"line_number":251,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_7f4ea338","line":248,"range":{"start_line":248,"start_character":5,"end_line":248,"end_character":34},"updated":"2018-04-02 08:55:58.000000000","message":"ditto","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":245,"context_line":"   - flavor: flavor"},{"line_number":246,"context_line":"   - name: flavor_name"},{"line_number":247,"context_line":"   - description: flavor_description_resp"},{"line_number":248,"context_line":"   - extra_specs: extra_specs_2_47"},{"line_number":249,"context_line":"   - id: flavor_id_body"},{"line_number":250,"context_line":"   - ram: flavor_ram"},{"line_number":251,"context_line":"   - disk: flavor_disk"}],"source_content_type":"text/x-c++src","patch_set":4,"id":"bf659307_da641d4c","line":248,"range":{"start_line":248,"start_character":5,"end_line":248,"end_character":34},"in_reply_to":"bf659307_7f4ea338","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":2326,"context_line":"extra_specs_2_47:"},{"line_number":2327,"context_line":"  min_version: 2.47"},{"line_number":2328,"context_line":"  description: |"},{"line_number":2329,"context_line":"    A dictionary of the flavor\u0027s extra-specs key-and-value pairs.  This will"},{"line_number":2330,"context_line":"    only be included if the user is allowed by policy to index flavor"},{"line_number":2331,"context_line":"    extra_specs."},{"line_number":2332,"context_line":"  in: body"},{"line_number":2333,"context_line":"  required: false"},{"line_number":2334,"context_line":"  type: object"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf659307_82037042","line":2331,"range":{"start_line":2329,"start_character":67,"end_line":2331,"end_character":16},"updated":"2018-04-10 15:12:13.000000000","message":"We should include this same information about policy in the 2.61 description.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":2326,"context_line":"extra_specs_2_47:"},{"line_number":2327,"context_line":"  min_version: 2.47"},{"line_number":2328,"context_line":"  description: |"},{"line_number":2329,"context_line":"    A dictionary of the flavor\u0027s extra-specs key-and-value pairs.  This will"},{"line_number":2330,"context_line":"    only be included if the user is allowed by policy to index flavor"},{"line_number":2331,"context_line":"    extra_specs."},{"line_number":2332,"context_line":"  in: body"},{"line_number":2333,"context_line":"  required: false"},{"line_number":2334,"context_line":"  type: object"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf659307_9295e989","line":2331,"range":{"start_line":2329,"start_character":67,"end_line":2331,"end_character":16},"in_reply_to":"bf659307_82037042","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":2337,"context_line":"  description: |"},{"line_number":2338,"context_line":"    A dictionary of the flavor\u0027s extra-specs key-and-value pairs."},{"line_number":2339,"context_line":"  in: body"},{"line_number":2340,"context_line":"  required: true"},{"line_number":2341,"context_line":"  type: object"},{"line_number":2342,"context_line":"fault:"},{"line_number":2343,"context_line":"  description: |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf659307_62f89c48","line":2340,"range":{"start_line":2340,"start_character":12,"end_line":2340,"end_character":16},"updated":"2018-04-10 15:12:13.000000000","message":"extra_specs_2_47 says it\u0027s false, which I tend to agree with since it\u0027s optional based on policy rules.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":2337,"context_line":"  description: |"},{"line_number":2338,"context_line":"    A dictionary of the flavor\u0027s extra-specs key-and-value pairs."},{"line_number":2339,"context_line":"  in: body"},{"line_number":2340,"context_line":"  required: true"},{"line_number":2341,"context_line":"  type: object"},{"line_number":2342,"context_line":"fault:"},{"line_number":2343,"context_line":"  description: |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf659307_328e5d79","line":2340,"range":{"start_line":2340,"start_character":12,"end_line":2340,"end_character":16},"in_reply_to":"bf659307_62f89c48","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"}],"doc/api_samples/flavors/v2.61/flavor-get-resp.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \"rxtx_factor\": 1.0,"},{"line_number":23,"context_line":"        \"description\": \"test description\","},{"line_number":24,"context_line":"        \"extra_specs\": {"},{"line_number":25,"context_line":"                \"key1\": \"value1\","},{"line_number":26,"context_line":"                \"key2\": \"value2\""},{"line_number":27,"context_line":"        }"},{"line_number":28,"context_line":"    }"},{"line_number":29,"context_line":"}"}],"source_content_type":"application/json","patch_set":9,"id":"bf659307_02be8064","line":26,"range":{"start_line":25,"start_character":16,"end_line":26,"end_character":32},"updated":"2018-04-10 15:12:13.000000000","message":"nit: the indent here is one tab too many","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \"rxtx_factor\": 1.0,"},{"line_number":23,"context_line":"        \"description\": \"test description\","},{"line_number":24,"context_line":"        \"extra_specs\": {"},{"line_number":25,"context_line":"                \"key1\": \"value1\","},{"line_number":26,"context_line":"                \"key2\": \"value2\""},{"line_number":27,"context_line":"        }"},{"line_number":28,"context_line":"    }"},{"line_number":29,"context_line":"}"}],"source_content_type":"application/json","patch_set":9,"id":"bf659307_f2e9c519","line":26,"range":{"start_line":25,"start_character":16,"end_line":26,"end_character":32},"in_reply_to":"bf659307_02be8064","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"483048889b9686437c363b6984a6053931908bf8","unresolved":false,"context_lines":[{"line_number":143,"context_line":"             API. And the os-migrations API now returns both the id and the"},{"line_number":144,"context_line":"             uuid in response."},{"line_number":145,"context_line":"    * 2.60 - Add support for attaching a single volume to multiple instances."},{"line_number":146,"context_line":"    * 2.61 - Added flavor.extra_specs to GET/POST flavors APIs."},{"line_number":147,"context_line":"\"\"\""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_cb3dc38f","line":146,"range":{"start_line":146,"start_character":13,"end_line":146,"end_character":63},"updated":"2018-03-31 01:29:19.000000000","message":"UPDATE? also, better to mention this is added to response.","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"24ef076364cbda06459237e1d2212657031a6405","unresolved":false,"context_lines":[{"line_number":143,"context_line":"             API. And the os-migrations API now returns both the id and the"},{"line_number":144,"context_line":"             uuid in response."},{"line_number":145,"context_line":"    * 2.60 - Add support for attaching a single volume to multiple instances."},{"line_number":146,"context_line":"    * 2.61 - Added flavor.extra_specs to GET/POST flavors APIs."},{"line_number":147,"context_line":"\"\"\""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_abd40f21","line":146,"range":{"start_line":146,"start_character":13,"end_line":146,"end_character":63},"in_reply_to":"bf659307_cb3dc38f","updated":"2018-03-31 01:37:07.000000000","message":"Yeah, sure","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"76ba701edc0ba7b37ae8a7e019e12e03837b5a92","unresolved":false,"context_lines":[{"line_number":144,"context_line":"             uuid in response."},{"line_number":145,"context_line":"    * 2.60 - Add support for attaching a single volume to multiple instances."},{"line_number":146,"context_line":"    * 2.61 - Exposes flavor.extra_specs in the response of the list, get flavor"},{"line_number":147,"context_line":"             details, create, update flavor."},{"line_number":148,"context_line":"\"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_dfdb2f4c","line":147,"updated":"2018-04-02 09:06:21.000000000","message":"APIs.","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":144,"context_line":"             uuid in response."},{"line_number":145,"context_line":"    * 2.60 - Add support for attaching a single volume to multiple instances."},{"line_number":146,"context_line":"    * 2.61 - Exposes flavor.extra_specs in the response of the list, get flavor"},{"line_number":147,"context_line":"             details, create, update flavor."},{"line_number":148,"context_line":"\"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_1a54d520","line":147,"in_reply_to":"bf659307_38fed36a","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"966183053c5e5238bb358828738837cf240ec494","unresolved":false,"context_lines":[{"line_number":144,"context_line":"             uuid in response."},{"line_number":145,"context_line":"    * 2.60 - Add support for attaching a single volume to multiple instances."},{"line_number":146,"context_line":"    * 2.61 - Exposes flavor.extra_specs in the response of the list, get flavor"},{"line_number":147,"context_line":"             details, create, update flavor."},{"line_number":148,"context_line":"\"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_38fed36a","line":147,"in_reply_to":"bf659307_dfdb2f4c","updated":"2018-04-04 07:52:00.000000000","message":"or something like-\n\nExposes flavor extra_specs in the flavor representation. Flavor extra_specs will be included in Response body of GET, POST, PUT /flavors APIs.","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"}],"nova/api/openstack/compute/flavor_manage.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"093c5a225d41396aa8f670c16e19ab861e44ec12","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                exception.FlavorIdExists) as err:"},{"line_number":111,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003derr.format_message())"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":114,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":117,"context_line":"        # other related flavor api."}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_5bd00cf8","line":114,"range":{"start_line":113,"start_character":0,"end_line":114,"end_character":62},"updated":"2018-04-09 11:27:46.000000000","message":"policy check here-\ninclude_extra_specs \u003d False\nif api_version_request.is_supported(\n            request, FLAVOR_EXTRA_SPECS_MICROVERSION):\n    include_extra_specs \u003d context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                exception.FlavorIdExists) as err:"},{"line_number":111,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003derr.format_message())"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":114,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":117,"context_line":"        # other related flavor api."}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_501a107d","line":114,"range":{"start_line":113,"start_character":0,"end_line":114,"end_character":62},"in_reply_to":"bf659307_5bd00cf8","updated":"2018-04-11 06:57:27.000000000","message":"And in here, I think no need to change, because if users no access to show extra, it will also return {}.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":20408,"name":"Pavel Abalikhin","email":"anpavl@gmail.com","username":"pabalikhin"},"change_message_id":"1e3d52dc3c8b6d6d5b65f7c7414f1857b8ff0d33","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":114,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":117,"context_line":"        # other related flavor api."},{"line_number":118,"context_line":"        if include_extra_specs:"},{"line_number":119,"context_line":"            flavor.extra_specs \u003d {}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return self._view_builder.show(req, flavor, include_description,"},{"line_number":122,"context_line":"                                       include_extra_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_1bd7ed51","line":119,"range":{"start_line":116,"start_character":0,"end_line":119,"end_character":35},"updated":"2018-04-09 13:20:49.000000000","message":"_flavor_create in objects/flavor.py always returns object with \u0027extra_spec\u0027 dict. So this seems superfluous.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"494d3db61791382a963c70f0f12beb203ca35201","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":114,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":117,"context_line":"        # other related flavor api."},{"line_number":118,"context_line":"        if include_extra_specs:"},{"line_number":119,"context_line":"            flavor.extra_specs \u003d {}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return self._view_builder.show(req, flavor, include_description,"},{"line_number":122,"context_line":"                                       include_extra_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_9077483b","line":119,"range":{"start_line":116,"start_character":0,"end_line":119,"end_character":35},"in_reply_to":"bf659307_1bd7ed51","updated":"2018-04-10 01:43:41.000000000","message":"Just for consistent with other, and we mentioned it in bp.\n\nhttps://review.openstack.org/#/c/554134/4/specs/rocky/approved/add-extra-specs-to-flavor-list.rst@177","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"093c5a225d41396aa8f670c16e19ab861e44ec12","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # Cache the flavor so the flavor_access and flavor_rxtx extensions"},{"line_number":143,"context_line":"        # can add stuff to the response."},{"line_number":144,"context_line":"        req.cache_db_flavor(flavor)"},{"line_number":145,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":146,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":147,"context_line":"        return self._view_builder.show(req, flavor, include_description\u003dTrue,"},{"line_number":148,"context_line":"                                       include_extra_specs\u003dinclude_extra_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_7bcb9049","line":146,"range":{"start_line":145,"start_character":0,"end_line":146,"end_character":62},"updated":"2018-04-09 11:27:46.000000000","message":"policy checks here-\ninclude_extra_specs \u003d False\nif api_version_request.is_supported(\n            request, FLAVOR_EXTRA_SPECS_MICROVERSION):\n    include_extra_specs \u003d context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if api_version_request.is_supported("},{"line_number":116,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":117,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":120,"context_line":"        # other related flavor api."},{"line_number":121,"context_line":"        if include_extra_specs:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_1d9ee1b7","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":48},"updated":"2018-04-10 15:12:13.000000000","message":"This should be \u0027index\u0027, since \u0027show\u0027 is about showing a specific extra spec, but we\u0027re listing the extra specs for the created flavor (which is empty, yes, but still, it\u0027s the same thing as GET /flavors/{flavor_id}/os-extra_specs.\n\n\u0027index\u0027 would also be consistent with how the servers view builder does this:\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/views/servers.py#L127","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if api_version_request.is_supported("},{"line_number":116,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":117,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":120,"context_line":"        # other related flavor api."},{"line_number":121,"context_line":"        if include_extra_specs:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_f23785af","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":48},"in_reply_to":"bf659307_1d9ee1b7","updated":"2018-04-11 06:57:27.000000000","message":"Done.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":120,"context_line":"        # other related flavor api."},{"line_number":121,"context_line":"        if include_extra_specs:"},{"line_number":122,"context_line":"            flavor.extra_specs \u003d {}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_9da991de","line":121,"updated":"2018-04-10 15:12:13.000000000","message":"Why isn\u0027t this nested under the \"if api_version_request.is_supported\" conditional?","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"        # NOTE(yikun): This empty extra_spec only for keeping consistent with"},{"line_number":120,"context_line":"        # other related flavor api."},{"line_number":121,"context_line":"        if include_extra_specs:"},{"line_number":122,"context_line":"            flavor.extra_specs \u003d {}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_f2d2255c","line":121,"in_reply_to":"bf659307_9da991de","updated":"2018-04-11 06:57:27.000000000","message":"Ha, yes, we can. :)","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if api_version_request.is_supported("},{"line_number":150,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":151,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":152,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":153,"context_line":"        return self._view_builder.show(req, flavor, include_description\u003dTrue,"},{"line_number":154,"context_line":"                                       include_extra_specs\u003dinclude_extra_specs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_1d87c163","line":152,"range":{"start_line":152,"start_character":44,"end_line":152,"end_character":48},"updated":"2018-04-10 15:12:13.000000000","message":"index - same reasons above","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        if api_version_request.is_supported("},{"line_number":150,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":151,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":152,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":153,"context_line":"        return self._view_builder.show(req, flavor, include_description\u003dTrue,"},{"line_number":154,"context_line":"                                       include_extra_specs\u003dinclude_extra_specs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_9248892d","line":152,"range":{"start_line":152,"start_character":44,"end_line":152,"end_character":48},"in_reply_to":"bf659307_1d87c163","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdd65b4793b8afaf8e00bae1a912aef9948d304c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if api_version_request.is_supported("},{"line_number":116,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":117,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"            # NOTE(yikun): This empty extra_spec only for keeping consistent"},{"line_number":120,"context_line":"            # with other related flavor api."},{"line_number":121,"context_line":"            flavor.extra_specs \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_61a041f5","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":49},"updated":"2018-04-13 06:36:20.000000000","message":"The \u0027create\u0027, \u0027update\u0027 maps to the index policy is also strange.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c61792b36470c4deaa374f09fc62106d275dc8be","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if api_version_request.is_supported("},{"line_number":116,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":117,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"            # NOTE(yikun): This empty extra_spec only for keeping consistent"},{"line_number":120,"context_line":"            # with other related flavor api."},{"line_number":121,"context_line":"            flavor.extra_specs \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_ac696625","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":49},"in_reply_to":"bf659307_48975d46","updated":"2018-04-13 14:32:54.000000000","message":"It\u0027s using \u0027index\u0027 because we\u0027re just listing extra specs in here, we\u0027re not POSTing extra specs or GETing (showing) specific extra spec values.\n\n\u003e either we properly document why the response uses the same RBAC rule than the extra-specs specific resource (but then it\u0027s a source of confusion I guess)\n\nI think that\u0027s reasonable, and would also have to include GET /servers/detail and GET /servers/{server_id} along with some other server APIs probably like PUT and rebuild.\n\n\u003e or we create a new policy rule that would define the response behaviour for *all* os-flavors resource verbs.\n\nThat\u0027s quite a bit bigger change which I\u0027d rather not hold this microversion up on, since it also involves changing the server API responses too as noted.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb8742cbf7f8dd55b708758909ec5f46472ce48f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if api_version_request.is_supported("},{"line_number":116,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":117,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"            # NOTE(yikun): This empty extra_spec only for keeping consistent"},{"line_number":120,"context_line":"            # with other related flavor api."},{"line_number":121,"context_line":"            flavor.extra_specs \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_48975d46","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":49},"in_reply_to":"bf659307_61a041f5","updated":"2018-04-13 09:50:49.000000000","message":"Well, it\u0027s due to the fact we agreed on the spec to accept for consistency reasons to show extra specs on a POST request too.\nThat said, we haven\u0027t discussed in the spec about the policy.\n\nTBC, there are 2 options I think :\n- either we properly document why the response uses the same RBAC rule than the extra-specs specific resource (but then it\u0027s a source of confusion I guess)\n- or we create a new policy rule that would define the response behaviour for *all* os-flavors resource verbs.\n\nI\u0027m clearly in favor of the latter.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"28a30c14e1b6c3c8d3cedc81c6dfde6e98d8b421","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if api_version_request.is_supported("},{"line_number":116,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":117,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":118,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":119,"context_line":"            # NOTE(yikun): This empty extra_spec only for keeping consistent"},{"line_number":120,"context_line":"            # with other related flavor api."},{"line_number":121,"context_line":"            flavor.extra_specs \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_0c470320","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":49},"in_reply_to":"bf659307_ac696625","updated":"2018-04-16 02:23:36.000000000","message":"I see the point why we use \u0027index\u0027 rule, that makes senses. But yes, let us update the policy doc, that really confuse the people, the rule name isn\u0027t mapping to the API also.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"}],"nova/api/openstack/compute/flavors.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"3395a0120e1f560e592926dd656bc07a4ee661a1","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":54,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":55,"context_line":"        return self._view_builder.detail(req, limited_flavors)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @wsgi.expected_errors(404)"},{"line_number":58,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_8ba7cb0b","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":62},"updated":"2018-03-31 01:02:03.000000000","message":"oops","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"483048889b9686437c363b6984a6053931908bf8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Return all flavors in detail.\"\"\""},{"line_number":50,"context_line":"        limited_flavors \u003d self._get_flavors(req)"},{"line_number":51,"context_line":"        req.cache_db_flavors(limited_flavors)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":54,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":55,"context_line":"        return self._view_builder.detail(req, limited_flavors)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @wsgi.expected_errors(404)"},{"line_number":58,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_8b110b07","line":55,"range":{"start_line":52,"start_character":0,"end_line":55,"end_character":62},"updated":"2018-03-31 01:29:19.000000000","message":"surprisingly your functional tests passed...","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"24ef076364cbda06459237e1d2212657031a6405","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Return all flavors in detail.\"\"\""},{"line_number":50,"context_line":"        limited_flavors \u003d self._get_flavors(req)"},{"line_number":51,"context_line":"        req.cache_db_flavors(limited_flavors)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":54,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":55,"context_line":"        return self._view_builder.detail(req, limited_flavors)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @wsgi.expected_errors(404)"},{"line_number":58,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_0b165bf2","line":55,"range":{"start_line":52,"start_character":0,"end_line":55,"end_character":62},"in_reply_to":"bf659307_8b110b07","updated":"2018-03-31 01:37:07.000000000","message":"I also add the api microversion process in the view builder. :)\n\nhttps://review.openstack.org/#/c/554159/3/nova/api/openstack/compute/views/flavors.py@110","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":20408,"name":"Pavel Abalikhin","email":"anpavl@gmail.com","username":"pabalikhin"},"change_message_id":"963c69f2277b8deb6ad255cc06e8e988abfce93f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":62,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":65,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":66,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":67,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":68,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_54a1dd94","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":62},"updated":"2018-04-06 09:45:41.000000000","message":"Should we check \"os_compute_api:os-flavor-extra-specs:show\" policy here and in other same places?","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":62,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":65,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":66,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":67,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":68,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_1a1cd5bf","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":62},"in_reply_to":"bf659307_54a1dd94","updated":"2018-04-09 02:47:32.000000000","message":"Yeah, we need it! Thanks!","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"093c5a225d41396aa8f670c16e19ab861e44ec12","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":62,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":65,"context_line":"            req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":66,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":67,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":68,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_dbdc1c1a","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":62},"updated":"2018-04-09 11:27:46.000000000","message":"policy check also like-\ninclude_extra_specs \u003d False\nif api_version_request.is_supported(\n            request, FLAVOR_EXTRA_SPECS_MICROVERSION):\n    include_extra_specs \u003d context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if api_version_request.is_supported("},{"line_number":56,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":57,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":58,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":59,"context_line":"        return self._view_builder.detail(req, limited_flavors,"},{"line_number":60,"context_line":"                                         include_extra_specs)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_fde8cd16","line":58,"range":{"start_line":58,"start_character":44,"end_line":58,"end_character":48},"updated":"2018-04-10 15:12:13.000000000","message":"index - we\u0027re not showing details about a specific extra spec, we\u0027re listing all extra specs for the given flavor.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if api_version_request.is_supported("},{"line_number":56,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":57,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":58,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":59,"context_line":"        return self._view_builder.detail(req, limited_flavors,"},{"line_number":60,"context_line":"                                         include_extra_specs)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_d25b61f3","line":58,"range":{"start_line":58,"start_character":44,"end_line":58,"end_character":48},"in_reply_to":"bf659307_fde8cd16","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":58,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":59,"context_line":"        return self._view_builder.detail(req, limited_flavors,"},{"line_number":60,"context_line":"                                         include_extra_specs)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.expected_errors(404)"},{"line_number":63,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_5da779a8","line":60,"range":{"start_line":60,"start_character":41,"end_line":60,"end_character":60},"updated":"2018-04-10 15:12:13.000000000","message":"nit: use the kwarg form of this since it\u0027s kind of confusing looking at this for detail() and show() below.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1cb3d2e97d63e702552e9bf6821ffff199adf5af","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":58,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":59,"context_line":"        return self._view_builder.detail(req, limited_flavors,"},{"line_number":60,"context_line":"                                         include_extra_specs)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.expected_errors(404)"},{"line_number":63,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_5a6998f6","line":60,"range":{"start_line":60,"start_character":41,"end_line":60,"end_character":60},"in_reply_to":"bf659307_12347992","updated":"2018-04-11 17:40:23.000000000","message":"\u003e and I will also change @80 include_description and include_extra_specs to kwargs\n\nCool - I thought about asking for that, because if efried saw it he\u0027d -1 you for it (but I\u0027m not as severe about that specific nit).","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":58,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":59,"context_line":"        return self._view_builder.detail(req, limited_flavors,"},{"line_number":60,"context_line":"                                         include_extra_specs)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @wsgi.expected_errors(404)"},{"line_number":63,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_12347992","line":60,"range":{"start_line":60,"start_character":41,"end_line":60,"end_character":60},"in_reply_to":"bf659307_5da779a8","updated":"2018-04-11 06:57:27.000000000","message":"Done, and I will also change @80 include_description and include_extra_specs to kwargs","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if api_version_request.is_supported("},{"line_number":74,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":75,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":76,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":77,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":78,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":79,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_5de1b929","line":76,"range":{"start_line":76,"start_character":44,"end_line":76,"end_character":48},"updated":"2018-04-10 15:12:13.000000000","message":"index","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if api_version_request.is_supported("},{"line_number":74,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":75,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":76,"context_line":"                fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)"},{"line_number":77,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":78,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":79,"context_line":"        return self._view_builder.show(req, flavor, include_description,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_521511e4","line":76,"range":{"start_line":76,"start_character":44,"end_line":76,"end_character":48},"in_reply_to":"bf659307_5de1b929","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdd65b4793b8afaf8e00bae1a912aef9948d304c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if api_version_request.is_supported("},{"line_number":74,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":75,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":76,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":77,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":78,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":79,"context_line":"        return self._view_builder.show("}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_8161d5d5","line":76,"range":{"start_line":76,"start_character":44,"end_line":76,"end_character":49},"updated":"2018-04-13 06:36:20.000000000","message":"why this isn\u0027t mapping to the \u0027os_compute_api:os-flavor-extra-specs:show\u0027?","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c61792b36470c4deaa374f09fc62106d275dc8be","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if api_version_request.is_supported("},{"line_number":74,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":75,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":76,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":77,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":78,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":79,"context_line":"        return self._view_builder.show("}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_4c4d2ac2","line":76,"range":{"start_line":76,"start_character":44,"end_line":76,"end_character":49},"in_reply_to":"bf659307_687fc114","updated":"2018-04-13 14:32:54.000000000","message":"Because os_compute_api:os-flavor-extra-specs:show is specifically about showing a single extra spec value for a single extra spec key, and here we\u0027re listing all extra specs when showing a specific flavor. This was \u0027show\u0027 previously before I made comments on the review that it should be \u0027index\u0027.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb8742cbf7f8dd55b708758909ec5f46472ce48f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if api_version_request.is_supported("},{"line_number":74,"context_line":"                req, flavors_view.FLAVOR_EXTRA_SPECS_MICROVERSION):"},{"line_number":75,"context_line":"            include_extra_specs \u003d context.can("},{"line_number":76,"context_line":"                fes_policies.POLICY_ROOT % \u0027index\u0027, fatal\u003dFalse)"},{"line_number":77,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":78,"context_line":"            req, flavors_view.FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":79,"context_line":"        return self._view_builder.show("}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_687fc114","line":76,"range":{"start_line":76,"start_character":44,"end_line":76,"end_character":49},"in_reply_to":"bf659307_8161d5d5","updated":"2018-04-13 09:50:49.000000000","message":"See my comment elsewhere.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a662e450af6e9e50714ba1f0b21cc5e5361585cc","unresolved":false,"context_lines":[{"line_number":769,"context_line":"2.61"},{"line_number":770,"context_line":"----"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Add a new microversion to the following APIs to return also"},{"line_number":773,"context_line":"``extra-specs`` of the flavor."},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"* GET /flavors/details"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_bdff0766","line":772,"range":{"start_line":772,"start_character":3,"end_line":772,"end_character":21},"updated":"2018-03-26 07:01:58.000000000","message":"no need for it","commit_id":"818cfaac1236676faea38cb0e072a1e42cae0c7d"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"483048889b9686437c363b6984a6053931908bf8","unresolved":false,"context_lines":[{"line_number":769,"context_line":"2.61"},{"line_number":770,"context_line":"----"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Adds a ``extra-specs`` field to the flavor resource in the following APIs:"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"* ``GET /flavors/detail``"},{"line_number":775,"context_line":"* ``GET /flavors/{flavor_id}``"},{"line_number":776,"context_line":"* ``POST /flavors``"},{"line_number":777,"context_line":"* ``PUT /flavors/{flavor_id}``"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_cb0b83d3","line":777,"range":{"start_line":772,"start_character":0,"end_line":777,"end_character":30},"updated":"2018-03-31 01:29:19.000000000","message":"mention it is in the response field","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"24ef076364cbda06459237e1d2212657031a6405","unresolved":false,"context_lines":[{"line_number":769,"context_line":"2.61"},{"line_number":770,"context_line":"----"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Adds a ``extra-specs`` field to the flavor resource in the following APIs:"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"* ``GET /flavors/detail``"},{"line_number":775,"context_line":"* ``GET /flavors/{flavor_id}``"},{"line_number":776,"context_line":"* ``POST /flavors``"},{"line_number":777,"context_line":"* ``PUT /flavors/{flavor_id}``"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_cbd94357","line":777,"range":{"start_line":772,"start_character":0,"end_line":777,"end_character":30},"in_reply_to":"bf659307_cb0b83d3","updated":"2018-03-31 01:37:07.000000000","message":"OK","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a48c97d75a01a8c6dd0647ffbe70ed198b35fa12","unresolved":false,"context_lines":[{"line_number":770,"context_line":"----"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response only and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/extra_specs`` API. Flavor extra_specs will be"},{"line_number":775,"context_line":"included in Response body of the following APIs:"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_2771810d","line":773,"range":{"start_line":773,"start_character":43,"end_line":773,"end_character":47},"updated":"2018-04-09 05:38:32.000000000","message":"s/only/d","commit_id":"3a734af47af914513adf674893bb8e9a0b25ab85"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"dcccdc9c55d03459fb3fe9ce0c5b8c977da22adb","unresolved":false,"context_lines":[{"line_number":770,"context_line":"----"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response only and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/extra_specs`` API. Flavor extra_specs will be"},{"line_number":775,"context_line":"included in Response body of the following APIs:"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_5bf80cc3","line":773,"range":{"start_line":773,"start_character":43,"end_line":773,"end_character":47},"in_reply_to":"bf659307_2771810d","updated":"2018-04-09 08:40:52.000000000","message":"Done","commit_id":"3a734af47af914513adf674893bb8e9a0b25ab85"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":568,"context_line":"Replace the ``flavor`` name/ref with the actual flavor details from the embedded"},{"line_number":569,"context_line":"flavor object when displaying server details.  Requests made with microversion"},{"line_number":570,"context_line":"\u003e\u003d 2.47 will no longer return the flavor ID/link but instead will return a"},{"line_number":571,"context_line":"subset of the flavor details.  If the user is prevented by policy from"},{"line_number":572,"context_line":"indexing extra-specs, then the ``extra_specs`` field will not be included in the"},{"line_number":573,"context_line":"flavor information."},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"2.48"},{"line_number":576,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_bd6c9508","line":573,"range":{"start_line":571,"start_character":31,"end_line":573,"end_character":19},"updated":"2018-04-10 15:12:13.000000000","message":"We should include this in the 2.61 history notes below also.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":568,"context_line":"Replace the ``flavor`` name/ref with the actual flavor details from the embedded"},{"line_number":569,"context_line":"flavor object when displaying server details.  Requests made with microversion"},{"line_number":570,"context_line":"\u003e\u003d 2.47 will no longer return the flavor ID/link but instead will return a"},{"line_number":571,"context_line":"subset of the flavor details.  If the user is prevented by policy from"},{"line_number":572,"context_line":"indexing extra-specs, then the ``extra_specs`` field will not be included in the"},{"line_number":573,"context_line":"flavor information."},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"2.48"},{"line_number":576,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_12955933","line":573,"range":{"start_line":571,"start_character":31,"end_line":573,"end_character":19},"in_reply_to":"bf659307_bd6c9508","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response only and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/extra_specs`` API. Flavor extra_specs will be"},{"line_number":775,"context_line":"included in Response body of the following APIs:"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"* ``GET /flavors/detail``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_1d3a6197","line":774,"range":{"start_line":774,"start_character":6,"end_line":774,"end_character":39},"updated":"2018-04-10 15:12:13.000000000","message":"/flavors/{flavor_id}/os-extra_specs\n\nWe need to use the same thing in the API reference:\n\nhttps://developer.openstack.org/api-ref/compute/#list-extra-specs-for-a-flavor","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response only and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/extra_specs`` API. Flavor extra_specs will be"},{"line_number":775,"context_line":"included in Response body of the following APIs:"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"* ``GET /flavors/detail``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_52719143","line":774,"range":{"start_line":774,"start_character":6,"end_line":774,"end_character":39},"in_reply_to":"bf659307_084d4171","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a46e15a4d07bca9ac61ccce868036f74fa93e856","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response only and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/extra_specs`` API. Flavor extra_specs will be"},{"line_number":775,"context_line":"included in Response body of the following APIs:"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"* ``GET /flavors/detail``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_084d4171","line":774,"range":{"start_line":774,"start_character":6,"end_line":774,"end_character":39},"in_reply_to":"bf659307_1d3a6197","updated":"2018-04-10 15:14:09.000000000","message":"\u003e We need to use the same thing in the API reference:\n\nTo clarify, we need to use the same thing *from* the Compute API reference.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb8742cbf7f8dd55b708758909ec5f46472ce48f","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/os-extra_specs`` API. If the user is prevented by"},{"line_number":775,"context_line":"policy from indexing extra-specs, then the ``extra_specs`` field will not be"},{"line_number":776,"context_line":"included in the flavor information. Flavor extra_specs will be included in"},{"line_number":777,"context_line":"Response body of the following APIs:"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bf659307_28c3093a","line":775,"range":{"start_line":774,"start_character":74,"end_line":775,"end_character":6},"updated":"2018-04-13 09:50:49.000000000","message":"you should mention the policy name.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c61792b36470c4deaa374f09fc62106d275dc8be","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"Exposes flavor extra_specs in the flavor representation. Now users can see the"},{"line_number":773,"context_line":"flavor extra-specs in flavor APIs response and do not need to call"},{"line_number":774,"context_line":"``GET /flavors/{flavor_id}/os-extra_specs`` API. If the user is prevented by"},{"line_number":775,"context_line":"policy from indexing extra-specs, then the ``extra_specs`` field will not be"},{"line_number":776,"context_line":"included in the flavor information. Flavor extra_specs will be included in"},{"line_number":777,"context_line":"Response body of the following APIs:"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bf659307_6c482eb2","line":775,"range":{"start_line":774,"start_character":74,"end_line":775,"end_character":6},"in_reply_to":"bf659307_28c3093a","updated":"2018-04-13 14:32:54.000000000","message":"Yeah that\u0027s fair.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"}],"nova/api/openstack/compute/views/flavors.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0c03d406af4d1778e63ea7354d2f5c3c2d5e8da9","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":108,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":109,"context_line":"            request, FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":110,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":111,"context_line":"            request, FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":112,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":113,"context_line":"        update_is_public \u003d context.can(fa_policies.BASE_POLICY_NAME,"},{"line_number":114,"context_line":"                                       fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_0bfdfbaf","line":111,"range":{"start_line":110,"start_character":0,"end_line":111,"end_character":53},"updated":"2018-03-31 01:31:03.000000000","message":"OH here","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"24ef076364cbda06459237e1d2212657031a6405","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":108,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":109,"context_line":"            request, FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":110,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":111,"context_line":"            request, FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":112,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":113,"context_line":"        update_is_public \u003d context.can(fa_policies.BASE_POLICY_NAME,"},{"line_number":114,"context_line":"                                       fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_2be8ffdf","line":111,"range":{"start_line":110,"start_character":0,"end_line":111,"end_character":53},"in_reply_to":"bf659307_0bfdfbaf","updated":"2018-03-31 01:37:07.000000000","message":"Yes","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"45ff81287870d21693c2ca06ddee854fad757888","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":108,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":109,"context_line":"            request, FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":110,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":111,"context_line":"            request, FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":112,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":113,"context_line":"        update_is_public \u003d context.can(fa_policies.BASE_POLICY_NAME,"},{"line_number":114,"context_line":"                                       fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_ebc68768","line":111,"range":{"start_line":110,"start_character":0,"end_line":111,"end_character":53},"in_reply_to":"bf659307_2be8ffdf","updated":"2018-03-31 01:42:46.000000000","message":"And have a question: should we move these into API rather than in here (view builder)? It doesn\u0027t matter on result, both ok, but just for readable, because the user can find which changes of this microversion in API directly.","commit_id":"dcf176f1ee9ec2b38fab84c6c93b192fcaeb7438"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cbcea0e48bd17bad39d65b1ad9c772b8e569da5b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def basic(self, request, flavor, include_description\u003dFalse,"},{"line_number":30,"context_line":"              include_extra_specs\u003dFalse, update_is_public\u003dNone,"},{"line_number":31,"context_line":"              update_rxtx_factor\u003dNone):"},{"line_number":32,"context_line":"        # include_extra_specs \u0026update_is_public \u0026 update_rxtx_factor are"},{"line_number":33,"context_line":"        # placeholder param which are not used in this method as basic() method"},{"line_number":34,"context_line":"        # is used by index() (GET /flavors) which does not return those keys in"},{"line_number":35,"context_line":"        # response."}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_7e30bb9f","line":32,"range":{"start_line":32,"start_character":10,"end_line":32,"end_character":31},"updated":"2018-04-04 02:18:16.000000000","message":"nit a blank after \u0026","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def basic(self, request, flavor, include_description\u003dFalse,"},{"line_number":30,"context_line":"              include_extra_specs\u003dFalse, update_is_public\u003dNone,"},{"line_number":31,"context_line":"              update_rxtx_factor\u003dNone):"},{"line_number":32,"context_line":"        # include_extra_specs \u0026update_is_public \u0026 update_rxtx_factor are"},{"line_number":33,"context_line":"        # placeholder param which are not used in this method as basic() method"},{"line_number":34,"context_line":"        # is used by index() (GET /flavors) which does not return those keys in"},{"line_number":35,"context_line":"        # response."}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_863df6de","line":32,"range":{"start_line":32,"start_character":10,"end_line":32,"end_character":31},"in_reply_to":"bf659307_7e30bb9f","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a48c97d75a01a8c6dd0647ffbe70ed198b35fa12","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if include_extra_specs:"},{"line_number":78,"context_line":"            if context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse):"},{"line_number":79,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"},{"line_number":80,"context_line":"            else:"},{"line_number":81,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d {}"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # TODO(gmann): \u0027update_is_public\u0027 \u0026 \u0027update_rxtx_factor\u0027 are policies"},{"line_number":84,"context_line":"        # checks. Once os-flavor-access \u0026 os-flavor-rxtx policies are"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_0759dd58","line":81,"range":{"start_line":78,"start_character":12,"end_line":81,"end_character":57},"updated":"2018-04-09 05:38:32.000000000","message":"I think you need document this, at least in the release notes better in generated policy files","commit_id":"3a734af47af914513adf674893bb8e9a0b25ab85"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"dcccdc9c55d03459fb3fe9ce0c5b8c977da22adb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if include_extra_specs:"},{"line_number":78,"context_line":"            if context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse):"},{"line_number":79,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"},{"line_number":80,"context_line":"            else:"},{"line_number":81,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d {}"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # TODO(gmann): \u0027update_is_public\u0027 \u0026 \u0027update_rxtx_factor\u0027 are policies"},{"line_number":84,"context_line":"        # checks. Once os-flavor-access \u0026 os-flavor-rxtx policies are"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_3bfd18b1","line":81,"range":{"start_line":78,"start_character":12,"end_line":81,"end_character":57},"in_reply_to":"bf659307_0759dd58","updated":"2018-04-09 08:40:52.000000000","message":"Done","commit_id":"3a734af47af914513adf674893bb8e9a0b25ab85"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"093c5a225d41396aa8f670c16e19ab861e44ec12","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if include_extra_specs:"},{"line_number":78,"context_line":"            if context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse):"},{"line_number":79,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"},{"line_number":80,"context_line":"            else:"},{"line_number":81,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d {}"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_9b830405","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":73},"updated":"2018-04-09 11:27:46.000000000","message":"these policy checks will be performed more than once in case of GET /flavors/detail. you need to perform this check along with microversion checks for include_extra_specs flag. include_extra_specs should be true if both condition are true (policy and microversion)","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b12e1bda29220cfcfa26384d291e3ed4c0423bf6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if include_extra_specs:"},{"line_number":78,"context_line":"            if context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse):"},{"line_number":79,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"},{"line_number":80,"context_line":"            else:"},{"line_number":81,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d {}"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_7102b60b","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":73},"in_reply_to":"bf659307_50f0d067","updated":"2018-04-10 04:26:01.000000000","message":"yea, in case of GET details it will do policy checks for each item in flavor dict.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"48223fdd0a726ac0b5000bbcf6e567885efe8ced","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if include_extra_specs:"},{"line_number":78,"context_line":"            if context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse):"},{"line_number":79,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"},{"line_number":80,"context_line":"            else:"},{"line_number":81,"context_line":"                flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d {}"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_50f0d067","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":73},"in_reply_to":"bf659307_9b830405","updated":"2018-04-10 02:04:57.000000000","message":"Oh, I think your means is we put 1st/2nd check in API code to avoid the repeat policy check in case of detail.\n\nOK, I will update soon.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"093c5a225d41396aa8f670c16e19ab861e44ec12","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":114,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":115,"context_line":"            request, FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":116,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":117,"context_line":"            request, FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":118,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":119,"context_line":"        update_is_public \u003d context.can(fa_policies.BASE_POLICY_NAME,"},{"line_number":120,"context_line":"                                       fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_1bacd48a","line":117,"range":{"start_line":116,"start_character":0,"end_line":117,"end_character":53},"updated":"2018-04-09 11:27:46.000000000","message":"here you can check policy also like below-\n\ninclude_extra_specs \u003d False\nif api_version_request.is_supported(\n            request, FLAVOR_EXTRA_SPECS_MICROVERSION):\n    include_extra_specs \u003d context.can(fes_policies.POLICY_ROOT % \u0027show\u0027, fatal\u003dFalse)","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"f0472ba0b51122889d69bd0722d8cbcd2e71eb79","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":114,"context_line":"        include_description \u003d api_version_request.is_supported("},{"line_number":115,"context_line":"            request, FLAVOR_DESCRIPTION_MICROVERSION)"},{"line_number":116,"context_line":"        include_extra_specs \u003d api_version_request.is_supported("},{"line_number":117,"context_line":"            request, FLAVOR_EXTRA_SPECS_MICROVERSION)"},{"line_number":118,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":119,"context_line":"        update_is_public \u003d context.can(fa_policies.BASE_POLICY_NAME,"},{"line_number":120,"context_line":"                                       fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_b0160cf1","line":117,"range":{"start_line":116,"start_character":0,"end_line":117,"end_character":53},"in_reply_to":"bf659307_1bacd48a","updated":"2018-04-10 01:42:21.000000000","message":"I\u0027m not sure I understand your comments in here or not.\n\nYes, there is no doubt that we need 2 level check to show extra_spec, 1st: microversion \u003e 2.61, 2nd: policy check.\n\nIn current patch, I do micorverison check in API (and view.detail) code and mark include_extra_spec as True, and then these APIs will call the view.show, we will do 2nd check in the view show.\n\nThe reason of I put the policy check in the view.show is order to avoid the redundant logic in every API which show the extra_spec.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    _collection_name \u003d \"flavors\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def basic(self, request, flavor, include_description\u003dFalse,"},{"line_number":30,"context_line":"              include_extra_specs\u003dFalse, update_is_public\u003dNone,"},{"line_number":31,"context_line":"              update_rxtx_factor\u003dNone):"},{"line_number":32,"context_line":"        # include_extra_specs \u0026 update_is_public \u0026 update_rxtx_factor are"},{"line_number":33,"context_line":"        # placeholder param which are not used in this method as basic() method"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_3d9e4563","line":30,"range":{"start_line":30,"start_character":14,"end_line":30,"end_character":40},"updated":"2018-04-10 15:12:13.000000000","message":"nit: normally I would just append new kwargs to the end of the list, not in the middle - same below.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    _collection_name \u003d \"flavors\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def basic(self, request, flavor, include_description\u003dFalse,"},{"line_number":30,"context_line":"              include_extra_specs\u003dFalse, update_is_public\u003dNone,"},{"line_number":31,"context_line":"              update_rxtx_factor\u003dNone):"},{"line_number":32,"context_line":"        # include_extra_specs \u0026 update_is_public \u0026 update_rxtx_factor are"},{"line_number":33,"context_line":"        # placeholder param which are not used in this method as basic() method"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_32c2dd35","line":30,"range":{"start_line":30,"start_character":14,"end_line":30,"end_character":40},"in_reply_to":"bf659307_3d9e4563","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if include_description:"},{"line_number":71,"context_line":"            flavor_dict[\u0027flavor\u0027][\u0027description\u0027] \u003d flavor.description"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # Evaluate the policies when using show method directly."},{"line_number":74,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if include_extra_specs:"},{"line_number":77,"context_line":"            flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_3d6de597","line":74,"range":{"start_line":73,"start_character":8,"end_line":74,"end_character":49},"updated":"2018-04-10 15:12:13.000000000","message":"This didn\u0027t need to move.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if include_description:"},{"line_number":71,"context_line":"            flavor_dict[\u0027flavor\u0027][\u0027description\u0027] \u003d flavor.description"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # Evaluate the policies when using show method directly."},{"line_number":74,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if include_extra_specs:"},{"line_number":77,"context_line":"            flavor_dict[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d flavor.extra_specs"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_52d431e9","line":74,"range":{"start_line":73,"start_character":8,"end_line":74,"end_character":49},"in_reply_to":"bf659307_3d6de597","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                               update_rxtx_factor\u003dupdate_rxtx_factor)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _list_view(self, func, request, flavors, coll_name,"},{"line_number":124,"context_line":"                   include_description\u003dFalse, include_extra_specs\u003dFalse,"},{"line_number":125,"context_line":"                   update_is_public\u003dNone, update_rxtx_factor\u003dNone):"},{"line_number":126,"context_line":"        \"\"\"Provide a view for a list of flavors."},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_1d3101a3","line":124,"range":{"start_line":124,"start_character":46,"end_line":124,"end_character":65},"updated":"2018-04-10 15:12:13.000000000","message":"Add this to the docstring like the other params.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                               update_rxtx_factor\u003dupdate_rxtx_factor)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _list_view(self, func, request, flavors, coll_name,"},{"line_number":124,"context_line":"                   include_description\u003dFalse, include_extra_specs\u003dFalse,"},{"line_number":125,"context_line":"                   update_is_public\u003dNone, update_rxtx_factor\u003dNone):"},{"line_number":126,"context_line":"        \"\"\"Provide a view for a list of flavors."},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_b2310d5c","line":124,"range":{"start_line":124,"start_character":46,"end_line":124,"end_character":65},"in_reply_to":"bf659307_1d3101a3","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdd65b4793b8afaf8e00bae1a912aef9948d304c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from nova.policies import flavor_rxtx as fr_policies"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"FLAVOR_DESCRIPTION_MICROVERSION \u003d \u00272.55\u0027"},{"line_number":22,"context_line":"FLAVOR_EXTRA_SPECS_MICROVERSION \u003d \u00272.61\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ViewBuilder(common.ViewBuilder):"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_a12e5989","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":31},"updated":"2018-04-13 06:36:20.000000000","message":"It sounds like a version we added extra spec. Maybe we should name it as \u0027FLAVOR_INLINE_EXTRA_SPECS_MICROVERSION\u0027?","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c61792b36470c4deaa374f09fc62106d275dc8be","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from nova.policies import flavor_rxtx as fr_policies"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"FLAVOR_DESCRIPTION_MICROVERSION \u003d \u00272.55\u0027"},{"line_number":22,"context_line":"FLAVOR_EXTRA_SPECS_MICROVERSION \u003d \u00272.61\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ViewBuilder(common.ViewBuilder):"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_ecd19ecd","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":31},"in_reply_to":"bf659307_a12e5989","updated":"2018-04-13 14:32:54.000000000","message":"That\u0027s reasonable and more clear yeah.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d04a3874a92ed05959bd1591554ba99707675c37","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        return self._list_view(self.basic, request, flavors, coll_name,"},{"line_number":104,"context_line":"                               include_description\u003dinclude_description)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def detail(self, request, flavors, include_extra_specs\u003dFalse):"},{"line_number":107,"context_line":"        \"\"\"Return the \u0027detail\u0027 view of flavors.\"\"\""},{"line_number":108,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":109,"context_line":"        include_description \u003d api_version_request.is_supported("}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_5315fa47","line":106,"range":{"start_line":106,"start_character":39,"end_line":106,"end_character":64},"updated":"2018-04-12 01:13:36.000000000","message":"+1. this is much better than doing policy and version evaluation in view which is not easy to read than doing in controller file.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"}],"nova/policies/flavor_extra_specs.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb8742cbf7f8dd55b708758909ec5f46472ce48f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"List extra specs for a flavor\","},{"line_number":76,"context_line":"        ["},{"line_number":77,"context_line":"            {"},{"line_number":78,"context_line":"                \u0027path\u0027: \u0027/flavors/{flavor_id}/os-extra_specs/\u0027,"},{"line_number":79,"context_line":"                \u0027method\u0027: \u0027GET\u0027"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf659307_48419da5","line":78,"updated":"2018-04-13 09:50:49.000000000","message":"if you use this policy for also showing the extra specs on something else than just this path, then it\u0027s incorrect here.\n\nProbably a good reason then to have a specific policy rule that would be different from that one, but would then allow all POST/GET/PUT operations to return extra specs consistently.","commit_id":"0baba40b1b922a7b931f93cb164b9ba9a41ba31f"}],"nova/tests/functional/api_sample_tests/api_samples/flavors/v2.61/flavor-get-resp.json.tpl":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \"rxtx_factor\": 1.0,"},{"line_number":23,"context_line":"        \"description\": \"test description\","},{"line_number":24,"context_line":"        \"extra_specs\": {"},{"line_number":25,"context_line":"                \"key1\": \"value1\","},{"line_number":26,"context_line":"                \"key2\": \"value2\""},{"line_number":27,"context_line":"        }"},{"line_number":28,"context_line":"    }"},{"line_number":29,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":9,"id":"bf659307_fddc4d19","line":26,"range":{"start_line":25,"start_character":16,"end_line":26,"end_character":32},"updated":"2018-04-10 15:12:13.000000000","message":"nit: fix the indent","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \"rxtx_factor\": 1.0,"},{"line_number":23,"context_line":"        \"description\": \"test description\","},{"line_number":24,"context_line":"        \"extra_specs\": {"},{"line_number":25,"context_line":"                \"key1\": \"value1\","},{"line_number":26,"context_line":"                \"key2\": \"value2\""},{"line_number":27,"context_line":"        }"},{"line_number":28,"context_line":"    }"},{"line_number":29,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":9,"id":"bf659307_121a39cb","line":26,"range":{"start_line":25,"start_character":16,"end_line":26,"end_character":32},"in_reply_to":"bf659307_fddc4d19","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"}],"nova/tests/unit/api/openstack/compute/test_flavors.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        expected[\u0027OS-FLV-EXT-DATA:ephemeral\u0027] \u003d flavor.ephemeral_gb"},{"line_number":74,"context_line":"        expected[\u0027OS-FLV-DISABLED:disabled\u0027] \u003d flavor.disabled"},{"line_number":75,"context_line":"        expected[\u0027swap\u0027] \u003d flavor.swap"},{"line_number":76,"context_line":"        if self.expect_description:"},{"line_number":77,"context_line":"            expected[\u0027description\u0027] \u003d flavor.description"},{"line_number":78,"context_line":"        if self.expect_extra_specs:"},{"line_number":79,"context_line":"            expected[\u0027extra_specs\u0027] \u003d flavor.extra_specs"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_5d4a19ac","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":34},"updated":"2018-04-10 15:12:13.000000000","message":"This is used in several more places that expect_extra_specs isn\u0027t, which seems kind of odd, but at the same time, the API sample functional tests are also going to be covering expected responses. It looks like where expected_description is used outside of this method is in GET /flavors (index) methods, which don\u0027t include extra_specs, so that\u0027s probably the only difference.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        expected[\u0027OS-FLV-EXT-DATA:ephemeral\u0027] \u003d flavor.ephemeral_gb"},{"line_number":74,"context_line":"        expected[\u0027OS-FLV-DISABLED:disabled\u0027] \u003d flavor.disabled"},{"line_number":75,"context_line":"        expected[\u0027swap\u0027] \u003d flavor.swap"},{"line_number":76,"context_line":"        if self.expect_description:"},{"line_number":77,"context_line":"            expected[\u0027description\u0027] \u003d flavor.description"},{"line_number":78,"context_line":"        if self.expect_extra_specs:"},{"line_number":79,"context_line":"            expected[\u0027extra_specs\u0027] \u003d flavor.extra_specs"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_32041d18","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":34},"in_reply_to":"bf659307_5d4a19ac","updated":"2018-04-11 06:57:27.000000000","message":"Yes, list flavors API doesn\u0027t include extra_specs, but description is difference.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":773,"context_line":"    expect_description \u003d True"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"class FlavorsTestV2_61(FlavorsTestV2_55):"},{"line_number":777,"context_line":"    \"\"\"Run the same tests as we would for v2.55 but with a extra_specs.\"\"\""},{"line_number":778,"context_line":"    microversion \u003d \u00272.61\u0027"},{"line_number":779,"context_line":"    expect_extra_specs \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_1df34175","line":776,"updated":"2018-04-10 15:12:13.000000000","message":"I was thinking we should have negative tests to assert that extra_specs aren\u0027t in responses before 2.61, but the other tests handle that implicitly, so we don\u0027t need something here explicitly.\n\nAlso, there are no unit tests for 2.61 and flavor_manage.py like for 2.55:\n\nhttps://github.com/openstack/nova/blob/master/nova/tests/unit/api/openstack/compute/test_flavor_manage.py#L338\n\nBut I can\u0027t really think of any reason to add unit tests for that since the functional API samples already cover it, and you can\u0027t POST or PUT extra specs with this microversion so no reason for redundant unit tests.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":773,"context_line":"    expect_description \u003d True"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"class FlavorsTestV2_61(FlavorsTestV2_55):"},{"line_number":777,"context_line":"    \"\"\"Run the same tests as we would for v2.55 but with a extra_specs.\"\"\""},{"line_number":778,"context_line":"    microversion \u003d \u00272.61\u0027"},{"line_number":779,"context_line":"    expect_extra_specs \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_b2690df9","line":776,"in_reply_to":"bf659307_1df34175","updated":"2018-04-11 06:57:27.000000000","message":"Yeah, thanks for leave the explanation in here.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"}],"releasenotes/notes/add-extra-specs-to-flavor-list-362a4794c0871f2f.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"966183053c5e5238bb358828738837cf240ec494","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Exposes flavor.extra_specs in the response of the following APIs:"},{"line_number":5,"context_line":"    "},{"line_number":6,"context_line":"    * ``GET /flavors/detail``"},{"line_number":7,"context_line":"    * ``GET /flavors/{flavor_id}``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_385a5382","line":4,"range":{"start_line":4,"start_character":68,"end_line":4,"end_character":69},"updated":"2018-04-04 07:52:00.000000000","message":"in addition if you can tell why? i mean something like - Now users can see the flavor extra-specs in flavor APIs response only and do not need to call ``GET /flavors/{flavor_id}/extra_specs`` API.","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"6bb44615beebd000c7d0399ca2d7298cc341c08e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Exposes flavor.extra_specs in the response of the following APIs:"},{"line_number":5,"context_line":"    "},{"line_number":6,"context_line":"    * ``GET /flavors/detail``"},{"line_number":7,"context_line":"    * ``GET /flavors/{flavor_id}``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_7378ec8e","line":4,"range":{"start_line":4,"start_character":68,"end_line":4,"end_character":69},"in_reply_to":"bf659307_385a5382","updated":"2018-04-04 08:14:48.000000000","message":"Agreed with @gmann. Besides, why not add\n\n* from which microversion you support this\n* a link to the document that is updated in this patch\n\nI just suggest to be as kindful as possible in release notes, since this is what users(not only developers) read.","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Exposes flavor.extra_specs in the response of the following APIs:"},{"line_number":5,"context_line":"    "},{"line_number":6,"context_line":"    * ``GET /flavors/detail``"},{"line_number":7,"context_line":"    * ``GET /flavors/{flavor_id}``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_75088227","line":4,"range":{"start_line":4,"start_character":68,"end_line":4,"end_character":69},"in_reply_to":"bf659307_7378ec8e","updated":"2018-04-09 02:47:32.000000000","message":"Thanks @gmann @tetsuro, very useful advice!","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"16374af5ea512fcce1fdb34468f69f39f64166b4","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Exposes flavor.extra_specs in the response of the following APIs:"},{"line_number":5,"context_line":"    "},{"line_number":6,"context_line":"    * ``GET /flavors/detail``"},{"line_number":7,"context_line":"    * ``GET /flavors/{flavor_id}``"},{"line_number":8,"context_line":"    * ``POST /flavors``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_3f058b11","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":4},"updated":"2018-04-02 08:55:58.000000000","message":"White spaces.","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bf7de645ee40d9f37f12386df43e03955ff103ff","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Exposes flavor.extra_specs in the response of the following APIs:"},{"line_number":5,"context_line":"    "},{"line_number":6,"context_line":"    * ``GET /flavors/detail``"},{"line_number":7,"context_line":"    * ``GET /flavors/{flavor_id}``"},{"line_number":8,"context_line":"    * ``POST /flavors``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_7a139167","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":4},"in_reply_to":"bf659307_3f058b11","updated":"2018-04-09 02:47:32.000000000","message":"Done","commit_id":"e94349e43b051f136231732158b1aa92d4f6e8da"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"093c5a225d41396aa8f670c16e19ab861e44ec12","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``POST /flavors``"},{"line_number":11,"context_line":"    * ``PUT /flavors/{flavor_id}``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    See the `REST API Version History`_ and `Compute API reference`_ for"},{"line_number":14,"context_line":"    details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Now users can see the flavor extra-specs in flavor APIs response"},{"line_number":17,"context_line":"    and do not need to call ``GET /flavors/{flavor_id}/extra_specs`` API. The"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"bf659307_bbada89c","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":12},"updated":"2018-04-09 11:27:46.000000000","message":"these are not specific links to this change so users would not be able to get the exact info. I feel we can give microversion 2.61 doc link or can leave the links as there is no extra info in those doc than this releasenotes.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"f0472ba0b51122889d69bd0722d8cbcd2e71eb79","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``POST /flavors``"},{"line_number":11,"context_line":"    * ``PUT /flavors/{flavor_id}``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    See the `REST API Version History`_ and `Compute API reference`_ for"},{"line_number":14,"context_line":"    details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Now users can see the flavor extra-specs in flavor APIs response"},{"line_number":17,"context_line":"    and do not need to call ``GET /flavors/{flavor_id}/extra_specs`` API. The"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"bf659307_d073807f","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":12},"in_reply_to":"bf659307_bbada89c","updated":"2018-04-10 01:42:21.000000000","message":"Sure, I will update soon.","commit_id":"0dfb4df1be8cdddf3ba78a2422ff0a873a0996a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ae85e16b7700e2fb17d378a02363b45ce264a3b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``POST /flavors``"},{"line_number":11,"context_line":"    * ``PUT /flavors/{flavor_id}``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    See the `REST API Version History`_ and `Compute API reference`_ for"},{"line_number":14,"context_line":"    details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Now users can see the flavor extra-specs in flavor APIs response"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf659307_1d4fc192","line":13,"range":{"start_line":13,"start_character":12,"end_line":13,"end_character":39},"updated":"2018-04-10 15:12:13.000000000","message":"I\u0027m not sure that linking to this is necessary, since it\u0027s basically redundant with what\u0027s in this release note:\n\nhttps://review.openstack.org/#/c/554159/9/nova/api/openstack/compute/rest_api_version_history.rst\n\nAnd actually, this release note contains *more* information than the version history doc since the history doc doesn\u0027t yet mention the policy caveat.\n\nSo I\u0027d just remove the links to the version history and compute API reference docs - the details are in this release note.","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"54a5b99228a5600d0af31c65602fa04076485cb6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``POST /flavors``"},{"line_number":11,"context_line":"    * ``PUT /flavors/{flavor_id}``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    See the `REST API Version History`_ and `Compute API reference`_ for"},{"line_number":14,"context_line":"    details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Now users can see the flavor extra-specs in flavor APIs response"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf659307_726db530","line":13,"range":{"start_line":13,"start_character":12,"end_line":13,"end_character":39},"in_reply_to":"bf659307_1d4fc192","updated":"2018-04-11 06:57:27.000000000","message":"Done","commit_id":"f61ec4ecaaa9ec875687bdac64cebedbaede3224"}]}
