)]}'
{"specs/newton/inspection-mechanism-for-capacity-limited-host.rst":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"6ee6de3afac91002a4fa28829eabdd926379bd51","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"1. Use MicroVersion in API v3 to keep forward compatibility."},{"line_number":42,"context_line":"1. Add a common function to check the backend\u0027s capacity."},{"line_number":43,"context_line":"2. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":44,"context_line":"cinder-scheduler should be checked with the function in step 1. The APIs are:"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_8977a03a","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":77},"updated":"2016-04-22 21:11:48.000000000","message":"I think the numbering is off, should be 1 -\u003e 3?","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"29a1007f2db7cd6cdf07040a6293926613647109","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"1. Use MicroVersion in API v3 to keep forward compatibility."},{"line_number":42,"context_line":"1. Add a common function to check the backend\u0027s capacity."},{"line_number":43,"context_line":"2. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":44,"context_line":"cinder-scheduler should be checked with the function in step 1. The APIs are:"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_e1a10848","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"1a122d0e_8977a03a","updated":"2016-04-23 07:17:39.000000000","message":"Done","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"6ee6de3afac91002a4fa28829eabdd926379bd51","unresolved":false,"context_lines":[{"line_number":42,"context_line":"1. Add a common function to check the backend\u0027s capacity."},{"line_number":43,"context_line":"2. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":44,"context_line":"cinder-scheduler should be checked with the function in step 1. The APIs are:"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"},{"line_number":47,"context_line":"or replication)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Alternatives"},{"line_number":50,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_29b64cdc","line":47,"range":{"start_line":45,"start_character":0,"end_line":47,"end_character":15},"updated":"2016-04-22 21:11:48.000000000","message":"I think the create consistency group from source needs it too.","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"29a1007f2db7cd6cdf07040a6293926613647109","unresolved":false,"context_lines":[{"line_number":42,"context_line":"1. Add a common function to check the backend\u0027s capacity."},{"line_number":43,"context_line":"2. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":44,"context_line":"cinder-scheduler should be checked with the function in step 1. The APIs are:"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"},{"line_number":47,"context_line":"or replication)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Alternatives"},{"line_number":50,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_fcaa4b84","line":47,"range":{"start_line":45,"start_character":0,"end_line":47,"end_character":15},"in_reply_to":"1a122d0e_29b64cdc","updated":"2016-04-23 07:17:39.000000000","message":"Yes, thanks for pointing it out.","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"6ee6de3afac91002a4fa28829eabdd926379bd51","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Alternatives"},{"line_number":50,"context_line":"------------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Leave as it is."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Data model impact"},{"line_number":55,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_49b3c8e9","line":52,"updated":"2016-04-22 21:11:48.000000000","message":"We could route those api calls through the scheduler instead of jumping right to a volume-service. There was a proposal for that at some point... I forget what happened with it though.","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"29a1007f2db7cd6cdf07040a6293926613647109","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Alternatives"},{"line_number":50,"context_line":"------------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Leave as it is."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Data model impact"},{"line_number":55,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_dcadcf9c","line":52,"in_reply_to":"1a122d0e_49b3c8e9","updated":"2016-04-23 07:17:39.000000000","message":"Done","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"6ee6de3afac91002a4fa28829eabdd926379bd51","unresolved":false,"context_lines":[{"line_number":59,"context_line":"REST API impact"},{"line_number":60,"context_line":"---------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"The request which will break the backend\u0027s capacity will return 403 forbidden."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Security impact"},{"line_number":65,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_89ccc062","line":62,"updated":"2016-04-22 21:11:48.000000000","message":"That seems inconsistent with what we normally would do if there isn\u0027t enough room. I\u0027m wondering if it makes more sense to just follow the same model and have them go into an error state? That way if its a normal create or a create from source if there isn\u0027t enough space you get the same behavior.","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"29a1007f2db7cd6cdf07040a6293926613647109","unresolved":false,"context_lines":[{"line_number":59,"context_line":"REST API impact"},{"line_number":60,"context_line":"---------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"The request which will break the backend\u0027s capacity will return 403 forbidden."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Security impact"},{"line_number":65,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a122d0e_bcb573d1","line":62,"in_reply_to":"1a122d0e_89ccc062","updated":"2016-04-23 07:17:39.000000000","message":"Make sense. It\u0027s looks more reasonable.","commit_id":"ff1b6f08342a6f8df6b33e04690e89cd48314f59"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"294cc2942ec65be896b4ac21731d18f38583d22d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"1. Use MicroVersion in API v3 to keep forward compatibility."},{"line_number":42,"context_line":"2. Add a common function to check the backend\u0027s capacity."},{"line_number":43,"context_line":"3. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":44,"context_line":"cinder-scheduler should be checked with the function in step 2. The APIs are:"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"},{"line_number":47,"context_line":"  or replication)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_8f089292","line":44,"updated":"2016-04-29 21:41:27.000000000","message":"Why can\u0027t we change these APIs to go through scheduler?","commit_id":"9bcb9fbd37d1af3d4e22d6070d2dd9d269dae236"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"e5e2a8538ef7c6303ec34775af894054ac154b2a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"1. Use MicroVersion in API v3 to keep forward compatibility."},{"line_number":42,"context_line":"2. Add a common function to check the backend\u0027s capacity."},{"line_number":43,"context_line":"3. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":44,"context_line":"cinder-scheduler should be checked with the function in step 2. The APIs are:"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"},{"line_number":47,"context_line":"  or replication)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c7997cd2","line":44,"in_reply_to":"1a122d0e_8f089292","updated":"2016-05-04 01:52:55.000000000","message":"This is the alternative way wroted below. I\u0027ll update it more clear. Thanks, Ivan.","commit_id":"9bcb9fbd37d1af3d4e22d6070d2dd9d269dae236"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"13156e2d3f76ae82338665aba9b138a28b69933f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Alternatives"},{"line_number":53,"context_line":"------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"We could route those api calls through the scheduler instead of jumping right"},{"line_number":56,"context_line":"to a volume-service."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"In this way, we could pass a \"host\" parameter to cinder-scheduler to indicate"},{"line_number":59,"context_line":"that the destination host is specified. Then cinder-scheduler will only check"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_0cf36b74","line":56,"range":{"start_line":55,"start_character":0,"end_line":56,"end_character":20},"updated":"2016-05-04 20:37:00.000000000","message":"I think this is the right way to do this... My main concern is that we lose the stats caching provided by the scheduler and all of those calls to create volumes from source or consistency group stuff will hit the driver and get it to update its stats.","commit_id":"e3339142e40de980ebeb2b89e4b64303a304e99e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4785709ec859997863463f6638bf293992480afc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Some backends now support the thin provisioning capability. But Cinder only"},{"line_number":22,"context_line":"get and check this capability in cinder-scheduler\u0027s filter: CapacityFilter. It"},{"line_number":23,"context_line":"means that some APIs which go to the backend directly without cinder-scheduler"},{"line_number":24,"context_line":"will don\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_5d2811e2","line":22,"updated":"2016-05-17 20:30:22.000000000","message":"/get/gets/","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"c145dbcb985d31644af0b95bdc42402abc38f76f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Some backends now support the thin provisioning capability. But Cinder only"},{"line_number":22,"context_line":"get and check this capability in cinder-scheduler\u0027s filter: CapacityFilter. It"},{"line_number":23,"context_line":"means that some APIs which go to the backend directly without cinder-scheduler"},{"line_number":24,"context_line":"will don\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_30dba8ef","line":22,"in_reply_to":"dab17558_5d2811e2","updated":"2016-05-18 02:59:13.000000000","message":"Done","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4785709ec859997863463f6638bf293992480afc","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Some backends now support the thin provisioning capability. But Cinder only"},{"line_number":22,"context_line":"get and check this capability in cinder-scheduler\u0027s filter: CapacityFilter. It"},{"line_number":23,"context_line":"means that some APIs which go to the backend directly without cinder-scheduler"},{"line_number":24,"context_line":"will don\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"},{"line_number":26,"context_line":"capacity. Such as \"extend volume\", \"create volume from snapshot\", \"copy volume\""},{"line_number":27,"context_line":"and so on."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_bd7dbde8","line":24,"updated":"2016-05-17 20:30:22.000000000","message":"/will don\u0027t/doesn\u0027t/","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"c145dbcb985d31644af0b95bdc42402abc38f76f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Some backends now support the thin provisioning capability. But Cinder only"},{"line_number":22,"context_line":"get and check this capability in cinder-scheduler\u0027s filter: CapacityFilter. It"},{"line_number":23,"context_line":"means that some APIs which go to the backend directly without cinder-scheduler"},{"line_number":24,"context_line":"will don\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"},{"line_number":26,"context_line":"capacity. Such as \"extend volume\", \"create volume from snapshot\", \"copy volume\""},{"line_number":27,"context_line":"and so on."}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_d0d5fcb9","line":24,"in_reply_to":"dab17558_bd7dbde8","updated":"2016-05-18 02:59:13.000000000","message":"Done","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4785709ec859997863463f6638bf293992480afc","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"1. Use MicroVersion in API v3 to keep forward compatibility."},{"line_number":42,"context_line":"2. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":43,"context_line":"cinder-scheduler, we could route them through the scheduler instead of jumping"},{"line_number":44,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":45,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_bd649d48","line":42,"updated":"2016-05-17 20:30:22.000000000","message":"/don\u0027t/not/","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"c145dbcb985d31644af0b95bdc42402abc38f76f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"1. Use MicroVersion in API v3 to keep forward compatibility."},{"line_number":42,"context_line":"2. For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":43,"context_line":"cinder-scheduler, we could route them through the scheduler instead of jumping"},{"line_number":44,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":45,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_50e2aca0","line":42,"in_reply_to":"dab17558_bd649d48","updated":"2016-05-18 02:59:13.000000000","message":"Done","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4785709ec859997863463f6638bf293992480afc","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Other end user impact"},{"line_number":90,"context_line":"---------------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The request which will break the backend\u0027s capacity will make the volume\u0027s"},{"line_number":93,"context_line":"status to \"error\"."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_fde8e57c","line":92,"updated":"2016-05-17 20:30:22.000000000","message":"Not sure if we want to change the volume\u0027s status to error for things like trying to extend a volume past the capacity. The request should certainly fail, but the volume should still be in the state it was when the request was attempted.","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"c145dbcb985d31644af0b95bdc42402abc38f76f","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Other end user impact"},{"line_number":90,"context_line":"---------------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The request which will break the backend\u0027s capacity will make the volume\u0027s"},{"line_number":93,"context_line":"status to \"error\"."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_53a7564f","line":92,"in_reply_to":"dab17558_fde8e57c","updated":"2016-05-18 02:59:13.000000000","message":"make sense. The volume should keep its state if the extend action failed.","commit_id":"1625a50504d5616b4ea0ce8c32b3e4bec633bf6c"},{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"befb9b2983502cea77490e29ff0eb1c6bac4116e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Some backends now support the thin provisioning capability. But Cinder only"},{"line_number":22,"context_line":"gets and check this capability in cinder-scheduler\u0027s filter: CapacityFilter. It"},{"line_number":23,"context_line":"means that some APIs which go to the backend directly without cinder-scheduler"},{"line_number":24,"context_line":"doesn\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_5667a0e8","line":22,"range":{"start_line":22,"start_character":76,"end_line":22,"end_character":77},"updated":"2016-05-20 15:02:01.000000000","message":"s/capability. But Cinder only gets and check this capability/capability, but only Cinder gets and checks this capability/","commit_id":"b6709db4ec318f8252341aa60b465af5dd658008"},{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"befb9b2983502cea77490e29ff0eb1c6bac4116e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"1. We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":57,"context_line":"to keep backward compatibility."},{"line_number":58,"context_line":"2. The create actions will always call through the cinder-scheduler even the"},{"line_number":59,"context_line":"destination host is specified."},{"line_number":60,"context_line":"3. If the APIs don\u0027t pass cinder-scheduler, the volume\u0027s status will be"},{"line_number":61,"context_line":"translated to \"error\"."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_ab7f89a9","line":59,"range":{"start_line":59,"start_character":29,"end_line":59,"end_character":30},"updated":"2016-05-20 15:02:01.000000000","message":"s/cinder-scheduler even the/cinder-scheduler, even if the/","commit_id":"b6709db4ec318f8252341aa60b465af5dd658008"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"7e94fa59751039602fd56306d69b07649671c3f6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":45,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":46,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":47,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The APIs are:"},{"line_number":50,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_022f573f","line":47,"range":{"start_line":47,"start_character":32,"end_line":47,"end_character":36},"updated":"2016-06-26 18:33:22.000000000","message":"Extend can only work on the backend that hosts the volume - there\u0027s no point picking another host. Ditto snapshot. There\u0027s nothing her that can\u0027t be done by checking the stats in c-vol and failing the request if there isn\u0027t space.","commit_id":"10cac9bf1d53cf70111ce9a369c0d7d71836166a"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"658af05f9bfb96b12b02636b21385ec4d204c3ff","unresolved":false,"context_lines":[{"line_number":44,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":45,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":46,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":47,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The APIs are:"},{"line_number":50,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_b36693b8","line":47,"range":{"start_line":47,"start_character":32,"end_line":47,"end_character":36},"in_reply_to":"3aaa91ec_022f573f","updated":"2016-06-27 07:13:01.000000000","message":"Hi Duncan, If we extend the volume directly without host capacity check, it may break the host\u0027s thin provisioning capability.\n\nI mentioned above that we will pass the volume\u0027s host to the cinder-scheduler. Then we only need check this host, not all the backend.\n\nDo you mean that this check could be done by c-vol directly? Could you explain more? Thanks very much.","commit_id":"10cac9bf1d53cf70111ce9a369c0d7d71836166a"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8e20abcff30e18fdb78b9cfc4d979b9e9f16f874","unresolved":false,"context_lines":[{"line_number":44,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":45,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":46,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":47,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The APIs are:"},{"line_number":50,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action¡¡(os-extend)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_0280d345","line":47,"range":{"start_line":47,"start_character":32,"end_line":47,"end_character":36},"in_reply_to":"3aaa91ec_b36693b8","updated":"2016-06-27 15:17:50.000000000","message":"When it comes to a single host, c-vol has the same information as c-sched - there\u0027s no advantage to adding the extra hop. Just do the capacity check in c-vol","commit_id":"10cac9bf1d53cf70111ce9a369c0d7d71836166a"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"7e94fa59751039602fd56306d69b07649671c3f6","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Work Items"},{"line_number":123,"context_line":"----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* Add new MicroVersion in API v3."},{"line_number":126,"context_line":"* Pass the \"destination host\" and route these API calls through the"},{"line_number":127,"context_line":"  cinder-scheduler below:"},{"line_number":128,"context_line":"    \"extend volume\""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_82fce7b8","line":125,"range":{"start_line":125,"start_character":29,"end_line":125,"end_character":30},"updated":"2016-06-26 18:33:22.000000000","message":"Why does this need a microversion? No external behaviour is changed","commit_id":"10cac9bf1d53cf70111ce9a369c0d7d71836166a"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8e20abcff30e18fdb78b9cfc4d979b9e9f16f874","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Work Items"},{"line_number":123,"context_line":"----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* Add new MicroVersion in API v3."},{"line_number":126,"context_line":"* Pass the \"destination host\" and route these API calls through the"},{"line_number":127,"context_line":"  cinder-scheduler below:"},{"line_number":128,"context_line":"    \"extend volume\""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_62c9d75a","line":125,"range":{"start_line":125,"start_character":29,"end_line":125,"end_character":30},"in_reply_to":"3aaa91ec_134de799","updated":"2016-06-27 15:17:50.000000000","message":"There\u0027s no point adding a microversion - adding a version that can fail does not remove the version that is not allowed to fail, and why would anybody choose to call the new one?\n\nI don\u0027t think cleaning up an error path is an API change here.","commit_id":"10cac9bf1d53cf70111ce9a369c0d7d71836166a"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"658af05f9bfb96b12b02636b21385ec4d204c3ff","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Work Items"},{"line_number":123,"context_line":"----------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* Add new MicroVersion in API v3."},{"line_number":126,"context_line":"* Pass the \"destination host\" and route these API calls through the"},{"line_number":127,"context_line":"  cinder-scheduler below:"},{"line_number":128,"context_line":"    \"extend volume\""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_134de799","line":125,"range":{"start_line":125,"start_character":29,"end_line":125,"end_character":30},"in_reply_to":"3aaa91ec_82fce7b8","updated":"2016-06-27 07:13:01.000000000","message":"After this bp, these APIs will always be checked with the host capacity. I add a microversion here for two reasons:\nThe extend request which breaks the host\u0027s capacity will not be executed.\nThe create requests which break the host\u0027s capacity will make the voloume\u0027s status to \"error\".\n\nAre they reasonable?","commit_id":"10cac9bf1d53cf70111ce9a369c0d7d71836166a"},{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"77aea5e27186c3eb37389c8cf8524fc6959b7fc6","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"1.Add a common function to check the backend\u0027s capacity in cinder-volume layer."},{"line_number":42,"context_line":"2.For the APIs which will change the backend\u0027s capacity and don\u0027t go through"},{"line_number":43,"context_line":"cinder-scheduler should be checked with the function in step 2. The APIs are:"},{"line_number":44,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action??(os-extend)"},{"line_number":45,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"},{"line_number":46,"context_line":"  or replication)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_c9ab79d5","line":43,"range":{"start_line":43,"start_character":76,"end_line":43,"end_character":77},"updated":"2016-07-08 16:52:00.000000000","message":"The sentence above, including your reference to step 2, is unclear to me.  Something like the following might be better...  \nThe APIs which 1) change the backend\u0027s capacity and, 2) don\u0027t go through cinder-scheduler, should be directly checked. These APIs include:","commit_id":"929d475c6d82d729a03888e25ceb5c56969c4a64"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"3c81fd862d2078772f5cb7b5c90ee4ed6d9b15dd","unresolved":false,"context_lines":[{"line_number":57,"context_line":"cinder-scheduler, we could route them through the scheduler instead of jumping"},{"line_number":58,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":59,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":60,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":61,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"NOTE:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_abe0fccd","line":60,"range":{"start_line":60,"start_character":57,"end_line":60,"end_character":64},"updated":"2016-07-07 06:38:40.000000000","message":"Isn\u0027t only Capacity filter enough?","commit_id":"929d475c6d82d729a03888e25ceb5c56969c4a64"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"24d96e1660f712f9a3d4a4601b0bdb4e8ed9efac","unresolved":false,"context_lines":[{"line_number":57,"context_line":"cinder-scheduler, we could route them through the scheduler instead of jumping"},{"line_number":58,"context_line":"right to a volume-service. In this way, we could pass a \"host\" parameter to"},{"line_number":59,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":60,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":61,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"NOTE:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_41b97914","line":60,"range":{"start_line":60,"start_character":57,"end_line":60,"end_character":64},"in_reply_to":"1aa78d24_abe0fccd","updated":"2016-07-07 07:07:50.000000000","message":"Yes, it\u0027s enough at this moment. Maybe in the future, it needs check another filter? So a list here is better IMO. For now it only includes CapacityFilter.","commit_id":"929d475c6d82d729a03888e25ceb5c56969c4a64"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"3c81fd862d2078772f5cb7b5c90ee4ed6d9b15dd","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The extend volume request which will break the backend\u0027s capacity will make"},{"line_number":93,"context_line":"the volume\u0027s status be in the state it was."},{"line_number":94,"context_line":"The create volume request which will break the backend\u0027s capacity will make"},{"line_number":95,"context_line":"the volume\u0027s status to \"error\"."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_cb590837","line":94,"range":{"start_line":94,"start_character":4,"end_line":94,"end_character":10},"updated":"2016-07-07 06:38:40.000000000","message":"Why would a create volume request break backend capacity. All Default filters are checked here. Did you mean extend or create from snapshot?\n\nCorrect me If I am wrong.","commit_id":"929d475c6d82d729a03888e25ceb5c56969c4a64"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"7aca88d27ff116a29930d3fb74c9cfe995156a58","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The extend volume request which will break the backend\u0027s capacity will make"},{"line_number":93,"context_line":"the volume\u0027s status be in the state it was."},{"line_number":94,"context_line":"The create volume request which will break the backend\u0027s capacity will make"},{"line_number":95,"context_line":"the volume\u0027s status to \"error\"."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_e9be6b63","line":94,"range":{"start_line":94,"start_character":4,"end_line":94,"end_character":10},"in_reply_to":"1aa78d24_6162b5d9","updated":"2016-07-07 16:16:08.000000000","message":"IMO its better to be explicit here","commit_id":"929d475c6d82d729a03888e25ceb5c56969c4a64"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"24d96e1660f712f9a3d4a4601b0bdb4e8ed9efac","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The extend volume request which will break the backend\u0027s capacity will make"},{"line_number":93,"context_line":"the volume\u0027s status be in the state it was."},{"line_number":94,"context_line":"The create volume request which will break the backend\u0027s capacity will make"},{"line_number":95,"context_line":"the volume\u0027s status to \"error\"."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_6162b5d9","line":94,"range":{"start_line":94,"start_character":4,"end_line":94,"end_character":10},"in_reply_to":"1aa78d24_cb590837","updated":"2016-07-07 07:07:50.000000000","message":"here \"create\" means create from snapshot, volume or replication.","commit_id":"929d475c6d82d729a03888e25ceb5c56969c4a64"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"98ae8e2dbc1b9f6cd4e34254d8e2aeb3bea487ed","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Notifications impact"},{"line_number":85,"context_line":"--------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"None"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Other end user impact"},{"line_number":90,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_53334c14","line":87,"range":{"start_line":87,"start_character":0,"end_line":87,"end_character":4},"updated":"2016-07-20 08:29:12.000000000","message":"We should probably emit a notification when an action is blocked because a host is at capacity - it\u0027s the kind of thing an admin likes to know about","commit_id":"152af62b9dab422e955cb8a06772cde94c67d9a5"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"9d76f8c2de98d117b3e81edcef891500e6ac18c7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Notifications impact"},{"line_number":85,"context_line":"--------------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"None"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Other end user impact"},{"line_number":90,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_4ef0bf67","line":87,"range":{"start_line":87,"start_character":0,"end_line":87,"end_character":4},"in_reply_to":"dada55a8_53334c14","updated":"2016-07-20 08:43:09.000000000","message":"Nice point, thanks, duncan.","commit_id":"152af62b9dab422e955cb8a06772cde94c67d9a5"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"0cd2071c1783e816532fd55dab9c081b043f6718","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Usually, the capacity is a hard limit for the specified backend. It means that"},{"line_number":34,"context_line":"every action to this kind of backend should keep its capacity. We should not"},{"line_number":35,"context_line":"break the capability of the backend which support the thin provisioning."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_7683f956","line":35,"range":{"start_line":33,"start_character":0,"end_line":35,"end_character":71},"updated":"2016-07-29 07:40:16.000000000","message":"I\u0027m not sure I agree with the working of this second exactly, but it makes no material difference to the proposal. The limits mean different things to different people. Those who\u0027ve been using cinder long enough reduce the capacity / ratio to allow headroom for these operations. There\u0027s still value to this proposal I think, though I\u0027m not sure if we should default to capacity becoming a hard limit - this may break existing configs. Not going to get an easy answer here however, and it is something easily tweaked in the code, so no point blocking at this stage.","commit_id":"f6b2783b8c8a583ec8188d59b90380f4a6e65957"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b342f5392c39107be3e4cc3fe49224b07533329e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Usually, the capacity is a hard limit for the specified backend. It means that"},{"line_number":34,"context_line":"every action to this kind of backend should keep its capacity. We should not"},{"line_number":35,"context_line":"break the capability of the backend which support the thin provisioning."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_499f3ab4","line":35,"range":{"start_line":33,"start_character":0,"end_line":35,"end_character":71},"in_reply_to":"bacf61ea_7683f956","updated":"2016-07-29 08:06:31.000000000","message":"I get your point here and maybe I need explain more, the capacity is a hard limit only when that Cinder is working with the CapacityFilter(it is one of the default filters in Cinder). If the cinder admin doesn\u0027t want to use this filter, we don\u0027t need check it at the drvier layer absolutely. This can be done easily by the code IMO. I can add these if need another patch set.","commit_id":"f6b2783b8c8a583ec8188d59b90380f4a6e65957"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"0cd2071c1783e816532fd55dab9c081b043f6718","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  or replication)"},{"line_number":47,"context_line":"* POST http://IP:8776/v2/{project_id}/consistencygroups/create_from_src"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"If the APIs don\u0027t pass the check, the volume\u0027s status will translate to \"error\""},{"line_number":50,"context_line":"Add a common function to check the backend\u0027s capacity. We will do this at the"},{"line_number":51,"context_line":"volume layer."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_9645cd18","line":49,"range":{"start_line":49,"start_character":73,"end_line":49,"end_character":78},"updated":"2016-07-29 07:40:16.000000000","message":"The problem here is that you\u0027ve now caused a customer to loose access to their data in the case of an extend. That should probably just generate an error notification and leave the volume as it was.\n\nCreate snap can put the new snap in error, no data loss.\n\nCreate volume from snap, and clone volume can both put the new volume in error, no data loss.\n\n[edit: I see this is actually covered below, and correct there.]","commit_id":"f6b2783b8c8a583ec8188d59b90380f4a6e65957"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b342f5392c39107be3e4cc3fe49224b07533329e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  or replication)"},{"line_number":47,"context_line":"* POST http://IP:8776/v2/{project_id}/consistencygroups/create_from_src"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"If the APIs don\u0027t pass the check, the volume\u0027s status will translate to \"error\""},{"line_number":50,"context_line":"Add a common function to check the backend\u0027s capacity. We will do this at the"},{"line_number":51,"context_line":"volume layer."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_56e195cf","line":49,"range":{"start_line":49,"start_character":73,"end_line":49,"end_character":78},"in_reply_to":"bacf61ea_9645cd18","updated":"2016-07-29 08:06:31.000000000","message":"Oh, yes, I forgot to fix here. I\u0027ll fix it if need another patch set. Thanks.","commit_id":"f6b2783b8c8a583ec8188d59b90380f4a6e65957"}],"specs/ocata/inspection-mechanism-for-capacity-limited-host.rst":[{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"f78187075809c2055b91b45b8a1217068957c483","unresolved":false,"context_lines":[{"line_number":53,"context_line":"the volume\u0027s status be in the state it was."},{"line_number":54,"context_line":"2.The create volume from snapshot, volume or replication request which will"},{"line_number":55,"context_line":"break the backend\u0027s capacity will make the volume\u0027s status to \"error\"."},{"line_number":56,"context_line":"3.If the cinder admin doesn\u0027t want to use the CapacityFilter, we don\u0027t need"},{"line_number":57,"context_line":"check this limit at the driver layer absolutely."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":12,"id":"9ad45d7e_54bdedb5","line":56,"range":{"start_line":56,"start_character":71,"end_line":56,"end_character":75},"updated":"2016-08-10 13:38:53.000000000","message":"Minor suggestion for clarification:  s/If the cinder admin doesn\u0027t want to use the CapacityFilter, we don\u0027t need check this limit at the driver layer absolutely./The cinder admin isn\u0027t required to use the CapacityFilter, since the volume capacity limit doesn\u0027t need to be checked at the driver layer./","commit_id":"300caf164a39b24e1334e731f329a330371f0d4b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"994ac13b21d54ef07d8007c17a8c69caf0ba5590","unresolved":false,"context_lines":[{"line_number":23,"context_line":"It means that some APIs which go to the backend directly without"},{"line_number":24,"context_line":"cinder-scheduler doesn\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"},{"line_number":26,"context_line":"capacity. Such as \"extend volume\", \"create volume from snapshot\", \"copy volume\""},{"line_number":27,"context_line":"and so on."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a6eadb0_50daadea","line":26,"updated":"2016-12-19 00:51:08.000000000","message":"\"extend_volume\" goes through the scheduler now:\n\nhttps://review.openstack.org/#/c/405578/","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"4518a8dd6b21d2e7c7cfa46ef3a5fce87c2686f6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"It means that some APIs which go to the backend directly without"},{"line_number":24,"context_line":"cinder-scheduler doesn\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"},{"line_number":26,"context_line":"capacity. Such as \"extend volume\", \"create volume from snapshot\", \"copy volume\""},{"line_number":27,"context_line":"and so on."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a3c09a3_0fc33a39","line":26,"in_reply_to":"1a6eadb0_50daadea","updated":"2017-01-17 02:24:41.000000000","message":"Got it,I\u0027ll update a new one. But according to the bug fix, it used the Alternatives in my spec. I\u0027m confused now that which is the right way here?","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"82b9db0aead2cb000085343cf60844bcdd49a5ab","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Proposed change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"1.Add a common function to check the backend\u0027s capacity in cinder-volume layer."},{"line_number":44,"context_line":"2.The APIs which 1) change the backend\u0027s capacity and, 2) don\u0027t go through"},{"line_number":45,"context_line":"cinder-scheduler, should be directly checked. These APIs include:"},{"line_number":46,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes/{volume_id}/action??(os-extend)"},{"line_number":47,"context_line":"* POST http://IP:8776/v2/{project_id}/volumes  (create from snapshot, volume"},{"line_number":48,"context_line":"  or replication)"},{"line_number":49,"context_line":"* POST http://IP:8776/v2/{project_id}/consistencygroups/create_from_src"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"NOTE:"},{"line_number":52,"context_line":"1.The extend volume request which will break the backend\u0027s capacity will make"},{"line_number":53,"context_line":"the volume\u0027s status be in the state it was."},{"line_number":54,"context_line":"2.The create volume from snapshot, volume or replication request which will"},{"line_number":55,"context_line":"break the backend\u0027s capacity will make the volume\u0027s status to \"error\"."},{"line_number":56,"context_line":"3.The cinder admin isn\u0027t required to use the CapacityFilter, since the volume"},{"line_number":57,"context_line":"capacity limit doesn\u0027t need to be checked at the driver layer."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a430d35_55c99277","line":57,"range":{"start_line":43,"start_character":0,"end_line":57,"end_character":62},"updated":"2017-02-06 09:15:54.000000000","message":"We can reorganise this section for better reading experience.\n\n1. Please leave a blank space after comma. (1. Add a common..)\n2. Pleass add a new line before\u0026after list items.\n3. We don\u0027t need to describe API with address section \u0027http://IP:8776/v2\u0027 is involved.","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"fd9b9975c77dce41a29d29f0d89d2de3f48b558b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2.The create volume from snapshot, volume or replication request which will"},{"line_number":55,"context_line":"break the backend\u0027s capacity will make the volume\u0027s status to \"error\"."},{"line_number":56,"context_line":"3.The cinder admin isn\u0027t required to use the CapacityFilter, since the volume"},{"line_number":57,"context_line":"capacity limit doesn\u0027t need to be checked at the driver layer."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a77a97e_93f02193","line":57,"range":{"start_line":57,"start_character":49,"end_line":57,"end_character":61},"updated":"2016-11-18 02:42:41.000000000","message":"driver layer? or cinder-volume layer? And How to decide whether to use the capacity limit check in driver layer?","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"4518a8dd6b21d2e7c7cfa46ef3a5fce87c2686f6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2.The create volume from snapshot, volume or replication request which will"},{"line_number":55,"context_line":"break the backend\u0027s capacity will make the volume\u0027s status to \"error\"."},{"line_number":56,"context_line":"3.The cinder admin isn\u0027t required to use the CapacityFilter, since the volume"},{"line_number":57,"context_line":"capacity limit doesn\u0027t need to be checked at the driver layer."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a3c09a3_8fe56add","line":57,"range":{"start_line":57,"start_character":49,"end_line":57,"end_character":61},"in_reply_to":"7a77a97e_93f02193","updated":"2017-01-17 02:24:41.000000000","message":"i\u0027ll explain it in the next patch set","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"fd9b9975c77dce41a29d29f0d89d2de3f48b558b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":67,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"NOTE:"},{"line_number":70,"context_line":"1. We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":71,"context_line":"to keep backward compatibility."},{"line_number":72,"context_line":"2. The create actions will always call through the cinder-scheduler, even if"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a77a97e_b3a8bd78","line":69,"updated":"2016-11-18 02:42:41.000000000","message":"I think the microversion of API should also be considered to keep backward compatibility.","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"4518a8dd6b21d2e7c7cfa46ef3a5fce87c2686f6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"cinder-scheduler will only check the specified host with filters. If all"},{"line_number":67,"context_line":"filters pass, it means that the POST action is allowed."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"NOTE:"},{"line_number":70,"context_line":"1. We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":71,"context_line":"to keep backward compatibility."},{"line_number":72,"context_line":"2. The create actions will always call through the cinder-scheduler, even if"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a3c09a3_6fbd9eb6","line":69,"in_reply_to":"7a77a97e_b3a8bd78","updated":"2017-01-17 02:24:41.000000000","message":"According Duncan\u0027s previous review, we don\u0027t need a microversion here. Any other idea? please explain more.","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"fd9b9975c77dce41a29d29f0d89d2de3f48b558b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"REST API impact"},{"line_number":81,"context_line":"---------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"None"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Security impact"},{"line_number":86,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a77a97e_d3de1910","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":4},"updated":"2016-11-18 02:42:41.000000000","message":"That will change the behavior of those APIs, so we should write the impact here.","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"82b9db0aead2cb000085343cf60844bcdd49a5ab","unresolved":false,"context_lines":[{"line_number":80,"context_line":"REST API impact"},{"line_number":81,"context_line":"---------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"None"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Security impact"},{"line_number":86,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a430d35_f59c3e5f","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":4},"in_reply_to":"7a77a97e_d3de1910","updated":"2017-02-06 09:15:54.000000000","message":"+1","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"4518a8dd6b21d2e7c7cfa46ef3a5fce87c2686f6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"REST API impact"},{"line_number":81,"context_line":"---------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"None"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Security impact"},{"line_number":86,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a3c09a3_efd0aef8","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":4},"in_reply_to":"7a77a97e_d3de1910","updated":"2017-01-17 02:24:41.000000000","message":"i\u0027ll update it in the next patch set.","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"82b9db0aead2cb000085343cf60844bcdd49a5ab","unresolved":false,"context_lines":[{"line_number":91,"context_line":"--------------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"When the inspection is not passed, a notification should be emitted to show"},{"line_number":94,"context_line":"that the action is blocked because the destination host is at capacity."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Other end user impact"},{"line_number":97,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a430d35_15f9ca80","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":70},"updated":"2017-02-06 09:15:54.000000000","message":"What do you mean by \u0027at capacity\u0027?","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"82b9db0aead2cb000085343cf60844bcdd49a5ab","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"* Add a common check function at the cinder-volume layer."},{"line_number":133,"context_line":"* Call this check function in these APIs:"},{"line_number":134,"context_line":"    \"extend volume\""},{"line_number":135,"context_line":"    \"create volume from snapshot\""},{"line_number":136,"context_line":"    \"copy volume\""},{"line_number":137,"context_line":"    \"create volume from replication\""},{"line_number":138,"context_line":"    \"create cg from source\""},{"line_number":139,"context_line":"* Add and update the unit test."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a430d35_b515569c","line":138,"range":{"start_line":134,"start_character":3,"end_line":138,"end_character":27},"updated":"2017-02-06 09:15:54.000000000","message":"Please decorate these with lists.","commit_id":"2790dbab9ec7f3feb00d3dc5d7ab5e3ac153d940"}],"specs/pike/inspection-mechanism-for-capacity-limited-host.rst":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a8834e3f07459b319638f41d81c30c12b8a0679d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"It means that some APIs which go to the backend directly without"},{"line_number":24,"context_line":"cinder-scheduler doesn\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"},{"line_number":26,"context_line":"capacity. Such as \"extend volume\", \"create volume from snapshot\", \"copy volume\""},{"line_number":27,"context_line":"and so on."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_373f5688","line":26,"range":{"start_line":26,"start_character":19,"end_line":26,"end_character":32},"updated":"2017-02-23 21:04:58.000000000","message":"extend volume goes through the scheduler now.","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f0673924a03fbb20c0dfdb40fc29c998a19dc868","unresolved":false,"context_lines":[{"line_number":23,"context_line":"It means that some APIs which go to the backend directly without"},{"line_number":24,"context_line":"cinder-scheduler doesn\u0027t get and check the \"reserved_percentage\" and the"},{"line_number":25,"context_line":"\"max_over_subscription_ratio\" of the backend. Then it may break the backend\u0027s"},{"line_number":26,"context_line":"capacity. Such as \"extend volume\", \"create volume from snapshot\", \"copy volume\""},{"line_number":27,"context_line":"and so on."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_cd6d74cd","line":26,"range":{"start_line":26,"start_character":19,"end_line":26,"end_character":32},"in_reply_to":"da36d5c6_373f5688","updated":"2017-02-24 14:03:15.000000000","message":"Yeah, I have mentioned below. L46 and L52","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"56381649978d33098b68266ef734f922962f381f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Alternatives"},{"line_number":69,"context_line":"------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"1. Add a common function to check the backend\u0027s capacity in cinder-volume"},{"line_number":72,"context_line":"layer."},{"line_number":73,"context_line":"2. The APIs which 1) change the backend\u0027s capacity and, 2) don\u0027t go through"},{"line_number":74,"context_line":"cinder-scheduler, should be directly checked."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_fd9cbdc1","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":6},"updated":"2017-02-23 21:34:23.000000000","message":"https://review.openstack.org/#/c/437677/ \u003c- This is my attempt to address similar issue with creating snapshots at VolumeManager level.","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f0673924a03fbb20c0dfdb40fc29c998a19dc868","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Alternatives"},{"line_number":69,"context_line":"------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"1. Add a common function to check the backend\u0027s capacity in cinder-volume"},{"line_number":72,"context_line":"layer."},{"line_number":73,"context_line":"2. The APIs which 1) change the backend\u0027s capacity and, 2) don\u0027t go through"},{"line_number":74,"context_line":"cinder-scheduler, should be directly checked."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_ed7078a6","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":6},"in_reply_to":"da36d5c6_fd9cbdc1","updated":"2017-02-24 14:03:15.000000000","message":"Cool, will update later.","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e233c485140645103a325396caca1eec7b88b750","unresolved":false,"context_lines":[{"line_number":89,"context_line":"REST API impact"},{"line_number":90,"context_line":"---------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The volumes created by these related APIs will be error if the capacity check"},{"line_number":93,"context_line":"is not passed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Security impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_f25f8ce2","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":14},"updated":"2017-02-23 21:23:20.000000000","message":"nit: We can remove this section - it\u0027s not really an API impact and this is listed in other end user impact.","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f0673924a03fbb20c0dfdb40fc29c998a19dc868","unresolved":false,"context_lines":[{"line_number":89,"context_line":"REST API impact"},{"line_number":90,"context_line":"---------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The volumes created by these related APIs will be error if the capacity check"},{"line_number":93,"context_line":"is not passed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Security impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_2d67f0e9","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":14},"in_reply_to":"da36d5c6_f25f8ce2","updated":"2017-02-24 14:03:15.000000000","message":"Done","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e233c485140645103a325396caca1eec7b88b750","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Notifications impact"},{"line_number":101,"context_line":"--------------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When the inspection is not passed, a notification should be emitted to show"},{"line_number":104,"context_line":"that the action is blocked because the destination host is at capacity."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Other end user impact"},{"line_number":107,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_12d7c04b","line":104,"range":{"start_line":103,"start_character":0,"end_line":104,"end_character":71},"updated":"2017-02-23 21:23:20.000000000","message":"I don\u0027t think a notification is required. Let\u0027s just do a user message ([1]) that can inform our user about fate of his volume.\n\n[1] https://docs.openstack.org/developer/cinder/devref/user_messages.html","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f0673924a03fbb20c0dfdb40fc29c998a19dc868","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Notifications impact"},{"line_number":101,"context_line":"--------------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When the inspection is not passed, a notification should be emitted to show"},{"line_number":104,"context_line":"that the action is blocked because the destination host is at capacity."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Other end user impact"},{"line_number":107,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_8d9e1cb7","line":104,"range":{"start_line":103,"start_character":0,"end_line":104,"end_character":71},"in_reply_to":"da36d5c6_12d7c04b","updated":"2017-02-24 14:03:15.000000000","message":"Done","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e233c485140645103a325396caca1eec7b88b750","unresolved":false,"context_lines":[{"line_number":112,"context_line":"Performance Impact"},{"line_number":113,"context_line":"------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"None"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Other deployer impact"},{"line_number":118,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_b2efd4e7","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":4},"updated":"2017-02-23 21:23:20.000000000","message":"There is a negligible performance impact from having more RPC calls, but it\u0027s nothing we need to write about.","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f0673924a03fbb20c0dfdb40fc29c998a19dc868","unresolved":false,"context_lines":[{"line_number":112,"context_line":"Performance Impact"},{"line_number":113,"context_line":"------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"None"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Other deployer impact"},{"line_number":118,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_cda49409","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":4},"in_reply_to":"da36d5c6_b2efd4e7","updated":"2017-02-24 14:03:15.000000000","message":"OK, will add it.","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e233c485140645103a325396caca1eec7b88b750","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"* Let those requests go through the Cinder-Scheduler with the host name, then"},{"line_number":141,"context_line":"check it with \"backend_passes_filters\" function. It includes:"},{"line_number":142,"context_line":"1. create volume from volume, snapshot or replication"},{"line_number":143,"context_line":"2. create cg from source"},{"line_number":144,"context_line":"3. create group from source"},{"line_number":145,"context_line":"* Add and update the unit test."}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_72971c48","line":142,"range":{"start_line":142,"start_character":42,"end_line":142,"end_character":53},"updated":"2017-02-23 21:23:20.000000000","message":"replica","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f0673924a03fbb20c0dfdb40fc29c998a19dc868","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"* Let those requests go through the Cinder-Scheduler with the host name, then"},{"line_number":141,"context_line":"check it with \"backend_passes_filters\" function. It includes:"},{"line_number":142,"context_line":"1. create volume from volume, snapshot or replication"},{"line_number":143,"context_line":"2. create cg from source"},{"line_number":144,"context_line":"3. create group from source"},{"line_number":145,"context_line":"* Add and update the unit test."}],"source_content_type":"text/x-rst","patch_set":16,"id":"da36d5c6_cd7bb479","line":142,"range":{"start_line":142,"start_character":42,"end_line":142,"end_character":53},"in_reply_to":"da36d5c6_72971c48","updated":"2017-02-24 14:03:15.000000000","message":"Done","commit_id":"f54b9cc745e488613d80ea6f19262d9b7050a14d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0f7ff66f064e75feb4536f42d70c12adadf84c65","unresolved":false,"context_lines":[{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Usually, the capacity is a hard limit for the specified backend when Cinder"},{"line_number":34,"context_line":"works with the CapacityFilter(It is one of the default filters in Cinder). It"},{"line_number":35,"context_line":"means that every action to this kind of backend should keep its capacity. We"},{"line_number":36,"context_line":"should not break the capability of the backend which support the thin"},{"line_number":37,"context_line":"provisioning."}],"source_content_type":"text/x-rst","patch_set":19,"id":"7f231b9d_17620baf","line":34,"range":{"start_line":34,"start_character":28,"end_line":34,"end_character":30},"updated":"2017-06-14 20:40:35.000000000","message":"need a space here","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6ef84dee4fb202e324b98493e2b8d0c4c1425dd0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Usually, the capacity is a hard limit for the specified backend when Cinder"},{"line_number":34,"context_line":"works with the CapacityFilter(It is one of the default filters in Cinder). It"},{"line_number":35,"context_line":"means that every action to this kind of backend should keep its capacity. We"},{"line_number":36,"context_line":"should not break the capability of the backend which support the thin"},{"line_number":37,"context_line":"provisioning."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f1d235d_7ecbc571","line":34,"range":{"start_line":34,"start_character":28,"end_line":34,"end_character":30},"in_reply_to":"7f231b9d_17620baf","updated":"2017-07-10 01:59:38.000000000","message":"Done","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0f7ff66f064e75feb4536f42d70c12adadf84c65","unresolved":false,"context_lines":[{"line_number":53,"context_line":"* POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The problem for the extend API is solved by a bug fix[1] recently."},{"line_number":56,"context_line":"In the patch, it pass a \"volume\" parameter which include the host name to"},{"line_number":57,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":58,"context_line":"cinder-scheduler will only check the specified host with"},{"line_number":59,"context_line":"``backend_passes_filters`` function. If no error raises, it means that the POST"}],"source_content_type":"text/x-rst","patch_set":19,"id":"7f231b9d_f70b0fd3","line":56,"range":{"start_line":56,"start_character":53,"end_line":56,"end_character":55},"updated":"2017-06-14 20:40:35.000000000","message":"includes","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0f7ff66f064e75feb4536f42d70c12adadf84c65","unresolved":false,"context_lines":[{"line_number":53,"context_line":"* POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The problem for the extend API is solved by a bug fix[1] recently."},{"line_number":56,"context_line":"In the patch, it pass a \"volume\" parameter which include the host name to"},{"line_number":57,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":58,"context_line":"cinder-scheduler will only check the specified host with"},{"line_number":59,"context_line":"``backend_passes_filters`` function. If no error raises, it means that the POST"}],"source_content_type":"text/x-rst","patch_set":19,"id":"7f231b9d_77725f7d","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":21},"updated":"2017-06-14 20:40:35.000000000","message":"passes","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6ef84dee4fb202e324b98493e2b8d0c4c1425dd0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"* POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The problem for the extend API is solved by a bug fix[1] recently."},{"line_number":56,"context_line":"In the patch, it pass a \"volume\" parameter which include the host name to"},{"line_number":57,"context_line":"cinder-scheduler to indicate that the destination host is specified. Then"},{"line_number":58,"context_line":"cinder-scheduler will only check the specified host with"},{"line_number":59,"context_line":"``backend_passes_filters`` function. If no error raises, it means that the POST"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f1d235d_9ecea181","line":56,"range":{"start_line":56,"start_character":53,"end_line":56,"end_character":55},"in_reply_to":"7f231b9d_f70b0fd3","updated":"2017-07-10 01:59:38.000000000","message":"Done","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0f7ff66f064e75feb4536f42d70c12adadf84c65","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"NOTE:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":67,"context_line":"  to keep backward compatibility for each related API."},{"line_number":68,"context_line":"- The create actions will always call through the cinder-scheduler, even if"},{"line_number":69,"context_line":"  the destination host is specified."}],"source_content_type":"text/x-rst","patch_set":19,"id":"7f231b9d_d70c93ed","line":66,"range":{"start_line":66,"start_character":2,"end_line":66,"end_character":15},"updated":"2017-06-14 20:40:35.000000000","message":"We need to bump","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6ef84dee4fb202e324b98493e2b8d0c4c1425dd0","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"NOTE:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":67,"context_line":"  to keep backward compatibility for each related API."},{"line_number":68,"context_line":"- The create actions will always call through the cinder-scheduler, even if"},{"line_number":69,"context_line":"  the destination host is specified."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f1d235d_5ec80973","line":66,"range":{"start_line":66,"start_character":2,"end_line":66,"end_character":15},"in_reply_to":"7f231b9d_d70c93ed","updated":"2017-07-10 01:59:38.000000000","message":"Done","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0f7ff66f064e75feb4536f42d70c12adadf84c65","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":67,"context_line":"  to keep backward compatibility for each related API."},{"line_number":68,"context_line":"- The create actions will always call through the cinder-scheduler, even if"},{"line_number":69,"context_line":"  the destination host is specified."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"7f231b9d_d725b35d","line":69,"range":{"start_line":68,"start_character":2,"end_line":69,"end_character":36},"updated":"2017-06-14 20:40:35.000000000","message":"Should clarify that the old behavior is kept, however, if the API level requirement is not met.  Right?","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6ef84dee4fb202e324b98493e2b8d0c4c1425dd0","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- We need bump the RPC call\u0027s version between cinder-api and cinder-scheduler"},{"line_number":67,"context_line":"  to keep backward compatibility for each related API."},{"line_number":68,"context_line":"- The create actions will always call through the cinder-scheduler, even if"},{"line_number":69,"context_line":"  the destination host is specified."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f1d235d_1eb731db","line":69,"range":{"start_line":68,"start_character":2,"end_line":69,"end_character":36},"in_reply_to":"7f231b9d_d725b35d","updated":"2017-07-10 01:59:38.000000000","message":"Done","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0f7ff66f064e75feb4536f42d70c12adadf84c65","unresolved":false,"context_lines":[{"line_number":113,"context_line":"Performance Impact"},{"line_number":114,"context_line":"------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"The related requests will go through Cinder-scheduler now. It\u0027 will lead a"},{"line_number":117,"context_line":"little RPC performance impact."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":19,"id":"7f231b9d_d7da5349","line":116,"range":{"start_line":116,"start_character":72,"end_line":116,"end_character":74},"updated":"2017-06-14 20:40:35.000000000","message":"to a","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6ef84dee4fb202e324b98493e2b8d0c4c1425dd0","unresolved":false,"context_lines":[{"line_number":113,"context_line":"Performance Impact"},{"line_number":114,"context_line":"------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"The related requests will go through Cinder-scheduler now. It\u0027 will lead a"},{"line_number":117,"context_line":"little RPC performance impact."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3f1d235d_beb5ddcf","line":116,"range":{"start_line":116,"start_character":72,"end_line":116,"end_character":74},"in_reply_to":"7f231b9d_d7da5349","updated":"2017-07-10 01:59:38.000000000","message":"Done","commit_id":"064d633a7621fc9a882d98c9e4d370466ae50d16"}],"specs/queens/inspection-mechanism-for-capacity-limited-host.rst":[{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"28ec3951f1d871210b2e0842ff58e2fddf568125","unresolved":false,"context_lines":[{"line_number":66,"context_line":"- We need to bump the RPC call\u0027s version between cinder-api and"},{"line_number":67,"context_line":"  cinder-scheduler to keep backward compatibility for each related API."},{"line_number":68,"context_line":"- The create actions will always call through the cinder-scheduler, even if"},{"line_number":69,"context_line":"  the destination host is specified. It the cinder-scheduler can\u0027t match the"},{"line_number":70,"context_line":"  new RPC version, the old behavior is kept."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f1d235d_05bfc0fb","line":69,"range":{"start_line":69,"start_character":37,"end_line":69,"end_character":39},"updated":"2017-07-10 22:26:04.000000000","message":"s/It/If/","commit_id":"9c936a652506a3f1bd8b196355ad701dbf85d574"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"715b50aeb322de2728b9dbccf5f8c4964965631f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"- We need to bump the RPC call\u0027s version between cinder-api and"},{"line_number":67,"context_line":"  cinder-scheduler to keep backward compatibility for each related API."},{"line_number":68,"context_line":"- The create actions will always call through the cinder-scheduler, even if"},{"line_number":69,"context_line":"  the destination host is specified. It the cinder-scheduler can\u0027t match the"},{"line_number":70,"context_line":"  new RPC version, the old behavior is kept."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":20,"id":"bf3e73b7_2ce41eac","line":69,"range":{"start_line":69,"start_character":37,"end_line":69,"end_character":39},"in_reply_to":"3f1d235d_05bfc0fb","updated":"2017-08-07 08:00:47.000000000","message":"Done","commit_id":"9c936a652506a3f1bd8b196355ad701dbf85d574"},{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"28ec3951f1d871210b2e0842ff58e2fddf568125","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"NOTE:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- The create volume from snapshot, volume or replica request which will"},{"line_number":83,"context_line":"  break the backend\u0027s capacity will make the volume\u0027s status to \"error\"."},{"line_number":84,"context_line":"- The cinder admin isn\u0027t required to use the ``CapacityFilter``, since the"},{"line_number":85,"context_line":"  volume capacity limit doesn\u0027t need to be checked at the driver layer."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3f1d235d_c5d2e834","line":83,"range":{"start_line":82,"start_character":2,"end_line":83,"end_character":70},"updated":"2017-07-10 22:26:04.000000000","message":"s/The create volume from snapshot, volume or replica request which will break the backend\u0027s capacity will make the volume\u0027s status to \"error\"./Create volume requests for a snapshot, volume, or replica will change the backend\u0027s capacity, and will therefore cause the volume\u0027s status to switch to \"error\"./","commit_id":"9c936a652506a3f1bd8b196355ad701dbf85d574"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"715b50aeb322de2728b9dbccf5f8c4964965631f","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"NOTE:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- The create volume from snapshot, volume or replica request which will"},{"line_number":83,"context_line":"  break the backend\u0027s capacity will make the volume\u0027s status to \"error\"."},{"line_number":84,"context_line":"- The cinder admin isn\u0027t required to use the ``CapacityFilter``, since the"},{"line_number":85,"context_line":"  volume capacity limit doesn\u0027t need to be checked at the driver layer."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"bf3e73b7_6cda26ea","line":83,"range":{"start_line":82,"start_character":2,"end_line":83,"end_character":70},"in_reply_to":"3f1d235d_c5d2e834","updated":"2017-08-07 08:00:47.000000000","message":"Done","commit_id":"9c936a652506a3f1bd8b196355ad701dbf85d574"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"f4c659cb0274931780c70717b68aeff9a5af31bb","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  cinder-scheduler, should be directly checked. It includes:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  * POST /v3/{project_id}/volumes/{volume_id}/action  (os-extend)  (SOLVED)[2]"},{"line_number":49,"context_line":"  * POST /v3/{project_id}/volumes  (create from snapshot, volume or replica)"},{"line_number":50,"context_line":"  * POST /v3/{project_id}/consistencygroups/create_from_src"},{"line_number":51,"context_line":"  * POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":52,"context_line":"  * POST /v3/{project_id}/snapshots"}],"source_content_type":"text/x-rst","patch_set":21,"id":"7f287b81_af6883b8","line":49,"range":{"start_line":49,"start_character":4,"end_line":49,"end_character":76},"updated":"2017-08-28 06:32:29.000000000","message":"I was thinking that there is another case: restore backup to existing volume.  That also may change the capacity of host. Maybe we should consider it too.","commit_id":"f27e5613f4e0ac37f3467193a1591233af6cb1d0"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"ad19f55b7b91848dee0df5d6c426b4496477b8a3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  cinder-scheduler, should be directly checked. It includes:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  * POST /v3/{project_id}/volumes/{volume_id}/action  (os-extend)  (SOLVED)[2]"},{"line_number":49,"context_line":"  * POST /v3/{project_id}/volumes  (create from snapshot, volume or replica)"},{"line_number":50,"context_line":"  * POST /v3/{project_id}/consistencygroups/create_from_src"},{"line_number":51,"context_line":"  * POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":52,"context_line":"  * POST /v3/{project_id}/snapshots"}],"source_content_type":"text/x-rst","patch_set":21,"id":"5f2577a7_ea56672a","line":49,"range":{"start_line":49,"start_character":4,"end_line":49,"end_character":76},"in_reply_to":"7f287b81_af6883b8","updated":"2017-09-15 17:24:28.000000000","message":"When volume_id is not specified we would reschedule the volume to the valid backend, I am not sure what is your point of this.","commit_id":"f27e5613f4e0ac37f3467193a1591233af6cb1d0"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"f4c659cb0274931780c70717b68aeff9a5af31bb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  * POST /v3/{project_id}/volumes/{volume_id}/action  (os-extend)  (SOLVED)[2]"},{"line_number":49,"context_line":"  * POST /v3/{project_id}/volumes  (create from snapshot, volume or replica)"},{"line_number":50,"context_line":"  * POST /v3/{project_id}/consistencygroups/create_from_src"},{"line_number":51,"context_line":"  * POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":52,"context_line":"  * POST /v3/{project_id}/snapshots"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"7f287b81_8f3387f6","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":59},"updated":"2017-08-28 06:32:29.000000000","message":"Will this could not be considered anymore if we land this in Queens?","commit_id":"f27e5613f4e0ac37f3467193a1591233af6cb1d0"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"ad19f55b7b91848dee0df5d6c426b4496477b8a3","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  * POST /v3/{project_id}/volumes/{volume_id}/action  (os-extend)  (SOLVED)[2]"},{"line_number":49,"context_line":"  * POST /v3/{project_id}/volumes  (create from snapshot, volume or replica)"},{"line_number":50,"context_line":"  * POST /v3/{project_id}/consistencygroups/create_from_src"},{"line_number":51,"context_line":"  * POST /v3/{project_id}/groups/action (create_from_src)"},{"line_number":52,"context_line":"  * POST /v3/{project_id}/snapshots"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"5f2577a7_aa329f0e","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":59},"in_reply_to":"7f287b81_8f3387f6","updated":"2017-09-15 17:24:28.000000000","message":"Done","commit_id":"f27e5613f4e0ac37f3467193a1591233af6cb1d0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8bdaf4d9fc4e31a890ce91a7592d3c679552d141","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"For the APIs which will change the backend\u0027s capacity and not go through"},{"line_number":65,"context_line":"cinder-scheduler, we could route them through the scheduler instead of jumping"},{"line_number":66,"context_line":"right to a volume-service. These APIs include:"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The problem for the extend API is solved by a bug fix[2] recently."},{"line_number":69,"context_line":"In the patch, it passes a \"volume\" parameter which includes the host name to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f515b1d_fa4326ae","line":66,"range":{"start_line":66,"start_character":27,"end_line":66,"end_character":46},"updated":"2017-09-25 19:36:09.000000000","message":"Is there a list to be added? Or one that was removed that should now remove this statement?","commit_id":"a4275760e92f014c67ffbcb2c85edffd0ba35364"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"d0ff1458095fadaa356f920bc7e8e52e7d51fb21","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"For the APIs which will change the backend\u0027s capacity and not go through"},{"line_number":65,"context_line":"cinder-scheduler, we could route them through the scheduler instead of jumping"},{"line_number":66,"context_line":"right to a volume-service. These APIs include:"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The problem for the extend API is solved by a bug fix[2] recently."},{"line_number":69,"context_line":"In the patch, it passes a \"volume\" parameter which includes the host name to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f515b1d_b23ca4bf","line":66,"range":{"start_line":66,"start_character":27,"end_line":66,"end_character":46},"in_reply_to":"7f515b1d_fa4326ae","updated":"2017-09-26 07:25:49.000000000","message":"I guess so, these APIs have been moved to Proposed change Section.","commit_id":"a4275760e92f014c67ffbcb2c85edffd0ba35364"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8bdaf4d9fc4e31a890ce91a7592d3c679552d141","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Notifications impact"},{"line_number":99,"context_line":"--------------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Instead of send notifications, we\u0027d better send user messages if the actions"},{"line_number":102,"context_line":"fail."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f515b1d_ba17eea3","line":101,"range":{"start_line":101,"start_character":11,"end_line":101,"end_character":15},"updated":"2017-09-25 19:36:09.000000000","message":"sending","commit_id":"a4275760e92f014c67ffbcb2c85edffd0ba35364"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"d0ff1458095fadaa356f920bc7e8e52e7d51fb21","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Notifications impact"},{"line_number":99,"context_line":"--------------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Instead of send notifications, we\u0027d better send user messages if the actions"},{"line_number":102,"context_line":"fail."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f515b1d_72462c52","line":101,"range":{"start_line":101,"start_character":11,"end_line":101,"end_character":15},"in_reply_to":"7f515b1d_ba17eea3","updated":"2017-09-26 07:25:49.000000000","message":"Done","commit_id":"a4275760e92f014c67ffbcb2c85edffd0ba35364"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8bdaf4d9fc4e31a890ce91a7592d3c679552d141","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Other end user impact"},{"line_number":105,"context_line":"---------------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The create requests which will break the backend\u0027s capacity will make the"},{"line_number":108,"context_line":"volume\u0027s status to \"error\"."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f515b1d_7a1176ac","line":107,"range":{"start_line":107,"start_character":31,"end_line":107,"end_character":36},"updated":"2017-09-25 19:36:09.000000000","message":"Maybe \"exceed\" would be a better word that \"break\"?","commit_id":"a4275760e92f014c67ffbcb2c85edffd0ba35364"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"d0ff1458095fadaa356f920bc7e8e52e7d51fb21","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Other end user impact"},{"line_number":105,"context_line":"---------------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The create requests which will break the backend\u0027s capacity will make the"},{"line_number":108,"context_line":"volume\u0027s status to \"error\"."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f515b1d_926408e6","line":107,"range":{"start_line":107,"start_character":31,"end_line":107,"end_character":36},"in_reply_to":"7f515b1d_7a1176ac","updated":"2017-09-26 07:25:49.000000000","message":"Done","commit_id":"a4275760e92f014c67ffbcb2c85edffd0ba35364"}]}
