)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"d2ad45bd303e56aa0d52134e2531438903f4d167","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware: implement get_inventory() driver method"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implementing the get_inventory() method allow us to report the"},{"line_number":10,"context_line":"aggregated capacity for cpu, disk and memory. The max_unit property for"},{"line_number":11,"context_line":"cpu and memory is set to the maximum vCPU and memory available from"},{"line_number":12,"context_line":"single ESX host. The max_unit property for disk is set to the maximum"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f4b6375_c7a900de","line":9,"range":{"start_line":9,"start_character":40,"end_line":9,"end_character":45},"updated":"2017-10-27 15:46:42.000000000","message":"Nit: allow -\u003e allows","commit_id":"d7fecdd223a9964b88970548e3e8487d7983a164"}],"nova/virt/vmwareapi/driver.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"660f15125dbb7ecdd3704421d29e91967d617db6","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":335,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"},{"line_number":336,"context_line":"                \u0027reserved\u0027: host_stats[\u0027host_memory_total\u0027] -"},{"line_number":337,"context_line":"                            host_stats[\u0027host_memory_free\u0027],"},{"line_number":338,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":339,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027host_memory_free\u0027],"},{"line_number":340,"context_line":"                \u0027step_size\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f515b1d_ef54d156","line":337,"updated":"2017-09-21 21:05:37.000000000","message":"I realize you\u0027re still WIP but this style of using memory_free when setting reserved will not work as you like because get_inventory can be called any time the state of the compute node changes (see: https://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L826-L839  (sorry if that\u0027s a repeat I forgot what I\u0027ve mentioned before)).\n\nThat means that memory free ought to become smaller each time a vm is placed.\n\nEffectively you are accounting for usage twice.","commit_id":"aef28aec7b5f7d38fe8f44fa38e433f1dbb37bf8"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"ab38839eae32204cbfded2114f177e2112ececc5","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                \u0027total\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":338,"context_line":"                \u0027reserved\u0027: CONF.reserved_host_cpus,"},{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_58b97f76","line":340,"updated":"2017-10-27 05:42:07.000000000","message":"we need to set the max of one individual ESXi not aggregate.","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"3170b76fd55c7111fc49ae92940d1138f0006b6a","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                \u0027total\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":338,"context_line":"                \u0027reserved\u0027: CONF.reserved_host_cpus,"},{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_8651d838","line":340,"in_reply_to":"3f4b6375_58b97f76","updated":"2017-10-27 07:33:32.000000000","message":"Correct. Will fix that.","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"ab38839eae32204cbfded2114f177e2112ececc5","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"},{"line_number":344,"context_line":"            obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_b89753ec","line":342,"updated":"2017-10-27 05:42:07.000000000","message":"use CONF.cpu_allocation_ratio","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"4cf42eb60a997d61e080093560aac1f14724539e","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"},{"line_number":344,"context_line":"            obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_d2f1c396","line":342,"in_reply_to":"3f4b6375_593f3e86","updated":"2017-10-27 11:41:56.000000000","message":"Done, thanks","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"eaab79dcc97b7190b33a4012a1c96258e73d6a1b","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"},{"line_number":344,"context_line":"            obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_593f3e86","line":342,"in_reply_to":"3f4b6375_6197e63b","updated":"2017-10-27 09:16:19.000000000","message":"0 is used as a magic number that ends up resolving to some default that is not part of the CONF, but is handled somewhere in the compute node (haven\u0027t found it yet).\n\nYou can work around the problem by not including allocation_ratio here at all. The resource_tracker will add it: https://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L83-L125\n\nfor now","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"3170b76fd55c7111fc49ae92940d1138f0006b6a","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"},{"line_number":344,"context_line":"            obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_e62c0cad","line":342,"in_reply_to":"3f4b6375_b89753ec","updated":"2017-10-27 07:33:32.000000000","message":"The problem is that the default value for all CONF.*_allocation_ratio is now 0","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"68202abbd6e17ee6e38dbf1d3bb314f47cd61829","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":340,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027vcpus\u0027],"},{"line_number":341,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":342,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":343,"context_line":"            },"},{"line_number":344,"context_line":"            obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_6197e63b","line":342,"in_reply_to":"3f4b6375_e62c0cad","updated":"2017-10-27 07:54:13.000000000","message":"not sure of the reason behind it. 0 is not useful\n1.0 will prevent overcommitment. \ncan we do max(CONF.cpu_allocation_ratio, 1.0)?","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"ab38839eae32204cbfded2114f177e2112ececc5","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"},{"line_number":346,"context_line":"                \u0027reserved\u0027: CONF.reserved_host_memory_mb,"},{"line_number":347,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":348,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027host_memory_total\u0027],"},{"line_number":349,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":350,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":351,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_38b4837f","line":348,"updated":"2017-10-27 05:42:07.000000000","message":"we need to set the max of one individual ESXi not aggregate.","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"3170b76fd55c7111fc49ae92940d1138f0006b6a","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                \u0027total\u0027: host_stats[\u0027host_memory_total\u0027],"},{"line_number":346,"context_line":"                \u0027reserved\u0027: CONF.reserved_host_memory_mb,"},{"line_number":347,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":348,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027host_memory_total\u0027],"},{"line_number":349,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":350,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":351,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_861f986a","line":348,"in_reply_to":"3f4b6375_38b4837f","updated":"2017-10-27 07:33:32.000000000","message":"Correct. Will fix that.","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"ab38839eae32204cbfded2114f177e2112ececc5","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":348,"context_line":"                \u0027max_unit\u0027: host_stats[\u0027host_memory_total\u0027],"},{"line_number":349,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":350,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":351,"context_line":"            },"},{"line_number":352,"context_line":"            obj_fields.ResourceClass.DISK_GB: {"},{"line_number":353,"context_line":"                \u0027total\u0027: total_capacity / units.Gi,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_789d5b08","line":350,"updated":"2017-10-27 05:42:07.000000000","message":"use CONF.ram_allocation_ratio","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"ab38839eae32204cbfded2114f177e2112ececc5","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":356,"context_line":"                \u0027max_unit\u0027: max_free_space / units.Gi,"},{"line_number":357,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":358,"context_line":"                \u0027allocation_ratio\u0027: 1.0,"},{"line_number":359,"context_line":"            },"},{"line_number":360,"context_line":"        }"},{"line_number":361,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_f8902bef","line":358,"updated":"2017-10-27 05:42:07.000000000","message":"CONF.disk_allocation_ratio","commit_id":"3467db7f6cb17df0bb7dd210e3145418de98aa04"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"88ecb1d22b55b39be3ad5826f51fca38b6cc40fb","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        datastores \u003d ds_util.get_available_datastores(self._session,"},{"line_number":348,"context_line":"                                                      self._cluster_ref,"},{"line_number":349,"context_line":"                                                      self._datastore_regex)"},{"line_number":350,"context_line":"        total_capacity \u003d sum([ds.capacity for ds in datastores])"},{"line_number":351,"context_line":"        max_free_space \u003d max([ds.freespace for ds in datastores])"},{"line_number":352,"context_line":"        reserved_disk_gb \u003d compute_utils.convert_mb_to_ceil_gb("},{"line_number":353,"context_line":"            CONF.reserved_host_disk_mb)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_83e9431b","line":350,"updated":"2017-11-22 19:47:04.000000000","message":"maybe name this total_disk_capacity ? Otherwise it\u0027s unclear what kind of capacity this is a total for.","commit_id":"8fe7c961766176a820e8e8acb14c42b7ebf447b6"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"0fe9837c3c89c6761bf644af1aa5dc3f7c722fc6","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        datastores \u003d ds_util.get_available_datastores(self._session,"},{"line_number":348,"context_line":"                                                      self._cluster_ref,"},{"line_number":349,"context_line":"                                                      self._datastore_regex)"},{"line_number":350,"context_line":"        total_capacity \u003d sum([ds.capacity for ds in datastores])"},{"line_number":351,"context_line":"        max_free_space \u003d max([ds.freespace for ds in datastores])"},{"line_number":352,"context_line":"        reserved_disk_gb \u003d compute_utils.convert_mb_to_ceil_gb("},{"line_number":353,"context_line":"            CONF.reserved_host_disk_mb)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_168b251f","line":350,"in_reply_to":"ff82abbf_83e9431b","updated":"2017-11-23 09:27:34.000000000","message":"Done","commit_id":"8fe7c961766176a820e8e8acb14c42b7ebf447b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"180c332152091363c1db29102f987e2e6758aa4f","unresolved":false,"context_lines":[{"line_number":342,"context_line":"        \"\"\"Return a dict, keyed by resource class, of inventory information for"},{"line_number":343,"context_line":"        the supplied node."},{"line_number":344,"context_line":"        \"\"\""},{"line_number":345,"context_line":"        stats \u003d vm_util.get_stats_from_cluster(self._session,"},{"line_number":346,"context_line":"                                               self._cluster_ref)"},{"line_number":347,"context_line":"        datastores \u003d ds_util.get_available_datastores(self._session,"},{"line_number":348,"context_line":"                                                      self._cluster_ref,"},{"line_number":349,"context_line":"                                                      self._datastore_regex)"},{"line_number":350,"context_line":"        total_disk_capacity \u003d sum([ds.capacity for ds in datastores])"},{"line_number":351,"context_line":"        max_free_space \u003d max([ds.freespace for ds in datastores])"},{"line_number":352,"context_line":"        reserved_disk_gb \u003d compute_utils.convert_mb_to_ceil_gb("}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_3c785a8e","line":349,"range":{"start_line":345,"start_character":8,"end_line":349,"end_character":76},"updated":"2017-12-07 21:19:02.000000000","message":"What is different about this from how get_available_resource works with the host_states data?","commit_id":"7359bc44e873fc8aa49606d516ad4088c395427c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d3528871533d5a7379009c0fb9f13255dbd2447b","unresolved":false,"context_lines":[{"line_number":342,"context_line":"        \"\"\"Return a dict, keyed by resource class, of inventory information for"},{"line_number":343,"context_line":"        the supplied node."},{"line_number":344,"context_line":"        \"\"\""},{"line_number":345,"context_line":"        stats \u003d vm_util.get_stats_from_cluster(self._session,"},{"line_number":346,"context_line":"                                               self._cluster_ref)"},{"line_number":347,"context_line":"        datastores \u003d ds_util.get_available_datastores(self._session,"},{"line_number":348,"context_line":"                                                      self._cluster_ref,"},{"line_number":349,"context_line":"                                                      self._datastore_regex)"},{"line_number":350,"context_line":"        total_disk_capacity \u003d sum([ds.capacity for ds in datastores])"},{"line_number":351,"context_line":"        max_free_space \u003d max([ds.freespace for ds in datastores])"},{"line_number":352,"context_line":"        reserved_disk_gb \u003d compute_utils.convert_mb_to_ceil_gb("}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_400175ae","line":349,"range":{"start_line":345,"start_character":8,"end_line":349,"end_character":76},"in_reply_to":"df87a7cf_06ef0ae9","updated":"2017-12-11 14:11:41.000000000","message":"yes, exactly right.","commit_id":"7359bc44e873fc8aa49606d516ad4088c395427c"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"023242d7dffd20179ee88c3a0965c0c9a4b6cc79","unresolved":false,"context_lines":[{"line_number":342,"context_line":"        \"\"\"Return a dict, keyed by resource class, of inventory information for"},{"line_number":343,"context_line":"        the supplied node."},{"line_number":344,"context_line":"        \"\"\""},{"line_number":345,"context_line":"        stats \u003d vm_util.get_stats_from_cluster(self._session,"},{"line_number":346,"context_line":"                                               self._cluster_ref)"},{"line_number":347,"context_line":"        datastores \u003d ds_util.get_available_datastores(self._session,"},{"line_number":348,"context_line":"                                                      self._cluster_ref,"},{"line_number":349,"context_line":"                                                      self._datastore_regex)"},{"line_number":350,"context_line":"        total_disk_capacity \u003d sum([ds.capacity for ds in datastores])"},{"line_number":351,"context_line":"        max_free_space \u003d max([ds.freespace for ds in datastores])"},{"line_number":352,"context_line":"        reserved_disk_gb \u003d compute_utils.convert_mb_to_ceil_gb("}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_06ef0ae9","line":349,"range":{"start_line":345,"start_character":8,"end_line":349,"end_character":76},"in_reply_to":"df87a7cf_3c785a8e","updated":"2017-12-11 11:38:58.000000000","message":"With this method we can return both the aggregated capacity and the max unit for cpu, disk and memory. This is especially useful for disk and it fixes the bug in the commit message.","commit_id":"7359bc44e873fc8aa49606d516ad4088c395427c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d3528871533d5a7379009c0fb9f13255dbd2447b","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                \u0027total\u0027: total_disk_capacity / units.Gi,"},{"line_number":371,"context_line":"                \u0027reserved\u0027: reserved_disk_gb,"},{"line_number":372,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":373,"context_line":"                \u0027max_unit\u0027: max_free_space / units.Gi,"},{"line_number":374,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":375,"context_line":"            },"},{"line_number":376,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_c026e568","line":373,"range":{"start_line":373,"start_character":28,"end_line":373,"end_character":53},"updated":"2017-12-11 14:11:41.000000000","message":"here and on line 370, I believe you will want to do integer floor division, so use the // operator instead of the / operator.","commit_id":"7359bc44e873fc8aa49606d516ad4088c395427c"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"bce655f71ef9f3e1ae783b77a7401f0e998c2100","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                \u0027total\u0027: total_disk_capacity / units.Gi,"},{"line_number":371,"context_line":"                \u0027reserved\u0027: reserved_disk_gb,"},{"line_number":372,"context_line":"                \u0027min_unit\u0027: 1,"},{"line_number":373,"context_line":"                \u0027max_unit\u0027: max_free_space / units.Gi,"},{"line_number":374,"context_line":"                \u0027step_size\u0027: 1,"},{"line_number":375,"context_line":"            },"},{"line_number":376,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_f38acebc","line":373,"range":{"start_line":373,"start_character":28,"end_line":373,"end_character":53},"in_reply_to":"df87a7cf_c026e568","updated":"2017-12-12 08:12:03.000000000","message":"Done","commit_id":"7359bc44e873fc8aa49606d516ad4088c395427c"}]}
