)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0f1673b5a7151d1cb5a492ff5e3daf97df73e32e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"instance is already bigger than the physical available free"},{"line_number":16,"context_line":"space."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1513654"},{"line_number":19,"context_line":"Change-Id: Ia9963434bfb8845903b4e138545660a3827418e9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"7aa08908_3c723ab1","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":20},"updated":"2016-06-15 19:48:32.000000000","message":"This bug is already in \u0027Fix Released\u0027 state. Did you mean Related-Bug, or does the bug need to be reopened or a new bug opened?","commit_id":"41a302a89671d1a35b7331f65fd69261750840f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a1cad6746d2db2b053077d7da5c75f197037e2b7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"instance is already bigger than the physical available free"},{"line_number":16,"context_line":"space."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1513654"},{"line_number":19,"context_line":"Change-Id: Ia9963434bfb8845903b4e138545660a3827418e9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"7aa08908_3c9fda66","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":20},"in_reply_to":"7aa08908_3c723ab1","updated":"2016-06-15 19:53:32.000000000","message":"Nevermind my previous comment. This will link the patch to the bug and the bug status isn\u0027t important as relnotes about bugs are not based on launchpad. So this is fine the way it is.","commit_id":"41a302a89671d1a35b7331f65fd69261750840f6"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"c698cf024c23a728b69b13ed68543c54bebce67b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Prevent scheduling of instances that can\u0027t possibly fit"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously it was possible to schedule a 10Gb instance"},{"line_number":10,"context_line":"on an 8Gb host if the overcommit ratio permitted."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ia9963434bfb8845903b4e138545660a3827418e9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"7aa08908_9ce01128","line":10,"updated":"2016-06-17 22:35:12.000000000","message":"The subject line is ambiguous, and we should indicate that this aligns the disk filter with the CPU/RAM filters.  Maybe something like:\n\nPrevent instance disk overcommit against itself\n\nThe CPU/RAM filters currently prevent scheduling an instance that is larger than the hypervisor total resource size.  This does the same for the disk filter.\n\nPreviously it was possible to e.g. schedule a 10GB instance on an 8GB host if the overcommit ratio permitted.","commit_id":"ca0be574c309b048f27220e0dab9fd791dbd7f83"}],"nova/scheduler/filters/disk_filter.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b68ffc13adc1ea95793cfbb5b3d2b62ffd9ccbe7","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        min_physical_ratio \u003d self._get_disk_minimum_physical_free_space_ratio("},{"line_number":76,"context_line":"            host_state, filter_properties)"},{"line_number":77,"context_line":"        disk_physical_minimum \u003d total_usable_disk_mb * min_physical_ratio"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if host_state.free_physical_mb \u003c disk_physical_minimum:"},{"line_number":80,"context_line":"            LOG.debug(\"%(host_state)s does not have %(minimum_disk)s MB \""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_bde54add","line":77,"updated":"2015-11-12 22:58:24.000000000","message":"So, while I think it would be nice to check the free disk space like for the RAMFilter, I would prefer to not add a new conf flag like the one you added because it\u0027s only a capacity problem.\n\nTo be clear, using the disk allocation ratio the same way that we have for the RAMFilter could probably help you without needing to add the above new ratio.","commit_id":"cadc46390c94306a49629e32c973f9ea0e3d8f01"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"195ab3d3dee65caa4826c46ada5648ec51e752e5","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        min_physical_ratio \u003d self._get_disk_minimum_physical_free_space_ratio("},{"line_number":76,"context_line":"            host_state, filter_properties)"},{"line_number":77,"context_line":"        disk_physical_minimum \u003d total_usable_disk_mb * min_physical_ratio"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if host_state.free_physical_mb \u003c disk_physical_minimum:"},{"line_number":80,"context_line":"            LOG.debug(\"%(host_state)s does not have %(minimum_disk)s MB \""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_bb30cd08","line":77,"in_reply_to":"da85f559_0a518662","updated":"2015-11-13 16:00:10.000000000","message":"Cool, you can ping me on IRC if you need further help (bauzas)","commit_id":"cadc46390c94306a49629e32c973f9ea0e3d8f01"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"046d4d97090dd865e01db35dc9ff55ccd36871c7","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        min_physical_ratio \u003d self._get_disk_minimum_physical_free_space_ratio("},{"line_number":76,"context_line":"            host_state, filter_properties)"},{"line_number":77,"context_line":"        disk_physical_minimum \u003d total_usable_disk_mb * min_physical_ratio"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if host_state.free_physical_mb \u003c disk_physical_minimum:"},{"line_number":80,"context_line":"            LOG.debug(\"%(host_state)s does not have %(minimum_disk)s MB \""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_0a518662","line":77,"in_reply_to":"da85f559_bde54add","updated":"2015-11-13 14:49:44.000000000","message":"Ah!  I hadn\u0027t looked at the RAMFilter code; you\u0027re right that its behavior will solve my problem, and more directly.\n\nI\u0027ll get that written, then we can discuss if it\u0027s a fix or a feature :)","commit_id":"cadc46390c94306a49629e32c973f9ea0e3d8f01"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"f46af75a8ee171e6c7b595cf837bb18c3f00443b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":52,"context_line":"        if not host_state.free_physical_mb \u003e\u003d requested_disk:"},{"line_number":53,"context_line":"            LOG.debug(\"%(host_state)s does not have %(requested_disk)s MB \""},{"line_number":54,"context_line":"                      \"usable disk space before overcommit, it only has \""},{"line_number":55,"context_line":"                      \"%(physical_disk_free)s MB.\","},{"line_number":56,"context_line":"                      {\u0027host_state\u0027: host_state,"},{"line_number":57,"context_line":"                       \u0027requested_disk\u0027: requested_disk,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_c2275ec8","line":54,"updated":"2015-11-27 11:21:51.000000000","message":"I think the log level can be warn.we usually ignore debug info,but this should not be ignored.In my opinion.","commit_id":"b1e102ce8a678dc1775571438c4f7988b27a3c62"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8f53d58eeaf7645dbffb7708bc6beae3ce800b72","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":52,"context_line":"        if not host_state.free_physical_mb \u003e\u003d requested_disk:"},{"line_number":53,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":54,"context_line":"                        \"MB usable disk space before overcommit, it only has \""},{"line_number":55,"context_line":"                        \"%(physical_disk_free)s MB.\"),"},{"line_number":56,"context_line":"                        {\u0027host_state\u0027: host_state,"},{"line_number":57,"context_line":"                         \u0027requested_disk\u0027: requested_disk,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a8ffd7b_19ea8f74","line":54,"updated":"2015-11-29 09:17:59.000000000","message":"alignment here is dodgy","commit_id":"6bb613c5ac3f5338e026d4c6a37831bec27843fa"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"f468bbeff16597f9136b2f555e321b5f356968fb","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":50,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":51,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":52,"context_line":"        if not host_state.free_disk_physical_mb \u003e\u003d requested_disk:"},{"line_number":53,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":54,"context_line":"                            \"MB usable disk space before overcommit, it only \""},{"line_number":55,"context_line":"                            \"has %(physical_disk_free)s MB.\"),"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_39d5f6e3","line":52,"updated":"2015-12-09 10:39:12.000000000","message":"Alternative:\n\n if host_state.free_disk_physical_mb \u003c requested_disk:\n\nNot a problem if no change is made here, though","commit_id":"4036ffdb83f0bba637be5aa4f893b09fd72f9431"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"833b9cd33665def13180f09fabe79413b419375e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":50,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":51,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":52,"context_line":"        if not host_state.free_disk_physical_mb \u003e\u003d requested_disk:"},{"line_number":53,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":54,"context_line":"                            \"MB usable disk space before overcommit, it only \""},{"line_number":55,"context_line":"                            \"has %(physical_disk_free)s MB.\"),"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_ae242c60","line":52,"in_reply_to":"7a740942_39d5f6e3","updated":"2015-12-09 14:24:17.000000000","message":"I\u0027m just following the pattern in in the ram filter. Seems weird to me too.","commit_id":"4036ffdb83f0bba637be5aa4f893b09fd72f9431"},{"author":{"_account_id":7111,"name":"hadi esiely","email":"hadi.esiely-barrera@jhuapl.edu","username":"HEsiely"},"change_message_id":"50c1b19265008de1c3bc6f55047ef9a8c2a1a6c8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":47,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":48,"context_line":"        if not host_state.free_disk_physical_mb \u003e\u003d requested_disk:"},{"line_number":49,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":50,"context_line":"                            \"MB usable disk space before overcommit, it only \""},{"line_number":51,"context_line":"                            \"has %(physical_disk_free)s MB.\"),"},{"line_number":52,"context_line":"                        {\u0027host_state\u0027: host_state,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_d61ee65e","line":49,"updated":"2015-12-09 18:36:22.000000000","message":"Is there a specific reason for using negative logic here? Any reason why it couldn\u0027t just say:\n\nif requested_disk \u003e\u003d host_state.free_disk_physical_mb","commit_id":"bb557c0de60fd794479f2620241b546e4b42b9d0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"9b088283028c9fc3d8070566c42ec1613984d5e5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        free_disk_mb \u003d host_state.free_disk_mb"},{"line_number":41,"context_line":"        total_usable_disk_mb \u003d host_state.total_usable_disk_gb * 1024"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                            \"MB usable disk space before overcommit, it only \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_03e5eb35","line":45,"range":{"start_line":43,"start_character":10,"end_line":45,"end_character":79},"updated":"2015-12-23 18:18:34.000000000","message":"Well I am not sure the instance would be overcommiting against itself from the get go. in case of COW, a 10Gig instance could be using only a few hundred meg when first provisioned.","commit_id":"8d0540efe73356156cd2e70bbf5f10ba0c3ee3d5"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"7bc5c52731421cf8f2feb128b4bc19e16b8a4fb1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        free_disk_mb \u003d host_state.free_disk_mb"},{"line_number":41,"context_line":"        total_usable_disk_mb \u003d host_state.total_usable_disk_gb * 1024"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                            \"MB usable disk space before overcommit, it only \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_14975f91","line":45,"range":{"start_line":43,"start_character":10,"end_line":45,"end_character":79},"in_reply_to":"1a7b0d38_03e5eb35","updated":"2015-12-23 19:57:58.000000000","message":"It\u0027s true that \u0027not room for even one more filled instance\u0027 is a rough approximation for \u0027full\u0027 but it still seems useful, and reproduces the same judgement made in the RAM filter.  And, in any case, leaving a small bit of mandatory slack was my intent.","commit_id":"8d0540efe73356156cd2e70bbf5f10ba0c3ee3d5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"9ed28f103c8fa0ff9da00ccdcc344a004c133d2c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        free_disk_mb \u003d host_state.free_disk_mb"},{"line_number":41,"context_line":"        total_usable_disk_mb \u003d host_state.total_usable_disk_gb * 1024"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                            \"MB usable disk space before overcommit, it only \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_55de326e","line":45,"range":{"start_line":43,"start_character":10,"end_line":45,"end_character":79},"in_reply_to":"1a7b0d38_14975f91","updated":"2015-12-24 10:42:18.000000000","message":"Hmmm so I think the RAM filter considers overcommiting against itself if instance is larger than all available RAM on a host (this actually makes more sense for individual NUMA cells as it is unlikely that a cloud will have instances bigger than it\u0027s compute hosts, it\u0027s still correct though).","commit_id":"8d0540efe73356156cd2e70bbf5f10ba0c3ee3d5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0f1673b5a7151d1cb5a492ff5e3daf97df73e32e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                            \"MB usable disk space before overcommit, it only \""},{"line_number":49,"context_line":"                            \"has %(physical_disk_free)s MB.\"),"},{"line_number":50,"context_line":"                        {\u0027host_state\u0027: host_state,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7aa08908_9920a0b2","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":27},"updated":"2016-06-15 19:48:32.000000000","message":"I don\u0027t think we want to log warning here, just debug. This sounds like \u0027normal\u0027 operation, right?","commit_id":"41a302a89671d1a35b7331f65fd69261750840f6"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"c1db6fb6392b11304572284d4f5bb8d80bee6f60","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.warning(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                            \"MB usable disk space before overcommit, it only \""},{"line_number":49,"context_line":"                            \"has %(physical_disk_free)s MB.\"),"},{"line_number":50,"context_line":"                        {\u0027host_state\u0027: host_state,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7aa08908_7984975c","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":27},"in_reply_to":"7aa08908_9920a0b2","updated":"2016-06-16 18:58:32.000000000","message":"Done","commit_id":"41a302a89671d1a35b7331f65fd69261750840f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"62358fa41dcb4cfb8d440b19513b16d932b0a247","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.debug(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                          \"MB usable disk space before overcommit, it only \""},{"line_number":49,"context_line":"                          \"has %(physical_disk_free)s MB.\"),"},{"line_number":50,"context_line":"                      {\u0027host_state\u0027: host_state,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_00418b39","line":47,"range":{"start_line":47,"start_character":22,"end_line":47,"end_character":26},"updated":"2016-06-16 22:17:13.000000000","message":"This part should be removed too","commit_id":"4033946bf3f6010b28deaa779545a6a0b5d5e57f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"62358fa41dcb4cfb8d440b19513b16d932b0a247","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.debug(_LW(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                          \"MB usable disk space before overcommit, it only \""},{"line_number":49,"context_line":"                          \"has %(physical_disk_free)s MB.\"),"},{"line_number":50,"context_line":"                      {\u0027host_state\u0027: host_state,"},{"line_number":51,"context_line":"                       \u0027requested_disk\u0027: requested_disk,"},{"line_number":52,"context_line":"                       \u0027physical_disk_free\u0027:"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_2046474f","line":49,"range":{"start_line":49,"start_character":58,"end_line":49,"end_character":59},"updated":"2016-06-16 22:17:13.000000000","message":"and this","commit_id":"4033946bf3f6010b28deaa779545a6a0b5d5e57f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"476106ad6291554fedcea2272cdb9ad69cc094f0","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.debug(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                      \"MB usable disk space before overcommit, it only \""},{"line_number":49,"context_line":"                      \"has %(physical_disk_free)s MB.\","}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_a502140a","line":46,"range":{"start_line":45,"start_character":31,"end_line":46,"end_character":32},"updated":"2016-06-17 20:22:43.000000000","message":"the comment says \"total_usable_disk\" but the code says \"host_state.free_disk_physical_mb\".  I think that\u0027s a mismatch, no?","commit_id":"2a8caad4886dc29e8b812a25c3784a58567cdccf"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d4cafa9e775450f1a57f015ef24527930798fbed","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Do not allow an instance to overcommit against itself, only against"},{"line_number":44,"context_line":"        # other instances.  In other words, if there isn\u0027t room for even just"},{"line_number":45,"context_line":"        # this one instance in total_usable_disk space, consider the host full."},{"line_number":46,"context_line":"        if host_state.free_disk_physical_mb \u003c requested_disk:"},{"line_number":47,"context_line":"            LOG.debug(\"%(host_state)s does not have %(requested_disk)s \""},{"line_number":48,"context_line":"                      \"MB usable disk space before overcommit, it only \""},{"line_number":49,"context_line":"                      \"has %(physical_disk_free)s MB.\","}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_88fc4fb6","line":46,"range":{"start_line":45,"start_character":31,"end_line":46,"end_character":32},"in_reply_to":"7aa08908_a502140a","updated":"2016-06-17 20:28:12.000000000","message":"The analogous test to the RAMFilter would be to compare the requested size against the total disk size available on the hypervisor, regardless of how much has already been committed.  That would prevent the instance from overcommitting against itself.\n\nOnce you start looking at the space used by the other instances, then you\u0027re no longer talking about overcommit against itself, but against other instances, and that should be a separate check.","commit_id":"2a8caad4886dc29e8b812a25c3784a58567cdccf"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2ebd640769fc6ef7a6defb91c2d2c293a01c2a21","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                      \"has %(physical_disk_size)s MB.\","},{"line_number":50,"context_line":"                      {\u0027host_state\u0027: host_state,"},{"line_number":51,"context_line":"                       \u0027requested_disk\u0027: requested_disk,"},{"line_number":52,"context_line":"                       \u0027physical_disk_size\u0027:"},{"line_number":53,"context_line":"                           total_usable_disk_mb})"},{"line_number":54,"context_line":"            return False"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        disk_allocation_ratio \u003d self._get_disk_allocation_ratio("}],"source_content_type":"text/x-python","patch_set":30,"id":"3aaa91ec_b2b99f17","line":53,"range":{"start_line":52,"start_character":23,"end_line":53,"end_character":47},"updated":"2016-06-24 13:42:55.000000000","message":"Nit: no need to break this line.","commit_id":"3cafa7f5bd0775b8ba49080226c03f8a91468d7d"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"cdd417a10a10a1e9b2845f83b40d6af68fded05b","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":218,"context_line":"        # NOTE(andrew) free_physical_mb refers to actual disk usage,"},{"line_number":219,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":220,"context_line":"        self.free_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":221,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":222,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":223,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_e8b293e4","line":220,"updated":"2015-12-07 22:30:08.000000000","message":"Not super keen on this variable name. free_physical_mb of what? In context we know it is disk but out of context, who knows?","commit_id":"05024b0a2b48fa8e04afc448d6e1ba1b3ad24035"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"f468bbeff16597f9136b2f555e321b5f356968fb","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":218,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":219,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":220,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":221,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":222,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":223,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_19fb5a48","line":220,"updated":"2015-12-09 10:39:12.000000000","message":"Shouldn\u0027t we initialize this variable in __init__(), maybe at least just for the sake of consistency with self.free_disk_mb?","commit_id":"4036ffdb83f0bba637be5aa4f893b09fd72f9431"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"833b9cd33665def13180f09fabe79413b419375e","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":218,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":219,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":220,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":221,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":222,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":223,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_4e682888","line":220,"in_reply_to":"7a740942_19fb5a48","updated":"2015-12-09 14:24:17.000000000","message":"Done","commit_id":"4036ffdb83f0bba637be5aa4f893b09fd72f9431"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"9b088283028c9fc3d8070566c42ec1613984d5e5","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":189,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":190,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":191,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":192,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":193,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":194,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_009161f0","line":191,"range":{"start_line":191,"start_character":37,"end_line":191,"end_character":57},"updated":"2015-12-23 18:18:34.000000000","message":"We could simply calculate this in the filter instead of adding it to this class if we\u0027re not going to use it anywhere else. I\u0027d prefer that since this is already cluttered quite a bit.","commit_id":"8d0540efe73356156cd2e70bbf5f10ba0c3ee3d5"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"7bc5c52731421cf8f2feb128b4bc19e16b8a4fb1","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":189,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":190,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":191,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":192,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":193,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":194,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_74aa63d6","line":191,"range":{"start_line":191,"start_character":37,"end_line":191,"end_character":57},"in_reply_to":"1a7b0d38_009161f0","updated":"2015-12-23 19:57:58.000000000","message":"Could we?  The filter doesn\u0027t have access to the \u0027compute\u0027 object or to the raw free disk space as far as I know.  What would that calculation look like?","commit_id":"8d0540efe73356156cd2e70bbf5f10ba0c3ee3d5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"9ed28f103c8fa0ff9da00ccdcc344a004c133d2c","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":189,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":190,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":191,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":192,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":193,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":194,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_71fd8339","line":191,"range":{"start_line":191,"start_character":37,"end_line":191,"end_character":57},"in_reply_to":"1a7b0d38_74aa63d6","updated":"2015-12-24 10:42:18.000000000","message":"Hmmm you are right - free_disk_gb is not actually passed as an attribute.","commit_id":"8d0540efe73356156cd2e70bbf5f10ba0c3ee3d5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"158b53ea142656e1c2b2474784757448c1761696","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":210,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":211,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":212,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":213,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":214,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":215,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_98053312","line":212,"updated":"2016-01-15 04:44:34.000000000","message":"Doesn\u0027t the compute.disk_available_least attribute already contain the calculated amount of *actual* physical disk space that is available?","commit_id":"3b826a7613efca2407e7880cf9179126601bc66a"},{"author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"change_message_id":"02fa02036cfb9aaae2a9c1ffb1f79a6c75bc45a4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        self.free_disk_mb \u003d free_disk_mb"},{"line_number":210,"context_line":"        # NOTE(andrew) free_disk_physical_mb refers to actual disk usage,"},{"line_number":211,"context_line":"        #  not theoretical-with-overprovisioning usage"},{"line_number":212,"context_line":"        self.free_disk_physical_mb \u003d compute.free_disk_gb * 1024"},{"line_number":213,"context_line":"        self.vcpus_total \u003d compute.vcpus"},{"line_number":214,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":215,"context_line":"        self.updated \u003d compute.updated_at"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_2257dbcb","line":212,"in_reply_to":"da6ed579_98053312","updated":"2016-01-18 02:13:10.000000000","message":"The code in _update_from_compute_node implies that least_gb is sometimes greater than free_gb, which left me preferring free_gb as the more conservative number.  I don\u0027t feel strongly, though, if you think that available_least is a better choice.","commit_id":"3b826a7613efca2407e7880cf9179126601bc66a"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d4cafa9e775450f1a57f015ef24527930798fbed","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        free_gb \u003d compute.free_disk_gb"},{"line_number":192,"context_line":"        least_gb \u003d compute.disk_available_least"},{"line_number":193,"context_line":"        if least_gb is not None:"},{"line_number":194,"context_line":"            self.free_disk_physical_mb \u003d compute.disk_available_least * 1024"},{"line_number":195,"context_line":"            if least_gb \u003e free_gb:"},{"line_number":196,"context_line":"                # can occur when an instance in database is not on host"},{"line_number":197,"context_line":"                LOG.warning(_LW(\"Host %(hostname)s has more disk space than \""}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_c83bf79a","line":194,"range":{"start_line":194,"start_character":12,"end_line":194,"end_character":55},"updated":"2016-06-17 20:28:12.000000000","message":"As I understand it, compute.disk_available_least shows how much space would be available if all the instances used all the space that they\u0027re allocated.\n\nComparing against that seems to defeat the purpose of the disk allocation ratio.","commit_id":"2a8caad4886dc29e8b812a25c3784a58567cdccf"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"38a9e9caae9a8c17704b54b9fd4eef37d05e51f4","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        free_gb \u003d compute.free_disk_gb"},{"line_number":192,"context_line":"        least_gb \u003d compute.disk_available_least"},{"line_number":193,"context_line":"        if least_gb is not None:"},{"line_number":194,"context_line":"            self.free_disk_physical_mb \u003d compute.disk_available_least * 1024"},{"line_number":195,"context_line":"            if least_gb \u003e free_gb:"},{"line_number":196,"context_line":"                # can occur when an instance in database is not on host"},{"line_number":197,"context_line":"                LOG.warning(_LW(\"Host %(hostname)s has more disk space than \""}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_96163047","line":194,"range":{"start_line":194,"start_character":12,"end_line":194,"end_character":55},"in_reply_to":"7aa08908_c83bf79a","updated":"2016-06-17 21:18:47.000000000","message":"Little investigation and it seems Chris is probably right. This patch currently blocks all overcommit because the \u0027available_least\u0027 isn\u0027t what you want to use. Its checking \"How much space would be free if all servers used up their allocated space\".","commit_id":"2a8caad4886dc29e8b812a25c3784a58567cdccf"}],"nova/tests/unit/scheduler/filters/test_disk_filters.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"c698cf024c23a728b69b13ed68543c54bebce67b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        filt_cls \u003d disk_filter.DiskFilter()"},{"line_number":47,"context_line":"        spec_obj \u003d objects.RequestSpec("},{"line_number":48,"context_line":"            flavor\u003dobjects.Flavor("},{"line_number":49,"context_line":"                root_gb\u003d3, ephemeral_gb\u003d3, swap\u003d1))"},{"line_number":50,"context_line":"        # Only 1Gb left, but with 10x overprovision a 7Gb instance should still fit."},{"line_number":51,"context_line":"        #  Schedule will succeed."},{"line_number":52,"context_line":"        host \u003d fakes.FakeHostState(\u0027host1\u0027, \u0027node1\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7aa08908_7c13a55c","line":49,"range":{"start_line":49,"start_character":48,"end_line":49,"end_character":49},"updated":"2016-06-17 22:35:12.000000000","message":"swap is in MB, not GB like root/ephemeral, so I think you can leave it at \"swap\u003d1024\"","commit_id":"ca0be574c309b048f27220e0dab9fd791dbd7f83"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"c698cf024c23a728b69b13ed68543c54bebce67b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        spec_obj \u003d objects.RequestSpec("},{"line_number":61,"context_line":"            flavor\u003dobjects.Flavor("},{"line_number":62,"context_line":"                root_gb\u003d10, ephemeral_gb\u003d 2, swap\u003d 1))"},{"line_number":63,"context_line":"        # According to the allocation ration, This host has 119 Gb left,"},{"line_number":64,"context_line":"        #  but it doesn\u0027t matter because the requested instance is"},{"line_number":65,"context_line":"        #  bigger than the whole drive.  Schedule will fail."},{"line_number":66,"context_line":"        host \u003d fakes.FakeHostState(\u0027host1\u0027, \u0027node1\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7aa08908_bc306dea","line":63,"updated":"2016-06-17 22:35:12.000000000","message":"\"ratio\", not \"ration\".","commit_id":"ca0be574c309b048f27220e0dab9fd791dbd7f83"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"c74adf3e13ac5cbe7b87dbd4520f46c57d3a21aa","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            flavor\u003dobjects.Flavor("},{"line_number":49,"context_line":"                root_gb\u003d3, ephemeral_gb\u003d3, swap\u003d1024))"},{"line_number":50,"context_line":"        # Only 1Gb left, but with 10x overprovision a 7Gb instance should still fit."},{"line_number":51,"context_line":"        #  Schedule will succeed."},{"line_number":52,"context_line":"        host \u003d fakes.FakeHostState(\u0027host1\u0027, \u0027node1\u0027,"},{"line_number":53,"context_line":"                {\u0027free_disk_mb\u0027: 1 * 1024, \u0027total_usable_disk_gb\u0027: 12,"},{"line_number":54,"context_line":"                 \u0027disk_allocation_ratio\u0027: 10.0})"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a9d85d2_ebf8e97e","line":51,"updated":"2016-06-20 15:08:36.000000000","message":"I was wondering why you had to change this, but of course the old \u0027_oversubscribe\u0027 method would fail with the \u0027don\u0027t oversusbscribe against yourself\u0027 changes.","commit_id":"956b5dd3205a7685ef6e7f451703f390e580c880"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"fd24717d905156ddfa473259afe9dd9cc30a558c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        filt_cls \u003d disk_filter.DiskFilter()"},{"line_number":60,"context_line":"        spec_obj \u003d objects.RequestSpec("},{"line_number":61,"context_line":"            flavor\u003dobjects.Flavor("},{"line_number":62,"context_line":"                root_gb\u003d10, ephemeral_gb\u003d 2, swap\u003d 1))"},{"line_number":63,"context_line":"        # According to the allocation ratio, This host has 119 Gb left,"},{"line_number":64,"context_line":"        #  but it doesn\u0027t matter because the requested instance is"},{"line_number":65,"context_line":"        #  bigger than the whole drive.  Schedule will fail."}],"source_content_type":"text/x-python","patch_set":28,"id":"5a9d85d2_2bbaf123","line":62,"range":{"start_line":62,"start_character":41,"end_line":62,"end_character":53},"updated":"2016-06-20 14:58:52.000000000","message":"I think you should take out the spaces between the \u003d and the number, also a swap of 1024 would be more realistice (since swap is in MB).","commit_id":"956b5dd3205a7685ef6e7f451703f390e580c880"}]}
