)]}'
{"specs/queens/approved/storage-capacity-balance.rst":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"88bcab8d14aa107795125dcbb00ac6213c7e7476","unresolved":false,"context_lines":[{"line_number":28,"context_line":"This problem can be solved by storage capacity balance strategy."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This strategy migrates volumes based on the capacity of the cinder pools."},{"line_number":31,"context_line":"It makes decision to migrate a volume whenever a pool\u0027s capacity utilization %"},{"line_number":32,"context_line":"is higher than the specified threshold. The migration of a volume should"},{"line_number":33,"context_line":"make the capacity of the pool where it locates closer to the average"},{"line_number":34,"context_line":"capacity of all cinder pools as much as possible."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f4b6375_0c49625f","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":39},"updated":"2017-10-30 02:51:26.000000000","message":"Cinder scheduler may be able to decide to allocate volume \nby pool\u0027s capacity utilization % is higher than the specified threshold using filter and goodness functions.\nhttps://docs.openstack.org/cinder/latest/admin/blockstorage-driver-filter-weighing.html#supported-operations-in-filter-and-goodness-functions","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"e83ea3442bd948f952111ace9052d6697cd7ecad","unresolved":false,"context_lines":[{"line_number":28,"context_line":"This problem can be solved by storage capacity balance strategy."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This strategy migrates volumes based on the capacity of the cinder pools."},{"line_number":31,"context_line":"It makes decision to migrate a volume whenever a pool\u0027s capacity utilization %"},{"line_number":32,"context_line":"is higher than the specified threshold. The migration of a volume should"},{"line_number":33,"context_line":"make the capacity of the pool where it locates closer to the average"},{"line_number":34,"context_line":"capacity of all cinder pools as much as possible."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f485f77_43281433","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":39},"in_reply_to":"3f4b6375_0c49625f","updated":"2017-11-14 03:57:05.000000000","message":"Hi, this strategy is mainly proposed to move the volumes between different back-ends based on actual storage capacity utilization not the allocated storage capacity.","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"22f52fb927bbe40e327a5c36b1a7f218f2619a5f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"This strategy migrates volumes based on the capacity of the cinder pools."},{"line_number":31,"context_line":"It makes decision to migrate a volume whenever a pool\u0027s capacity utilization %"},{"line_number":32,"context_line":"is higher than the specified threshold. The migration of a volume should"},{"line_number":33,"context_line":"make the capacity of the pool where it locates closer to the average"},{"line_number":34,"context_line":"capacity of all cinder pools as much as possible."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f4e5783_116c3406","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":49},"updated":"2017-10-17 03:55:10.000000000","message":"make it low to the storate capacity threshold","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"e83ea3442bd948f952111ace9052d6697cd7ecad","unresolved":false,"context_lines":[{"line_number":30,"context_line":"This strategy migrates volumes based on the capacity of the cinder pools."},{"line_number":31,"context_line":"It makes decision to migrate a volume whenever a pool\u0027s capacity utilization %"},{"line_number":32,"context_line":"is higher than the specified threshold. The migration of a volume should"},{"line_number":33,"context_line":"make the capacity of the pool where it locates closer to the average"},{"line_number":34,"context_line":"capacity of all cinder pools as much as possible."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f485f77_8031620e","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":49},"in_reply_to":"5f4e5783_116c3406","updated":"2017-11-14 03:57:05.000000000","message":"Done","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"22f52fb927bbe40e327a5c36b1a7f218f2619a5f","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"In order to:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* balance the capacity on each cinder pool, make it close to average capacity"},{"line_number":45,"context_line":"  value of all cinder pools."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f4e5783_51662c2c","line":45,"range":{"start_line":44,"start_character":44,"end_line":45,"end_character":28},"updated":"2017-10-17 03:55:10.000000000","message":"ditto","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"e83ea3442bd948f952111ace9052d6697cd7ecad","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"In order to:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* balance the capacity on each cinder pool, make it close to average capacity"},{"line_number":45,"context_line":"  value of all cinder pools."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f485f77_603426fc","line":45,"range":{"start_line":44,"start_character":44,"end_line":45,"end_character":28},"in_reply_to":"5f4e5783_51662c2c","updated":"2017-11-14 03:57:05.000000000","message":"Done","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"88bcab8d14aa107795125dcbb00ac6213c7e7476","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Use Cinder client to get all volumes with status in available or in-use"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":57,"context_line":"  according to threshold"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* Algorithm to determine migrate_volumes, source pools and destination pools."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f4b6375_4cad1ae9","line":56,"updated":"2017-10-30 02:51:26.000000000","message":"Could you please explain how to get pool\u0027s capacity utilization percentage?","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"e83ea3442bd948f952111ace9052d6697cd7ecad","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Use Cinder client to get all volumes with status in available or in-use"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":57,"context_line":"  according to threshold"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* Algorithm to determine migrate_volumes, source pools and destination pools."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f485f77_a0545e22","line":56,"in_reply_to":"3f4b6375_4cad1ae9","updated":"2017-11-14 03:57:05.000000000","message":"please check the update.","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"88bcab8d14aa107795125dcbb00ac6213c7e7476","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":57,"context_line":"  according to threshold"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* Algorithm to determine migrate_volumes, source pools and destination pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f4b6375_6c81f64a","line":59,"range":{"start_line":59,"start_character":1,"end_line":59,"end_character":11},"updated":"2017-10-30 02:51:26.000000000","message":"Could you explain algorithm more?","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"e83ea3442bd948f952111ace9052d6697cd7ecad","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":57,"context_line":"  according to threshold"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* Algorithm to determine migrate_volumes, source pools and destination pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f485f77_c0599a5a","line":59,"range":{"start_line":59,"start_character":1,"end_line":59,"end_character":11},"in_reply_to":"3f4b6375_6c81f64a","updated":"2017-11-14 03:57:05.000000000","message":"ditto","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"88bcab8d14aa107795125dcbb00ac6213c7e7476","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"2. Write the execute function to locate pool overloaded"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"3. Choose target volume and dest pool for live migration."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Dependencies"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f4b6375_acd5ae45","line":122,"range":{"start_line":122,"start_character":3,"end_line":122,"end_character":57},"updated":"2017-10-30 02:51:26.000000000","message":"we can choose only destination volume type to swap volume for attached volume.\nhttps://specs.openstack.org/openstack/watcher-specs/specs/pike/implemented/volume-migrate-action.html","commit_id":"eca3b540e84d30b7c0163f4dbb140ab54176e04a"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"cca072940727e2a6530ccbe89fc841f361c9daa1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":59,"context_line":"  factors: if a volume is mounted to a VM, volume size,if a volume is a mirrot"},{"line_number":60,"context_line":"  volumes etc."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ff82abbf_e27c2622","line":59,"range":{"start_line":59,"start_character":72,"end_line":59,"end_character":78},"updated":"2017-11-20 02:20:37.000000000","message":"mirrot?? i think you want to say mirrored??","commit_id":"f8394c936546b7d00337422c3fb0b3b329de24d2"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"4d8c10764144b3cb78569a5ca08469928b1f6f1c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":59,"context_line":"  factors: if a volume is mounted to a VM, volume size,if a volume is a mirrot"},{"line_number":60,"context_line":"  volumes etc."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ff82abbf_a632f90e","line":59,"range":{"start_line":59,"start_character":72,"end_line":59,"end_character":78},"in_reply_to":"ff82abbf_e27c2622","updated":"2017-11-28 03:00:24.000000000","message":"yep. Done","commit_id":"f8394c936546b7d00337422c3fb0b3b329de24d2"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a0353aa439c272119ff393073dd8f35e0c765463","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Storage Capacity Balance Strategy"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/storage-workload-balance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"As of now, Watcher optimizes only compute nodes."},{"line_number":14,"context_line":"Storage optimization is also an important feature for centralized storage"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df87a7cf_2cff48ab","line":11,"range":{"start_line":11,"start_character":47,"end_line":11,"end_character":71},"updated":"2017-12-03 13:44:17.000000000","message":"Can we change storage-capacity-balance?","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"eac81fff3a7d07176cb651b24c26100bc9a85455","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Storage Capacity Balance Strategy"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/storage-workload-balance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"As of now, Watcher optimizes only compute nodes."},{"line_number":14,"context_line":"Storage optimization is also an important feature for centralized storage"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f96bb07_37edeab6","line":11,"range":{"start_line":11,"start_character":47,"end_line":11,"end_character":71},"in_reply_to":"7f96bb07_b79a5a5f","updated":"2018-01-24 10:21:11.000000000","message":"YumengBao: The link was fixed by me few weeks ago. Now the link works.","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"a101a2bccda641d3be1c518551ccb98131917fb2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Storage Capacity Balance Strategy"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/storage-workload-balance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"As of now, Watcher optimizes only compute nodes."},{"line_number":14,"context_line":"Storage optimization is also an important feature for centralized storage"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df87a7cf_ee35abdb","line":11,"range":{"start_line":11,"start_character":47,"end_line":11,"end_character":71},"in_reply_to":"df87a7cf_2cff48ab","updated":"2018-01-24 10:04:38.000000000","message":"Unfortunately, this link cannot be modified now. the link is generated by the first time it is given and no more modification later.","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"54a936c97c72cd2d7870c3b1c3b77138ff71b5ec","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Storage Capacity Balance Strategy"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/storage-workload-balance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"As of now, Watcher optimizes only compute nodes."},{"line_number":14,"context_line":"Storage optimization is also an important feature for centralized storage"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f96bb07_b79a5a5f","line":11,"range":{"start_line":11,"start_character":47,"end_line":11,"end_character":71},"in_reply_to":"df87a7cf_ee35abdb","updated":"2018-01-24 10:18:47.000000000","message":"But this link seems to be worked https://blueprints.launchpad.net/watcher/+spec/storage-capacity-balance","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a0353aa439c272119ff393073dd8f35e0c765463","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Extend base strategy classes to add one new strategy - \" Storage Capacity"},{"line_number":46,"context_line":"  Balance Strategy\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Use Cinder client to get all volumes with status in available or in-use"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":51,"context_line":"  according to threshold:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df87a7cf_eca5e0b6","line":48,"updated":"2017-12-03 13:44:17.000000000","message":"and no snapshots","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a0353aa439c272119ff393073dd8f35e0c765463","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  Balance Strategy\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Use Cinder client to get all volumes with status in available or in-use"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":51,"context_line":"  according to threshold:"},{"line_number":52,"context_line":"  under_pools \u003d list(filter(lambda p: float(p.total_capacity_gb) -"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df87a7cf_acafd892","line":49,"updated":"2017-12-03 13:44:17.000000000","message":"* Use cinder client to get all pools except for the pools listed in configuration file.","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a0353aa439c272119ff393073dd8f35e0c765463","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  over_pools \u003d list(filter(lambda p: float(p.total_capacity_gb) -"},{"line_number":56,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":59,"context_line":"  factors: if a volume is mounted to a VM, volume size,if a volume is a"},{"line_number":60,"context_line":"  mirrored volumes etc."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df87a7cf_cc89fc26","line":59,"range":{"start_line":58,"start_character":72,"end_line":59,"end_character":9},"updated":"2017-12-03 13:44:17.000000000","message":"Please explain detail.","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a0353aa439c272119ff393073dd8f35e0c765463","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":59,"context_line":"  factors: if a volume is mounted to a VM, volume size,if a volume is a"},{"line_number":60,"context_line":"  mirrored volumes etc."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"},{"line_number":63,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df87a7cf_ec8e402d","line":60,"range":{"start_line":60,"start_character":19,"end_line":60,"end_character":22},"updated":"2017-12-03 13:44:17.000000000","message":"Please explain detail.","commit_id":"8d5911ac946710aa108b32a4f797f2926fc887d8"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Storage Capacity Balance Strategy"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/storage-workload-balance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"As of now, Watcher optimizes only compute nodes."},{"line_number":14,"context_line":"Storage optimization is also an important feature for centralized storage"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_277823c2","line":11,"range":{"start_line":11,"start_character":55,"end_line":11,"end_character":63},"updated":"2018-01-17 12:35:31.000000000","message":"capacity","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Storage Capacity Balance Strategy"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/storage-workload-balance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"As of now, Watcher optimizes only compute nodes."},{"line_number":14,"context_line":"Storage optimization is also an important feature for centralized storage"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_141eacba","line":11,"range":{"start_line":11,"start_character":55,"end_line":11,"end_character":63},"in_reply_to":"7f96bb07_277823c2","updated":"2018-01-24 09:55:12.000000000","message":"Done","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":53,"context_line":"  according to threshold:"},{"line_number":54,"context_line":"  under_pools \u003d list(filter(lambda p: float(p.total_capacity_gb) -"},{"line_number":55,"context_line":"  float(p.free_capacity_gb) \u003c float(p.total_capacity_gb) * threshold, pools))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"  over_pools \u003d list(filter(lambda p: float(p.total_capacity_gb) -"},{"line_number":58,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_ca7ce684","line":58,"range":{"start_line":54,"start_character":2,"end_line":58,"end_character":78},"updated":"2018-01-17 12:35:31.000000000","message":"Mark these lines as code block using ::","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":53,"context_line":"  according to threshold:"},{"line_number":54,"context_line":"  under_pools \u003d list(filter(lambda p: float(p.total_capacity_gb) -"},{"line_number":55,"context_line":"  float(p.free_capacity_gb) \u003c float(p.total_capacity_gb) * threshold, pools))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"  over_pools \u003d list(filter(lambda p: float(p.total_capacity_gb) -"},{"line_number":58,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_f47ea0e2","line":58,"range":{"start_line":54,"start_character":2,"end_line":58,"end_character":78},"in_reply_to":"7f96bb07_ca7ce684","updated":"2018-01-24 09:55:12.000000000","message":"Done","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_6a6d92ca","line":61,"updated":"2018-01-17 12:35:31.000000000","message":"new lines","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  float(p.free_capacity_gb) \u003e\u003d float(p.total_capacity_gb) * threshold, pools))"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_7453706c","line":61,"in_reply_to":"7f96bb07_6a6d92ca","updated":"2018-01-24 09:55:12.000000000","message":"Done","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_8a725eac","line":62,"updated":"2018-01-17 12:35:31.000000000","message":"ditto","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_144c6cc6","line":62,"in_reply_to":"7f96bb07_8a725eac","updated":"2018-01-24 09:55:12.000000000","message":"Done","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_2a6b0ab7","line":63,"updated":"2018-01-17 12:35:31.000000000","message":"ditto","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"* Determine migrate_volumes, source pools and destination pools based on some"},{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_344968b6","line":63,"in_reply_to":"7f96bb07_2a6b0ab7","updated":"2018-01-24 09:55:12.000000000","message":"Done","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_4a68d6b7","line":64,"updated":"2018-01-17 12:35:31.000000000","message":"ditto","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  factors:"},{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_f4cc6036","line":64,"in_reply_to":"7f96bb07_4a68d6b7","updated":"2018-01-24 09:55:12.000000000","message":"Done","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"d8dd06c67b2e2143cbfea27895bced48053a26a6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"},{"line_number":68,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_6aa272fe","line":65,"updated":"2018-01-17 12:35:31.000000000","message":"ditto","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"a6a22bfb5770f5ea18cf47d11912d2776876f51e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  ** whether a volume is mounted to a VM"},{"line_number":63,"context_line":"  ** volume size,"},{"line_number":64,"context_line":"  ** whether a volume is a mirrored volume"},{"line_number":65,"context_line":"  ** priority"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"},{"line_number":68,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7f96bb07_b4eb3876","line":65,"in_reply_to":"7f96bb07_6aa272fe","updated":"2018-01-24 09:55:12.000000000","message":"There is a new line.","commit_id":"19b0205be3a5230717dddf33bccf1de55550172c"}],"specs/queens/approved/storage-workload-balance.rst":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"b89103b93aa5d526d788c2e212242b04e9846b27","unresolved":false,"context_lines":[{"line_number":18,"context_line":"resource,which will add the followings:"},{"line_number":19,"context_line":"- Storage_workload_balancing goal"},{"line_number":20,"context_line":"- Storage workload balance strategy"},{"line_number":21,"context_line":"- New action based on swap volume"},{"line_number":22,"context_line":"  swap volume: https://blueprints.launchpad.net/nova/+spec/volume-swap"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_d3947c39","line":21,"range":{"start_line":21,"start_character":2,"end_line":21,"end_character":33},"updated":"2017-09-08 02:46:50.000000000","message":"Could you explain why this strategy does not use existing volume_migrate action?","commit_id":"4ef94e62b49a57c1dbcecc2bdbc3ef1b39125330"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"5ec4fc46459ed2c89cfe5b38844827991bed37c8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"resource,which will add the followings:"},{"line_number":19,"context_line":"- Storage_workload_balancing goal"},{"line_number":20,"context_line":"- Storage workload balance strategy"},{"line_number":21,"context_line":"- New action based on swap volume"},{"line_number":22,"context_line":"  swap volume: https://blueprints.launchpad.net/nova/+spec/volume-swap"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_3f6701ec","line":21,"range":{"start_line":21,"start_character":2,"end_line":21,"end_character":33},"in_reply_to":"7f287b81_d3947c39","updated":"2017-09-08 07:04:43.000000000","message":"yep, no need to develop new actions. Done.","commit_id":"4ef94e62b49a57c1dbcecc2bdbc3ef1b39125330"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"35ed2cf6464c5385c226aa166a832f334b51fc34","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Extend base strategy classes to add one new strategy - \" Volume Workload"},{"line_number":51,"context_line":"  Balance Strategy\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* Use Cinder client to get all volumes with staus in available or in-use"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":56,"context_line":"  according to threshold"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f287b81_2a51fdd9","line":53,"updated":"2017-09-08 08:08:59.000000000","message":"s/staus/status\n\nis it beneficial to migrate available volume, as it might be in an idle condition with no I/O operations?","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"8ca87b9830f4f9463a1e8b6dc85c8b9531328fe3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Extend base strategy classes to add one new strategy - \" Volume Workload"},{"line_number":51,"context_line":"  Balance Strategy\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* Use Cinder client to get all volumes with staus in available or in-use"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":56,"context_line":"  according to threshold"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f4b6375_9a0e5630","line":53,"in_reply_to":"5f4e5783_4606fe88","updated":"2017-10-23 02:45:45.000000000","message":"ok","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d5572c543361a09d19353841b8ec441f0943a5dc","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Extend base strategy classes to add one new strategy - \" Volume Workload"},{"line_number":51,"context_line":"  Balance Strategy\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* Use Cinder client to get all volumes with staus in available or in-use"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Group volume pools into two categories: underload or overload pools"},{"line_number":56,"context_line":"  according to threshold"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_4606fe88","line":53,"in_reply_to":"7f287b81_2a51fdd9","updated":"2017-10-11 09:59:11.000000000","message":"Yes, you\u0027re right. But I will update \"Storage Workload Balance Strategy\" to \"storage capacity balance\" to keep consistent with what will be done in code. And the reason why we do capacity balance is that capacity balance is an easier way to achieve the same goal: storage workload balance.","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"35ed2cf6464c5385c226aa166a832f334b51fc34","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  \u003cyumeng-bao\u003e,\u003cli-canwei2\u003e"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Work Items"},{"line_number":115,"context_line":"----------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1. Define proper threshold"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f287b81_8a5b51f4","line":115,"updated":"2017-09-08 08:08:59.000000000","message":"No plan to add efficacy for the goal??","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"8ca87b9830f4f9463a1e8b6dc85c8b9531328fe3","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  \u003cyumeng-bao\u003e,\u003cli-canwei2\u003e"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Work Items"},{"line_number":115,"context_line":"----------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1. Define proper threshold"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f4b6375_1a03860f","line":115,"in_reply_to":"5f4e5783_51d35a39","updated":"2017-10-23 02:45:45.000000000","message":"yes to be consistent, it can be done, but as of now we have only one strategy based on storage so it might have no meaning, as efficacy are good ways to compare strategy. But it also gives a good idea what will happen after executing action plan, so you can add it.","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d5572c543361a09d19353841b8ec441f0943a5dc","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  \u003cyumeng-bao\u003e,\u003cli-canwei2\u003e"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Work Items"},{"line_number":115,"context_line":"----------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1. Define proper threshold"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_51d35a39","line":115,"in_reply_to":"7f287b81_8a5b51f4","updated":"2017-10-11 09:59:11.000000000","message":"It seems we only have compute efficacy now. if we want to add efficacy for this goal, we may need to add a new storage efficacy, which can be done as a new blueprint. What do you think?\nhttps://github.com/openstack/watcher/blob/3a3ce0268bbb900c0ca3fe40379beda574a4d548/watcher/decision_engine/solution/efficacy.py#L78","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"35ed2cf6464c5385c226aa166a832f334b51fc34","unresolved":false,"context_lines":[{"line_number":123,"context_line":"Dependencies"},{"line_number":124,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* https://blueprints.launchpad.net/watcher/+spec/cinder-model-integration"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Testing"},{"line_number":129,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f287b81_ea0535c3","line":126,"updated":"2017-09-08 08:08:59.000000000","message":"This is implemented, so i don\u0027t think it is a dependency now.","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d5572c543361a09d19353841b8ec441f0943a5dc","unresolved":false,"context_lines":[{"line_number":123,"context_line":"Dependencies"},{"line_number":124,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* https://blueprints.launchpad.net/watcher/+spec/cinder-model-integration"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Testing"},{"line_number":129,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f4e5783_a6f6d28e","line":126,"in_reply_to":"7f287b81_ea0535c3","updated":"2017-10-11 09:59:11.000000000","message":"Done","commit_id":"5f29aba20d7768cb6cdf4a604275ebeb1f8dd9cf"}]}
