)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2a026dc0c03a386f39ad0eeafc4c95df90874245","unresolved":false,"context_lines":[{"line_number":19,"context_line":"project id is passed in the request and user has proper authorization"},{"line_number":20,"context_line":"rights to show the project."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The policies are system admin by default but a new rule is available"},{"line_number":23,"context_line":"to allow this for domain and project admins as well."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Implements: Blueprint multiple-default-volume-types"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"9f560f44_18ed4fb7","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":52},"updated":"2020-09-15 01:59:19.000000000","message":"I think this is no longer accurate?  (Also, item #2, above.)","commit_id":"06294f4906fa721bac23d86aa29aafa7c58fdcd4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b9d0b6d6226e3b2a25830718bece98e7c08ce2b2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"project id is passed in the request and user has proper authorization"},{"line_number":20,"context_line":"rights to show the project."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The policies are system admin by default but a new rule is available"},{"line_number":23,"context_line":"to allow this for domain and project admins as well."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Implements: Blueprint multiple-default-volume-types"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"9f560f44_95a2c5ac","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":52},"in_reply_to":"9f560f44_18ed4fb7","updated":"2020-09-15 08:19:51.000000000","message":"Done","commit_id":"06294f4906fa721bac23d86aa29aafa7c58fdcd4"}],"api-ref/source/v3/default-types.inc":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. -*- rst -*-"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Default Volume Types"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"set, get or unset default type(s) for project(s)."}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_0e4f166b","line":3,"updated":"2020-08-25 12:57:51.000000000","message":"add to the title: (default-types)","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. -*- rst -*-"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Default Volume Types"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"set, get or unset default type(s) for project(s)."}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_a6f3789f","line":3,"in_reply_to":"9f560f44_0e4f166b","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"Default Volume Types"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"set, get or unset default type(s) for project(s)."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Set a default volume type"},{"line_number":9,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_ae438a3e","line":6,"updated":"2020-08-25 12:57:51.000000000","message":"How about:\n\nManage a default volume type for individual projects.\n\nBy default, a volume-create request that does not specify a volume-type will assign the configured system default volume type to the volume.  You can override this behavior on a per-project level by setting a different default volume type for any project.\n\nAvailable in the 3.6x microversion.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":3,"context_line":"Default Volume Types"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"set, get or unset default type(s) for project(s)."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Set a default volume type"},{"line_number":9,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_0646a4c1","line":6,"in_reply_to":"9f560f44_ae438a3e","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"set, get or unset default type(s) for project(s)."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Set a default volume type"},{"line_number":9,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. rest_method::  PUT /v3/default-types"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_6e6692ef","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":3},"updated":"2020-08-25 12:57:51.000000000","message":"for most other resources, the api-ref says \"Create or update\"","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"set, get or unset default type(s) for project(s)."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Set a default volume type"},{"line_number":9,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. rest_method::  PUT /v3/default-types"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_46ed3c8d","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":3},"in_reply_to":"9f560f44_6e6692ef","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Set a default volume type"},{"line_number":9,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. rest_method::  PUT /v3/default-types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Set or update the default type for a project"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_6ee33206","line":11,"range":{"start_line":11,"start_character":18,"end_line":11,"end_character":39},"updated":"2020-08-25 12:57:51.000000000","message":"according to the spec, this is PUT /v3/default-types/{project_id}  (you have it in the path at line 32)","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Set a default volume type"},{"line_number":9,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. rest_method::  PUT /v3/default-types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Set or update the default type for a project"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_26f2c870","line":11,"range":{"start_line":11,"start_character":18,"end_line":11,"end_character":39},"in_reply_to":"9f560f44_6ee33206","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. rest_method::  PUT /v3/default-types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Set or update the default type for a project"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Response codes"},{"line_number":16,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_ee7aa285","line":13,"range":{"start_line":13,"start_character":18,"end_line":13,"end_character":30},"updated":"2020-08-25 12:57:51.000000000","message":"default volume type","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. rest_method::  PUT /v3/default-types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Set or update the default type for a project"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Response codes"},{"line_number":16,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_86e754ad","line":13,"range":{"start_line":13,"start_character":18,"end_line":13,"end_character":30},"in_reply_to":"9f560f44_ee7aa285","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   - project_id: project_id_path"},{"line_number":48,"context_line":"   - volume_type_id: volume_type_id"},{"line_number":49,"context_line":"   - created_at: created_at"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Response Example"},{"line_number":52,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_6e705273","line":49,"range":{"start_line":49,"start_character":3,"end_line":49,"end_character":27},"updated":"2020-08-25 12:57:51.000000000","message":"I don\u0027t think this was in the spec.  I think this response should be the same as the default-type-show response.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   - project_id: project_id_path"},{"line_number":48,"context_line":"   - volume_type_id: volume_type_id"},{"line_number":49,"context_line":"   - created_at: created_at"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Response Example"},{"line_number":52,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_c6d78cc0","line":49,"range":{"start_line":49,"start_character":3,"end_line":49,"end_character":27},"in_reply_to":"9f560f44_6e705273","updated":"2020-08-28 15:27:30.000000000","message":"see my reply on the JSON file","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":".. literalinclude:: ./samples/set-default-type-response.json"},{"line_number":55,"context_line":"   :language: javascript"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Get a default volume type"},{"line_number":58,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":".. rest_method::  GET /v3/default-types/{project-id}"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_2e101a00","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":3},"updated":"2020-08-25 12:57:51.000000000","message":"Most of the other resources use \"Show\" for this.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":".. literalinclude:: ./samples/set-default-type-response.json"},{"line_number":55,"context_line":"   :language: javascript"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Get a default volume type"},{"line_number":58,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":".. rest_method::  GET /v3/default-types/{project-id}"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_a6fd383d","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":3},"in_reply_to":"9f560f44_2e101a00","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":".. rest_method::  GET /v3/default-types/{project-id}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Get the default type for a project"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Response codes"},{"line_number":65,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_aefb8abb","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":3},"updated":"2020-08-25 12:57:51.000000000","message":"Show","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":".. rest_method::  GET /v3/default-types/{project-id}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Get the default type for a project"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Response codes"},{"line_number":65,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_06fb4447","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":3},"in_reply_to":"9f560f44_aefb8abb","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":86,"context_line":".. literalinclude:: ./samples/get-default-type-response.json"},{"line_number":87,"context_line":"   :language: javascript"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Get all default volume types"},{"line_number":90,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. rest_method::  GET /v3/default-types/"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_6e917252","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":7},"updated":"2020-08-25 12:57:51.000000000","message":"The api-ref usually has \"List\" for this.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":86,"context_line":".. literalinclude:: ./samples/get-default-type-response.json"},{"line_number":87,"context_line":"   :language: javascript"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Get all default volume types"},{"line_number":90,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. rest_method::  GET /v3/default-types/"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_46925cfe","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":7},"in_reply_to":"9f560f44_6e917252","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":118,"context_line":".. literalinclude:: ./samples/get-default-types-response.json"},{"line_number":119,"context_line":"   :language: javascript"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Unset a default volume type"},{"line_number":122,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. rest_method::  DELETE /v3/default-types/{project-id}"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_0e8c3634","line":121,"range":{"start_line":121,"start_character":0,"end_line":121,"end_character":5},"updated":"2020-08-25 12:57:51.000000000","message":"The api-ref usually has \"Delete\" for this action.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":118,"context_line":".. literalinclude:: ./samples/get-default-types-response.json"},{"line_number":119,"context_line":"   :language: javascript"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Unset a default volume type"},{"line_number":122,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. rest_method::  DELETE /v3/default-types/{project-id}"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_869c740f","line":121,"range":{"start_line":121,"start_character":0,"end_line":121,"end_character":5},"in_reply_to":"9f560f44_0e8c3634","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. rest_method::  DELETE /v3/default-types/{project-id}"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Unset the default volume type for a project"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Response codes"},{"line_number":129,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_4eb0eedd","line":126,"updated":"2020-08-25 12:57:51.000000000","message":"I think saying \"Unset\" here is good.  You could add \"This operation does not do anything to the volume type itself.  It simply removes the volume type from being the default volume type for the specified project.\"","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. rest_method::  DELETE /v3/default-types/{project-id}"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Unset the default volume type for a project"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Response codes"},{"line_number":129,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"9f560f44_46bb7c74","line":126,"in_reply_to":"9f560f44_4eb0eedd","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"   - project_id: project_id"},{"line_number":55,"context_line":"   - volume_type_id: volume_type_id"},{"line_number":56,"context_line":"   - created_at: created_at"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Response Example"},{"line_number":59,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_2b9cffbd","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":27},"updated":"2020-09-02 21:58:27.000000000","message":"You forgot to remove this.  (I think leaving it out was the correct decision.)","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"   - project_id: project_id"},{"line_number":55,"context_line":"   - volume_type_id: volume_type_id"},{"line_number":56,"context_line":"   - created_at: created_at"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Response Example"},{"line_number":59,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_a734a4df","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":27},"in_reply_to":"9f560f44_2b9cffbd","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"   - 404"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Request Parameters"},{"line_number":122,"context_line":"------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. rest_parameters:: parameters.yaml"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"   - project_id: project_id_path"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Response Parameters"},{"line_number":129,"context_line":"-------------------"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_eb43273e","line":126,"range":{"start_line":121,"start_character":0,"end_line":126,"end_character":32},"updated":"2020-09-02 21:58:27.000000000","message":"This is inconsistent with line 106","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"   - 404"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Request Parameters"},{"line_number":122,"context_line":"------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. rest_parameters:: parameters.yaml"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"   - project_id: project_id_path"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Response Parameters"},{"line_number":129,"context_line":"-------------------"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_673f2cb5","line":126,"range":{"start_line":121,"start_character":0,"end_line":126,"end_character":32},"in_reply_to":"9f560f44_eb43273e","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. rest_method::  DELETE /v3/default-types/{project-id}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Unset the default volume type for a project."},{"line_number":148,"context_line":"This operation does not do anything to the volume type itself."},{"line_number":149,"context_line":"It simply removes the volume type from being the default volume type for"},{"line_number":150,"context_line":"the specified project."}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_4b9973ce","line":147,"updated":"2020-09-02 21:58:27.000000000","message":"Probably want a blank line between 147 and 148.","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. rest_method::  DELETE /v3/default-types/{project-id}"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Unset the default volume type for a project."},{"line_number":148,"context_line":"This operation does not do anything to the volume type itself."},{"line_number":149,"context_line":"It simply removes the volume type from being the default volume type for"},{"line_number":150,"context_line":"the specified project."}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_473ae8c3","line":147,"in_reply_to":"9f560f44_4b9973ce","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. rest_status_code:: success ../status.yaml"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"   - 200"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":".. rest_status_code:: error ../status.yaml"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_eb8a0762","line":157,"range":{"start_line":157,"start_character":5,"end_line":157,"end_character":8},"updated":"2020-09-02 21:58:27.000000000","message":"The spec has this as a 204, and you do have it as a 204 in the controller.","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. rest_status_code:: success ../status.yaml"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"   - 200"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":".. rest_status_code:: error ../status.yaml"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":14,"id":"9f560f44_a7494461","line":157,"range":{"start_line":157,"start_character":5,"end_line":157,"end_character":8},"in_reply_to":"9f560f44_eb8a0762","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"By default, a volume-create request that does not specify a volume-type"},{"line_number":9,"context_line":"will assign the configured system default volume type to the volume."},{"line_number":10,"context_line":"You can override this behavior on a per-project level by setting a different"},{"line_number":11,"context_line":"default volume type for any project."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Available in microversion 3.62 or higher."}],"source_content_type":"text/x-c++src","patch_set":17,"id":"9f560f44_7f24b5c6","line":10,"range":{"start_line":10,"start_character":48,"end_line":10,"end_character":53},"updated":"2020-09-07 17:44:20.000000000","message":"nit: basis","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"By default, a volume-create request that does not specify a volume-type"},{"line_number":9,"context_line":"will assign the configured system default volume type to the volume."},{"line_number":10,"context_line":"You can override this behavior on a per-project level by setting a different"},{"line_number":11,"context_line":"default volume type for any project."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Available in microversion 3.62 or higher."}],"source_content_type":"text/x-c++src","patch_set":17,"id":"9f560f44_22286184","line":10,"range":{"start_line":10,"start_character":48,"end_line":10,"end_character":53},"in_reply_to":"9f560f44_7f24b5c6","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f2a369a69a4ece85a6a5e691d4f25250fb5d5c96","unresolved":false,"context_lines":[{"line_number":9,"context_line":"will assign the configured system default volume type to the volume."},{"line_number":10,"context_line":"You can override this behavior on a per-project basis by setting a different"},{"line_number":11,"context_line":"default volume type for any project."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Available in microversion 3.62 or higher."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Create or update a default volume type"}],"source_content_type":"text/x-c++src","patch_set":21,"id":"9f560f44_b2aaf2ce","line":12,"updated":"2020-09-08 17:06:50.000000000","message":"nit: Please mention how to get a system scoped token, since it\u0027s necessary with the default policy we have defined:\n\nIf we have sourced our env vars, we can just do:\n\n openstack --os-system-scope all --os-project-name\u003d\u0027\u0027 token issue","commit_id":"c84b9113a38ccf7a95cb9565420b9f87ec1fa2e5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b9d0b6d6226e3b2a25830718bece98e7c08ce2b2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"will assign the configured system default volume type to the volume."},{"line_number":10,"context_line":"You can override this behavior on a per-project basis by setting a different"},{"line_number":11,"context_line":"default volume type for any project."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Available in microversion 3.62 or higher."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Create or update a default volume type"}],"source_content_type":"text/x-c++src","patch_set":21,"id":"9f560f44_75a9f17a","line":12,"in_reply_to":"9f560f44_b2aaf2ce","updated":"2020-09-15 08:19:51.000000000","message":"Done","commit_id":"c84b9113a38ccf7a95cb9565420b9f87ec1fa2e5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Available in microversion 3.62 or higher."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"NOTE: The default policy for list API is system admin so you would require"},{"line_number":16,"context_line":"a system scoped token to access it."},{"line_number":17,"context_line":"To get a system scoped token, you need to run the following command:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"openstack --os-system-scope all --os-project-name\u003d\u0027\u0027 token issue"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Create or update a default volume type"},{"line_number":22,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":26,"id":"9f560f44_e2ec1c94","line":19,"range":{"start_line":15,"start_character":0,"end_line":19,"end_character":64},"updated":"2020-09-15 22:38:29.000000000","message":"We can fix the formatting in a follow-up patch.  Content is fine (not sure if you want to say why you need to pass the empty value for --os-project-name?).","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ca6b6d2da0e9a80877332dad33a6b73d5b465026","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Available in microversion 3.62 or higher."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"NOTE: The default policy for list API is system admin so you would require"},{"line_number":16,"context_line":"a system scoped token to access it."},{"line_number":17,"context_line":"To get a system scoped token, you need to run the following command:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"openstack --os-system-scope all --os-project-name\u003d\u0027\u0027 token issue"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Create or update a default volume type"},{"line_number":22,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":26,"id":"9f560f44_21aba91e","line":19,"range":{"start_line":15,"start_character":0,"end_line":19,"end_character":64},"in_reply_to":"9f560f44_e2ec1c94","updated":"2020-09-16 08:50:15.000000000","message":"Yeah, we\u0027ll have to add it when we finally figure out how to make the cinderclient use tokens, because afaik it cannot use them right now, which means we have no way to use the get_all feature without using curl (which still bother me).\n\nFor reference, the reason why we set the project name to an empty string is because we assume we have sourced env vars with user, password, project, etc.  And we want keystone to provide a system wide token, which it won\u0027t do if we specify a project, as these are contradictory.  We cannot as for a project only token that\u0027s also a system token, so keystone gives us a project token if we ask for both things.","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}],"api-ref/source/v3/samples/get-default-type-response.json":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"85c9d8f70a166ca609a38ceb9e3d6f789f07f888","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\","},{"line_number":4,"context_line":"        \"volume_type_id\": \"40ec6e5e-c9bd-4170-8740-c1cd42d7eabb\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":23,"id":"9f560f44_7c1e1a5f","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":64},"updated":"2020-09-12 15:16:07.000000000","message":"Responding to an earlier discussion on the review: If you want to change these to project name and volume type name, you will definitely need a new microversion ... which is fine, because it will add the names *in addition to* what\u0027s here.  My opinion is that there should be both names and IDs, because our APIs are a bit inconsistent about whether a name or an ID is needed in a call.  If your goal is to prevent the user from having to make an additional API call to go from name-\u003eID or vice-versa, just including all of them here would be the way to go.","commit_id":"5a370f2cb9a39a9636b70f6b4a21e72cc331abb0"}],"api-ref/source/v3/samples/get-default-types-response.json":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"34e925b250cf589277d585d08c7259384afe16e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9f560f44_5dc5a23c","line":12,"updated":"2020-09-03 18:19:28.000000000","message":"formatting looks a bit weird. The python pretty-printer makes this:\n\n  {\n      \"default_types\": [\n          {\n              \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\",\n              \"volume_type_id\": \"40ec6e5e-c9bd-4170-8740-c1cd42d7eabb\"\n          },\n          {\n              \"project_id\": \"dd46ea3e-6f3f-4e50-85fa-40c182e25d12\",\n              \"volume_type_id\": \"9fb51b63-3cd4-493f-9380-53d8f0a04bd4\"\n          }\n      ]\n  }","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9f560f44_877a40b7","line":12,"in_reply_to":"9f560f44_5dc5a23c","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"}],"api-ref/source/v3/samples/set-default-type-request.json":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\","},{"line_number":4,"context_line":"        \"volume_type\": \"volume type name or id\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"9f560f44_ee6462bb","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":61},"updated":"2020-08-25 12:57:51.000000000","message":"I thought this was in the path only?","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\","},{"line_number":4,"context_line":"        \"volume_type\": \"volume type name or id\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"9f560f44_66020072","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":61},"in_reply_to":"9f560f44_ee6462bb","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"volume_type\": \"volume type name or id\""},{"line_number":4,"context_line":"    }"},{"line_number":5,"context_line":"}"}],"source_content_type":"application/json","patch_set":17,"id":"9f560f44_e22cae9a","line":3,"range":{"start_line":3,"start_character":24,"end_line":3,"end_character":46},"updated":"2020-09-07 17:44:20.000000000","message":"nit: maybe use a name, since this is an example. For example: lvm_backend","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"volume_type\": \"volume type name or id\""},{"line_number":4,"context_line":"    }"},{"line_number":5,"context_line":"}"}],"source_content_type":"application/json","patch_set":17,"id":"9f560f44_02527d13","line":3,"range":{"start_line":3,"start_character":24,"end_line":3,"end_character":46},"in_reply_to":"9f560f44_e22cae9a","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"}],"api-ref/source/v3/samples/set-default-type-response.json":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\","},{"line_number":4,"context_line":"        \"volume_type_id\": \"40ec6e5e-c9bd-4170-8740-c1cd42d7eabb\","},{"line_number":5,"context_line":"        \"created_at\": \"2020-08-24T09:28:52.000000\""},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"9f560f44_b8759534","line":5,"range":{"start_line":5,"start_character":8,"end_line":5,"end_character":50},"updated":"2020-08-25 03:43:55.000000000","message":"I guess I don\u0027t object, but this field wasn\u0027t in the spec.  Traditionally, this would just be the same as the get-default-type response.  Did you have a particular reason for wanting to include it?","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fb26e45051ae0bde5bf1fe172eb86d223eb60631","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\","},{"line_number":4,"context_line":"        \"volume_type_id\": \"40ec6e5e-c9bd-4170-8740-c1cd42d7eabb\","},{"line_number":5,"context_line":"        \"created_at\": \"2020-08-24T09:28:52.000000\""},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"9f560f44_f3ad149c","line":5,"range":{"start_line":5,"start_character":8,"end_line":5,"end_character":50},"in_reply_to":"9f560f44_1aed5e24","updated":"2020-08-31 09:53:31.000000000","message":"Thinking about this again, I shouldn\u0027t complicate things at last moment and should probably go with what was decided in the spec. Update coming.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"default_type\": {"},{"line_number":3,"context_line":"        \"project_id\": \"6685584b-1eac-4da6-b5c3-555430cf68ff\","},{"line_number":4,"context_line":"        \"volume_type_id\": \"40ec6e5e-c9bd-4170-8740-c1cd42d7eabb\","},{"line_number":5,"context_line":"        \"created_at\": \"2020-08-24T09:28:52.000000\""},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"9f560f44_1aed5e24","line":5,"range":{"start_line":5,"start_character":8,"end_line":5,"end_character":50},"in_reply_to":"9f560f44_b8759534","updated":"2020-08-28 15:27:30.000000000","message":"My reason was it\u0027s a useful info to know when the resource was created hence included in most of our create APIs\nAlso one more basic thing was we already have provided project_id and volume_type in the request so returning the same info without any addition info didn\u0027t seem good to me\nReason for not including this in get is our aim is to get the volume_type_id associated with the project\nbut we can add this param in get response as well -- your thoughts on this?","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"}],"cinder/api/openstack/api_version_request.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":151,"context_line":"_MIN_API_VERSION \u003d \"3.0\""},{"line_number":152,"context_line":"_MAX_API_VERSION \u003d \"3.62\""},{"line_number":153,"context_line":"_LEGACY_API_VERSION2 \u003d \"2.0\""},{"line_number":154,"context_line":"UPDATED \u003d \"2018-07-17T00:00:00Z\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"# NOTE(cyeoh): min and max versions declared as functions so we can"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_6b427711","line":154,"range":{"start_line":154,"start_character":11,"end_line":154,"end_character":21},"updated":"2020-09-02 21:58:27.000000000","message":"We should probably update this, though I don\u0027t know what to ... maybe to the time of the Victoria release (2020-10-14)?  (Not important for this patch, we can do it as a follow-up.)  I think it\u0027s only used in the \u0027versions\u0027 response, and apparently we\u0027ve been forgetting to update it!","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":151,"context_line":"_MIN_API_VERSION \u003d \"3.0\""},{"line_number":152,"context_line":"_MAX_API_VERSION \u003d \"3.62\""},{"line_number":153,"context_line":"_LEGACY_API_VERSION2 \u003d \"2.0\""},{"line_number":154,"context_line":"UPDATED \u003d \"2018-07-17T00:00:00Z\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"# NOTE(cyeoh): min and max versions declared as functions so we can"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_6768ccb9","line":154,"range":{"start_line":154,"start_character":11,"end_line":154,"end_character":21},"in_reply_to":"9f560f44_6b427711","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"}],"cinder/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9f560f44_ced87e1f","line":471,"updated":"2020-08-25 12:57:51.000000000","message":"You need to add an entry here for your microversion.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9f560f44_a6ab781c","line":471,"in_reply_to":"9f560f44_ced87e1f","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":477,"context_line":"3.62"},{"line_number":478,"context_line":"----"},{"line_number":479,"context_line":"Add support for set, get, and unset default volume types for a specific"},{"line_number":480,"context_line":"project. Setting this default overrides the conf default_volume_type value."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_eb4de73b","line":480,"range":{"start_line":480,"start_character":44,"end_line":480,"end_character":48},"updated":"2020-09-02 21:58:27.000000000","message":"nit - \u0027configured\u0027","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":477,"context_line":"3.62"},{"line_number":478,"context_line":"----"},{"line_number":479,"context_line":"Add support for set, get, and unset default volume types for a specific"},{"line_number":480,"context_line":"project. Setting this default overrides the conf default_volume_type value."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f560f44_e7997cd0","line":480,"range":{"start_line":480,"start_character":44,"end_line":480,"end_character":48},"in_reply_to":"9f560f44_eb4de73b","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"3.62"},{"line_number":478,"context_line":"----"},{"line_number":479,"context_line":"Add support for set, get, and unset default volume types for a specific"},{"line_number":480,"context_line":"project. Setting this default overrides the configured default_volume_type"},{"line_number":481,"context_line":"value."}],"source_content_type":"text/x-rst","patch_set":26,"id":"9f560f44_bc16c457","line":479,"range":{"start_line":479,"start_character":36,"end_line":479,"end_character":56},"updated":"2020-09-15 22:38:29.000000000","message":"a default volume type","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"3.62"},{"line_number":478,"context_line":"----"},{"line_number":479,"context_line":"Add support for set, get, and unset default volume types for a specific"},{"line_number":480,"context_line":"project. Setting this default overrides the configured default_volume_type"},{"line_number":481,"context_line":"value."}],"source_content_type":"text/x-rst","patch_set":26,"id":"9f560f44_f9f1616c","line":479,"range":{"start_line":479,"start_character":36,"end_line":479,"end_character":56},"in_reply_to":"9f560f44_bc16c457","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}],"cinder/api/schemas/default_types.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.api.validation import parameter_types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"create \u003d {"},{"line_number":23,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":24,"context_line":"    \u0027properties\u0027: {"},{"line_number":25,"context_line":"        \u0027default_type\u0027: {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_62389ed2","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":6},"updated":"2020-09-07 17:44:20.000000000","message":"?: Should we use set_type or something else instead? Since this is for create and for update","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.api.validation import parameter_types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"create \u003d {"},{"line_number":23,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":24,"context_line":"    \u0027properties\u0027: {"},{"line_number":25,"context_line":"        \u0027default_type\u0027: {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_e2466950","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":6},"in_reply_to":"9f560f44_62389ed2","updated":"2020-09-08 10:39:32.000000000","message":"I think it will be better to match with the API method so updating this to create_or_update","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.api.validation import parameter_types"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"create \u003d {"},{"line_number":23,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":24,"context_line":"    \u0027properties\u0027: {"},{"line_number":25,"context_line":"        \u0027default_type\u0027: {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_713d01ba","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":6},"in_reply_to":"9f560f44_e2466950","updated":"2020-09-08 12:21:42.000000000","message":"Sounds good","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"}],"cinder/api/v3/default_types.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0190b2b758e8c997932fdb15dd0e6702a8dc39c0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class DefaultTypesController(wsgi.Controller):"},{"line_number":26,"context_line":"    \"\"\"The Default types API controller for the OpenStack API.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _view_builder_class \u003d filter_views.ViewBuilder"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, ext_mgr\u003dNone):"},{"line_number":31,"context_line":"        \"\"\"Initialize controller class.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_804e656c","line":28,"updated":"2020-06-24 11:48:59.000000000","message":"pep8: F821 undefined name \u0027filter_views\u0027","commit_id":"dd08d7c2857907d2d55f62a0b98915084fb88756"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0190b2b758e8c997932fdb15dd0e6702a8dc39c0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        type_name_id \u003d req.params.get(\u0027type_name_id\u0027, None)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        try:"},{"line_number":44,"context_line":"            # TODO: validation code to confirm tenant exists and tenant has access to the type"},{"line_number":45,"context_line":"            objects.VolumeType.get_by_name_or_id(context, type_name_id)"},{"line_number":46,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":47,"context_line":"            explanation \u003d _(\"Volume type %s not found.\", type_name_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_60535118","line":44,"updated":"2020-06-24 11:48:59.000000000","message":"pep8: E501 line too long (94 \u003e 79 characters)","commit_id":"dd08d7c2857907d2d55f62a0b98915084fb88756"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DefaultTypesController(wsgi.Controller):"},{"line_number":26,"context_line":"    \"\"\"The Default types API controller for the OpenStack API.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _view_builder_class \u003d default_types_view.ViewBuilder"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, ext_mgr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_60fcc63d","line":27,"updated":"2020-06-26 17:31:11.000000000","message":"This seems to be missing the `_collection_name` class attribute.\n\n    _collection_name \u003d \u0027default_types\u0027","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DefaultTypesController(wsgi.Controller):"},{"line_number":26,"context_line":"    \"\"\"The Default types API controller for the OpenStack API.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _view_builder_class \u003d default_types_view.ViewBuilder"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, ext_mgr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_7c3ff8b4","line":27,"in_reply_to":"bf51134e_60fcc63d","updated":"2020-07-03 12:11:47.000000000","message":"Don\u0027t we do it in the views class?\nI see all other API implementation doing this in the views class.","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _view_builder_class \u003d default_types_view.ViewBuilder"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, ext_mgr\u003dNone):"},{"line_number":31,"context_line":"        \"\"\"Initialize controller class.\"\"\""},{"line_number":32,"context_line":"        self.ext_mgr \u003d ext_mgr"},{"line_number":33,"context_line":"        super(DefaultTypesController, self).__init__()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @wsgi.Controller.api_version(mv.DEFAULT_TYPE_OVERRIDES)"},{"line_number":36,"context_line":"    def create(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_06cd2284","line":33,"range":{"start_line":30,"start_character":0,"end_line":33,"end_character":54},"updated":"2020-06-26 17:31:11.000000000","message":"nit: not necessary","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    _view_builder_class \u003d default_types_view.ViewBuilder"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, ext_mgr\u003dNone):"},{"line_number":31,"context_line":"        \"\"\"Initialize controller class.\"\"\""},{"line_number":32,"context_line":"        self.ext_mgr \u003d ext_mgr"},{"line_number":33,"context_line":"        super(DefaultTypesController, self).__init__()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @wsgi.Controller.api_version(mv.DEFAULT_TYPE_OVERRIDES)"},{"line_number":36,"context_line":"    def create(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_9c5f6c0d","line":33,"range":{"start_line":30,"start_character":0,"end_line":33,"end_character":54},"in_reply_to":"bf51134e_06cd2284","updated":"2020-07-03 12:11:47.000000000","message":"Done","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            explanation \u003d _(\"Volume type %s not found.\", volume_type)"},{"line_number":51,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        default_type \u003d self.db.volume_type_default_set(context, volume_type,"},{"line_number":54,"context_line":"                                                       project_id)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        return default_type"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_669dfe64","line":53,"range":{"start_line":53,"start_character":23,"end_line":53,"end_character":30},"updated":"2020-06-26 17:31:11.000000000","message":"This attribute doesn\u0027t exist","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            explanation \u003d _(\"Volume type %s not found.\", volume_type)"},{"line_number":51,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        default_type \u003d self.db.volume_type_default_set(context, volume_type,"},{"line_number":54,"context_line":"                                                       project_id)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        return default_type"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_fc9948d0","line":53,"range":{"start_line":53,"start_character":23,"end_line":53,"end_character":30},"in_reply_to":"bf51134e_669dfe64","updated":"2020-07-03 12:11:47.000000000","message":"Done","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        project_id \u003d req.params.get(\u0027project_id\u0027)"},{"line_number":73,"context_line":"        # TODO: validate the project id exists"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.db.volume_type_default_unset(context, project_id)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def create_resource(ext_mgr):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_a68c3636","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":16},"updated":"2020-06-26 17:31:11.000000000","message":"attribute doesn\u0027t exist","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        project_id \u003d req.params.get(\u0027project_id\u0027)"},{"line_number":73,"context_line":"        # TODO: validate the project id exists"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.db.volume_type_default_unset(context, project_id)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def create_resource(ext_mgr):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_dc9e04b7","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":16},"in_reply_to":"bf51134e_a68c3636","updated":"2020-07-03 12:11:47.000000000","message":"Done","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.db.volume_type_default_unset(context, project_id)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def create_resource(ext_mgr):"},{"line_number":79,"context_line":"    \"\"\"Create the wsgi resource for this controller.\"\"\""},{"line_number":80,"context_line":"    return wsgi.Resource(DefaultTypesController(ext_mgr))"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_26d2e628","line":78,"range":{"start_line":78,"start_character":20,"end_line":78,"end_character":27},"updated":"2020-06-26 17:31:11.000000000","message":"this is not necessary","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.db.volume_type_default_unset(context, project_id)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def create_resource(ext_mgr):"},{"line_number":79,"context_line":"    \"\"\"Create the wsgi resource for this controller.\"\"\""},{"line_number":80,"context_line":"    return wsgi.Resource(DefaultTypesController(ext_mgr))"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_1ca99cde","line":78,"range":{"start_line":78,"start_character":20,"end_line":78,"end_character":27},"in_reply_to":"bf51134e_26d2e628","updated":"2020-07-03 12:11:47.000000000","message":"Done","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from webob import exc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystoneauth1 import exceptions as ks_exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder.api import api_utils"},{"line_number":20,"context_line":"from cinder.api import microversions as mv"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_366ea62e","line":17,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: I202 Additional newline in a group of imports. \u0027from keystoneauth1 import exceptions\u0027 is identified as Third Party and \u0027from webob import exc\u0027 is identified as Third Party.","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                parent_id \u003d target_project.parent_id"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"                if parent_id:"},{"line_number":54,"context_line":"                    # Get the children of the project which the token is scoped to"},{"line_number":55,"context_line":"                    # in order to know if the target_project is in its hierarchy."},{"line_number":56,"context_line":"                    context_project \u003d quota_utils.get_project_hierarchy("},{"line_number":57,"context_line":"                        context, context.project_id, subtree_as_ids\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_1669e223","line":54,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"                if parent_id:"},{"line_number":54,"context_line":"                    # Get the children of the project which the token is scoped to"},{"line_number":55,"context_line":"                    # in order to know if the target_project is in its hierarchy."},{"line_number":56,"context_line":"                    context_project \u003d quota_utils.get_project_hierarchy("},{"line_number":57,"context_line":"                        context, context.project_id, subtree_as_ids\u003dTrue,"},{"line_number":58,"context_line":"                        is_admin_project\u003dcontext.is_admin)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_76749efe","line":55,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    api_utils._authorize_update_or_delete(context_project,"},{"line_number":60,"context_line":"                                                          target_project.id,"},{"line_number":61,"context_line":"                                                          parent_id,"},{"line_number":62,"context_line":"                                                          resource\u003d\u0027default type\u0027)"},{"line_number":63,"context_line":"                else:"},{"line_number":64,"context_line":"                    raise exception.NotAuthorized()"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_566fda26","line":62,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                parent_id \u003d target_project.parent_id"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                if parent_id:"},{"line_number":129,"context_line":"                    # Get the children of the project which the token is scoped to"},{"line_number":130,"context_line":"                    # in order to know if the target_project is in its hierarchy."},{"line_number":131,"context_line":"                    context_project \u003d quota_utils.get_project_hierarchy("},{"line_number":132,"context_line":"                        context, context.project_id, subtree_as_ids\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_b663d641","line":129,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                if parent_id:"},{"line_number":129,"context_line":"                    # Get the children of the project which the token is scoped to"},{"line_number":130,"context_line":"                    # in order to know if the target_project is in its hierarchy."},{"line_number":131,"context_line":"                    context_project \u003d quota_utils.get_project_hierarchy("},{"line_number":132,"context_line":"                        context, context.project_id, subtree_as_ids\u003dTrue,"},{"line_number":133,"context_line":"                        is_admin_project\u003dcontext.is_admin)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_96669250","line":130,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    api_utils._authorize_update_or_delete(context_project,"},{"line_number":135,"context_line":"                                                          target_project.id,"},{"line_number":136,"context_line":"                                                          parent_id,"},{"line_number":137,"context_line":"                                                          resource\u003d\u0027default type\u0027)"},{"line_number":138,"context_line":"                else:"},{"line_number":139,"context_line":"                    raise exception.NotAuthorized()"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_f659ce8d","line":137,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            volume_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":52,"context_line":"                context, volume_type).id"},{"line_number":53,"context_line":"            target_project \u003d quota_utils.get_project_hierarchy(context,"},{"line_number":54,"context_line":"                                                               project_id)"},{"line_number":55,"context_line":"            target_project \u003d {\u0027project_id\u0027: target_project.id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_78965d4e","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":40},"updated":"2020-08-25 03:43:55.000000000","message":"I think you should get the volume_type after you do the policy check, because otherwise a user who isn\u0027t authorized to make the create call will get a 400 whereas they should get a 403.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            volume_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":52,"context_line":"                context, volume_type).id"},{"line_number":53,"context_line":"            target_project \u003d quota_utils.get_project_hierarchy(context,"},{"line_number":54,"context_line":"                                                               project_id)"},{"line_number":55,"context_line":"            target_project \u003d {\u0027project_id\u0027: target_project.id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_eb71b946","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":40},"in_reply_to":"9f560f44_78965d4e","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_18b761f7","line":63,"range":{"start_line":63,"start_character":38,"end_line":63,"end_character":61},"updated":"2020-08-25 03:43:55.000000000","message":"I think this one needs to raise a different exception, probably just a generic \"you are not authorized to perform this action\".  There are 2 possibilities for what could have happened: (a) I\u0027m not allowed to create volume types, or (b) I\u0027m trying to create a volume type for a project that doesn\u0027t match my project_id.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_ab8ea12f","line":63,"range":{"start_line":63,"start_character":38,"end_line":63,"end_character":61},"in_reply_to":"9f560f44_18b761f7","updated":"2020-08-28 15:27:30.000000000","message":"I feel there\u0027s a lot of confusion around this. Let me summarize our previous discussion.\nInitially it raised a 403 but with your suggestion i moved it into 404 to not leak info regarding other projects [1]\n\n[1] see L#21 https://etherpad.opendev.org/p/default_type_overrides","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @wsgi.response(http_client.OK)"},{"line_number":73,"context_line":"    @wsgi.Controller.api_version(mv.DEFAULT_TYPE_OVERRIDES)"},{"line_number":74,"context_line":"    def index(self, req, id):"},{"line_number":75,"context_line":"        \"\"\"Return a list of default types.\"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_38ca25a0","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":41},"updated":"2020-08-25 03:43:55.000000000","message":"This doesn\u0027t return a list, it returns a default-type detail.  Also, usually the name \u0027index\u0027 is used for a resource listing.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @wsgi.response(http_client.OK)"},{"line_number":73,"context_line":"    @wsgi.Controller.api_version(mv.DEFAULT_TYPE_OVERRIDES)"},{"line_number":74,"context_line":"    def index(self, req, id):"},{"line_number":75,"context_line":"        \"\"\"Return a list of default types.\"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_eba6d9ab","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":41},"in_reply_to":"9f560f44_38ca25a0","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                              \u0027domain_id\u0027: target_project.domain_id}"},{"line_number":85,"context_line":"            context.authorize(policy.GET_POLICY, target\u003dtarget_project)"},{"line_number":86,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":87,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":88,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        default_types \u003d db.volume_type_default_get(context, project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_b86bd582","line":87,"range":{"start_line":87,"start_character":28,"end_line":87,"end_character":59},"updated":"2020-08-25 03:43:55.000000000","message":"I think this should be the same message as line 92.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                              \u0027domain_id\u0027: target_project.domain_id}"},{"line_number":85,"context_line":"            context.authorize(policy.GET_POLICY, target\u003dtarget_project)"},{"line_number":86,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":87,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":88,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        default_types \u003d db.volume_type_default_get(context, project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_2bba91bf","line":87,"range":{"start_line":87,"start_character":28,"end_line":87,"end_character":59},"in_reply_to":"9f560f44_b86bd582","updated":"2020-08-28 15:27:30.000000000","message":"see reply above","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":88,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        default_types \u003d db.volume_type_default_get(context, project_id)"},{"line_number":91,"context_line":"        if not default_types:"},{"line_number":92,"context_line":"            explanation \u003d _(\"No default type for project with id %s not \""},{"line_number":93,"context_line":"                            \"found.\" % project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_d8d6894f","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":21},"updated":"2020-08-25 03:43:55.000000000","message":"using a plural name for this is a bit misleading -- it\u0027s always going to be exactly one (or None), isn\u0027t it?","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":88,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        default_types \u003d db.volume_type_default_get(context, project_id)"},{"line_number":91,"context_line":"        if not default_types:"},{"line_number":92,"context_line":"            explanation \u003d _(\"No default type for project with id %s not \""},{"line_number":93,"context_line":"                            \"found.\" % project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_2b7bb1f4","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":21},"in_reply_to":"9f560f44_d8d6894f","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        default_types \u003d db.volume_type_default_get(context, project_id)"},{"line_number":91,"context_line":"        if not default_types:"},{"line_number":92,"context_line":"            explanation \u003d _(\"No default type for project with id %s not \""},{"line_number":93,"context_line":"                            \"found.\" % project_id)"},{"line_number":94,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":95,"context_line":"        return self._view_builder.index(default_types)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_1842c10f","line":93,"range":{"start_line":92,"start_character":28,"end_line":93,"end_character":36},"updated":"2020-08-25 03:43:55.000000000","message":"This message has a double negative, and it\u0027s ambiguous whether the id applies to the project or the default type.  Maybe:\n\n  \"Default type for project %s not found\"","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        default_types \u003d db.volume_type_default_get(context, project_id)"},{"line_number":91,"context_line":"        if not default_types:"},{"line_number":92,"context_line":"            explanation \u003d _(\"No default type for project with id %s not \""},{"line_number":93,"context_line":"                            \"found.\" % project_id)"},{"line_number":94,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":95,"context_line":"        return self._view_builder.index(default_types)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_0b74edfd","line":93,"range":{"start_line":92,"start_character":28,"end_line":93,"end_character":36},"in_reply_to":"9f560f44_1842c10f","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @wsgi.response(http_client.OK)"},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(mv.DEFAULT_TYPE_OVERRIDES)"},{"line_number":99,"context_line":"    def detail(self, req):"},{"line_number":100,"context_line":"        \"\"\"Return a list of default types.\"\"\""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_58c27986","line":99,"updated":"2020-08-25 03:43:55.000000000","message":"This function, that provides a list of default-types, would usually be called \u0027index\u0027.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @wsgi.response(http_client.OK)"},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(mv.DEFAULT_TYPE_OVERRIDES)"},{"line_number":99,"context_line":"    def detail(self, req):"},{"line_number":100,"context_line":"        \"\"\"Return a list of default types.\"\"\""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_eb70990b","line":99,"in_reply_to":"9f560f44_58c27986","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                              \u0027domain_id\u0027: target_project.domain_id}"},{"line_number":125,"context_line":"            context.authorize(policy.GET_POLICY, target\u003dtarget_project)"},{"line_number":126,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":127,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":128,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        db.volume_type_default_unset(context, id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_78faddbc","line":127,"range":{"start_line":127,"start_character":28,"end_line":127,"end_character":59},"updated":"2020-08-25 03:43:55.000000000","message":"This should be the same message as line 92.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                              \u0027domain_id\u0027: target_project.domain_id}"},{"line_number":125,"context_line":"            context.authorize(policy.GET_POLICY, target\u003dtarget_project)"},{"line_number":126,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":127,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":128,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        db.volume_type_default_unset(context, id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_8b591d90","line":127,"range":{"start_line":127,"start_character":28,"end_line":127,"end_character":59},"in_reply_to":"9f560f44_78faddbc","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_ab6f6ff8","line":63,"range":{"start_line":63,"start_character":38,"end_line":63,"end_character":61},"updated":"2020-09-02 21:58:27.000000000","message":"The problem is that the authorization at line 55 is checking two things and we can\u0027t tell what the reason for the denial was:\n\n(a) user is not allowed to make this API call, that is, user cannot create/update default_types\n(b) user *is* allowed to make the call, but is trying to do it on a project they don\u0027t have access to\n\nWe wanted to return 404 for situation (b) so you couldn\u0027t make a \"proper\" call on your own project to confirm that you can use the API, and then do (b) with random project ids so that if you get a 403 you know that project exists but if you get a 404 you know that project doesn\u0027t exist.\n\nSituation (a) would be a 403 because you\u0027re not allowed to make the call at all, so you can\u0027t use it to fish for project ids.  The 404 is for situation (b) ... but since we can\u0027t tell the difference here, I think we\u0027re going to have to go with a 403, or else it will be confusing to operators testing out their policies (they will expect to see a 403 for situation (a))\n\nBut it is also late in the day and I may be completely misunderstanding this.  Under what circumstances do you get a ks_exc.http.NotFound?","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"daf6e627b1e74ee9a62229ca9e46901267990f14","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_59b0088c","line":63,"range":{"start_line":63,"start_character":38,"end_line":63,"end_character":61},"in_reply_to":"9f560f44_07111005","updated":"2020-09-04 14:01:17.000000000","message":"Well, what it comes down to is that this is why I am skeptical of the move to put all control into the policy config and not have additional internal checks--it\u0027s not sensitive to situations like this, where we would like to make a subtle distinction.\n\nSo, my thought is that if this is the way the larger community is going, then 403 is fine.  My concern about a 404 is that it\u0027s going to make it difficult for an operator to do testing to confirm that the local policy config is rejecting requests that it should because this call will always succeed from an authorization point of view.\n\nBut instead of the detailed message you had on PS6, I think just a generic \"you are not authorized to perform this action\" would be sufficient here.","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1a955d24b3e951c2926832feafdfb80a45f5c172","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_8ff25299","line":63,"range":{"start_line":63,"start_character":38,"end_line":63,"end_character":61},"in_reply_to":"9f560f44_59b0088c","updated":"2020-09-04 15:28:16.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except (ks_exc.http.NotFound, exception.NotAuthorized):"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_07111005","line":63,"range":{"start_line":63,"start_character":38,"end_line":63,"end_character":61},"in_reply_to":"9f560f44_ab6f6ff8","updated":"2020-09-04 12:02:39.000000000","message":"You are right but we already had this discussion and if you see PS6[1], the functionality was similar then.\nFrom our previous discussions, my understanding was that showing the NotAuthorized to certain users is less important than leaking the project id to certain other users.\nI don\u0027t have any issue changing it again but let me know your final thoughts on the same.\nThe NotFound exception is raised when the user has authorization but project requested is not found\n\n[1] https://review.opendev.org/#/c/737707/6/cinder/api/v3/default_types.py","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        project_id \u003d id"},{"line_number":48,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            target_project \u003d quota_utils.get_project_hierarchy(context,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_c2efeaae","line":48,"updated":"2020-09-07 17:44:20.000000000","message":"I\u0027m not too happy about how we can pass \"default\" in \"project_id\" and it works, as it may lead to confusion, but it seems to be a valid keystone domain according to \"openstack project show default\", even if it doesn\u0027t appear in \"openstack project list\"","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        project_id \u003d id"},{"line_number":48,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            target_project \u003d quota_utils.get_project_hierarchy(context,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_427115a8","line":48,"in_reply_to":"9f560f44_c2efeaae","updated":"2020-09-08 10:39:32.000000000","message":"Maybe we can clarify better with keystone team.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        project_id \u003d id"},{"line_number":48,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            target_project \u003d quota_utils.get_project_hierarchy(context,"},{"line_number":52,"context_line":"                                                               project_id)"},{"line_number":53,"context_line":"            target_project \u003d {\u0027project_id\u0027: target_project.id,"},{"line_number":54,"context_line":"                              \u0027domain_id\u0027: target_project.domain_id}"},{"line_number":55,"context_line":"            context.authorize(policy.CREATE_UPDATE_POLICY,"},{"line_number":56,"context_line":"                              target\u003dtarget_project)"},{"line_number":57,"context_line":"            volume_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":58,"context_line":"                context, volume_type).id"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except ks_exc.http.NotFound:"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":"        except exception.NotAuthorized:"},{"line_number":67,"context_line":"            explanation \u003d _(\"You are not authorized to perform this \""},{"line_number":68,"context_line":"                            \"operation.\")"},{"line_number":69,"context_line":"            raise exc.HTTPForbidden(explanation\u003dexplanation)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        default_type \u003d db.project_default_volume_type_set("},{"line_number":72,"context_line":"            context, volume_type, project_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_42a11af7","line":69,"range":{"start_line":50,"start_character":0,"end_line":69,"end_character":60},"updated":"2020-09-07 17:44:20.000000000","message":"-1: There is code duplication here with other methods (detail and delete) we should have a common method to do the common part.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        project_id \u003d id"},{"line_number":48,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            target_project \u003d quota_utils.get_project_hierarchy(context,"},{"line_number":52,"context_line":"                                                               project_id)"},{"line_number":53,"context_line":"            target_project \u003d {\u0027project_id\u0027: target_project.id,"},{"line_number":54,"context_line":"                              \u0027domain_id\u0027: target_project.domain_id}"},{"line_number":55,"context_line":"            context.authorize(policy.CREATE_UPDATE_POLICY,"},{"line_number":56,"context_line":"                              target\u003dtarget_project)"},{"line_number":57,"context_line":"            volume_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":58,"context_line":"                context, volume_type).id"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":61,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":62,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":63,"context_line":"        except ks_exc.http.NotFound:"},{"line_number":64,"context_line":"            explanation \u003d _(\"Project with id %s not found.\" % project_id)"},{"line_number":65,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":66,"context_line":"        except exception.NotAuthorized:"},{"line_number":67,"context_line":"            explanation \u003d _(\"You are not authorized to perform this \""},{"line_number":68,"context_line":"                            \"operation.\")"},{"line_number":69,"context_line":"            raise exc.HTTPForbidden(explanation\u003dexplanation)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        default_type \u003d db.project_default_volume_type_set("},{"line_number":72,"context_line":"            context, volume_type, project_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_e269498c","line":69,"range":{"start_line":50,"start_character":0,"end_line":69,"end_character":60},"in_reply_to":"9f560f44_42a11af7","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        except ks_exc.http.NotFound:"},{"line_number":91,"context_line":"            explanation \u003d _(\"Default type for project %s not found.\""},{"line_number":92,"context_line":"                            % project_id)"},{"line_number":93,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":94,"context_line":"        except exception.NotAuthorized:"},{"line_number":95,"context_line":"            explanation \u003d _(\"You are not authorized to perform this \""},{"line_number":96,"context_line":"                            \"operation.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_8294d245","line":93,"updated":"2020-09-07 17:44:20.000000000","message":"-1: We should change VolumeTypeProjectDefaultNotFound so it returns 404 and use it instead","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        except ks_exc.http.NotFound:"},{"line_number":91,"context_line":"            explanation \u003d _(\"Default type for project %s not found.\""},{"line_number":92,"context_line":"                            % project_id)"},{"line_number":93,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":94,"context_line":"        except exception.NotAuthorized:"},{"line_number":95,"context_line":"            explanation \u003d _(\"You are not authorized to perform this \""},{"line_number":96,"context_line":"                            \"operation.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_02d71d4d","line":93,"in_reply_to":"9f560f44_8294d245","updated":"2020-09-08 10:39:32.000000000","message":"I think i wrote the wrong message here, this should handle when the project requested is not found like in L#64, i will make your suggested changes on L#103","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        except ks_exc.http.NotFound:"},{"line_number":137,"context_line":"            explanation \u003d _(\"Default type for project %s not found.\""},{"line_number":138,"context_line":"                            % project_id)"},{"line_number":139,"context_line":"            raise exc.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":140,"context_line":"        except exception.NotAuthorized:"},{"line_number":141,"context_line":"            explanation \u003d _(\"You are not authorized to perform this \""},{"line_number":142,"context_line":"                            \"operation.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_c2c52a5e","line":139,"updated":"2020-09-07 17:44:20.000000000","message":"ditto","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        project_id \u003d id"},{"line_number":64,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self._validate_project_and_authorize(context, project_id,"},{"line_number":67,"context_line":"                                             policy.CREATE_UPDATE_POLICY)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_7147c11e","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":19},"updated":"2020-09-08 12:21:42.000000000","message":"nit: To avoid confusion, we should name this variable volume_type_id","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        project_id \u003d id"},{"line_number":64,"context_line":"        volume_type \u003d body[\u0027default_type\u0027][\u0027volume_type\u0027]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self._validate_project_and_authorize(context, project_id,"},{"line_number":67,"context_line":"                                             policy.CREATE_UPDATE_POLICY)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_6c24080e","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":19},"in_reply_to":"9f560f44_7147c11e","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                context, volume_type).id"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":73,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":74,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        default_type \u003d db.project_default_volume_type_set("}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_d15fad0c","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":70},"updated":"2020-09-08 12:21:42.000000000","message":"nit: If this is the message, then it\u0027s the same as the one that comes in the exception already, we could reuse it. It\u0027s defined as:\n\n  class VolumeTypeNotFound(NotFound):\n      message \u003d _(\"Volume type %(volume_type_id)s could not be found.\")","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                context, volume_type).id"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        except exception.VolumeTypeNotFound:"},{"line_number":73,"context_line":"            explanation \u003d _(\"Volume type %s not found.\" % volume_type)"},{"line_number":74,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexplanation)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        default_type \u003d db.project_default_volume_type_set("}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_cc1d54bf","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":70},"in_reply_to":"9f560f44_d15fad0c","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"}],"cinder/api/v3/router.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                        member\u003d{\u0027accept\u0027: \u0027POST\u0027})"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.resources[\u0027default_types\u0027] \u003d default_types.create_resource("},{"line_number":205,"context_line":"            ext_mgr)"},{"line_number":206,"context_line":"        mapper.resource(\"default-type\", \"default-types\","},{"line_number":207,"context_line":"                        controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":208,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_061fe207","line":205,"range":{"start_line":205,"start_character":12,"end_line":205,"end_character":19},"updated":"2020-06-26 17:31:11.000000000","message":"No need for the ext_mgr","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                        member\u003d{\u0027accept\u0027: \u0027POST\u0027})"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.resources[\u0027default_types\u0027] \u003d default_types.create_resource("},{"line_number":205,"context_line":"            ext_mgr)"},{"line_number":206,"context_line":"        mapper.resource(\"default-type\", \"default-types\","},{"line_number":207,"context_line":"                        controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":208,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_9cb48c37","line":205,"range":{"start_line":205,"start_character":12,"end_line":205,"end_character":19},"in_reply_to":"bf51134e_061fe207","updated":"2020-07-03 12:11:47.000000000","message":"Done","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"12850c66d9b61ddc9b1f51c3b65fb67541ad9ccb","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            ext_mgr)"},{"line_number":206,"context_line":"        mapper.resource(\"default-type\", \"default-types\","},{"line_number":207,"context_line":"                        controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":208,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":209,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_a6a396b1","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":43},"updated":"2020-06-26 17:31:11.000000000","message":"This method doesn\u0027t exist in the class","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6005f7fca7f2b732894e2b231fc998ad5248235c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            ext_mgr)"},{"line_number":206,"context_line":"        mapper.resource(\"default-type\", \"default-types\","},{"line_number":207,"context_line":"                        controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":208,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":209,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_fc82e851","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":43},"in_reply_to":"bf51134e_a6a396b1","updated":"2020-07-03 12:11:47.000000000","message":"Done","commit_id":"646f24e1419d340d286bf8441d39b2f4f893a69c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7794b35cf0b88fa4b5940f43d4a9ca3ffccee45e","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                        member\u003d{\u0027accept\u0027: \u0027POST\u0027})"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.resources[\u0027default_types\u0027] \u003d default_types.create_resource()"},{"line_number":205,"context_line":"        mapper.connect(\"default-types\", \"/default-types\","},{"line_number":206,"context_line":"                       controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":207,"context_line":"                       action\u003d\u0027create_update\u0027,"},{"line_number":208,"context_line":"                       conditions\u003d{\"method\": [\u0027PUT\u0027]})"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_4edbce4d","line":205,"range":{"start_line":205,"start_character":40,"end_line":205,"end_character":56},"updated":"2020-08-25 12:57:51.000000000","message":"according to the spec, this should be PUT /v3/default-types/{id}","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                        member\u003d{\u0027accept\u0027: \u0027POST\u0027})"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.resources[\u0027default_types\u0027] \u003d default_types.create_resource()"},{"line_number":205,"context_line":"        mapper.connect(\"default-types\", \"/default-types\","},{"line_number":206,"context_line":"                       controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":207,"context_line":"                       action\u003d\u0027create_update\u0027,"},{"line_number":208,"context_line":"                       conditions\u003d{\"method\": [\u0027PUT\u0027]})"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_ebded9d8","line":205,"range":{"start_line":205,"start_character":40,"end_line":205,"end_character":56},"in_reply_to":"9f560f44_4edbce4d","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        mapper.connect(\"default-types\", \"/default-types/{id}\","},{"line_number":216,"context_line":"                       controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":217,"context_line":"                       action\u003d\u0027index\u0027,"},{"line_number":218,"context_line":"                       conditions\u003d{\"method\": [\u0027GET\u0027]})"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        mapper.connect(\"default-types\", \"/default-types/{id}\","}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_5866f9ee","line":217,"range":{"start_line":217,"start_character":23,"end_line":217,"end_character":38},"updated":"2020-08-25 03:43:55.000000000","message":"the \u0027index\u0027 action is usually a list of resources.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        mapper.connect(\"default-types\", \"/default-types/{id}\","},{"line_number":216,"context_line":"                       controller\u003dself.resources[\u0027default_types\u0027],"},{"line_number":217,"context_line":"                       action\u003d\u0027index\u0027,"},{"line_number":218,"context_line":"                       conditions\u003d{\"method\": [\u0027GET\u0027]})"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        mapper.connect(\"default-types\", \"/default-types/{id}\","}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_4bed458d","line":217,"range":{"start_line":217,"start_character":23,"end_line":217,"end_character":38},"in_reply_to":"9f560f44_5866f9ee","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"}],"cinder/api/v3/views/default_types.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        return {\u0027default_types\u0027: default_types_view}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def index(self, default_type):"},{"line_number":64,"context_line":"        \"\"\"Build a view of a list of default types."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"         .. code-block:: json"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_d88e892c","line":64,"range":{"start_line":63,"start_character":0,"end_line":64,"end_character":51},"updated":"2020-08-25 03:43:55.000000000","message":"This isn\u0027t building a list (so the comment isn\u0027t accurate), but also since it\u0027s not giving you a list, \u0027index\u0027 isn\u0027t a good name for this function.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        return {\u0027default_types\u0027: default_types_view}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def index(self, default_type):"},{"line_number":64,"context_line":"        \"\"\"Build a view of a list of default types."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"         .. code-block:: json"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_abfd013d","line":64,"range":{"start_line":63,"start_character":0,"end_line":64,"end_character":51},"in_reply_to":"9f560f44_d88e892c","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    _collection_name \u003d \"default_types\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create(self, default_type):"},{"line_number":23,"context_line":"        \"\"\"Detailed view of a single transfer when created.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        create_view \u003d {"},{"line_number":26,"context_line":"            \u0027default_type\u0027: {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_22a6a610","line":23,"range":{"start_line":23,"start_character":37,"end_line":23,"end_character":45},"updated":"2020-09-07 17:44:20.000000000","message":"-1: It\u0027s not a transfer","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    _collection_name \u003d \"default_types\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create(self, default_type):"},{"line_number":23,"context_line":"        \"\"\"Detailed view of a single transfer when created.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        create_view \u003d {"},{"line_number":26,"context_line":"            \u0027default_type\u0027: {"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_220501c3","line":23,"range":{"start_line":23,"start_character":37,"end_line":23,"end_character":45},"in_reply_to":"9f560f44_22a6a610","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        create_view \u003d {"},{"line_number":26,"context_line":"            \u0027default_type\u0027: {"},{"line_number":27,"context_line":"                \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":28,"context_line":"                \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":29,"context_line":"            }"},{"line_number":30,"context_line":"        }"},{"line_number":31,"context_line":"        return create_view"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_62941e8c","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":61},"updated":"2020-09-07 17:44:20.000000000","message":"Maybe we shouldn\u0027t use \u0027get\u0027 method, as it may indicate:\n\n- It\u0027s a dictionary (when I think it\u0027s an ORM instance)\n- May not contain those values, in which case we would return None, which breaks our API contract.\n\nWe can either access it as attributes: default_type.volume_type_id\n\nOr we can set the default of the gets to \u0027\u0027, which is not great, but at least is a string.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        create_view \u003d {"},{"line_number":26,"context_line":"            \u0027default_type\u0027: {"},{"line_number":27,"context_line":"                \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":28,"context_line":"                \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":29,"context_line":"            }"},{"line_number":30,"context_line":"        }"},{"line_number":31,"context_line":"        return create_view"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_05d8c750","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":61},"in_reply_to":"9f560f44_62941e8c","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        for default_type in default_types:"},{"line_number":54,"context_line":"            d_type \u003d {"},{"line_number":55,"context_line":"                \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":56,"context_line":"                \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":57,"context_line":"            }"},{"line_number":58,"context_line":"            default_types_view.append(d_type)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_a28ab660","line":56,"updated":"2020-09-07 17:44:20.000000000","message":"ditto","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        default_types_view \u003d []"},{"line_number":53,"context_line":"        for default_type in default_types:"},{"line_number":54,"context_line":"            d_type \u003d {"},{"line_number":55,"context_line":"                \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":56,"context_line":"                \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":57,"context_line":"            }"},{"line_number":58,"context_line":"            default_types_view.append(d_type)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_c2e24a30","line":56,"range":{"start_line":54,"start_character":11,"end_line":56,"end_character":61},"updated":"2020-09-07 17:44:20.000000000","message":"since this is duplicated in all 3 methods, maybe we should just  have a method that converts a default_type into a dict.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        default_types_view \u003d []"},{"line_number":53,"context_line":"        for default_type in default_types:"},{"line_number":54,"context_line":"            d_type \u003d {"},{"line_number":55,"context_line":"                \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":56,"context_line":"                \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":57,"context_line":"            }"},{"line_number":58,"context_line":"            default_types_view.append(d_type)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_45de3f3e","line":56,"range":{"start_line":54,"start_character":11,"end_line":56,"end_character":61},"in_reply_to":"9f560f44_c2e24a30","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        default_types_view \u003d {"},{"line_number":75,"context_line":"            \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":76,"context_line":"            \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":77,"context_line":"        }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return {\u0027default_type\u0027: default_types_view}"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_e2edce25","line":76,"updated":"2020-09-07 17:44:20.000000000","message":"ditto","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        default_types_view \u003d {"},{"line_number":75,"context_line":"            \u0027volume_type_id\u0027: default_type.get(\u0027volume_type_id\u0027),"},{"line_number":76,"context_line":"            \u0027project_id\u0027: default_type.get(\u0027project_id\u0027),"},{"line_number":77,"context_line":"        }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return {\u0027default_type\u0027: default_types_view}"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_a5e63b15","line":76,"in_reply_to":"9f560f44_e2edce25","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"}],"cinder/db/api.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0190b2b758e8c997932fdb15dd0e6702a8dc39c0","unresolved":false,"context_lines":[{"line_number":730,"context_line":""},{"line_number":731,"context_line":"def volume_type_default_unset(context, project_id):"},{"line_number":732,"context_line":"    \"\"\"Unset default volume type for a tenant\"\"\""},{"line_number":733,"context_line":"    return IMPL.volume_type_default_unset(context,  project_id)"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"####################"},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_203039e8","line":733,"updated":"2020-06-24 11:48:59.000000000","message":"pep8: E241 multiple spaces after \u0027,\u0027","commit_id":"dd08d7c2857907d2d55f62a0b98915084fb88756"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":718,"context_line":"    return IMPL.volume_type_access_remove(context, type_id, project_id)"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"def volume_type_default_set(context, volume_type, project_id):"},{"line_number":722,"context_line":"    \"\"\"Set default volume type for a tenant\"\"\""},{"line_number":723,"context_line":"    return IMPL.volume_type_default_set(context, volume_type, project_id)"},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_18e801b1","line":721,"range":{"start_line":721,"start_character":4,"end_line":721,"end_character":27},"updated":"2020-08-25 03:43:55.000000000","message":"I\u0027d suggest naming these functions volume_type_project_default_\u003caction\u003e\nso it\u0027s clear that they have nothing to do with the system default_volume_type.  It might be even better to name them project_default_volume_type_\u003caction\u003e, but that\u0027s up to you.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":718,"context_line":"    return IMPL.volume_type_access_remove(context, type_id, project_id)"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"def volume_type_default_set(context, volume_type, project_id):"},{"line_number":722,"context_line":"    \"\"\"Set default volume type for a tenant\"\"\""},{"line_number":723,"context_line":"    return IMPL.volume_type_default_set(context, volume_type, project_id)"},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_8696343e","line":721,"range":{"start_line":721,"start_character":4,"end_line":721,"end_character":27},"in_reply_to":"9f560f44_18e801b1","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":730,"context_line":""},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"def project_default_volume_type_unset(context, project_id):"},{"line_number":733,"context_line":"    \"\"\"Unset default volume type for a project\"\"\""},{"line_number":734,"context_line":"    return IMPL.project_default_volume_type_unset(context, project_id)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_bc5fe44b","line":733,"updated":"2020-09-15 22:38:29.000000000","message":"Should probably mention that this does a hard delete","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":730,"context_line":""},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"def project_default_volume_type_unset(context, project_id):"},{"line_number":733,"context_line":"    \"\"\"Unset default volume type for a project\"\"\""},{"line_number":734,"context_line":"    return IMPL.project_default_volume_type_unset(context, project_id)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_b9f7e959","line":733,"in_reply_to":"9f560f44_bc5fe44b","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d401930337190600896017110dbba7a9c3538108","unresolved":false,"context_lines":[{"line_number":4359,"context_line":"    update_default \u003d db.volume_type_default_get(context, project_id)"},{"line_number":4360,"context_line":"    session \u003d get_session()"},{"line_number":4361,"context_line":"    if update_default:"},{"line_number":4362,"context_line":"        LOG.info(\"Updating default type for project %s\" % project_id)"},{"line_number":4363,"context_line":"        with session.begin():"},{"line_number":4364,"context_line":"            model_query(context, models.DefaultVolumeTypes,"},{"line_number":4365,"context_line":"                        session\u003dsession, read_deleted\u003d\"no\"). \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_d683eac9","line":4362,"updated":"2020-07-14 19:11:57.000000000","message":"pep8: H904: String interpolation should be delayed to be handled by the logging code, rather than being done at the point of the logging call. Use \u0027,\u0027 instead of \u0027%\u0027.","commit_id":"267192337a46ffdbf29eccf136c90c3dbca6a499"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":4356,"context_line":""},{"line_number":4357,"context_line":""},{"line_number":4358,"context_line":"def volume_type_default_set(context, volume_type, project_id):"},{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a tenant\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    update_default \u003d db.volume_type_default_get(context, project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_78d2dd01","line":4359,"range":{"start_line":4359,"start_character":37,"end_line":4359,"end_character":43},"updated":"2020-08-25 03:43:55.000000000","message":"you should probably say \u0027project\u0027 here and throughout (we\u0027re not supposed to talk about \u0027tenants\u0027 any more)","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":4356,"context_line":""},{"line_number":4357,"context_line":""},{"line_number":4358,"context_line":"def volume_type_default_set(context, volume_type, project_id):"},{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a tenant\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    update_default \u003d db.volume_type_default_get(context, project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_0b906ded","line":4359,"range":{"start_line":4359,"start_character":37,"end_line":4359,"end_character":43},"in_reply_to":"9f560f44_78d2dd01","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":4396,"context_line":"    session \u003d get_session()"},{"line_number":4397,"context_line":"    with session.begin():"},{"line_number":4398,"context_line":"        (model_query(context, models.DefaultVolumeTypes,"},{"line_number":4399,"context_line":"                     session\u003dsession, read_deleted\u003d\"int_no\")."},{"line_number":4400,"context_line":"         filter_by(project_id\u003dproject_id)."},{"line_number":4401,"context_line":"         update({\u0027deleted\u0027: True,"},{"line_number":4402,"context_line":"                 \u0027deleted_at\u0027: timeutils.utcnow(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_786e5d2f","line":4399,"range":{"start_line":4399,"start_character":51,"end_line":4399,"end_character":59},"updated":"2020-08-25 03:43:55.000000000","message":"see my comments in sqlalchemy/models.py","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":4391,"context_line":""},{"line_number":4392,"context_line":""},{"line_number":4393,"context_line":"def get_all_projects_with_default_type(context, volume_type_id):"},{"line_number":4394,"context_line":"    \"\"\"Get all the projects associated with a default type\"\"\""},{"line_number":4395,"context_line":"    session \u003d get_session()"},{"line_number":4396,"context_line":"    with session.begin():"},{"line_number":4397,"context_line":"        return model_query(context, models.DefaultVolumeTypes,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_66710ea9","line":4394,"range":{"start_line":4394,"start_character":7,"end_line":4394,"end_character":58},"updated":"2020-09-02 21:58:27.000000000","message":"You\u0027re going to want to kick me, but I think this would be better as:\n\"\"\"Get all projects with volume_type_id as their default type\"\"\"\n\n(Otherwise it sounds like there\u0027s a special thing, a \u0027default type\u0027, whereas all we\u0027ve got are regular volume types that happen to be in a particular relationship to projects.)","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":4391,"context_line":""},{"line_number":4392,"context_line":""},{"line_number":4393,"context_line":"def get_all_projects_with_default_type(context, volume_type_id):"},{"line_number":4394,"context_line":"    \"\"\"Get all the projects associated with a default type\"\"\""},{"line_number":4395,"context_line":"    session \u003d get_session()"},{"line_number":4396,"context_line":"    with session.begin():"},{"line_number":4397,"context_line":"        return model_query(context, models.DefaultVolumeTypes,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_a7c82474","line":4394,"range":{"start_line":4394,"start_character":7,"end_line":4394,"end_character":58},"in_reply_to":"9f560f44_66710ea9","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a project\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    update_default \u003d db.project_default_volume_type_get(context, project_id)"},{"line_number":4363,"context_line":"    session \u003d get_session()"},{"line_number":4364,"context_line":"    if update_default:"},{"line_number":4365,"context_line":"        LOG.info(\"Updating default type for project %s\", project_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_023722b2","line":4362,"range":{"start_line":4362,"start_character":21,"end_line":4362,"end_character":23},"updated":"2020-09-07 17:44:20.000000000","message":"-1: No need to call the method through the db abstraction, the method is defined in this same file, we can just call the method.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a project\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    update_default \u003d db.project_default_volume_type_get(context, project_id)"},{"line_number":4363,"context_line":"    session \u003d get_session()"},{"line_number":4364,"context_line":"    if update_default:"},{"line_number":4365,"context_line":"        LOG.info(\"Updating default type for project %s\", project_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_189b0ac9","line":4362,"range":{"start_line":4362,"start_character":21,"end_line":4362,"end_character":23},"in_reply_to":"9f560f44_023722b2","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a project\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    update_default \u003d db.project_default_volume_type_get(context, project_id)"},{"line_number":4363,"context_line":"    session \u003d get_session()"},{"line_number":4364,"context_line":"    if update_default:"},{"line_number":4365,"context_line":"        LOG.info(\"Updating default type for project %s\", project_id)"},{"line_number":4366,"context_line":"        with session.begin():"},{"line_number":4367,"context_line":"            model_query(context, models.DefaultVolumeTypes,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_824a1224","line":4364,"range":{"start_line":4362,"start_character":0,"end_line":4364,"end_character":22},"updated":"2020-09-07 17:44:20.000000000","message":"-1: This allows for race conditions, since between checking and updating it could be deleted.\n\nStart the session first, then pass the session to the get method (where it should be optional), and then do the if and the update or save.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a project\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    update_default \u003d db.project_default_volume_type_get(context, project_id)"},{"line_number":4363,"context_line":"    session \u003d get_session()"},{"line_number":4364,"context_line":"    if update_default:"},{"line_number":4365,"context_line":"        LOG.info(\"Updating default type for project %s\", project_id)"},{"line_number":4366,"context_line":"        with session.begin():"},{"line_number":4367,"context_line":"            model_query(context, models.DefaultVolumeTypes,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_f89f36b1","line":4364,"range":{"start_line":4362,"start_character":0,"end_line":4364,"end_character":22},"in_reply_to":"9f560f44_824a1224","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4365,"context_line":"        LOG.info(\"Updating default type for project %s\", project_id)"},{"line_number":4366,"context_line":"        with session.begin():"},{"line_number":4367,"context_line":"            model_query(context, models.DefaultVolumeTypes,"},{"line_number":4368,"context_line":"                        session\u003dsession, read_deleted\u003d\"no\"). \\"},{"line_number":4369,"context_line":"                filter_by(project_id\u003dproject_id).\\"},{"line_number":4370,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4371,"context_line":"        return update_default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_c269aa8c","line":4368,"range":{"start_line":4368,"start_character":41,"end_line":4368,"end_character":58},"updated":"2020-09-07 17:44:20.000000000","message":"nit: maybe we should use context.read_deleted instead of hard-coding it, though I\u0027m not sure how useful it will be.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4365,"context_line":"        LOG.info(\"Updating default type for project %s\", project_id)"},{"line_number":4366,"context_line":"        with session.begin():"},{"line_number":4367,"context_line":"            model_query(context, models.DefaultVolumeTypes,"},{"line_number":4368,"context_line":"                        session\u003dsession, read_deleted\u003d\"no\"). \\"},{"line_number":4369,"context_line":"                filter_by(project_id\u003dproject_id).\\"},{"line_number":4370,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4371,"context_line":"        return update_default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_f888d671","line":4368,"range":{"start_line":4368,"start_character":41,"end_line":4368,"end_character":58},"in_reply_to":"9f560f44_c269aa8c","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4378,"context_line":""},{"line_number":4379,"context_line":""},{"line_number":4380,"context_line":"def project_default_volume_type_get(context, project_id\u003dNone):"},{"line_number":4381,"context_line":"    \"\"\"Get default volume type for a project\"\"\""},{"line_number":4382,"context_line":"    session \u003d get_session()"},{"line_number":4383,"context_line":"    with session.begin():"},{"line_number":4384,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_22106600","line":4381,"updated":"2020-09-07 17:44:20.000000000","message":"nit: Please improve this docstring, as it may not be for a project, and this is a polymorphic method, that can return either 1 instance or a list of instances.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4378,"context_line":""},{"line_number":4379,"context_line":""},{"line_number":4380,"context_line":"def project_default_volume_type_get(context, project_id\u003dNone):"},{"line_number":4381,"context_line":"    \"\"\"Get default volume type for a project\"\"\""},{"line_number":4382,"context_line":"    session \u003d get_session()"},{"line_number":4383,"context_line":"    with session.begin():"},{"line_number":4384,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_b88ade60","line":4381,"in_reply_to":"9f560f44_22106600","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4383,"context_line":"    with session.begin():"},{"line_number":4384,"context_line":"        if project_id:"},{"line_number":4385,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4386,"context_line":"                               session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":4387,"context_line":"                filter_by(project_id\u003dproject_id).first()"},{"line_number":4388,"context_line":"        else:"},{"line_number":4389,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_a26636ba","line":4386,"range":{"start_line":4386,"start_character":48,"end_line":4386,"end_character":60},"updated":"2020-09-07 17:44:20.000000000","message":"ditto","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4383,"context_line":"    with session.begin():"},{"line_number":4384,"context_line":"        if project_id:"},{"line_number":4385,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4386,"context_line":"                               session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":4387,"context_line":"                filter_by(project_id\u003dproject_id).first()"},{"line_number":4388,"context_line":"        else:"},{"line_number":4389,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_18e94a19","line":4386,"range":{"start_line":4386,"start_character":48,"end_line":4386,"end_character":60},"in_reply_to":"9f560f44_a26636ba","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4395,"context_line":"    session \u003d get_session()"},{"line_number":4396,"context_line":"    with session.begin():"},{"line_number":4397,"context_line":"        return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4398,"context_line":"                           session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":4399,"context_line":"            filter_by(volume_type_id\u003dvolume_type_id).all()"},{"line_number":4400,"context_line":""},{"line_number":4401,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_020562c2","line":4398,"range":{"start_line":4398,"start_character":44,"end_line":4398,"end_character":56},"updated":"2020-09-07 17:44:20.000000000","message":"ditto","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4395,"context_line":"    session \u003d get_session()"},{"line_number":4396,"context_line":"    with session.begin():"},{"line_number":4397,"context_line":"        return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4398,"context_line":"                           session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":4399,"context_line":"            filter_by(volume_type_id\u003dvolume_type_id).all()"},{"line_number":4400,"context_line":""},{"line_number":4401,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_58ef421c","line":4398,"range":{"start_line":4398,"start_character":44,"end_line":4398,"end_character":56},"in_reply_to":"9f560f44_020562c2","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4405,"context_line":"    session \u003d get_session()"},{"line_number":4406,"context_line":"    with session.begin():"},{"line_number":4407,"context_line":"        (model_query(context, models.DefaultVolumeTypes,"},{"line_number":4408,"context_line":"                     session\u003dsession, read_deleted\u003d\"no\")."},{"line_number":4409,"context_line":"         filter_by(project_id\u003dproject_id)."},{"line_number":4410,"context_line":"         update({\u0027deleted\u0027: True,"},{"line_number":4411,"context_line":"                 \u0027deleted_at\u0027: timeutils.utcnow(),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_e2094edd","line":4408,"range":{"start_line":4408,"start_character":38,"end_line":4408,"end_character":50},"updated":"2020-09-07 17:44:20.000000000","message":"ditto","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4405,"context_line":"    session \u003d get_session()"},{"line_number":4406,"context_line":"    with session.begin():"},{"line_number":4407,"context_line":"        (model_query(context, models.DefaultVolumeTypes,"},{"line_number":4408,"context_line":"                     session\u003dsession, read_deleted\u003d\"no\")."},{"line_number":4409,"context_line":"         filter_by(project_id\u003dproject_id)."},{"line_number":4410,"context_line":"         update({\u0027deleted\u0027: True,"},{"line_number":4411,"context_line":"                 \u0027deleted_at\u0027: timeutils.utcnow(),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_38f40ef1","line":4408,"range":{"start_line":4408,"start_character":38,"end_line":4408,"end_character":50},"in_reply_to":"9f560f44_e2094edd","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":4358,"context_line":"def project_default_volume_type_set(context, volume_type, project_id):"},{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a project\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    session \u003d get_session()"},{"line_number":4363,"context_line":"    with session.begin():"},{"line_number":4364,"context_line":"        update_default \u003d project_default_volume_type_get(context, project_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_d1bb2d0c","line":4361,"updated":"2020-09-08 12:21:42.000000000","message":"nit: We should move this to where we are going to use it, right above L4374.\n\nMoreover, I think we should create de DefaultVolumeTypes ORM instance directly with the values we want:\n\n  access_ref \u003d models.DefaultVolumeTypes(volume_type_id\u003dvolume_type.id, project_id\u003dproject_id)","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":4358,"context_line":"def project_default_volume_type_set(context, volume_type, project_id):"},{"line_number":4359,"context_line":"    \"\"\"Set default volume type for a project\"\"\""},{"line_number":4360,"context_line":""},{"line_number":4361,"context_line":"    access_ref \u003d models.DefaultVolumeTypes()"},{"line_number":4362,"context_line":"    session \u003d get_session()"},{"line_number":4363,"context_line":"    with session.begin():"},{"line_number":4364,"context_line":"        update_default \u003d project_default_volume_type_get(context, project_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_cc4b94ae","line":4361,"in_reply_to":"9f560f44_d1bb2d0c","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":4365,"context_line":"                                                         session\u003dsession)"},{"line_number":4366,"context_line":"        if update_default:"},{"line_number":4367,"context_line":"            LOG.info(\"Updating default type for project %s\", project_id)"},{"line_number":4368,"context_line":"            model_query(context, models.DefaultVolumeTypes,"},{"line_number":4369,"context_line":"                        session\u003dsession, read_deleted\u003dcontext.read_deleted).\\"},{"line_number":4370,"context_line":"                filter_by(project_id\u003dproject_id).\\"},{"line_number":4371,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4372,"context_line":"            return update_default"},{"line_number":4373,"context_line":""},{"line_number":4374,"context_line":"        access_ref.update({\"volume_type_id\": volume_type,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_d1e20d30","line":4371,"range":{"start_line":4368,"start_character":0,"end_line":4371,"end_character":55},"updated":"2020-09-08 12:21:42.000000000","message":"nit: I could be wrong, but wouldn\u0027t the following code work as well?\n\n  update_default.volume_type_id \u003d volume_type.id","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":4365,"context_line":"                                                         session\u003dsession)"},{"line_number":4366,"context_line":"        if update_default:"},{"line_number":4367,"context_line":"            LOG.info(\"Updating default type for project %s\", project_id)"},{"line_number":4368,"context_line":"            model_query(context, models.DefaultVolumeTypes,"},{"line_number":4369,"context_line":"                        session\u003dsession, read_deleted\u003dcontext.read_deleted).\\"},{"line_number":4370,"context_line":"                filter_by(project_id\u003dproject_id).\\"},{"line_number":4371,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4372,"context_line":"            return update_default"},{"line_number":4373,"context_line":""},{"line_number":4374,"context_line":"        access_ref.update({\"volume_type_id\": volume_type,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_8cda3ce6","line":4371,"range":{"start_line":4368,"start_character":0,"end_line":4371,"end_character":55},"in_reply_to":"9f560f44_d1e20d30","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":4369,"context_line":"                        session\u003dsession, read_deleted\u003dcontext.read_deleted).\\"},{"line_number":4370,"context_line":"                filter_by(project_id\u003dproject_id).\\"},{"line_number":4371,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4372,"context_line":"            return update_default"},{"line_number":4373,"context_line":""},{"line_number":4374,"context_line":"        access_ref.update({\"volume_type_id\": volume_type,"},{"line_number":4375,"context_line":"                           \"project_id\": project_id})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_517a7d76","line":4372,"updated":"2020-09-08 12:21:42.000000000","message":"-1: Aren\u0027t we returning the old data here?\n\nIf we used my suggestion on L4371 I think we can just return update_default","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":4369,"context_line":"                        session\u003dsession, read_deleted\u003dcontext.read_deleted).\\"},{"line_number":4370,"context_line":"                filter_by(project_id\u003dproject_id).\\"},{"line_number":4371,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4372,"context_line":"            return update_default"},{"line_number":4373,"context_line":""},{"line_number":4374,"context_line":"        access_ref.update({\"volume_type_id\": volume_type,"},{"line_number":4375,"context_line":"                           \"project_id\": project_id})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_6cd7e8c0","line":4372,"in_reply_to":"9f560f44_517a7d76","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":4371,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4372,"context_line":"            return update_default"},{"line_number":4373,"context_line":""},{"line_number":4374,"context_line":"        access_ref.update({\"volume_type_id\": volume_type,"},{"line_number":4375,"context_line":"                           \"project_id\": project_id})"},{"line_number":4376,"context_line":"        access_ref.save(session\u003dsession)"},{"line_number":4377,"context_line":"    return access_ref"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_31cd49b7","line":4374,"range":{"start_line":4374,"start_character":45,"end_line":4374,"end_character":56},"updated":"2020-09-08 12:21:42.000000000","message":"-1: Shouldn\u0027t this be volume_type.id ?","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":4371,"context_line":"                update({\u0027volume_type_id\u0027: volume_type})"},{"line_number":4372,"context_line":"            return update_default"},{"line_number":4373,"context_line":""},{"line_number":4374,"context_line":"        access_ref.update({\"volume_type_id\": volume_type,"},{"line_number":4375,"context_line":"                           \"project_id\": project_id})"},{"line_number":4376,"context_line":"        access_ref.save(session\u003dsession)"},{"line_number":4377,"context_line":"    return access_ref"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_4ce664b2","line":4374,"range":{"start_line":4374,"start_character":45,"end_line":4374,"end_character":56},"in_reply_to":"9f560f44_31cd49b7","updated":"2020-09-08 16:35:16.000000000","message":"We are passing id of the volume type here, i will update the name of the variable to avoid confusion (similar to the API change)\n\n[1] https://review.opendev.org/#/c/737707/18/cinder/api/v3/default_types.py@70","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":4383,"context_line":"    If a project id is passed, it returns default type for that particular"},{"line_number":4384,"context_line":"    project else returns default volume types for all projects"},{"line_number":4385,"context_line":"    \"\"\""},{"line_number":4386,"context_line":"    if session:"},{"line_number":4387,"context_line":"        # This is requested by set method."},{"line_number":4388,"context_line":"        # To avoid race condition, we use the same session here"},{"line_number":4389,"context_line":"        return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4390,"context_line":"                           session\u003dsession,"},{"line_number":4391,"context_line":"                           read_deleted\u003dcontext.read_deleted).\\"},{"line_number":4392,"context_line":"            filter_by(project_id\u003dproject_id).first()"},{"line_number":4393,"context_line":"    session \u003d get_session()"},{"line_number":4394,"context_line":"    with session.begin():"},{"line_number":4395,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_d1efadae","line":4392,"range":{"start_line":4386,"start_character":0,"end_line":4392,"end_character":52},"updated":"2020-09-08 12:21:42.000000000","message":"-1: This changes the behavior of the method depending on whether we pass the session or not, I think it should be the same regardless.\n\nMy suggestion is since we support Python 3.6 we cannot use nullcontext, but we can use suppress instead:\n\n  if session:\n      session_ctxt \u003d contextlib.suppress()\n  else:\n      session \u003d get_session()\n      session_ctxt \u003d session.begin()\n\nAnd then we do the same code for both:\n\n  with session_ctxt:\n     L4395 ... L 4403\n\nBut you can do it however you like ;-)","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":4383,"context_line":"    If a project id is passed, it returns default type for that particular"},{"line_number":4384,"context_line":"    project else returns default volume types for all projects"},{"line_number":4385,"context_line":"    \"\"\""},{"line_number":4386,"context_line":"    if session:"},{"line_number":4387,"context_line":"        # This is requested by set method."},{"line_number":4388,"context_line":"        # To avoid race condition, we use the same session here"},{"line_number":4389,"context_line":"        return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4390,"context_line":"                           session\u003dsession,"},{"line_number":4391,"context_line":"                           read_deleted\u003dcontext.read_deleted).\\"},{"line_number":4392,"context_line":"            filter_by(project_id\u003dproject_id).first()"},{"line_number":4393,"context_line":"    session \u003d get_session()"},{"line_number":4394,"context_line":"    with session.begin():"},{"line_number":4395,"context_line":"        if project_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_0c310c0c","line":4392,"range":{"start_line":4386,"start_character":0,"end_line":4392,"end_character":52},"in_reply_to":"9f560f44_d1efadae","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e4ae3cd16a74f2b1018ddf649560ff5d2cdfe950","unresolved":false,"context_lines":[{"line_number":4370,"context_line":""},{"line_number":4371,"context_line":"        access_ref \u003d models.DefaultVolumeTypes(volume_type_id\u003dvolume_type_id,"},{"line_number":4372,"context_line":"                                               project_id\u003dproject_id)"},{"line_number":4373,"context_line":"        access_ref.update({\"volume_type_id\": volume_type_id,"},{"line_number":4374,"context_line":"                           \"project_id\": project_id,"},{"line_number":4375,"context_line":"                           \"is_active\": True})"},{"line_number":4376,"context_line":"        access_ref.save(session\u003dsession)"},{"line_number":4377,"context_line":"    return access_ref"},{"line_number":4378,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_c996e194","line":4375,"range":{"start_line":4373,"start_character":0,"end_line":4375,"end_character":46},"updated":"2020-09-08 15:17:33.000000000","message":"-1: We don\u0027t need his call, we can just add `is_active\u003dTrue` to the constructor in L4372.","commit_id":"d786963e93865051a503eed26ed597021f9dd95f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":4370,"context_line":""},{"line_number":4371,"context_line":"        access_ref \u003d models.DefaultVolumeTypes(volume_type_id\u003dvolume_type_id,"},{"line_number":4372,"context_line":"                                               project_id\u003dproject_id)"},{"line_number":4373,"context_line":"        access_ref.update({\"volume_type_id\": volume_type_id,"},{"line_number":4374,"context_line":"                           \"project_id\": project_id,"},{"line_number":4375,"context_line":"                           \"is_active\": True})"},{"line_number":4376,"context_line":"        access_ref.save(session\u003dsession)"},{"line_number":4377,"context_line":"    return access_ref"},{"line_number":4378,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_2ccb2b1e","line":4375,"range":{"start_line":4373,"start_character":0,"end_line":4375,"end_character":46},"in_reply_to":"9f560f44_c996e194","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"d786963e93865051a503eed26ed597021f9dd95f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ca6b6d2da0e9a80877332dad33a6b73d5b465026","unresolved":false,"context_lines":[{"line_number":4392,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4393,"context_line":"                               session\u003dsession).\\"},{"line_number":4394,"context_line":"                filter_by(project_id\u003dproject_id).first()"},{"line_number":4395,"context_line":"        else:"},{"line_number":4396,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4397,"context_line":"                               session\u003dsession).all()"},{"line_number":4398,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_2170c9da","line":4395,"updated":"2020-09-16 08:50:15.000000000","message":"nit: No need for the else","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":4392,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4393,"context_line":"                               session\u003dsession).\\"},{"line_number":4394,"context_line":"                filter_by(project_id\u003dproject_id).first()"},{"line_number":4395,"context_line":"        else:"},{"line_number":4396,"context_line":"            return model_query(context, models.DefaultVolumeTypes,"},{"line_number":4397,"context_line":"                               session\u003dsession).all()"},{"line_number":4398,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_d4e38433","line":4395,"in_reply_to":"9f560f44_2170c9da","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}],"cinder/db/sqlalchemy/migrate_repo/versions/140_create_project_default_volume_type.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0190b2b758e8c997932fdb15dd0e6702a8dc39c0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    try:"},{"line_number":42,"context_line":"        project_type_defaults.create()"},{"line_number":43,"context_line":"    except Exception:"},{"line_number":44,"context_line":"        LOG.error(_(\"Table |%s| not created!\"), repr(project_type_defaults))"},{"line_number":45,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_c054dd00","line":44,"updated":"2020-06-24 11:48:59.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"dd08d7c2857907d2d55f62a0b98915084fb88756"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0190b2b758e8c997932fdb15dd0e6702a8dc39c0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        project_type_defaults.create()"},{"line_number":43,"context_line":"    except Exception:"},{"line_number":44,"context_line":"        LOG.error(_(\"Table |%s| not created!\"), repr(project_type_defaults))"},{"line_number":45,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_a059e935","line":45,"updated":"2020-06-24 11:48:59.000000000","message":"pep8: W292 no newline at end of file","commit_id":"dd08d7c2857907d2d55f62a0b98915084fb88756"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    # This is required to establish foreign key dependency between"},{"line_number":25,"context_line":"    # volume_type_id and volume_types.id columns. See L#32"},{"line_number":26,"context_line":"    Table(\u0027volume_types\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    default_volume_types \u003d Table("}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_665bcef5","line":25,"range":{"start_line":25,"start_character":56,"end_line":25,"end_character":58},"updated":"2020-09-02 21:58:27.000000000","message":"34?","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    # This is required to establish foreign key dependency between"},{"line_number":25,"context_line":"    # volume_type_id and volume_types.id columns. See L#32"},{"line_number":26,"context_line":"    Table(\u0027volume_types\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    default_volume_types \u003d Table("}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_27aa5484","line":25,"range":{"start_line":25,"start_character":56,"end_line":25,"end_character":58},"in_reply_to":"9f560f44_665bcef5","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ForeignKey(\u0027volume_types.id\u0027)),"},{"line_number":36,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, Boolean(create_constraint\u003dTrue, name\u003dNone)),"},{"line_number":38,"context_line":"        UniqueConstraint(\u0027volume_type_id\u0027, \u0027project_id\u0027, \u0027id\u0027),"},{"line_number":39,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":40,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":41,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_a2fbd6bb","line":38,"updated":"2020-09-07 17:44:20.000000000","message":"I don\u0027t think this is useful, since the id will always be unique (primary key), so even if we repeat volume_type_id and project_id it will hold true.\n\nI think we need a conditional unique constraint: https://stackoverflow.com/questions/18806361/add-unique-constraint-depending-on-value-in-sql","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ForeignKey(\u0027volume_types.id\u0027)),"},{"line_number":36,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, Boolean(create_constraint\u003dTrue, name\u003dNone)),"},{"line_number":38,"context_line":"        UniqueConstraint(\u0027volume_type_id\u0027, \u0027project_id\u0027, \u0027id\u0027),"},{"line_number":39,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":40,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":41,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_d144cdba","line":38,"in_reply_to":"9f560f44_38108e00","updated":"2020-09-08 12:21:42.000000000","message":"The condition should be that we must have a unique project_id when \"deleted \u003d\u003d False\", since we could have multiple deleted defaults, and we don\u0027t want multiple defaults for a project (with the same or different volume_type_id).","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ForeignKey(\u0027volume_types.id\u0027)),"},{"line_number":36,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, Boolean(create_constraint\u003dTrue, name\u003dNone)),"},{"line_number":38,"context_line":"        UniqueConstraint(\u0027volume_type_id\u0027, \u0027project_id\u0027, \u0027id\u0027),"},{"line_number":39,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":40,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":41,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_671ee30c","line":38,"in_reply_to":"9f560f44_4c3dc48c","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ForeignKey(\u0027volume_types.id\u0027)),"},{"line_number":36,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, Boolean(create_constraint\u003dTrue, name\u003dNone)),"},{"line_number":38,"context_line":"        UniqueConstraint(\u0027volume_type_id\u0027, \u0027project_id\u0027, \u0027id\u0027),"},{"line_number":39,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":40,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":41,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_38108e00","line":38,"in_reply_to":"9f560f44_a2fbd6bb","updated":"2020-09-08 10:39:32.000000000","message":"I\u0027m not sure regarding the idea of conditional unique constraint as it might get complicated, what should be the condition in that?\nalso i agree the id is always unique so we probably don\u0027t need this.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5ee847a86dcb7c12e9e430db6f12636a0db41a86","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ForeignKey(\u0027volume_types.id\u0027)),"},{"line_number":36,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, Boolean(create_constraint\u003dTrue, name\u003dNone)),"},{"line_number":38,"context_line":"        UniqueConstraint(\u0027volume_type_id\u0027, \u0027project_id\u0027, \u0027id\u0027),"},{"line_number":39,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":40,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":41,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_4c3dc48c","line":38,"in_reply_to":"9f560f44_d144cdba","updated":"2020-09-08 12:37:12.000000000","message":"Though I think in mySQL we would have to do it with an additional nullable boolean field \"is_active\" that we set to NULL on deletion and to True on update/creation, and then we do the unique constraint on \"project_id\" and \"is_active\", because afaik the constraint allows duplicated values of NULL.\n\nI think it isn\u0027t very complicated, though we would need to add a comment explaining it, because it\u0027s not straightforward.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1cb9030213fc9dc942d6780f0cb3fd67b6a36eac","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        Column(\u0027is_active\u0027, Boolean),"},{"line_number":42,"context_line":"        # volume_type_id is required due to the assertion"},{"line_number":43,"context_line":"        # assert_each_foreign_key_is_part_of_an_index"},{"line_number":44,"context_line":"        UniqueConstraint(\u0027project_id\u0027, \u0027volume_type_id\u0027, \u0027is_active\u0027),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_fe06d585","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":69},"updated":"2020-09-10 02:03:16.000000000","message":"I need you to explain how this works.  These rows are unique:\n(1, 2, True)\n(1, 3, True)\n(1, 4, True)\nbut they allow project 1 to have 3 active default volume types.  What\u0027s preventing this situation is the api layer code, not this constraint.\n\nThis is a dumb question, but since a project can only have one default type, why not put the uniqueness constraint on the project_id only?  Then for set/update, you get the row with that project_id where read_deleted\u003d\u0027yes\u0027, creating it if necessary; for delete, you get it and set deleted\u003c-True.  It\u0027s not clear to me what this complicated uniqueness condition buys us.","commit_id":"1d37f45ceda0e426366ce893a6ee01ffa1b967f6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fb61f8eac7635c8c1de0d076b197a4be698be205","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        Column(\u0027is_active\u0027, Boolean),"},{"line_number":42,"context_line":"        # volume_type_id is required due to the assertion"},{"line_number":43,"context_line":"        # assert_each_foreign_key_is_part_of_an_index"},{"line_number":44,"context_line":"        UniqueConstraint(\u0027project_id\u0027, \u0027volume_type_id\u0027, \u0027is_active\u0027),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_8223f704","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":69},"in_reply_to":"9f560f44_98740c6a","updated":"2020-09-10 12:00:54.000000000","message":"So stupid of me to assume the indexing should be done by UniqueConstraint only.\nI\u0027ve updated the patch to have indexing for volume_type_id separately.","commit_id":"1d37f45ceda0e426366ce893a6ee01ffa1b967f6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"34f092d4a49b1cfac821988576d3d73e2babce15","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        Column(\u0027is_active\u0027, Boolean),"},{"line_number":42,"context_line":"        # volume_type_id is required due to the assertion"},{"line_number":43,"context_line":"        # assert_each_foreign_key_is_part_of_an_index"},{"line_number":44,"context_line":"        UniqueConstraint(\u0027project_id\u0027, \u0027volume_type_id\u0027, \u0027is_active\u0027),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_98740c6a","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":69},"in_reply_to":"9f560f44_de98311c","updated":"2020-09-10 06:48:45.000000000","message":"So the UniqueConstraint should be only on project_id and is_active but it is failing due to some assertion on postgresql side (see failure on previous PS) that foreign key should be a part of the indexing.\nI will try to figure out some way but for now [1] is taking care to avoid setting multiple types with same project id.\n\nRegarding your comment on uniqueconstraint, if we only keep project_id then if a entry with project id (lets say 1) is soft deleted then we can\u0027t set another volume type as it\u0027s default until the first entry is purged.\n\n[1] https://review.opendev.org/#/c/737707/22/cinder/db/sqlalchemy/api.py@4364","commit_id":"1d37f45ceda0e426366ce893a6ee01ffa1b967f6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5421d20559f3886c7c3780df8b6826243384961a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        Column(\u0027is_active\u0027, Boolean),"},{"line_number":42,"context_line":"        # volume_type_id is required due to the assertion"},{"line_number":43,"context_line":"        # assert_each_foreign_key_is_part_of_an_index"},{"line_number":44,"context_line":"        UniqueConstraint(\u0027project_id\u0027, \u0027volume_type_id\u0027, \u0027is_active\u0027),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f560f44_de98311c","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":69},"in_reply_to":"9f560f44_fe06d585","updated":"2020-09-10 02:12:50.000000000","message":"In other words, what does is_active \u003d\u003d True get you that deleted \u003d\u003d False does not?  I\u0027m not clear on why we want to keep track of the deleted default types of a project.  They don\u0027t represent a historical entity, they represent a relation between a project and a volume_type.  But maybe I\u0027m misunderstanding the intent here.","commit_id":"1d37f45ceda0e426366ce893a6ee01ffa1b967f6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ca6b6d2da0e9a80877332dad33a6b73d5b465026","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    default_volume_types \u003d Table("},{"line_number":29,"context_line":"        \u0027default_volume_types\u0027, meta,"},{"line_number":30,"context_line":"        Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":31,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":32,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":33,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_c12d8daf","line":30,"updated":"2020-09-16 08:50:15.000000000","message":"I believe we don\u0027t need the id field anymore, right?  We can use the project_id as the primary_key, right?","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    default_volume_types \u003d Table("},{"line_number":29,"context_line":"        \u0027default_volume_types\u0027, meta,"},{"line_number":30,"context_line":"        Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":31,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":32,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":33,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_d451c4db","line":30,"in_reply_to":"9f560f44_c12d8daf","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"id\", \"project_id\", \"deleted\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0id0project_id0deleted\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_180f6188","line":520,"range":{"start_line":520,"start_character":9,"end_line":520,"end_character":11},"updated":"2020-08-25 03:43:55.000000000","message":"isn\u0027t this the row number?  I don\u0027t think you want it in the uniqueness constraint (as a primary key it\u0027s guaranteed to be unique, so it makes this uniqueness constraint useless).  Also, it seems weird to have \u0027deleted\u0027 in the uniqueness constraint (though I see that we have it like that elsewhere in this file).  What\u0027s the reason for that?","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"id\", \"project_id\", \"deleted\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0id0project_id0deleted\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_46d04a54","line":520,"range":{"start_line":520,"start_character":9,"end_line":520,"end_character":11},"in_reply_to":"9f560f44_0ba98d23","updated":"2020-09-02 21:58:27.000000000","message":"Thanks for the explanation.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"id\", \"project_id\", \"deleted\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0id0project_id0deleted\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_0ba98d23","line":520,"range":{"start_line":520,"start_character":9,"end_line":520,"end_character":11},"in_reply_to":"9f560f44_180f6188","updated":"2020-08-28 15:27:30.000000000","message":"If we have a deleted entry where we have set project_id and volume_type_id and we set the same values again then the differentiating factor is the deleted value\nI think the id is a residue of code before the spec merge, it should be volume_type_id here","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":525,"context_line":"                            nullable\u003dFalse)"},{"line_number":526,"context_line":"    project_id \u003d Column(String(255))"},{"line_number":527,"context_line":"    deleted \u003d Column(Integer, default\u003d0)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    volume_type \u003d relationship("},{"line_number":530,"context_line":"        VolumeType,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_98ec11bc","line":527,"range":{"start_line":527,"start_character":0,"end_line":527,"end_character":40},"updated":"2020-08-25 03:43:55.000000000","message":"Two questions:\n(1) Doesn\u0027t CinderBase already have a \u0027deleted\u0027 column defined?\n(2) I think this should be Boolean.  I guess it\u0027s not because otherwise maybe it couldn\u0027t be used in the uniqueness constraint (although like I said above, I don\u0027t know why it\u0027s in the uniqueness constraint in the first place).  I think we\u0027re better off declaring this a Boolean and let the ORM worry about how to represent it.  Making this an Integer gives you some weird inconsistencies in your sqlalchemy/api functions (e.g., read_deleted\u003d\"no\" vs. read_deleted\u003d\"int_no\").","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":525,"context_line":"                            nullable\u003dFalse)"},{"line_number":526,"context_line":"    project_id \u003d Column(String(255))"},{"line_number":527,"context_line":"    deleted \u003d Column(Integer, default\u003d0)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    volume_type \u003d relationship("},{"line_number":530,"context_line":"        VolumeType,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_ab7061dc","line":527,"range":{"start_line":527,"start_character":0,"end_line":527,"end_character":40},"in_reply_to":"9f560f44_98ec11bc","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        foreign_keys\u003dvolume_type_id,"},{"line_number":531,"context_line":"        primaryjoin\u003d\u0027and_(\u0027"},{"line_number":532,"context_line":"        \u0027DefaultVolumeTypes.volume_type_id \u003d\u003d VolumeType.id,\u0027"},{"line_number":533,"context_line":"        \u0027DefaultVolumeTypes.deleted \u003d\u003d 0)\u0027)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"class QualityOfServiceSpecs(BASE, CinderBase):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_c61f3a07","line":533,"range":{"start_line":533,"start_character":39,"end_line":533,"end_character":40},"updated":"2020-09-02 21:58:27.000000000","message":"Should this be False? (We\u0027re inheriting from CinderBase where it\u0027s a boolean.  I think this will work fine in mysql where booleans are implemented as tinyint, but can cause problems if you use postgres which is stricter about booleans.)","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        foreign_keys\u003dvolume_type_id,"},{"line_number":531,"context_line":"        primaryjoin\u003d\u0027and_(\u0027"},{"line_number":532,"context_line":"        \u0027DefaultVolumeTypes.volume_type_id \u003d\u003d VolumeType.id,\u0027"},{"line_number":533,"context_line":"        \u0027DefaultVolumeTypes.deleted \u003d\u003d 0)\u0027)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"class QualityOfServiceSpecs(BASE, CinderBase):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_87988075","line":533,"range":{"start_line":533,"start_character":39,"end_line":533,"end_character":40},"in_reply_to":"9f560f44_c61f3a07","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":516,"context_line":"class DefaultVolumeTypes(BASE, CinderBase):"},{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"project_id\", \"volume_type_id\", \"id\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0project_id0volume_type_id0id\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_22298636","line":521,"range":{"start_line":519,"start_character":0,"end_line":521,"end_character":71},"updated":"2020-09-07 17:44:20.000000000","message":"As mentioned in previous file, this constraint doesn\u0027t seem useful.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":516,"context_line":"class DefaultVolumeTypes(BASE, CinderBase):"},{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"project_id\", \"volume_type_id\", \"id\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0project_id0volume_type_id0id\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_18d30a3a","line":521,"range":{"start_line":519,"start_character":0,"end_line":521,"end_character":71},"in_reply_to":"9f560f44_22298636","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e4ae3cd16a74f2b1018ddf649560ff5d2cdfe950","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"project_id\", \"id\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0project_id0is_active\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_69f3550a","line":521,"updated":"2020-09-08 15:17:33.000000000","message":"? Why are we using 0 as a separator?","commit_id":"d786963e93865051a503eed26ed597021f9dd95f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"project_id\", \"id\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0project_id0is_active\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_8c419766","line":521,"in_reply_to":"9f560f44_69f3550a","updated":"2020-09-08 16:35:16.000000000","message":"The same separator is used at L#440 in VolumeTypeProjects table so kept the same pattern.\nAlso separator can be anything so this should be ok right?","commit_id":"d786963e93865051a503eed26ed597021f9dd95f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5ae0355be76187a8d6fb79ace5b3083ee4a36037","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    __table_args__ \u003d (schema.UniqueConstraint("},{"line_number":520,"context_line":"        \"project_id\", \"id\","},{"line_number":521,"context_line":"        name\u003d\"uniq_default_volume_types0project_id0is_active\"),"},{"line_number":522,"context_line":"        CinderBase.__table_args__)"},{"line_number":523,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":524,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_37cb741e","line":521,"in_reply_to":"9f560f44_8c419766","updated":"2020-09-08 16:50:30.000000000","message":"Yup, that\u0027s right.  Thanks for the clarification.","commit_id":"d786963e93865051a503eed26ed597021f9dd95f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ca6b6d2da0e9a80877332dad33a6b73d5b465026","unresolved":false,"context_lines":[{"line_number":516,"context_line":"class DefaultVolumeTypes(BASE, CinderBase):"},{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":520,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":521,"context_line":"                            nullable\u003dFalse, index\u003dTrue)"},{"line_number":522,"context_line":"    project_id \u003d Column(String(255), unique\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_61280197","line":519,"updated":"2020-09-16 08:50:15.000000000","message":"I believe we no longer need this id field.  We should be able to use the project_id as the primary key, right?","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":516,"context_line":"class DefaultVolumeTypes(BASE, CinderBase):"},{"line_number":517,"context_line":"    \"\"\"Represent projects associated volume_types.\"\"\""},{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":520,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":521,"context_line":"                            nullable\u003dFalse, index\u003dTrue)"},{"line_number":522,"context_line":"    project_id \u003d Column(String(255), unique\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_746d5898","line":519,"in_reply_to":"9f560f44_61280197","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":519,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":520,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":521,"context_line":"                            nullable\u003dFalse, index\u003dTrue)"},{"line_number":522,"context_line":"    project_id \u003d Column(String(255), unique\u003dTrue)"},{"line_number":523,"context_line":"    volume_type \u003d relationship("},{"line_number":524,"context_line":"        VolumeType,"},{"line_number":525,"context_line":"        foreign_keys\u003dvolume_type_id,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_48e087f9","line":522,"range":{"start_line":522,"start_character":31,"end_line":522,"end_character":34},"updated":"2020-09-15 22:38:29.000000000","message":"I thought make this 36, but you are correct, we use 255 for this in the other models.","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ca6b6d2da0e9a80877332dad33a6b73d5b465026","unresolved":false,"context_lines":[{"line_number":519,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":520,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":521,"context_line":"                            nullable\u003dFalse, index\u003dTrue)"},{"line_number":522,"context_line":"    project_id \u003d Column(String(255), unique\u003dTrue)"},{"line_number":523,"context_line":"    volume_type \u003d relationship("},{"line_number":524,"context_line":"        VolumeType,"},{"line_number":525,"context_line":"        foreign_keys\u003dvolume_type_id,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_e13c11e3","line":522,"range":{"start_line":522,"start_character":31,"end_line":522,"end_character":34},"in_reply_to":"9f560f44_48e087f9","updated":"2020-09-16 08:50:15.000000000","message":"Yeah, 36 is what people usually use (a UUID), but projects are \"free form\" so a deployment could be using something \"weird\".","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0d6d6508140d02c455cb89e4b62720dadd621032","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        foreign_keys\u003dvolume_type_id,"},{"line_number":526,"context_line":"        primaryjoin\u003d\u0027and_(\u0027"},{"line_number":527,"context_line":"        \u0027DefaultVolumeTypes.volume_type_id \u003d\u003d VolumeType.id,\u0027"},{"line_number":528,"context_line":"        \u0027DefaultVolumeTypes.deleted \u003d\u003d False)\u0027)"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"class QualityOfServiceSpecs(BASE, CinderBase):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_2eed518e","line":528,"range":{"start_line":528,"start_character":8,"end_line":528,"end_character":45},"updated":"2020-09-16 12:15:34.000000000","message":"I think we can simplify this condition since deleted will always be False on this table.","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        foreign_keys\u003dvolume_type_id,"},{"line_number":526,"context_line":"        primaryjoin\u003d\u0027and_(\u0027"},{"line_number":527,"context_line":"        \u0027DefaultVolumeTypes.volume_type_id \u003d\u003d VolumeType.id,\u0027"},{"line_number":528,"context_line":"        \u0027DefaultVolumeTypes.deleted \u003d\u003d False)\u0027)"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"class QualityOfServiceSpecs(BASE, CinderBase):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_14021cbb","line":528,"range":{"start_line":528,"start_character":8,"end_line":528,"end_character":45},"in_reply_to":"9f560f44_2eed518e","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"93290ffddc33885c8c7c5d76dafee869280d6976","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    __tablename__ \u003d \"default_volume_types\""},{"line_number":519,"context_line":"    volume_type_id \u003d Column(String, ForeignKey(\u0027volume_types.id\u0027),"},{"line_number":520,"context_line":"                            nullable\u003dFalse, index\u003dTrue)"},{"line_number":521,"context_line":"    project_id \u003d Column(String(255), unique\u003dTrue, primary_key\u003dTrue)"},{"line_number":522,"context_line":"    volume_type \u003d relationship("},{"line_number":523,"context_line":"        VolumeType,"},{"line_number":524,"context_line":"        foreign_keys\u003dvolume_type_id,"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f560f44_4e9c000e","line":521,"updated":"2020-09-16 15:56:58.000000000","message":"nit: We usually put the primary key as the first field, and unique is redundant.","commit_id":"e63cb8548a64e67bad39409c15aa210daea01d7b"}],"cinder/exception.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                \"%(volume_type_name)s cannot be found.\")"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"class ProjectDefaultNotFound(CinderException):"},{"line_number":418,"context_line":"    message \u003d _(\"Default volume type not found for %(project_id)s.\")"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_f8f1cd6c","line":417,"range":{"start_line":417,"start_character":6,"end_line":417,"end_character":28},"updated":"2020-08-25 03:43:55.000000000","message":"I suggest naming this \u0027VolumeTypeProjectDefaultNotFound\u0027","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                \"%(volume_type_name)s cannot be found.\")"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"class ProjectDefaultNotFound(CinderException):"},{"line_number":418,"context_line":"    message \u003d _(\"Default volume type not found for %(project_id)s.\")"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_c6c2ec86","line":417,"range":{"start_line":417,"start_character":6,"end_line":417,"end_character":28},"in_reply_to":"9f560f44_f8f1cd6c","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":606,"context_line":"    message \u003d _(\"Volume type encryption for type %(type_id)s does not exist.\")"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DefaultTypeExists(Duplicate):"},{"line_number":610,"context_line":"    message \u003d _(\"Default volume type for for %(volume_type_id)s / \""},{"line_number":611,"context_line":"                \"%(project_id)s combination already exists.\")"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"class GroupTypeExists(Duplicate):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_b87475ff","line":611,"range":{"start_line":609,"start_character":0,"end_line":611,"end_character":61},"updated":"2020-08-25 03:43:55.000000000","message":"I guess I\u0027ll see this in the code eventually, but under what circumstances will this be raised?  Seems like it wouldn\u0027t actually be an error condition given that we\u0027re using PUT in a REST API.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":606,"context_line":"    message \u003d _(\"Volume type encryption for type %(type_id)s does not exist.\")"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DefaultTypeExists(Duplicate):"},{"line_number":610,"context_line":"    message \u003d _(\"Default volume type for for %(volume_type_id)s / \""},{"line_number":611,"context_line":"                \"%(project_id)s combination already exists.\")"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"class GroupTypeExists(Duplicate):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_863e3489","line":611,"range":{"start_line":609,"start_character":0,"end_line":611,"end_character":61},"in_reply_to":"9f560f44_b87475ff","updated":"2020-08-28 15:27:30.000000000","message":"This is again a residue of pre-spec code when this was raised in POST call\nRemoved","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                \"%(volume_type_name)s cannot be found.\")"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"class VolumeTypeProjectDefaultNotFound(CinderException):"},{"line_number":405,"context_line":"    message \u003d _(\"Default volume type not found for %(project_id)s.\")"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_02a1e2a9","line":404,"range":{"start_line":404,"start_character":39,"end_line":404,"end_character":54},"updated":"2020-09-07 17:44:20.000000000","message":"We should inherit from NotFound, that way we can raise it at the API and it\u0027ll automatically return 404","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                \"%(volume_type_name)s cannot be found.\")"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"class VolumeTypeProjectDefaultNotFound(CinderException):"},{"line_number":405,"context_line":"    message \u003d _(\"Default volume type not found for %(project_id)s.\")"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_38dece3d","line":404,"range":{"start_line":404,"start_character":39,"end_line":404,"end_character":54},"in_reply_to":"9f560f44_02a1e2a9","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"}],"cinder/policies/default_types.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_18292136","line":28,"range":{"start_line":28,"start_character":18,"end_line":28,"end_character":35},"updated":"2020-08-25 03:43:55.000000000","message":"why aren\u0027t these base.RULE_ADMIN_API ?","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_465e8ae9","line":28,"range":{"start_line":28,"start_character":18,"end_line":28,"end_character":35},"in_reply_to":"9f560f44_060064ab","updated":"2020-09-02 21:58:27.000000000","message":"I understand your point, but I\u0027m not sure we want to have two different \"admin api\" settings in the same installation ... but we can worry about that later, just need to have that agreed on for RC-1.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_060064ab","line":28,"range":{"start_line":28,"start_character":18,"end_line":28,"end_character":35},"in_reply_to":"9f560f44_18292136","updated":"2020-08-28 15:27:30.000000000","message":"If you see the RULE_ADMIN_API in policy file[1], it uses is_admin_project which was never properly implemented in keystone and doesn\u0027t take into account the new scope implementation.\nUpdating that rule would result in a lot of refactoring as all policy files use it so I\u0027ve defined a new admin policy for system admins as defined in keystone[2]\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/policies/base.py#L30-L31\n[2] https://github.com/openstack/keystone/blob/master/keystone/common/policies/base.py#L48","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        name\u003dGET_ALL_POLICY,"},{"line_number":50,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":51,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":52,"context_line":"        description\u003d\"Get all default types.\""},{"line_number":53,"context_line":"                    \"WARNING: Changing this might open up too much \""},{"line_number":54,"context_line":"                    \"information regarding cloud deployment.\","},{"line_number":55,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_d83209a7","line":52,"range":{"start_line":52,"start_character":42,"end_line":52,"end_character":43},"updated":"2020-08-25 03:43:55.000000000","message":"need a space after this period.","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        name\u003dGET_ALL_POLICY,"},{"line_number":50,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":51,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":52,"context_line":"        description\u003d\"Get all default types.\""},{"line_number":53,"context_line":"                    \"WARNING: Changing this might open up too much \""},{"line_number":54,"context_line":"                    \"information regarding cloud deployment.\","},{"line_number":55,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_662a002d","line":52,"range":{"start_line":52,"start_character":42,"end_line":52,"end_character":43},"in_reply_to":"9f560f44_d83209a7","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_e28e6e2c","line":28,"updated":"2020-09-07 17:44:20.000000000","message":"I haven\u0027t been able to get this default policy to work.\nNot even creating a system token with\n\n  openstack --os-system-scope all token issue\n\nAnd then calling the methods with curl:\n\n  curl -g -i -X GET http://192.168.121.223/volume/v3/default-types -H \"Accept: application/json\" -H \"OpenStack-API-Version: volume 3.62\" -H \"User-Agent: python-cinderclient\" -H \"X-Auth-Token: $TOKEN\"","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_f1663151","line":28,"in_reply_to":"9f560f44_18b82ac6","updated":"2020-09-08 12:21:42.000000000","message":"But we should confirm that this actually works with the client, because afaik when we pass a system token to the cinderclient it doesn\u0027t get used, so we would have a usability problem (no way to use the feature with existing code and the default policy).","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"eda88ee08bee177dd7f6e54c2a715d2ad5620a87","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_66b320eb","line":28,"in_reply_to":"9f560f44_32a542b6","updated":"2020-09-14 11:09:27.000000000","message":"For me it worked just doing:\n\n  openstack --os-system-scope all --os-project-name\u003d\u0027\u0027 token issue\n\nEven when I had sourced the devstack openrc","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5990def856e0bf568386e1a53536ba0a4574bc7a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_d2116655","line":28,"in_reply_to":"9f560f44_77832ccc","updated":"2020-09-08 17:00:43.000000000","message":"OK, I just need to add --os-project-name\u003d\u0027\u0027","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5ae0355be76187a8d6fb79ace5b3083ee4a36037","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_77832ccc","line":28,"in_reply_to":"9f560f44_c63ff0b2","updated":"2020-09-08 16:50:30.000000000","message":"Lance, thanks for the suggestion.\n\nI tried your suggestion in the devstack deployment instead of how I was getting the token (\"--os-system-scope all\"), and I get the same result, a 403. :-(","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ee3fe620bb0bee35b605e033dfe4f9b6f8adf96d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_32a542b6","line":28,"in_reply_to":"9f560f44_d2116655","updated":"2020-09-08 17:41:02.000000000","message":"--os-project-name is going to ask keystone to give you a project-scoped token instead of a system-scoped token.\n\nYou\u0027ll want to make sure you\u0027re not setting any left-over environment variables if you decide to use cloud profiles.\n\nYou might need to set call:\n\n  $ for key in $( set | awk -F\u003d \u0027/^OS_/ {print $1}\u0027 ); do unset \"${key}\" ; done\n\nBefore you attempt to use --os-cloud devstack-system-admin","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_18b82ac6","line":28,"in_reply_to":"9f560f44_e28e6e2c","updated":"2020-09-08 10:39:32.000000000","message":"I will find out and update regarding the same.\nJust a note, The same policies work for keystone and nova so the operators might have idea regarding it\u0027s usage so we are safe here.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3e7aa04048bd796961e2d73d3381535ac2d07238","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_0cc5875c","line":28,"in_reply_to":"9f560f44_f1663151","updated":"2020-09-08 15:54:04.000000000","message":"It could be that you\u0027re still using project-scoped tokens.\n\nIf this is a devstack deployment, it should contain a system-scoped profile in /etc/openstack/clouds.yaml.\n\nhttps://opendev.org/openstack/devstack/src/branch/master/functions-common#L121-L130\n\nYou can ask keystone for a system-scoped token using ``openstack --os-cloud devstack-system-admin token issue``.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":25,"context_line":"default_type_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_UPDATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN,"},{"line_number":29,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":30,"context_line":"        description\u003d\"Set or update default volume type.\","},{"line_number":31,"context_line":"        operations\u003d["}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_c63ff0b2","line":28,"in_reply_to":"9f560f44_f1663151","updated":"2020-09-08 16:35:16.000000000","message":"Sure.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"}],"cinder/quota_utils.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ef233e7f908c23ed11fb64c814a30e67ade02cab","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    auth_plugin \u003d identity.Token("},{"line_number":232,"context_line":"        auth_url\u003dCONF.keystone_authtoken.auth_url,"},{"line_number":233,"context_line":"        token\u003dcontext.auth_token,"},{"line_number":234,"context_line":"        project_id\u003dcontext.project_id)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    client_session \u003d ka_loading.session.Session().load_from_options("},{"line_number":237,"context_line":"        auth\u003dauth_plugin,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_92d88e52","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":38},"updated":"2020-09-08 17:38:39.000000000","message":"This might need to be updated to be more defensive about handling other scope types.\n\nIf cinder reaches this point with a system-scoped context (e.g., the user making the request used a system-scoped token), cinder is going to get an unscoped token since context.project_id is going to evaluate to None and the auth_plugin isn\u0027t going to contain the proper scope.\n\nThis will work for project administrators, but it might break for system administrators attempting to use the API.\n\n\n  ERROR cinder.api.middleware.fault keystoneauth1.exceptions.catalog.EmptyCatalog: The service catalog is empty.","commit_id":"c84b9113a38ccf7a95cb9565420b9f87ec1fa2e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"eda88ee08bee177dd7f6e54c2a715d2ad5620a87","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    auth_plugin \u003d identity.Token("},{"line_number":232,"context_line":"        auth_url\u003dCONF.keystone_authtoken.auth_url,"},{"line_number":233,"context_line":"        token\u003dcontext.auth_token,"},{"line_number":234,"context_line":"        project_id\u003dcontext.project_id)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    client_session \u003d ka_loading.session.Session().load_from_options("},{"line_number":237,"context_line":"        auth\u003dauth_plugin,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f560f44_068fc4cd","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":38},"in_reply_to":"9f560f44_92d88e52","updated":"2020-09-14 11:09:27.000000000","message":"Thanks for catching this one!\n\nI think it would be enough to add a parameter to the call, right?\n\n    system_scope\u003dcontext.system_scope","commit_id":"c84b9113a38ccf7a95cb9565420b9f87ec1fa2e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"eda88ee08bee177dd7f6e54c2a715d2ad5620a87","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    auth_plugin \u003d identity.Token("},{"line_number":232,"context_line":"        auth_url\u003dCONF.keystone_authtoken.auth_url,"},{"line_number":233,"context_line":"        token\u003dcontext.auth_token,"},{"line_number":234,"context_line":"        project_id\u003dcontext.project_id)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    client_session \u003d ka_loading.session.Session().load_from_options("},{"line_number":237,"context_line":"        auth\u003dauth_plugin,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f560f44_e62730c7","line":234,"updated":"2020-09-14 11:09:27.000000000","message":"Following Lance\u0027s comment on patch 21, I think we need to add:\n\n    system_scope\u003dcontext.system_scope\n\nThough I\u0027d like to hear confirmation from him on this.","commit_id":"5a370f2cb9a39a9636b70f6b4a21e72cc331abb0"}],"cinder/tests/functional/api/client.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b1818aafa85218cfdddaad67158cf1e9b0fc070d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self._authenticate(True)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def api_request(self, relative_uri, check_response_status\u003dNone,"},{"line_number":132,"context_line":"                    strip_version\u003dFalse, base_url\u003dTrue, **kwargs):"},{"line_number":133,"context_line":"        auth_result \u003d self._authenticate()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if base_url:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_cf010109","line":132,"range":{"start_line":132,"start_character":41,"end_line":132,"end_character":54},"updated":"2020-09-03 14:11:49.000000000","message":"Nit: as a followup, this boolean parameter you\u0027ve introduced would be easier to understand if you gave it a name that indicated what it is/does.  (Compare it to \u0027relative_uri\u0027, which is a string representing an actual relative uri.)","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self._authenticate(True)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def api_request(self, relative_uri, check_response_status\u003dNone,"},{"line_number":132,"context_line":"                    strip_version\u003dFalse, base_url\u003dTrue, **kwargs):"},{"line_number":133,"context_line":"        auth_result \u003d self._authenticate()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if base_url:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_27e9b47f","line":132,"range":{"start_line":132,"start_character":41,"end_line":132,"end_character":54},"in_reply_to":"9f560f44_cf010109","updated":"2020-09-04 12:02:39.000000000","message":"I understand but i couldn\u0027t come up a better name here.\nPlease suggest cause probably i would come up with a worse one.","commit_id":"82214b5d3317b0913139e184568f15c4649db971"}],"cinder/tests/functional/test_default_types.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(self.project.id, default_type[\u0027project_id\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(self.volume_type[\u0027id\u0027],"},{"line_number":72,"context_line":"                         default_type[\u0027volume_type_id\u0027])"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch.object(context.RequestContext, \u0027authorize\u0027)"},{"line_number":75,"context_line":"    def test_default_type_get_all(self, mock_authorize):"},{"line_number":76,"context_line":"        self.api.set_default_type(self.project.id,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_9c4dc09b","line":73,"updated":"2020-09-15 22:38:29.000000000","message":"It would be worth adding an update test.  I wrote one to convince myself that it was working correctly, I thought you were missing a save(), but everything looks fine: http://paste.openstack.org/show/797907/","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(self.project.id, default_type[\u0027project_id\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(self.volume_type[\u0027id\u0027],"},{"line_number":72,"context_line":"                         default_type[\u0027volume_type_id\u0027])"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch.object(context.RequestContext, \u0027authorize\u0027)"},{"line_number":75,"context_line":"    def test_default_type_get_all(self, mock_authorize):"},{"line_number":76,"context_line":"        self.api.set_default_type(self.project.id,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f560f44_14733cb6","line":73,"in_reply_to":"9f560f44_9c4dc09b","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}],"cinder/tests/unit/api/v3/test_default_types.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e3f304f8b6726179324681975abb25546c7746c2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder.api import microversions as mv"},{"line_number":14,"context_line":"from cinder.api.v2 import types"},{"line_number":15,"context_line":"from cinder import context"},{"line_number":16,"context_line":"from cinder import objects"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_c119ff22","line":13,"updated":"2020-07-21 17:51:30.000000000","message":"pep8: F401 \u0027cinder.api.microversions as mv\u0027 imported but unused","commit_id":"4c69444336f15ab92a342a9b2e853211203eea96"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e3f304f8b6726179324681975abb25546c7746c2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder.api import microversions as mv"},{"line_number":14,"context_line":"from cinder.api.v2 import types"},{"line_number":15,"context_line":"from cinder import context"},{"line_number":16,"context_line":"from cinder import objects"},{"line_number":17,"context_line":"from cinder.tests.unit.api import fakes"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_a1168bf0","line":14,"updated":"2020-07-21 17:51:30.000000000","message":"pep8: F401 \u0027cinder.api.v2.types\u0027 imported but unused","commit_id":"4c69444336f15ab92a342a9b2e853211203eea96"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e3f304f8b6726179324681975abb25546c7746c2","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder.api import microversions as mv"},{"line_number":14,"context_line":"from cinder.api.v2 import types"},{"line_number":15,"context_line":"from cinder import context"},{"line_number":16,"context_line":"from cinder import objects"},{"line_number":17,"context_line":"from cinder.tests.unit.api import fakes"},{"line_number":18,"context_line":"from cinder.tests.unit import fake_constants as fake"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_01d13730","line":15,"updated":"2020-07-21 17:51:30.000000000","message":"pep8: F401 \u0027cinder.context\u0027 imported but unused","commit_id":"4c69444336f15ab92a342a9b2e853211203eea96"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e3f304f8b6726179324681975abb25546c7746c2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from cinder.api.v2 import types"},{"line_number":15,"context_line":"from cinder import context"},{"line_number":16,"context_line":"from cinder import objects"},{"line_number":17,"context_line":"from cinder.tests.unit.api import fakes"},{"line_number":18,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":19,"context_line":"from cinder.tests.unit import test"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_e1d5231d","line":17,"updated":"2020-07-21 17:51:30.000000000","message":"pep8: F401 \u0027cinder.tests.unit.api.fakes\u0027 imported but unused","commit_id":"4c69444336f15ab92a342a9b2e853211203eea96"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e3f304f8b6726179324681975abb25546c7746c2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from cinder import context"},{"line_number":16,"context_line":"from cinder import objects"},{"line_number":17,"context_line":"from cinder.tests.unit.api import fakes"},{"line_number":18,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":19,"context_line":"from cinder.tests.unit import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_41db2f4e","line":18,"updated":"2020-07-21 17:51:30.000000000","message":"pep8: F401 \u0027cinder.tests.unit.fake_constants as fake\u0027 imported but unused","commit_id":"4c69444336f15ab92a342a9b2e853211203eea96"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e3f304f8b6726179324681975abb25546c7746c2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                                      extra_specs\u003dextra_specs,"},{"line_number":31,"context_line":"                                      projects\u003dprojects)"},{"line_number":32,"context_line":"        vol_type.create()"},{"line_number":33,"context_line":"        return vol_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_21e0bbfa","line":33,"updated":"2020-07-21 17:51:30.000000000","message":"pep8: W292 no newline at end of file","commit_id":"4c69444336f15ab92a342a9b2e853211203eea96"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b1818aafa85218cfdddaad67158cf1e9b0fc070d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                          fake.PROJECT_ID)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_default_volume_types_list(self):"},{"line_number":113,"context_line":"        self._set_default_type()"},{"line_number":114,"context_line":"        self._set_default_type(project_id\u003dfake.PROJECT2_ID,"},{"line_number":115,"context_line":"                               volume_type\u003d\u0027volume_type2\u0027)"},{"line_number":116,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/default-types/\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_eac4b342","line":113,"updated":"2020-09-03 14:11:49.000000000","message":"before setting any default types, you might want to do a request to make sure you get back an empty list and not a 404 (I think that\u0027s what\u0027s supposed to happen--key thing is to check for whatever is defined for the empty case).","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                          fake.PROJECT_ID)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_default_volume_types_list(self):"},{"line_number":113,"context_line":"        self._set_default_type()"},{"line_number":114,"context_line":"        self._set_default_type(project_id\u003dfake.PROJECT2_ID,"},{"line_number":115,"context_line":"                               volume_type\u003d\u0027volume_type2\u0027)"},{"line_number":116,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/default-types/\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_47ab081d","line":113,"in_reply_to":"9f560f44_eac4b342","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"}],"cinder/tests/unit/db/test_default_types.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b1818aafa85218cfdddaad67158cf1e9b0fc070d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DefaultVolumeTypesTestCase(test.TestCase):"},{"line_number":25,"context_line":"    \"\"\"Test cases for volume type.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(DefaultVolumeTypesTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_ead95322","line":25,"range":{"start_line":25,"start_character":7,"end_line":25,"end_character":34},"updated":"2020-09-03 14:11:49.000000000","message":"probably needs an update","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DefaultVolumeTypesTestCase(test.TestCase):"},{"line_number":25,"context_line":"    \"\"\"Test cases for volume type.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(DefaultVolumeTypesTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_276c1407","line":25,"range":{"start_line":25,"start_character":7,"end_line":25,"end_character":34},"in_reply_to":"9f560f44_ead95322","updated":"2020-09-04 12:02:39.000000000","message":"Done","commit_id":"82214b5d3317b0913139e184568f15c4649db971"}],"cinder/volume/volume_types.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a9215f617211f9220cf71ab6d1692a6a59076c3a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    # Check if provided type is project default"},{"line_number":121,"context_line":"    default_types \u003d db.volume_type_default_get(context.elevated())"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    for default_type in default_types:"},{"line_number":124,"context_line":"        if id \u003d\u003d default_type.volume_type_id:"},{"line_number":125,"context_line":"            # don\u0027t allow delete if the type requested is a project default"},{"line_number":126,"context_line":"            raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_f8c8ad22","line":123,"range":{"start_line":123,"start_character":4,"end_line":123,"end_character":38},"updated":"2020-08-25 03:43:55.000000000","message":"(1) there\u0027s got to be a better way to do this than iterating through all the default_types.  (2) We may need to introduce filtering on the volume_type_id in the default-types-list call, because if an admin wants to delete a volume type, it can\u0027t be done until it\u0027s no longer any project\u0027s default, and so the admin needs a list of which projects are using that volume_type as a default.  I think you can address both 1 \u0026 2 by introducing a new db api function that takes a volume_type_id and returns a list of projects using it (or maybe by modifying volume_type_default_get).","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fc6a651c81bf3e5781e975675210b4cc7f56ba68","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    # Check if provided type is project default"},{"line_number":121,"context_line":"    default_types \u003d db.volume_type_default_get(context.elevated())"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    for default_type in default_types:"},{"line_number":124,"context_line":"        if id \u003d\u003d default_type.volume_type_id:"},{"line_number":125,"context_line":"            # don\u0027t allow delete if the type requested is a project default"},{"line_number":126,"context_line":"            raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_26080890","line":123,"range":{"start_line":123,"start_character":4,"end_line":123,"end_character":38},"in_reply_to":"9f560f44_f8c8ad22","updated":"2020-08-28 15:27:30.000000000","message":"Done","commit_id":"47f911b742d87bf61ba7720cb90cd47582c47de0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"996876126e2873e622c3db412d537e2c19da5f6c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.exception(\u0027Default type with %(volume_type_id)s is associated \u0027"},{"line_number":126,"context_line":"                      \u0027with projects %(projects)s\u0027,"},{"line_number":127,"context_line":"                      {\u0027volume_type_id\u0027: id,"},{"line_number":128,"context_line":"                       \u0027projects\u0027: projects_with_default_type})"},{"line_number":129,"context_line":"        raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    # Default type *must* be set in order to delete any volume type."}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_4677aa09","line":128,"range":{"start_line":128,"start_character":35,"end_line":128,"end_character":61},"updated":"2020-09-02 21:58:27.000000000","message":"What exactly is in this list? I think it\u0027s models.DefaultVolumeTypes db objects?  You may need to process this and extract the project_ids.\n\nBy the way, this is a clever idea to get the operator the list of projects without introducing a new API call.  I guess we could always add it in a new microversion if there\u0027s demand.","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"faa44b902bb8a22240c0413f74e9a1ca3edba359","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.exception(\u0027Default type with %(volume_type_id)s is associated \u0027"},{"line_number":126,"context_line":"                      \u0027with projects %(projects)s\u0027,"},{"line_number":127,"context_line":"                      {\u0027volume_type_id\u0027: id,"},{"line_number":128,"context_line":"                       \u0027projects\u0027: projects_with_default_type})"},{"line_number":129,"context_line":"        raise exception.VolumeTypeDefaultDeletionError(volume_type_id\u003did)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    # Default type *must* be set in order to delete any volume type."}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_e78dfc2a","line":128,"range":{"start_line":128,"start_character":35,"end_line":128,"end_character":61},"in_reply_to":"9f560f44_4677aa09","updated":"2020-09-04 12:02:39.000000000","message":"it\u0027s a list of sqlalchemy objects.\nInitially i didn\u0027t like the idea of looping but it\u0027s a waste if we don\u0027t.\nWill update in next PS.","commit_id":"82214b5d3317b0913139e184568f15c4649db971"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    projects_with_default_type \u003d db.get_all_projects_with_default_type("},{"line_number":121,"context_line":"        context.elevated(), id)"},{"line_number":122,"context_line":"    project_list \u003d []"},{"line_number":123,"context_line":"    for project in projects_with_default_type:"},{"line_number":124,"context_line":"        project_list.append(project.get(\u0027project_id\u0027))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if len(project_list) \u003e 0:"},{"line_number":127,"context_line":"        # don\u0027t allow delete if the type requested is a project default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_229a2661","line":124,"range":{"start_line":122,"start_character":0,"end_line":124,"end_character":54},"updated":"2020-09-07 17:44:20.000000000","message":"nit: It would be a bit clearer the intent of this code if it were placed inside the if on L126 (changing that check to check projects_with_default_type instead).","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    projects_with_default_type \u003d db.get_all_projects_with_default_type("},{"line_number":121,"context_line":"        context.elevated(), id)"},{"line_number":122,"context_line":"    project_list \u003d []"},{"line_number":123,"context_line":"    for project in projects_with_default_type:"},{"line_number":124,"context_line":"        project_list.append(project.get(\u0027project_id\u0027))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if len(project_list) \u003e 0:"},{"line_number":127,"context_line":"        # don\u0027t allow delete if the type requested is a project default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_58ae2281","line":124,"range":{"start_line":122,"start_character":0,"end_line":124,"end_character":54},"in_reply_to":"9f560f44_229a2661","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    return db.volume_type_get_by_name(context, name)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"def get_default_volume_type(contxt\u003dNone):"},{"line_number":207,"context_line":"    \"\"\"Get the default volume type."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    :raises VolumeTypeDefaultMisconfiguredError: when the configured default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_82a21299","line":206,"range":{"start_line":206,"start_character":28,"end_line":206,"end_character":34},"updated":"2020-09-07 17:44:20.000000000","message":"nit: We should use context, like in all the other methods","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    return db.volume_type_get_by_name(context, name)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"def get_default_volume_type(contxt\u003dNone):"},{"line_number":207,"context_line":"    \"\"\"Get the default volume type."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    :raises VolumeTypeDefaultMisconfiguredError: when the configured default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_b8be5eab","line":206,"range":{"start_line":206,"start_character":28,"end_line":206,"end_character":34},"in_reply_to":"9f560f44_82a21299","updated":"2020-09-08 10:39:32.000000000","message":"The reason for setting it like this is because we have 2 context\n1st imported from cinder see L#28\n2nd is passed to this method (the user context requesting default type or volume create or any other operation)\n\nIf we change this to context then it will conflict with L#220 and if we change the import \u0027as cinder_context\u0027 or something then we have to make changes throughout the file","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    return db.volume_type_get_by_name(context, name)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"def get_default_volume_type(contxt\u003dNone):"},{"line_number":207,"context_line":"    \"\"\"Get the default volume type."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    :raises VolumeTypeDefaultMisconfiguredError: when the configured default"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_1195a5e4","line":206,"range":{"start_line":206,"start_character":28,"end_line":206,"end_character":34},"in_reply_to":"9f560f44_b8be5eab","updated":"2020-09-08 12:21:42.000000000","message":"Thanks, I had missed call on L220.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        project_default \u003d db.project_default_volume_type_get("},{"line_number":215,"context_line":"            contxt, contxt.project_id)"},{"line_number":216,"context_line":"        if project_default:"},{"line_number":217,"context_line":"            return get_by_name_or_id(contxt,"},{"line_number":218,"context_line":"                                     project_default.volume_type_id)"},{"line_number":219,"context_line":"    name \u003d CONF.default_volume_type"},{"line_number":220,"context_line":"    ctxt \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_42e3dad8","line":217,"updated":"2020-09-07 17:44:20.000000000","message":"-1: We can call `get_volume_type` directly, because we know we are storing the ID and not the name.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        project_default \u003d db.project_default_volume_type_get("},{"line_number":215,"context_line":"            contxt, contxt.project_id)"},{"line_number":216,"context_line":"        if project_default:"},{"line_number":217,"context_line":"            return get_by_name_or_id(contxt,"},{"line_number":218,"context_line":"                                     project_default.volume_type_id)"},{"line_number":219,"context_line":"    name \u003d CONF.default_volume_type"},{"line_number":220,"context_line":"    ctxt \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_98d0baf9","line":217,"in_reply_to":"9f560f44_42e3dad8","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac6ded701f8cebbadd6d4bcd205b89e1b434af0d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        context.elevated(), id)"},{"line_number":122,"context_line":"    if len(projects_with_default_type) \u003e 0:"},{"line_number":123,"context_line":"        # don\u0027t allow delete if the type requested is a project default"},{"line_number":124,"context_line":"        project_list \u003d []"},{"line_number":125,"context_line":"        for project in projects_with_default_type:"},{"line_number":126,"context_line":"            project_list.append(project.get(\u0027project_id\u0027))"},{"line_number":127,"context_line":"        LOG.exception(\u0027Default type with %(volume_type_id)s is associated \u0027"},{"line_number":128,"context_line":"                      \u0027with projects %(projects)s\u0027,"},{"line_number":129,"context_line":"                      {\u0027volume_type_id\u0027: id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_91da55e6","line":126,"range":{"start_line":124,"start_character":0,"end_line":126,"end_character":58},"updated":"2020-09-08 12:21:42.000000000","message":"nit: I just realized this is better as a list comprehension...\n\n  project_list \u003d [p.project_id for p in projects_with_default_type]","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        context.elevated(), id)"},{"line_number":122,"context_line":"    if len(projects_with_default_type) \u003e 0:"},{"line_number":123,"context_line":"        # don\u0027t allow delete if the type requested is a project default"},{"line_number":124,"context_line":"        project_list \u003d []"},{"line_number":125,"context_line":"        for project in projects_with_default_type:"},{"line_number":126,"context_line":"            project_list.append(project.get(\u0027project_id\u0027))"},{"line_number":127,"context_line":"        LOG.exception(\u0027Default type with %(volume_type_id)s is associated \u0027"},{"line_number":128,"context_line":"                      \u0027with projects %(projects)s\u0027,"},{"line_number":129,"context_line":"                      {\u0027volume_type_id\u0027: id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_26034c0f","line":126,"range":{"start_line":124,"start_character":0,"end_line":126,"end_character":58},"in_reply_to":"9f560f44_91da55e6","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c5a547c560eeb329e9c20d14f438e5e57ffa7ff7"}],"doc/source/cli/cli-manage-volumes.rst":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"353b37ff496f620b0ed4bf9aa6c00c21115e8a0a","unresolved":false,"context_lines":[{"line_number":220,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"If the project specific default is not set then default_volume_type"},{"line_number":223,"context_line":"configured in cinder.conf is used to create volumes."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Example cinder.conf file configuration."},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_4cae6481","line":223,"updated":"2020-09-08 12:46:07.000000000","message":"nit: forgot to add how a user can check it\u0027s effective default with \"cinder type-default\"","commit_id":"c0a1b6efce83b8532220b7b468f3176afba7bcaa"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2194d70406717c8b362cb77016a0c557af2e94b6","unresolved":false,"context_lines":[{"line_number":220,"context_line":"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"If the project specific default is not set then default_volume_type"},{"line_number":223,"context_line":"configured in cinder.conf is used to create volumes."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Example cinder.conf file configuration."},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_46fe4005","line":223,"in_reply_to":"9f560f44_4cae6481","updated":"2020-09-08 16:35:16.000000000","message":"Done","commit_id":"c0a1b6efce83b8532220b7b468f3176afba7bcaa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e4ae3cd16a74f2b1018ddf649560ff5d2cdfe950","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"If above parameters are not set, cinder uses default volume type during"},{"line_number":205,"context_line":"volume creation."},{"line_number":206,"context_line":"The effective default volume type (whether it be project default or"},{"line_number":207,"context_line":"default_volume_type) can be checked with the following command:"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"   .. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9f560f44_69ccf5ba","line":206,"updated":"2020-09-08 15:17:33.000000000","message":"nit: Add an empty line before this one.","commit_id":"d786963e93865051a503eed26ed597021f9dd95f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":207,"context_line":"The effective default volume type (whether it be project default or"},{"line_number":208,"context_line":"default_volume_type) can be checked with the following command:"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"   .. code-block:: console"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"      $ cinder type-default"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"There are 2 ways to set the default volume type:"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"9f560f44_bf499667","line":212,"range":{"start_line":210,"start_character":0,"end_line":212,"end_character":27},"updated":"2020-09-15 22:38:29.000000000","message":"un-indent these lines (line 210 should be like line 133 above)","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"The effective default volume type (whether it be project default or"},{"line_number":208,"context_line":"default_volume_type) can be checked with the following command:"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"   .. code-block:: console"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"      $ cinder type-default"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"There are 2 ways to set the default volume type:"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"9f560f44_34a7600e","line":212,"range":{"start_line":210,"start_character":0,"end_line":212,"end_character":27},"in_reply_to":"9f560f44_bf499667","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"93290ffddc33885c8c7c5d76dafee869280d6976","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":".. code-block:: console"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    $ cinder type-default"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"There are 2 ways to set the default volume type:"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9f560f44_ce8f70cb","line":212,"updated":"2020-09-16 15:56:58.000000000","message":"nit: This is not indented with the code-block text (3 spaces).","commit_id":"e63cb8548a64e67bad39409c15aa210daea01d7b"}],"releasenotes/notes/project-default-types-3a14ad0d653e604e.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.61"},{"line_number":7,"context_line":"    The priority of default types is:"},{"line_number":8,"context_line":"    project specific defaults \u003e default_volume_type set in cinder.conf"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9f560f44_550d573c","line":6,"range":{"start_line":6,"start_character":52,"end_line":6,"end_character":56},"updated":"2020-09-07 17:44:20.000000000","message":"-1: 3.62","commit_id":"dbd8ef20bff571c71c3f64e4c2e3f2ae83b22556"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.61"},{"line_number":7,"context_line":"    The priority of default types is:"},{"line_number":8,"context_line":"    project specific defaults \u003e default_volume_type set in cinder.conf"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"9f560f44_78cde65b","line":6,"range":{"start_line":6,"start_character":52,"end_line":6,"end_character":56},"in_reply_to":"9f560f44_550d573c","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"dbd8ef20bff571c71c3f64e4c2e3f2ae83b22556"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a8b923884f8a6c50fd607372c1674434af1d8346","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.62"},{"line_number":7,"context_line":"    The priority of default types is:"},{"line_number":8,"context_line":"    project specific defaults \u003e default_volume_type set in cinder.conf"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"9f560f44_82d052f9","line":8,"range":{"start_line":7,"start_character":4,"end_line":8,"end_character":70},"updated":"2020-09-07 17:44:20.000000000","message":"nit: Maybe rephrase it it as: Project specific defaults have higher priority than the default_volume_type option in cinder.conf.","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"114a1c3b1c65c1674de372c4343bad721315fd1d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.62"},{"line_number":7,"context_line":"    The priority of default types is:"},{"line_number":8,"context_line":"    project specific defaults \u003e default_volume_type set in cinder.conf"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"9f560f44_18066a87","line":8,"range":{"start_line":7,"start_character":4,"end_line":8,"end_character":70},"in_reply_to":"9f560f44_82d052f9","updated":"2020-09-08 10:39:32.000000000","message":"Done","commit_id":"e044393a536656e9939ee5a512ec4a42de8321f3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","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":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.62"},{"line_number":7,"context_line":"    Project specific defaults have higher priority than"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9f560f44_1c59b05a","line":4,"range":{"start_line":4,"start_character":39,"end_line":4,"end_character":47},"updated":"2020-09-15 22:38:29.000000000","message":"default volume types","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","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":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.62"},{"line_number":7,"context_line":"    Project specific defaults have higher priority than"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9f560f44_d48ee477","line":4,"range":{"start_line":4,"start_character":39,"end_line":4,"end_character":47},"in_reply_to":"9f560f44_1c59b05a","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0d9301c1e699a8929fe659517e3479fb52425b5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.62"},{"line_number":7,"context_line":"    Project specific defaults have higher priority than"},{"line_number":8,"context_line":"    the default_volume_type option in cinder.conf"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9f560f44_3c2114b7","line":6,"range":{"start_line":5,"start_character":0,"end_line":6,"end_character":56},"updated":"2020-09-15 22:38:29.000000000","message":"Maybe:\nMicroversion 3.62 of the Block Storage API introduces new calls to set, get, and unset a default volume type for a specific project.\n\n(Key thing is that you want to be clear that it\u0027s one type for any project.)","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4eeede23b2c8d759b4161c77982fc0ef63867f2a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for project specific defaults."},{"line_number":5,"context_line":"    New set of APIs are available to set, get and unset"},{"line_number":6,"context_line":"    default types for projects with microversion \u003e\u003d 3.62"},{"line_number":7,"context_line":"    Project specific defaults have higher priority than"},{"line_number":8,"context_line":"    the default_volume_type option in cinder.conf"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9f560f44_b48b7066","line":6,"range":{"start_line":5,"start_character":0,"end_line":6,"end_character":56},"in_reply_to":"9f560f44_3c2114b7","updated":"2020-09-16 14:10:20.000000000","message":"Done","commit_id":"4a96765271c61bacfb0b0805c4811b28e015cb95"}]}
