)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0706aac813007d90471c9e876592a2079ffe7c2a","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements:"},{"line_number":14,"context_line":"blueprint support-to-query-nova-resources-filter-by-changes-before"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I50fb6e16f1be8be5bcfc11009a0099d9e43e9da0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_eb8ac761","line":15,"updated":"2018-08-16 03:45:55.000000000","message":"Add \u0027APIImpact\u0027 flag.","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Resource retrieving: add change-before filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a new change_before filter for retrieving resources."},{"line_number":10,"context_line":"It accepts a timestamp and projects will return resources that"},{"line_number":11,"context_line":"update_at field is earlier than this timestamp."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_a56a7318","line":9,"range":{"start_line":9,"start_character":16,"end_line":9,"end_character":29},"updated":"2018-08-30 15:00:13.000000000","message":"To be consistent with naming for \"changes-since\" this should be \"changes-before\".","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Resource retrieving: add change-before filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce a new change_before filter for retrieving resources."},{"line_number":10,"context_line":"It accepts a timestamp and projects will return resources that"},{"line_number":11,"context_line":"update_at field is earlier than this timestamp."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_c360bd38","line":9,"range":{"start_line":9,"start_character":16,"end_line":9,"end_character":29},"in_reply_to":"3f79a3b5_a56a7318","updated":"2018-08-31 02:27:45.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":11,"context_line":"update_at field is earlier than this timestamp."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"bp:support-to-query-nova-resources-filter-by-changes-before"},{"line_number":17,"context_line":"Change-Id: I50fb6e16f1be8be5bcfc11009a0099d9e43e9da0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_c5220f02","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"updated":"2018-08-30 15:00:13.000000000","message":"We don\u0027t need this. It will try to generate a bug which we wouldn\u0027t do anything about.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":11,"context_line":"update_at field is earlier than this timestamp."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"bp:support-to-query-nova-resources-filter-by-changes-before"},{"line_number":17,"context_line":"Change-Id: I50fb6e16f1be8be5bcfc11009a0099d9e43e9da0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_835ac580","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"in_reply_to":"3f79a3b5_c5220f02","updated":"2018-08-31 02:27:45.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"}],"specs/rocky/approved/support-to-query-nova-resources-filter-by-changes-before.rst":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0706aac813007d90471c9e876592a2079ffe7c2a","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"* Introduce a new changes-before filter for retrieving resources. It accepts"},{"line_number":37,"context_line":"  a timestamp and projects will return resources whose update_at fields are"},{"line_number":38,"context_line":"  earlier than this timestamp."},{"line_number":39,"context_line":"  Its(changes-before) value is optional. If changes-since and changes-before"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_cb610bd5","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":2},"updated":"2018-08-16 03:45:55.000000000","message":"It is unnecessary.","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a93f032ced93451f8472cafcb3ef4ce6414c6d1e","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"* Introduce a new changes-before filter for retrieving resources. It accepts"},{"line_number":37,"context_line":"  a timestamp and projects will return resources whose update_at fields are"},{"line_number":38,"context_line":"  earlier than this timestamp."},{"line_number":39,"context_line":"  Its(changes-before) value is optional. If changes-since and changes-before"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_f6d14a24","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":2},"in_reply_to":"3f79a3b5_cb610bd5","updated":"2018-08-16 05:48:31.000000000","message":"Done","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0706aac813007d90471c9e876592a2079ffe7c2a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"----------"},{"line_number":102,"context_line":"* Add API filter"},{"line_number":103,"context_line":"* Add querying support in sql"},{"line_number":104,"context_line":"* Add related test"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Dependencies"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_4b7c1b71","line":104,"updated":"2018-08-16 03:45:55.000000000","message":"python-novaclient should be modified for the REST API change.","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a93f032ced93451f8472cafcb3ef4ce6414c6d1e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"----------"},{"line_number":102,"context_line":"* Add API filter"},{"line_number":103,"context_line":"* Add querying support in sql"},{"line_number":104,"context_line":"* Add related test"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Dependencies"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_76a3fab2","line":104,"in_reply_to":"3f79a3b5_4b7c1b71","updated":"2018-08-16 05:48:31.000000000","message":"Yes, That\u0027s necessary.","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0706aac813007d90471c9e876592a2079ffe7c2a","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   * - Release Name"},{"line_number":130,"context_line":"     - Description"},{"line_number":131,"context_line":"   * - Rocky"},{"line_number":132,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_eb5c071a","line":131,"range":{"start_line":131,"start_character":7,"end_line":131,"end_character":12},"updated":"2018-08-16 03:45:55.000000000","message":"Stein","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a93f032ced93451f8472cafcb3ef4ce6414c6d1e","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   * - Release Name"},{"line_number":130,"context_line":"     - Description"},{"line_number":131,"context_line":"   * - Rocky"},{"line_number":132,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_96a6d6c0","line":131,"range":{"start_line":131,"start_character":7,"end_line":131,"end_character":12},"in_reply_to":"3f79a3b5_eb5c071a","updated":"2018-08-16 05:48:31.000000000","message":"Done","commit_id":"7148be3d29b37c638b5241cbbb75af61d85289fc"}],"specs/stein/approved/support-to-query-nova-resources-filter-by-changes-before.rst":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0be8ffc470b388bb60fc00f8336bfe075eb1ed0b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"---------------"},{"line_number":56,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":57,"context_line":"Users can pass time to the list API url to retrieve resources operated since"},{"line_number":58,"context_line":"a specific time."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* GET /servers/{detail}?changes-before\u003d2018-07-26T10:31:49"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_a2fc903e","line":58,"updated":"2018-08-21 05:43:45.000000000","message":"We should clarify what will happen if the changes-before \u003c change-since. We can return HTTPBadRequest 400 for the end user.","commit_id":"1c9489e5669d46bbb5e0519cf55c77f8f44b30c0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"159119687635da0653c2a19c392fc8fd511a77c7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"---------------"},{"line_number":56,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":57,"context_line":"Users can pass time to the list API url to retrieve resources operated since"},{"line_number":58,"context_line":"a specific time."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* GET /servers/{detail}?changes-before\u003d2018-07-26T10:31:49"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_cb53e4e1","line":58,"in_reply_to":"3f79a3b5_a2fc903e","updated":"2018-08-21 10:58:37.000000000","message":"Yes, This should return HTTPBadRequest 400 for user if changes-before \u003c changes-since.","commit_id":"1c9489e5669d46bbb5e0519cf55c77f8f44b30c0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0be8ffc470b388bb60fc00f8336bfe075eb1ed0b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Users can pass time to the list API url to retrieve resources operated since"},{"line_number":58,"context_line":"a specific time."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* GET /servers/{detail}?changes-before\u003d2018-07-26T10:31:49"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Security impact"},{"line_number":63,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_0250e45d","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":58},"updated":"2018-08-21 05:43:45.000000000","message":"It should be \n\n\"GET /servers/detail?changes-before\u003d2018-07-26T10:31:49\"\nand\n\"GET /servers?changes-before\u003d2018-07-26T10:31:49\"\n\nBoth list and detail API should support this query param.\n\nAnd definitly, we need an new microversion.","commit_id":"1c9489e5669d46bbb5e0519cf55c77f8f44b30c0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"159119687635da0653c2a19c392fc8fd511a77c7","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Users can pass time to the list API url to retrieve resources operated since"},{"line_number":58,"context_line":"a specific time."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* GET /servers/{detail}?changes-before\u003d2018-07-26T10:31:49"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Security impact"},{"line_number":63,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_6bdf303a","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":58},"in_reply_to":"3f79a3b5_0250e45d","updated":"2018-08-21 10:58:37.000000000","message":"Sure, {detail} contains these two urls, but they are all listed to make it easier to understand.","commit_id":"1c9489e5669d46bbb5e0519cf55c77f8f44b30c0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ddd30d18438bbc21f5fc2963551a0b1347cb94b9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"---------------"},{"line_number":58,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":59,"context_line":"Judging in the following cases:"},{"line_number":60,"context_line":"1.If the user specifies the changes-before \u003c changes-since, it will return"},{"line_number":61,"context_line":"HTTPBadRequest 400;"},{"line_number":62,"context_line":"2.If the user only specifies changes-before, all nova resource before"},{"line_number":63,"context_line":"changes-before will be returned;"},{"line_number":64,"context_line":"3.If the user specifies changes-since and changes-before, that will get"},{"line_number":65,"context_line":"changes from a specific period."},{"line_number":66,"context_line":"4.When the user only specifies changes-since, the original features remain"},{"line_number":67,"context_line":"unchanged."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Users can pass time to the list API url to retrieve resources operated since"},{"line_number":70,"context_line":"a specific time."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_346113d4","line":67,"range":{"start_line":60,"start_character":0,"end_line":67,"end_character":10},"updated":"2018-08-27 07:39:38.000000000","message":"This doesn\u0027t format correctly http://logs.openstack.org/76/591976/9/check/build-openstack-sphinx-docs/82d8518/html/specs/stein/approved/support-to-query-nova-resources-filter-by-changes-before.html#rest-api-impact\n\nYou can just use the format as line 72 and 73","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"8d7c31adee4f1aee151dfa13f7b811d9d67da45c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"---------------"},{"line_number":58,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":59,"context_line":"Judging in the following cases:"},{"line_number":60,"context_line":"1.If the user specifies the changes-before \u003c changes-since, it will return"},{"line_number":61,"context_line":"HTTPBadRequest 400;"},{"line_number":62,"context_line":"2.If the user only specifies changes-before, all nova resource before"},{"line_number":63,"context_line":"changes-before will be returned;"},{"line_number":64,"context_line":"3.If the user specifies changes-since and changes-before, that will get"},{"line_number":65,"context_line":"changes from a specific period."},{"line_number":66,"context_line":"4.When the user only specifies changes-since, the original features remain"},{"line_number":67,"context_line":"unchanged."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Users can pass time to the list API url to retrieve resources operated since"},{"line_number":70,"context_line":"a specific time."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_afc950ac","line":67,"range":{"start_line":60,"start_character":0,"end_line":67,"end_character":10},"in_reply_to":"3f79a3b5_346113d4","updated":"2018-08-27 08:50:46.000000000","message":"Yeah, I\u0027ll fix it in next patch.","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ddd30d18438bbc21f5fc2963551a0b1347cb94b9","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Other deployer impact"},{"line_number":92,"context_line":"---------------------"},{"line_number":93,"context_line":"A new microversion will be added."},{"line_number":94,"context_line":"Python client may add help to inform users this new filter."},{"line_number":95,"context_line":"Python client support dynamic assigning search fields so it is easy for"},{"line_number":96,"context_line":"it to support this new filter."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_3448335a","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":33},"updated":"2018-08-27 07:39:38.000000000","message":"this moves to \u0027REST API impact\u0027 section","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"8d7c31adee4f1aee151dfa13f7b811d9d67da45c","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Other deployer impact"},{"line_number":92,"context_line":"---------------------"},{"line_number":93,"context_line":"A new microversion will be added."},{"line_number":94,"context_line":"Python client may add help to inform users this new filter."},{"line_number":95,"context_line":"Python client support dynamic assigning search fields so it is easy for"},{"line_number":96,"context_line":"it to support this new filter."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_2fbd4001","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":33},"in_reply_to":"3f79a3b5_3448335a","updated":"2018-08-27 08:50:46.000000000","message":"Done","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ddd30d18438bbc21f5fc2963551a0b1347cb94b9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Other deployer impact"},{"line_number":92,"context_line":"---------------------"},{"line_number":93,"context_line":"A new microversion will be added."},{"line_number":94,"context_line":"Python client may add help to inform users this new filter."},{"line_number":95,"context_line":"Python client support dynamic assigning search fields so it is easy for"},{"line_number":96,"context_line":"it to support this new filter."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Developer impact"},{"line_number":99,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_943d87bc","line":96,"range":{"start_line":94,"start_character":0,"end_line":96,"end_character":30},"updated":"2018-08-27 07:39:38.000000000","message":"this probably move to \u0027Other end user impact\u0027 section.","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"8d7c31adee4f1aee151dfa13f7b811d9d67da45c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Other deployer impact"},{"line_number":92,"context_line":"---------------------"},{"line_number":93,"context_line":"A new microversion will be added."},{"line_number":94,"context_line":"Python client may add help to inform users this new filter."},{"line_number":95,"context_line":"Python client support dynamic assigning search fields so it is easy for"},{"line_number":96,"context_line":"it to support this new filter."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Developer impact"},{"line_number":99,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_6f4c9841","line":96,"range":{"start_line":94,"start_character":0,"end_line":96,"end_character":30},"in_reply_to":"3f79a3b5_943d87bc","updated":"2018-08-27 08:50:46.000000000","message":"Yes. It is more suitable for \"Other end user impact\".","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ddd30d18438bbc21f5fc2963551a0b1347cb94b9","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Work Items"},{"line_number":115,"context_line":"----------"},{"line_number":116,"context_line":"* Add API filter"},{"line_number":117,"context_line":"* Add querying support in sql"},{"line_number":118,"context_line":"* Add related test"},{"line_number":119,"context_line":"* Modify the REST API of python-novaclient"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_b46d23cd","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":16},"updated":"2018-08-27 07:39:38.000000000","message":"This should be added after the you have sql querying.","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"8d7c31adee4f1aee151dfa13f7b811d9d67da45c","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Work Items"},{"line_number":115,"context_line":"----------"},{"line_number":116,"context_line":"* Add API filter"},{"line_number":117,"context_line":"* Add querying support in sql"},{"line_number":118,"context_line":"* Add related test"},{"line_number":119,"context_line":"* Modify the REST API of python-novaclient"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_ef6188aa","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":16},"in_reply_to":"3f79a3b5_b46d23cd","updated":"2018-08-27 08:50:46.000000000","message":"Done","commit_id":"4fddbd50ac9439004fa641680a98449e1712e0a8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f97cd99fd5ac6de486dac2c232fb30f2afac2543","unresolved":false,"context_lines":[{"line_number":58,"context_line":"A new microversion will be added."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":61,"context_line":"Judging in the following cases:"},{"line_number":62,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":63,"context_line":"return HTTPBadRequest 400;"},{"line_number":64,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":65,"context_line":"changes-before will be returned;"},{"line_number":66,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_3f70f2a3","line":63,"range":{"start_line":61,"start_character":0,"end_line":63,"end_character":26},"updated":"2018-08-28 08:21:21.000000000","message":"I guess you need a space line to make the format correctly.","commit_id":"cda6b0954b01390a90b168c3d38682d3a7e48e9f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/support-to-query-nova-resources-filter-by-changes-before"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Support users can query resources by specifying the time period of the"},{"line_number":14,"context_line":"resource. changed since(from time_A to time_B), and nova will return all"},{"line_number":15,"context_line":"the content of the matching condition."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_c5ac4f37","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":38},"updated":"2018-08-30 15:00:13.000000000","message":"I\u0027m not sure what this is trying to convey. Are you trying to say that the compute API already has the changes-since filter to filter servers updated since the given time and this spec proposes to add a changes-before filter to filter servers updated before the given time? Or are you also trying to say the filters would be used in conjunction to build a kind of time range filter, e.g. time_A \u003d changes-since -\u003e time_B \u003d changes-before.\n\nSo for example, I am trying to triage an support ticket and know it happened between 2018-08-27 and 2018-08-30, so I can to filter servers like:\n\nGET /servers/detail?changes-since\u003d2018-08-27\u0026changes-before\u003d2018-08-30\n\n?\n\nIf so, let\u0027s fix the summary and include this in the use case section as specific example of usage.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/support-to-query-nova-resources-filter-by-changes-before"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Support users can query resources by specifying the time period of the"},{"line_number":14,"context_line":"resource. changed since(from time_A to time_B), and nova will return all"},{"line_number":15,"context_line":"the content of the matching condition."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_03fc753c","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":38},"in_reply_to":"3f79a3b5_c5ac4f37","updated":"2018-08-31 02:27:45.000000000","message":"Yes. The two points you mentioned here are included, I will go to fix the summary and add this in the use case section as specific example of usage.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":"By default, nova can query the instance resource in the"},{"line_number":20,"context_line":"updated_at \u003e\u003d changes_since time period. users can only query resources"},{"line_number":21,"context_line":"operated at given time, not during given period. Users may be interested in"},{"line_number":22,"context_line":"resources operated in a specific period for monitoring or statistics purpose"},{"line_number":23,"context_line":"but currently they have to retrieve and filter the resources by themselves."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_85a65753","line":20,"range":{"start_line":20,"start_character":41,"end_line":20,"end_character":46},"updated":"2018-08-30 15:00:13.000000000","message":"Users","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"105491882fb2d1be4035d2b72e166115669c98b2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":"By default, nova can query the instance resource in the"},{"line_number":20,"context_line":"updated_at \u003e\u003d changes_since time period. users can only query resources"},{"line_number":21,"context_line":"operated at given time, not during given period. Users may be interested in"},{"line_number":22,"context_line":"resources operated in a specific period for monitoring or statistics purpose"},{"line_number":23,"context_line":"but currently they have to retrieve and filter the resources by themselves."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_e632a70f","line":20,"range":{"start_line":20,"start_character":14,"end_line":20,"end_character":27},"updated":"2018-08-31 02:43:21.000000000","message":"changes-since","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":"By default, nova can query the instance resource in the"},{"line_number":20,"context_line":"updated_at \u003e\u003d changes_since time period. users can only query resources"},{"line_number":21,"context_line":"operated at given time, not during given period. Users may be interested in"},{"line_number":22,"context_line":"resources operated in a specific period for monitoring or statistics purpose"},{"line_number":23,"context_line":"but currently they have to retrieve and filter the resources by themselves."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_e364d923","line":20,"range":{"start_line":20,"start_character":41,"end_line":20,"end_character":46},"in_reply_to":"3f79a3b5_85a65753","updated":"2018-08-31 02:27:45.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3c748b7821b47874ac251ad8ba950fde1d9468bb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":"By default, nova can query the instance resource in the"},{"line_number":20,"context_line":"updated_at \u003e\u003d changes_since time period. users can only query resources"},{"line_number":21,"context_line":"operated at given time, not during given period. Users may be interested in"},{"line_number":22,"context_line":"resources operated in a specific period for monitoring or statistics purpose"},{"line_number":23,"context_line":"but currently they have to retrieve and filter the resources by themselves."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_99f474f3","line":20,"range":{"start_line":20,"start_character":14,"end_line":20,"end_character":27},"in_reply_to":"3f79a3b5_e632a70f","updated":"2018-08-31 03:21:17.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use Cases"},{"line_number":28,"context_line":"---------"},{"line_number":29,"context_line":"In large scale environment, lots of resources were created in system,"},{"line_number":30,"context_line":"for tracing the change of resource, user or manage system only need to get"},{"line_number":31,"context_line":"those resources which was changed with some time period, instead of querying"},{"line_number":32,"context_line":"all resources every time to see which was changed."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_25618312","line":29,"range":{"start_line":29,"start_character":68,"end_line":29,"end_character":69},"updated":"2018-08-30 15:00:13.000000000","message":"s/,/./","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use Cases"},{"line_number":28,"context_line":"---------"},{"line_number":29,"context_line":"In large scale environment, lots of resources were created in system,"},{"line_number":30,"context_line":"for tracing the change of resource, user or manage system only need to get"},{"line_number":31,"context_line":"those resources which was changed with some time period, instead of querying"},{"line_number":32,"context_line":"all resources every time to see which was changed."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_c3619d13","line":29,"range":{"start_line":29,"start_character":68,"end_line":29,"end_character":69},"in_reply_to":"3f79a3b5_25618312","updated":"2018-08-31 02:27:45.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":29,"context_line":"In large scale environment, lots of resources were created in system,"},{"line_number":30,"context_line":"for tracing the change of resource, user or manage system only need to get"},{"line_number":31,"context_line":"those resources which was changed with some time period, instead of querying"},{"line_number":32,"context_line":"all resources every time to see which was changed."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_e56aabeb","line":32,"updated":"2018-08-30 15:00:13.000000000","message":"I suggest you give the specific example I laid out above in addition to the wording you have here.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":29,"context_line":"In large scale environment, lots of resources were created in system,"},{"line_number":30,"context_line":"for tracing the change of resource, user or manage system only need to get"},{"line_number":31,"context_line":"those resources which was changed with some time period, instead of querying"},{"line_number":32,"context_line":"all resources every time to see which was changed."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_86cad39e","line":32,"in_reply_to":"3f79a3b5_e56aabeb","updated":"2018-08-31 02:27:45.000000000","message":"Plus and expanded.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"Add a new microversion to servers list API to support changes-before."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_e5438b6b","line":36,"updated":"2018-08-30 15:00:13.000000000","message":"The os-instance-actions and os-migrations APIs also have changes-since filters - why wouldn\u0027t we also add the same time-based range filtering capability to those APIs in the same microversion?","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"105491882fb2d1be4035d2b72e166115669c98b2","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"Add a new microversion to servers list API to support changes-before."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_393a00cd","line":36,"in_reply_to":"3f79a3b5_e5438b6b","updated":"2018-08-31 02:43:21.000000000","message":"++","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":"Add a new microversion to servers list API to support changes-before."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_26fc1fb4","line":36,"in_reply_to":"3f79a3b5_e5438b6b","updated":"2018-08-31 02:27:45.000000000","message":"OK,add os-instance-actions and os-migrations APIs in this microversion.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Add a new microversion to servers list API to support changes-before."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"},{"line_number":40,"context_line":"earlier than this timestamp."},{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_c55a0f4f","line":39,"range":{"start_line":39,"start_character":51,"end_line":39,"end_character":60},"updated":"2018-08-30 15:00:13.000000000","message":"updated_at","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Add a new microversion to servers list API to support changes-before."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"},{"line_number":40,"context_line":"earlier than this timestamp."},{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_c6d1ab31","line":39,"range":{"start_line":39,"start_character":51,"end_line":39,"end_character":60},"in_reply_to":"3f79a3b5_c55a0f4f","updated":"2018-08-31 02:27:45.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"105491882fb2d1be4035d2b72e166115669c98b2","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"},{"line_number":40,"context_line":"earlier than this timestamp."},{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"},{"line_number":43,"context_line":"are earlier than this changes-before, and later than changes-since."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_990a341e","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":28},"updated":"2018-08-31 02:43:21.000000000","message":"Could you clarify the meaning of \"changes-before\"?\n\nI mean \"updated_at \u003c changes-before\" or \"updated_at \u003c\u003d changes-before\".","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3c748b7821b47874ac251ad8ba950fde1d9468bb","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"},{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"},{"line_number":40,"context_line":"earlier than this timestamp."},{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"},{"line_number":43,"context_line":"are earlier than this changes-before, and later than changes-since."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_b935b0aa","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":28},"in_reply_to":"3f79a3b5_990a341e","updated":"2018-08-31 03:21:17.000000000","message":"It means that \"updated_at \u003c\u003d changes-before\", including the next patch.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"},{"line_number":40,"context_line":"earlier than this timestamp."},{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"},{"line_number":43,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_85541723","line":42,"range":{"start_line":42,"start_character":57,"end_line":42,"end_character":66},"updated":"2018-08-30 15:00:13.000000000","message":"updated_at","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":39,"context_line":"timestamp and projects will return resources whose update_at fields are"},{"line_number":40,"context_line":"earlier than this timestamp."},{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"},{"line_number":43,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_86dbb34d","line":42,"range":{"start_line":42,"start_character":57,"end_line":42,"end_character":66},"in_reply_to":"3f79a3b5_85541723","updated":"2018-08-31 02:27:45.000000000","message":"Done","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"},{"line_number":43,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Alternatives"},{"line_number":46,"context_line":"------------"},{"line_number":47,"context_line":"As discussed in \u0027Problem description\u0027 section, user can retrieve and then"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_2518a382","line":44,"updated":"2018-08-30 15:00:13.000000000","message":"I assume the same logic would apply to reading deleting instances for changes-before as it does for changes-since, specifically this:\n\nhttps://github.com/openstack/nova/blob/a37422cd178a55deceeaedb88d5f0575a428ff09/nova/api/openstack/compute/servers.py#L157-L172\n\nLet\u0027s be clear about this case either way in the spec.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":42,"context_line":"pass the value, the projects will return resources whose update_at fields"},{"line_number":43,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Alternatives"},{"line_number":46,"context_line":"------------"},{"line_number":47,"context_line":"As discussed in \u0027Problem description\u0027 section, user can retrieve and then"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_a6858f09","line":44,"in_reply_to":"3f79a3b5_2518a382","updated":"2018-08-31 02:27:45.000000000","message":"Yeah. The changes-before process is the same as changes-since in the compute API. The filtered nova resources contains the ``DELETED`` status.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"105491882fb2d1be4035d2b72e166115669c98b2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":61,"context_line":"Judging in the following cases:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":64,"context_line":"return HTTPBadRequest 400."},{"line_number":65,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":66,"context_line":"changes-before will be returned."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_1944e446","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":58},"updated":"2018-08-31 02:43:21.000000000","message":"If changes-before means \"updated_at \u003c changes-before\", this should be \"changes-before \u003c\u003d changes-since\".","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3c748b7821b47874ac251ad8ba950fde1d9468bb","unresolved":false,"context_lines":[{"line_number":60,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":61,"context_line":"Judging in the following cases:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":64,"context_line":"return HTTPBadRequest 400."},{"line_number":65,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":66,"context_line":"changes-before will be returned."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_3972007e","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":58},"in_reply_to":"3f79a3b5_1944e446","updated":"2018-08-31 03:21:17.000000000","message":"Yes, \"\u003c\u003d\" is more suitable here than \"\u003c\", and is also convenient when the compute API is processed.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"860a0a236697d031d870d38c3388ab8735511ee2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Judging in the following cases:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":64,"context_line":"return HTTPBadRequest 400."},{"line_number":65,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":66,"context_line":"changes-before will be returned."},{"line_number":67,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_0511e7ac","line":64,"updated":"2018-08-30 14:43:54.000000000","message":"For a bulleted list, the secondary lines have to be aligned with the first, so:\n\n* If the user specifies the changes-before \u003c changes-since, it\n  will return HTTPBadRequest.\n* If the user....","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Judging in the following cases:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":64,"context_line":"return HTTPBadRequest 400."},{"line_number":65,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":66,"context_line":"changes-before will be returned."},{"line_number":67,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_436b4d1e","line":64,"in_reply_to":"3f79a3b5_0511e7ac","updated":"2018-08-31 02:27:45.000000000","message":"Yeah. This is why \"zuul\u003d-1\" and needs to be modified.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":64,"context_line":"return HTTPBadRequest 400."},{"line_number":65,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":66,"context_line":"changes-before will be returned."},{"line_number":67,"context_line":"* If the user specifies changes-since and changes-before, that will"},{"line_number":68,"context_line":"get changes from a specific period."},{"line_number":69,"context_line":"* When the user only specifies changes-since, the original features"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_c508cf2e","line":66,"range":{"start_line":65,"start_character":45,"end_line":66,"end_character":32},"updated":"2018-08-30 15:00:13.000000000","message":"including deleted servers?","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* If the user specifies the changes-before \u003c changes-since, it will"},{"line_number":64,"context_line":"return HTTPBadRequest 400."},{"line_number":65,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":66,"context_line":"changes-before will be returned."},{"line_number":67,"context_line":"* If the user specifies changes-since and changes-before, that will"},{"line_number":68,"context_line":"get changes from a specific period."},{"line_number":69,"context_line":"* When the user only specifies changes-since, the original features"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_463d9b2a","line":66,"range":{"start_line":65,"start_character":45,"end_line":66,"end_character":32},"in_reply_to":"3f79a3b5_c508cf2e","updated":"2018-08-31 02:27:45.000000000","message":"Yes, including the deleted servers.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Other end user impact"},{"line_number":87,"context_line":"---------------------"},{"line_number":88,"context_line":"Python client may add help to inform users this new filter."},{"line_number":89,"context_line":"Python client support dynamic assigning search fields so it is easy for"},{"line_number":90,"context_line":"it to support this new filter."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Performance Impact"},{"line_number":93,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_8502d70a","line":90,"range":{"start_line":89,"start_character":0,"end_line":90,"end_character":30},"updated":"2018-08-30 15:00:13.000000000","message":"I\u0027m not sure what this is trying to say. If this entire section is just saying, \"Add support for the changes-before filter in python-novaclient for the \u0027nova list\u0027 command.\" then let\u0027s just say that.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Other end user impact"},{"line_number":87,"context_line":"---------------------"},{"line_number":88,"context_line":"Python client may add help to inform users this new filter."},{"line_number":89,"context_line":"Python client support dynamic assigning search fields so it is easy for"},{"line_number":90,"context_line":"it to support this new filter."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Performance Impact"},{"line_number":93,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_a6d26fd0","line":90,"range":{"start_line":89,"start_character":0,"end_line":90,"end_character":30},"in_reply_to":"3f79a3b5_8502d70a","updated":"2018-08-31 02:27:45.000000000","message":"Yes, need to be changed.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":118,"context_line":"* Add querying support in sql"},{"line_number":119,"context_line":"* Add API filter"},{"line_number":120,"context_line":"* Add related test"},{"line_number":121,"context_line":"* Modify the REST API of python-novaclient"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Dependencies"},{"line_number":124,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_e01ff958","line":121,"range":{"start_line":121,"start_character":2,"end_line":121,"end_character":42},"updated":"2018-08-30 15:00:13.000000000","message":"novaclient doesn\u0027t have a REST API - I guess you just mean add support for changes-since to the nova list operation in novaclient.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":118,"context_line":"* Add querying support in sql"},{"line_number":119,"context_line":"* Add API filter"},{"line_number":120,"context_line":"* Add related test"},{"line_number":121,"context_line":"* Modify the REST API of python-novaclient"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Dependencies"},{"line_number":124,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_26de5fda","line":121,"range":{"start_line":121,"start_character":2,"end_line":121,"end_character":42},"in_reply_to":"3f79a3b5_e01ff958","updated":"2018-08-31 02:27:45.000000000","message":"Yeah,add support for changes-before to the nova list operation in novaclient.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"83647002337ebc1f0677f5d013c77fa714b26128","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Documentation Impact"},{"line_number":133,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":134,"context_line":"The nova API documentation will need to be updated to reflect the"},{"line_number":135,"context_line":"REST API changes, and adding microversion instructions."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_002555ab","line":134,"updated":"2018-08-30 15:00:13.000000000","message":"Beyond just the API reference, we should probably also update the API guide:\n\nhttps://developer.openstack.org/api-guide/compute/polling_changes-since_parameter.html","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ad490cffe85423f80ef0957960bb598386e61721","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Documentation Impact"},{"line_number":133,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":134,"context_line":"The nova API documentation will need to be updated to reflect the"},{"line_number":135,"context_line":"REST API changes, and adding microversion instructions."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_869df30b","line":134,"in_reply_to":"3f79a3b5_002555ab","updated":"2018-08-31 02:27:45.000000000","message":"Yes, This API guide will be updated together when submitting the code, not in this spec.","commit_id":"f07eaee6d67383d33595d9d8f09f14291fbf42d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eac3c611911818c535482448ce4e4ab0248149eb","unresolved":false,"context_lines":[{"line_number":34,"context_line":"all resources every time to see which was changed."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"For example, if you are trying to get the nova resources that were changed"},{"line_number":37,"context_line":"before \u00272018-07-26T10:31:49Z\u0027, you can to filter servers like:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* GET /servers/detail?changes-before\u003d\u00272018-07-26T10:31:49Z\u0027"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_d9cfe854","line":37,"range":{"start_line":37,"start_character":39,"end_line":37,"end_character":41},"updated":"2018-09-05 16:33:43.000000000","message":"s/to//","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eac3c611911818c535482448ce4e4ab0248149eb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_b9bd4cb2","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":16},"updated":"2018-09-05 16:33:43.000000000","message":"earlier than or equal to","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eac3c611911818c535482448ce4e4ab0248149eb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_59dc3817","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":52},"updated":"2018-09-05 16:33:43.000000000","message":"later than or equal to","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_24d029f7","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":52},"in_reply_to":"3f79a3b5_59dc3817","updated":"2018-09-06 01:18:14.000000000","message":"Done","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_44cd255b","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":16},"in_reply_to":"3f79a3b5_b9bd4cb2","updated":"2018-09-06 01:18:14.000000000","message":"Done","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eac3c611911818c535482448ce4e4ab0248149eb","unresolved":false,"context_lines":[{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"},{"line_number":64,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_f9f50484","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":27},"updated":"2018-09-05 16:33:43.000000000","message":"In this case, returning deleted resources really only applies to servers. We don\u0027t return deleted instance actions or migration records when changes-since is used (as far as I know anyway).","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"},{"line_number":64,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_04f64d5e","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":27},"in_reply_to":"3f79a3b5_f9f50484","updated":"2018-09-06 01:18:14.000000000","message":"Yes. Alex mentioned it, I will modify this description like: \"The os-instance-actions and os-migrations API can be accessed by the instance of the ``DELETED`` status, and cannot return deleted instance actions or migration records when changes-before is used.\"","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eac3c611911818c535482448ce4e4ab0248149eb","unresolved":false,"context_lines":[{"line_number":64,"context_line":"------------"},{"line_number":65,"context_line":"As discussed in \u0027Problem description\u0027 section, user can retrieve and then"},{"line_number":66,"context_line":"filter resources by themselves, but this approach is neither convenient nor"},{"line_number":67,"context_line":"efficient. Leaving filtering work to database can utilize the optimization"},{"line_number":68,"context_line":"of database engine and also reduce data transmitted from server to client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_f93ae431","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":9},"updated":"2018-09-05 16:33:43.000000000","message":"Well, this is arguable. A project like Searchlight can be monitoring for compute.instance.update notifications and storing those in elasticsearch, which should be efficient for making queries on that data in a time-series database. I agree it\u0027s not necessarily convenient.","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"------------"},{"line_number":65,"context_line":"As discussed in \u0027Problem description\u0027 section, user can retrieve and then"},{"line_number":66,"context_line":"filter resources by themselves, but this approach is neither convenient nor"},{"line_number":67,"context_line":"efficient. Leaving filtering work to database can utilize the optimization"},{"line_number":68,"context_line":"of database engine and also reduce data transmitted from server to client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_64b3819b","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":9},"in_reply_to":"3f79a3b5_f93ae431","updated":"2018-09-06 01:18:14.000000000","message":"Remove it and replace it with \"but this method is extremely inconvenient.\".","commit_id":"9c6510d08c7d00f0cde53b3a2ef112e1dfab96e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"all resources every time to see which was changed."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"For example, if you are trying to get the nova resources that were changed"},{"line_number":37,"context_line":"before \u00272018-07-26T10:31:49Z\u0027, you can to filter servers like:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* GET /servers/detail?changes-before\u003d2018-07-26T10:31:49Z"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_991c10c3","line":37,"range":{"start_line":37,"start_character":39,"end_line":37,"end_character":41},"updated":"2018-09-05 16:54:13.000000000","message":"s/to//","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a9168b01ffb81c8d9cddae618410cedda083770d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":"Add a new microversion to os-instance-actions, os-migrations and servers"},{"line_number":51,"context_line":"list APIs to support changes-before."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Introduce a new changes-before filter for retrieving resources. It accepts a"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_72e5bf09","line":50,"range":{"start_line":50,"start_character":26,"end_line":50,"end_character":60},"updated":"2018-09-03 14:06:59.000000000","message":"++","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_b9a30c43","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":16},"updated":"2018-09-05 16:54:13.000000000","message":"earlier than or equal to","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_7967b426","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":52},"updated":"2018-09-05 16:54:13.000000000","message":"later than or equal to","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_04e96de1","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":52},"in_reply_to":"3f79a3b5_7967b426","updated":"2018-09-06 01:18:14.000000000","message":"Done","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"earlier than this timestamp, it means that \"updated_at \u003c\u003d changes-before\"."},{"line_number":56,"context_line":"Its(changes-before) value is optional. If changes-since and changes-before"},{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_a4bbd9e2","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":16},"in_reply_to":"3f79a3b5_b9a30c43","updated":"2018-09-06 01:18:14.000000000","message":"Done","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a9168b01ffb81c8d9cddae618410cedda083770d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_32d98721","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"updated":"2018-09-03 14:06:59.000000000","message":"this probably is only for servers API. There isn\u0027t deleted status for os-action-api and os-migrations API.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_f972e4e2","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_32d98721","updated":"2018-09-05 16:54:13.000000000","message":"\u003e this probably is only for servers API. There isn\u0027t deleted status\n \u003e for os-action-api and os-migrations API.\n\nHeh, I just mentioned the same thing in PS12 before getting here.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cb268756cff25cd48e9f293e8cdfd543478896d6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_e7034c0c","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_32d98721","updated":"2018-09-04 00:04:58.000000000","message":"Yes, only the servers API can get the deleted instances, the os-action-api and os-migrations APIs can be accessed by the instance of the deleted state.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3fad2af2b186511e3fbbb89526228a0e5512c8cf","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_07edd623","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_367a8df0","updated":"2018-09-07 03:29:29.000000000","message":"@mriedem, sorry, what I said here is not perfect. I know this case \"We do delete migration records when the related instance is deleted\". But the function \"_archive_if_instance_deleted\" needs to be taken seriously. I ignored this before, thank you for your careful explanation.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"990db7861b9b786dfe8a6237cddd83e90281e878","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_da710c0f","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_5930b807","updated":"2018-09-06 02:37:33.000000000","message":"\u003e \u003e Yes, only the servers API can get the deleted instances, the\n \u003e \u003e os-action-api and os-migrations APIs can be accessed by the\n \u003e \u003e instance of the deleted state.\n \u003e \n \u003e That\u0027s true for os-instance-actions as of microversion 2.21. It\u0027s\n \u003e irrelevant for the os-migrations API which is not specific to a\n \u003e server resource. But as Alex mentioned, os-migrations doesn\u0027t\n \u003e return deleted migration records even if changes-since is used (I\n \u003e doubt that was intentionally made different from listing servers,\n \u003e we probably just didn\u0027t think about it).\n\nEmm...I\u0027m just thinking of the deleted instance action record and the deleted migration record. Actually it doesn\u0027t point to the deleted instance to those two APIs. Also I think we never delete any migration adn instance-action records?","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fcbf404a5b1b8e66f998052732716a38cf0cd63","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_367a8df0","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_95836556","updated":"2018-09-06 15:46:51.000000000","message":"We do delete migration records when the related instance is deleted:\n\nhttps://github.com/openstack/nova/blob/b0dc479194a6cd83caab2ddb98f95210b17c5f46/nova/db/sqlalchemy/api.py#L1819\n\nNote they are (soft) deleted in that they are still in the table and can be queried until archived/purged.\n\nInstance actions get archived when the related instance is archived:\n\nhttps://github.com/openstack/nova/blob/b0dc479194a6cd83caab2ddb98f95210b17c5f46/nova/db/sqlalchemy/api.py#L5473","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"124e1912353252965a46bf7caf9d89137172bc7a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_95836556","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_da710c0f","updated":"2018-09-06 03:21:19.000000000","message":"LGTM. Migration and instance-action records are not deleted in db.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_5930b807","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_e7034c0c","updated":"2018-09-05 16:54:13.000000000","message":"\u003e Yes, only the servers API can get the deleted instances, the\n \u003e os-action-api and os-migrations APIs can be accessed by the\n \u003e instance of the deleted state.\n\nThat\u0027s true for os-instance-actions as of microversion 2.21. It\u0027s irrelevant for the os-migrations API which is not specific to a server resource. But as Alex mentioned, os-migrations doesn\u0027t return deleted migration records even if changes-since is used (I doubt that was intentionally made different from listing servers, we probably just didn\u0027t think about it).","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"pass the value, the projects will return resources whose updated_at fields"},{"line_number":58,"context_line":"are earlier than this changes-before, and later than changes-since."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The changes-before process is the same as changes-since in the compute API,"},{"line_number":61,"context_line":"the filtered nova resources contains the ``DELETED`` status."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_8446dd7a","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":74},"in_reply_to":"3f79a3b5_f972e4e2","updated":"2018-09-06 01:18:14.000000000","message":"Yeah.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"Alternatives"},{"line_number":64,"context_line":"------------"},{"line_number":65,"context_line":"As discussed in \u0027Problem description\u0027 section, user can retrieve and then"},{"line_number":66,"context_line":"filter resources by themselves, but this approach is neither convenient nor"},{"line_number":67,"context_line":"efficient. Leaving filtering work to database can utilize the optimization"},{"line_number":68,"context_line":"of database engine and also reduce data transmitted from server to client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_793574f6","line":67,"range":{"start_line":66,"start_character":32,"end_line":67,"end_character":10},"updated":"2018-09-05 16:54:13.000000000","message":"Well, this is arguable. A project like Searchlight can be monitoring for compute.instance.update notifications and storing those in elasticsearch, which should be efficient for making queries on that data in a time-series database. I agree it\u0027s not necessarily convenient.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"Alternatives"},{"line_number":64,"context_line":"------------"},{"line_number":65,"context_line":"As discussed in \u0027Problem description\u0027 section, user can retrieve and then"},{"line_number":66,"context_line":"filter resources by themselves, but this approach is neither convenient nor"},{"line_number":67,"context_line":"efficient. Leaving filtering work to database can utilize the optimization"},{"line_number":68,"context_line":"of database engine and also reduce data transmitted from server to client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_c435b5f8","line":67,"range":{"start_line":66,"start_character":32,"end_line":67,"end_character":10},"in_reply_to":"3f79a3b5_793574f6","updated":"2018-09-06 01:18:14.000000000","message":"Replyed on PS12.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"08e62b39893bcde5fb2cb63033b8001e2bfcfa8a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_4aa2479c","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"updated":"2018-09-04 03:23:40.000000000","message":"why, we can use this to get records that excluded in a period of time","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"494b392a81e445bb7f9d29a8941a8a49aedd58a4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_d35feee2","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_13e24631","updated":"2018-09-04 08:10:40.000000000","message":"changes-before \u003d\u003d changes-since could work, we can use this to filter out records changed at a precise time.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b0ec711b802b8a3b65a29cb7869bebeb20c766c0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_5afbbc79","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_34b86173","updated":"2018-09-06 02:27:43.000000000","message":"\u003e For reference, the API-SIG guideline on filtering is here:\n \u003e \n \u003e http://specs.openstack.org/openstack/api-sig/guidelines/pagination_filter_sort.html?highlight\u003dparams#filtering\n \u003e \n \u003e And while it\u0027s odd to use the same value for a \u003e\u003d as well as a \u003c\u003d\n \u003e comparison in order to express equality, it is logically\n \u003e reasonable. I would prefer an explicit `?updated_at\u003d$TIME`, but\n \u003e that\u0027s not part of this spec.\n\nI pretty like this suggestion http://specs.openstack.org/openstack/api-sig/guidelines/pagination_filter_sort.html?highlight\u003dparams#time-based-filtering-queries\n\nBut yes, I\u0027m not sure whether we should change such a lot of things for this.\n\nBut Brin told me about the use-case filter on \u0027created_at\u0027, not sure whether Brin finally decide to propose create_before\u0027 and \u0027create_after\u0027","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc62165fc91cc7fa60b75d6a75531fc86824a3c5","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_dd2cb19a","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_34b86173","updated":"2018-09-05 18:14:24.000000000","message":"Chris/Ed, in other words, changes-since \u003d\u003d changes-before is fine and shouldn\u0027t 400. It\u0027s weird and might not be used, but isn\u0027t hard to implement either. And adding an updated_at filter would be preferred if anyone really wanted that use case.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1d227a7a44330bfd3759b9f101f359060a84715e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_586c5d35","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_4aa2479c","updated":"2018-09-04 07:45:10.000000000","message":"Limit: changes-since must be less than changes-before, so when the condition is not true, return 400.\nIf you want to get records in a period time, guaranteed condition please.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"d721ae81324d3438a0b6e74f7d4f6e93cf710086","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_7394da8b","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_586c5d35","updated":"2018-09-04 08:05:46.000000000","message":"the question of @kevin is that why result is not \"\u003c changes-before\" OR \"\u003e\u003d changes-since\".\n\nbut I think every filters are \"AND\" with others. :), so we need this 400 code.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3c4d759743dfea0f229136874dc9ff4f8f137d26","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_ee4c8077","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_6b6ce235","updated":"2018-09-04 11:23:13.000000000","message":"I do not agree, 1. We can not judge that edge cases is not useful, you can say it is not \u0027that useful\u0027 but you cannot say it is useless, for operators, I may want to precise to second as in that second maybe some strange behavior happend to the cloud and I captured it, so I may want to see which instances were influenced, In very large scale deployment, large number of records updated every secound, precise selection could narrow down the results; 2. From technical point of view, this case is valid, even when it is really not that useful, so we should not manully disable this; 3. The price is not that high to add this, so why not do it.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"b19e40168c2ced3b2fce767839c7c4a03ec540b1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_13e24631","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_7394da8b","updated":"2018-09-04 08:07:58.000000000","message":"Yeah, you are correct, and thats why query filters is not powerful enough :(","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"de29b6b2497f5a0efc32fb82b0e4ca43f7c7f699","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_d3bb6ee2","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_7394da8b","updated":"2018-09-04 09:22:42.000000000","message":"Yes Kero, this explanation is more reasonable :-)","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"16496d951810ba366ec94dfd53f74c0fa80146a8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_34b86173","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_74e1f9cf","updated":"2018-09-05 17:19:33.000000000","message":"For reference, the API-SIG guideline on filtering is here:\n\nhttp://specs.openstack.org/openstack/api-sig/guidelines/pagination_filter_sort.html?highlight\u003dparams#filtering\n\nAnd while it\u0027s odd to use the same value for a \u003e\u003d as well as a \u003c\u003d comparison in order to express equality, it is logically reasonable. I would prefer an explicit `?updated_at\u003d$TIME`, but that\u0027s not part of this spec.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5051cc7d6bf683cfe4f7a4790cf65377cf8f4684","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_94e1352e","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_94b3754e","updated":"2018-09-05 16:55:56.000000000","message":"\u003e 1. changes-since \u003d\u003d changes-before is a 400 as written (although admittedly this is still a bit weird for an error case since both filters include equality)\n\nDo any other services in openstack have filtering like this and if so, what do they do?","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d1f1d5ac6e0c1d2035d0503aae70a741f617e087","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_743259a9","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_94e1352e","updated":"2018-09-05 16:58:51.000000000","message":"Glance has some funky time-based filtering using operators:\n\nhttps://developer.openstack.org/api-ref/image/v2/index.html#v2-comparison-ops\n\nI\u0027m not sure if those can be strung together to form a range.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_94b3754e","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_c4cc03bd","updated":"2018-09-05 16:54:13.000000000","message":"I\u0027m OK with either for the most part, but tend to agree with Kevin. If I know *exactly* when something happened in my cloud and want to pull the changes at that exact time, I\u0027d expect that if I pass changes-since \u003d\u003d changes-before to get everything at that exact time. Otherwise I have to use either changes-since or changes-before, or a small window, and then potentially filter out client-side, which is the point of the spec to avoid client-side filtering.\n\nHaving said that, it\u0027s kind of weird. What would likely be better is if I want to query on an exact time (changes-since \u003d\u003d changes-before), then why not just filter on updated_at? Because that\u0027s what we\u0027d be doing.\n\nThe problem with filtering on updated_at is it\u0027s not in our query params whitelist, so it would be ignored. It is a valid sort key however.\n\nSo I think we could do:\n\n1. changes-since \u003d\u003d changes-before is a 400 as written (although admittedly this is still a bit weird for an error case since both filters include equality)\n2. add the ability to filter on updated_at for the exact case\n\nDoes that make sense?","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c1e166edd4453cca14dfc4aa44973ba3c68ada0a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_d994efea","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_d35feee2","updated":"2018-09-04 10:12:45.000000000","message":"If changes-before \u003d\u003d changes-since, it means I need to precise to second? If so, I don\u0027t think it is useful","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"de29b6b2497f5a0efc32fb82b0e4ca43f7c7f699","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_7385baac","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_d35feee2","updated":"2018-09-04 09:22:42.000000000","message":"Yeah, good suggestion, It will be changed in the next patch.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3d0999bb399d9287514023a8e6f45b44cc828ac5","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_6b6ce235","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_d994efea","updated":"2018-09-04 11:01:58.000000000","message":"@Alux, I am sorry that I did not consider this before. It is not useful to precise to second, so it is better to limit it directly.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fc63c95f67353c4522154586aab4cef8a2bcdf1e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_37ccd987","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_dd2cb19a","updated":"2018-09-06 01:18:14.000000000","message":"Thanks for kevin/mriedem/Alex/Chrix/Ed. In summary,The changes-since \u003d\u003d changes-before could work and shouldn\u0027t 400. If you know *exactly* when something happened in your cloud and want to pull the changes at that exact time, you can pass changes-since \u003d\u003d changes-before to get everything at that exact time.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"138c8adb5e66c34d798c0a86013a798e054ef05c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_c4cc03bd","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_ee4c8077","updated":"2018-09-04 13:05:47.000000000","message":"Emm...still not sure it is very useful. Yes, we can add it. If people really want it, I just don\u0027t think it is very important. I\u0027m ok with both.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1ac3c91a2cb4842fe5929f9c2011d47a1314a5df","unresolved":false,"context_lines":[{"line_number":78,"context_line":"List API will accept new query string parameter changes-before."},{"line_number":79,"context_line":"Judging in the following cases:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* If the user specifies the changes-before \u003c\u003d changes-since, it will"},{"line_number":82,"context_line":"  return HTTPBadRequest 400."},{"line_number":83,"context_line":"* If the user only specifies changes-before, all nova resource before"},{"line_number":84,"context_line":"  changes-before will be returned, including the deleted servers."},{"line_number":85,"context_line":"* If the user specifies changes-since and changes-before, that will"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_74e1f9cf","line":82,"range":{"start_line":81,"start_character":2,"end_line":82,"end_character":28},"in_reply_to":"3f79a3b5_ee4c8077","updated":"2018-09-05 17:06:52.000000000","message":"I think that\u0027s a pretty reasonable use case. Even if \u0027updated_at\u0027 became a filtering option (instead of just sorting).\n\nThe usual standard when talking about multiple parameters over in the API-SIG is that if there is a logical interpretation of the combination, and it can be implemented without a huge amount of pain, then the principle of least surprise (in this case \"it ought to work\") should be the way to go. That assumes:\n\n* both changes-since and changes-before are inclusive searches (\u003e\u003d and \u003c\u003d respectively)\n* the granularity of time expressed in the parameters is the same or larger than the time stored in the db","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"08e62b39893bcde5fb2cb63033b8001e2bfcfa8a","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Other end user impact"},{"line_number":108,"context_line":"---------------------"},{"line_number":109,"context_line":"Python client may add help to inform users this new filter."},{"line_number":110,"context_line":"Add support for the changes-before filter in python-novaclient"},{"line_number":111,"context_line":"for the \u0027nova list\u0027 command."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Performance Impact"},{"line_number":114,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_0aa8cf75","line":111,"range":{"start_line":109,"start_character":0,"end_line":111,"end_character":28},"updated":"2018-09-04 03:23:40.000000000","message":"also OSC? but might be out of the scope of this spec.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1d227a7a44330bfd3759b9f101f359060a84715e","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Other end user impact"},{"line_number":108,"context_line":"---------------------"},{"line_number":109,"context_line":"Python client may add help to inform users this new filter."},{"line_number":110,"context_line":"Add support for the changes-before filter in python-novaclient"},{"line_number":111,"context_line":"for the \u0027nova list\u0027 command."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Performance Impact"},{"line_number":114,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_b8ea5171","line":111,"range":{"start_line":109,"start_character":0,"end_line":111,"end_character":28},"in_reply_to":"3f79a3b5_0aa8cf75","updated":"2018-09-04 07:45:10.000000000","message":"I think it\u0027s suitable here, novaclient is attached to the implementation of the nova API, and the impact needs to be clearly demonstrated here.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"124e1912353252965a46bf7caf9d89137172bc7a","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Other end user impact"},{"line_number":108,"context_line":"---------------------"},{"line_number":109,"context_line":"Python client may add help to inform users this new filter."},{"line_number":110,"context_line":"Add support for the changes-before filter in python-novaclient"},{"line_number":111,"context_line":"for the \u0027nova list\u0027 command."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Performance Impact"},{"line_number":114,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_3547f11f","line":111,"range":{"start_line":109,"start_character":0,"end_line":111,"end_character":28},"in_reply_to":"3f79a3b5_347e216a","updated":"2018-09-06 03:21:19.000000000","message":"LGTM. And here, I think need to add \u0027nova migration-list\u0027 and \u0027nova instance-action-list\u0027 command in novaclient.","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3a2d1061f940705001ee0b44b83e9d9dac9e6","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Other end user impact"},{"line_number":108,"context_line":"---------------------"},{"line_number":109,"context_line":"Python client may add help to inform users this new filter."},{"line_number":110,"context_line":"Add support for the changes-before filter in python-novaclient"},{"line_number":111,"context_line":"for the \u0027nova list\u0027 command."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Performance Impact"},{"line_number":114,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3f79a3b5_347e216a","line":111,"range":{"start_line":109,"start_character":0,"end_line":111,"end_character":28},"in_reply_to":"3f79a3b5_b8ea5171","updated":"2018-09-05 16:54:13.000000000","message":"Yeah we definitely want to make sure we don\u0027t create more gaps in OSC:\n\nhttps://etherpad.openstack.org/p/compute-api-microversion-gap-in-osc","commit_id":"de8ec9202d28b47321e1cbe15ebc4ae2dbcd7728"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0ef6d8ba2970f8d25a1375548c83ebca3f6437a","unresolved":false,"context_lines":[{"line_number":61,"context_line":"The changes-before process is the same as changes-since in the servers API,"},{"line_number":62,"context_line":"the filtered nova resources contains the ``DELETED`` status. The"},{"line_number":63,"context_line":"os-instance-actions and os-migrations API can be accessed by the instance"},{"line_number":64,"context_line":"of the ``DELETED`` status, and cannot return deleted instance actions or"},{"line_number":65,"context_line":"migration records when changes-before is used."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3f79a3b5_56506932","line":64,"range":{"start_line":64,"start_character":27,"end_line":64,"end_character":69},"updated":"2018-09-06 18:01:22.000000000","message":"This is sort of confusing (and possibly wrong) because you can list instance actions for deleted servers using microversion 2.21:\n\nhttps://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id19\n\nI expect that if I\u0027m using microversion \u003e\u003d 2.21, I can list instance actions for a deleted instance regardless of the changes-before filter.\n\nI don\u0027t think the same is true for os-migrations because while you can filter os-migrations via the instance_uuid query parameter, that API doesn\u0027t have something like 2.21 where the read_deleted\u003d\u0027yes\u0027 is used for reading deleted migrations.","commit_id":"dbf3488cae81f6e0e7d486380c7da2cad7720c9b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3fad2af2b186511e3fbbb89526228a0e5512c8cf","unresolved":false,"context_lines":[{"line_number":61,"context_line":"The changes-before process is the same as changes-since in the servers API,"},{"line_number":62,"context_line":"the filtered nova resources contains the ``DELETED`` status. The"},{"line_number":63,"context_line":"os-instance-actions and os-migrations API can be accessed by the instance"},{"line_number":64,"context_line":"of the ``DELETED`` status, and cannot return deleted instance actions or"},{"line_number":65,"context_line":"migration records when changes-before is used."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3f79a3b5_07d63650","line":64,"range":{"start_line":64,"start_character":27,"end_line":64,"end_character":69},"in_reply_to":"3f79a3b5_56506932","updated":"2018-09-07 03:29:29.000000000","message":"Well, I need to update the instructions here.","commit_id":"dbf3488cae81f6e0e7d486380c7da2cad7720c9b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0ef6d8ba2970f8d25a1375548c83ebca3f6437a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"filter resources by themselves, but this method is extremely inconvenient."},{"line_number":71,"context_line":"Leaving filtering work to database can utilize the optimizationi of database"},{"line_number":72,"context_line":"engine and also reduce data transmitted from server to client."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Data model impact"},{"line_number":75,"context_line":"-----------------"},{"line_number":76,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3f79a3b5_5635c9f5","line":73,"updated":"2018-09-06 18:01:22.000000000","message":"I think we should probably mention the Searchlight alternative.","commit_id":"dbf3488cae81f6e0e7d486380c7da2cad7720c9b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3fad2af2b186511e3fbbb89526228a0e5512c8cf","unresolved":false,"context_lines":[{"line_number":70,"context_line":"filter resources by themselves, but this method is extremely inconvenient."},{"line_number":71,"context_line":"Leaving filtering work to database can utilize the optimizationi of database"},{"line_number":72,"context_line":"engine and also reduce data transmitted from server to client."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Data model impact"},{"line_number":75,"context_line":"-----------------"},{"line_number":76,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3f79a3b5_cd285f87","line":73,"in_reply_to":"3f79a3b5_5635c9f5","updated":"2018-09-07 03:29:29.000000000","message":"I don\u0027t have a particularly good Searchlight alternatives. Do you have any suggestions?","commit_id":"dbf3488cae81f6e0e7d486380c7da2cad7720c9b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ef66210b5116baeeb1befea2e7b3e679efcf6ab","unresolved":false,"context_lines":[{"line_number":70,"context_line":"filter resources by themselves, but this method is extremely inconvenient."},{"line_number":71,"context_line":"Leaving filtering work to database can utilize the optimizationi of database"},{"line_number":72,"context_line":"engine and also reduce data transmitted from server to client."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Data model impact"},{"line_number":75,"context_line":"-----------------"},{"line_number":76,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3f79a3b5_960ee8e1","line":73,"in_reply_to":"3f79a3b5_cd285f87","updated":"2018-09-07 15:58:44.000000000","message":"I\u0027ll add something.","commit_id":"dbf3488cae81f6e0e7d486380c7da2cad7720c9b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe201d86e8ca33b55baf33d49a41b44dc64d4c6b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"are earlier than or equal to this changes-before, and later than or equal"},{"line_number":59,"context_line":"to changes-since."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The changes-before process is the same as changes-since in the servers API"},{"line_number":62,"context_line":"and os-migrations API, the filtered nova resources contains the ``DELETED``"},{"line_number":63,"context_line":"status. The os-instance-actions API can be accessed by the deleted servers"},{"line_number":64,"context_line":"and returns the instance actions list before the given time."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f79a3b5_56c7f045","line":64,"range":{"start_line":61,"start_character":0,"end_line":64,"end_character":60},"updated":"2018-09-07 16:11:12.000000000","message":"This is still a bit hard to understand so I\u0027ve re-worded it for clarity.","commit_id":"0517c4154d9ee683a6920789700acd30e9b463e9"}]}
