)]}'
{"sushy/resources/system/simple_storage.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"class SimpleStorageCollection(base.ResourceCollectionBase):"},{"line_number":59,"context_line":"    \"\"\"Represents a collection of simple storage associated with system.\"\"\""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    _disks_sizes \u003d None"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def _resource_type(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_617976c3","line":61,"range":{"start_line":61,"start_character":4,"end_line":61,"end_character":16},"updated":"2018-09-15 01:26:51.000000000","message":"Better to name this as \u0027_disks_sizes_bytes\u0027 as the convention at other places in the code.","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":58,"context_line":"class SimpleStorageCollection(base.ResourceCollectionBase):"},{"line_number":59,"context_line":"    \"\"\"Represents a collection of simple storage associated with system.\"\"\""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    _disks_sizes \u003d None"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def _resource_type(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_398ac3bb","line":61,"range":{"start_line":61,"start_character":4,"end_line":61,"end_character":16},"in_reply_to":"3f79a3b5_617976c3","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def disks_sizes_bytes(self):"},{"line_number":69,"context_line":"        \"\"\"Sizes of each Disk in bytes in SimpleStorage collection resource."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":72,"context_line":"        refreshed."},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if self._disks_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0177620a","line":71,"range":{"start_line":71,"start_character":16,"end_line":71,"end_character":32},"updated":"2018-09-15 01:26:51.000000000","message":"nit: s/ the cached value / the list of cached values /","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def disks_sizes_bytes(self):"},{"line_number":69,"context_line":"        \"\"\"Sizes of each Disk in bytes in SimpleStorage collection resource."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":72,"context_line":"        refreshed."},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if self._disks_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cbf2d605","line":71,"range":{"start_line":71,"start_character":16,"end_line":71,"end_character":32},"in_reply_to":"3f79a3b5_0177620a","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"}],"sushy/resources/system/storage/storage.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                   adapter\u003dutils.get_members_identities)"},{"line_number":43,"context_line":"    \"\"\"A tuple with the drive identities\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    _drives_sizes \u003d None"},{"line_number":46,"context_line":"    _drives \u003d None"},{"line_number":47,"context_line":"    _volumes \u003d None  # reference to VolumeCollection instance"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c143aa6b","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":17},"updated":"2018-09-15 01:26:51.000000000","message":"Better to name this as \u0027_drives_sizes_bytes\u0027 as the convention at other places in the code.","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                   adapter\u003dutils.get_members_identities)"},{"line_number":43,"context_line":"    \"\"\"A tuple with the drive identities\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    _drives_sizes \u003d None"},{"line_number":46,"context_line":"    _drives \u003d None"},{"line_number":47,"context_line":"    _volumes \u003d None  # reference to VolumeCollection instance"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4bdec66a","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":17},"in_reply_to":"3f79a3b5_c143aa6b","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def drives_sizes_bytes(self):"},{"line_number":77,"context_line":"        \"\"\"Sizes of all Drives in bytes in Storage resource."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":80,"context_line":"        refreshed."},{"line_number":81,"context_line":"        \"\"\""},{"line_number":82,"context_line":"        if self._drives_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_21c85e1f","line":79,"range":{"start_line":79,"start_character":16,"end_line":79,"end_character":32},"updated":"2018-09-15 01:26:51.000000000","message":"nit: s/ the cached value/ list of cached values /","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def drives_sizes_bytes(self):"},{"line_number":77,"context_line":"        \"\"\"Sizes of all Drives in bytes in Storage resource."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":80,"context_line":"        refreshed."},{"line_number":81,"context_line":"        \"\"\""},{"line_number":82,"context_line":"        if self._drives_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0bd68e50","line":79,"range":{"start_line":79,"start_character":16,"end_line":79,"end_character":32},"in_reply_to":"3f79a3b5_21c85e1f","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    def drives_max_size_bytes(self):"},{"line_number":89,"context_line":"        \"\"\"Max size available in bytes among all Drives of this collection.\"\"\""},{"line_number":90,"context_line":"        if self._drives_sizes is None:"},{"line_number":91,"context_line":"            self._drives_sizes \u003d ("},{"line_number":92,"context_line":"                utils.max_safe(drv.capacity_bytes for drv in self.drives))"},{"line_number":93,"context_line":"        return self._drives_sizes"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @property"},{"line_number":96,"context_line":"    def volumes(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c1e72aac","line":93,"range":{"start_line":91,"start_character":12,"end_line":93,"end_character":33},"updated":"2018-09-15 01:26:51.000000000","message":"The list \u0027_drives_sizes\u0027 is getting overwritten here. Just a return statement is enough:\n        return utils.max_safe(self.drives_sizes_bytes)","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    def drives_max_size_bytes(self):"},{"line_number":89,"context_line":"        \"\"\"Max size available in bytes among all Drives of this collection.\"\"\""},{"line_number":90,"context_line":"        if self._drives_sizes is None:"},{"line_number":91,"context_line":"            self._drives_sizes \u003d ("},{"line_number":92,"context_line":"                utils.max_safe(drv.capacity_bytes for drv in self.drives))"},{"line_number":93,"context_line":"        return self._drives_sizes"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @property"},{"line_number":96,"context_line":"    def volumes(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ab543ac7","line":93,"range":{"start_line":91,"start_character":12,"end_line":93,"end_character":33},"in_reply_to":"3f79a3b5_c1e72aac","updated":"2018-09-17 09:19:44.000000000","message":"Ah, indeed!","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"class StorageCollection(base.ResourceCollectionBase):"},{"line_number":124,"context_line":"    \"\"\"This class represents the collection of Storage resources\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    _drives_sizes \u003d None"},{"line_number":127,"context_line":"    _volume_sizes \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_21329e10","line":126,"range":{"start_line":126,"start_character":4,"end_line":126,"end_character":17},"updated":"2018-09-15 01:26:51.000000000","message":"ditto for variable name.","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":123,"context_line":"class StorageCollection(base.ResourceCollectionBase):"},{"line_number":124,"context_line":"    \"\"\"This class represents the collection of Storage resources\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    _drives_sizes \u003d None"},{"line_number":127,"context_line":"    _volume_sizes \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cb5976fd","line":126,"range":{"start_line":126,"start_character":4,"end_line":126,"end_character":17},"in_reply_to":"3f79a3b5_21329e10","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\"This class represents the collection of Storage resources\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    _drives_sizes \u003d None"},{"line_number":127,"context_line":"    _volume_sizes \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @property"},{"line_number":130,"context_line":"    def _resource_type(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_a11d4e78","line":127,"range":{"start_line":127,"start_character":4,"end_line":127,"end_character":17},"updated":"2018-09-15 01:26:51.000000000","message":"ditto for variable name.","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\"This class represents the collection of Storage resources\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    _drives_sizes \u003d None"},{"line_number":127,"context_line":"    _volume_sizes \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @property"},{"line_number":130,"context_line":"    def _resource_type(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6b72a27e","line":127,"range":{"start_line":127,"start_character":4,"end_line":127,"end_character":17},"in_reply_to":"3f79a3b5_a11d4e78","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def drives_sizes_bytes(self):"},{"line_number":135,"context_line":"        \"\"\"Sizes of each Drive in bytes in Storage collection resource."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":138,"context_line":"        refreshed."},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        if self._drives_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0193e201","line":137,"range":{"start_line":137,"start_character":16,"end_line":137,"end_character":32},"updated":"2018-09-15 01:26:51.000000000","message":"s/ the cached value / the list of cached values /","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def drives_sizes_bytes(self):"},{"line_number":135,"context_line":"        \"\"\"Sizes of each Drive in bytes in Storage collection resource."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":138,"context_line":"        refreshed."},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        if self._drives_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8b6ffe90","line":137,"range":{"start_line":137,"start_character":16,"end_line":137,"end_character":32},"in_reply_to":"3f79a3b5_0193e201","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def volumes_sizes_bytes(self):"},{"line_number":160,"context_line":"        \"\"\"Sizes of each Volume in bytes in Storage collection resource."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":163,"context_line":"        refreshed."},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        if self._volume_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_412c7aab","line":162,"range":{"start_line":162,"start_character":16,"end_line":162,"end_character":32},"updated":"2018-09-15 01:26:51.000000000","message":"ditto list of the cached values.","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def volumes_sizes_bytes(self):"},{"line_number":160,"context_line":"        \"\"\"Sizes of each Volume in bytes in Storage collection resource."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        Returns the cached value until it (or its parent resource) is"},{"line_number":163,"context_line":"        refreshed."},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        if self._volume_sizes is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4b6566ae","line":162,"range":{"start_line":162,"start_character":16,"end_line":162,"end_character":32},"in_reply_to":"3f79a3b5_412c7aab","updated":"2018-09-17 09:19:44.000000000","message":"Done","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e4046f7c2a8f7d8f6ca9dd3ef63927ae0afa10e6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        if self._volume_sizes is None:"},{"line_number":166,"context_line":"            self._volume_sizes \u003d sorted("},{"line_number":167,"context_line":"                storage_.volumes.max_size_bytes"},{"line_number":168,"context_line":"                for storage_ in self.get_members()"},{"line_number":169,"context_line":"            )"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2c4e156e","line":167,"range":{"start_line":167,"start_character":16,"end_line":167,"end_character":47},"updated":"2018-09-15 01:26:51.000000000","message":"This would give us the largest volume size in a given storage and not the list of size of each of the volumes in the storage. Is it intentional? If so, we need to update doc string of this method accordingly.","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c329bebb0c866dad22fba80beb85ca6a5de9edef","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        if self._volume_sizes is None:"},{"line_number":166,"context_line":"            self._volume_sizes \u003d sorted("},{"line_number":167,"context_line":"                storage_.volumes.max_size_bytes"},{"line_number":168,"context_line":"                for storage_ in self.get_members()"},{"line_number":169,"context_line":"            )"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cb82d6c7","line":167,"range":{"start_line":167,"start_character":16,"end_line":167,"end_character":47},"in_reply_to":"3f79a3b5_2c4e156e","updated":"2018-09-17 09:19:44.000000000","message":"Right, no, that\u0027s a bug. Thanks!","commit_id":"528f01b758e3c3d0a6fc15a24fb5884d7173906f"}],"sushy/resources/system/storage/volume.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"f8dd4365b6bf7444c7e818835fbfd07b1bdd6e41","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        return Volume"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def volumes_sizes_bytes(self):"},{"line_number":48,"context_line":"        \"\"\"Sizes of all Volumes in bytes in VolumeCollection resource."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        Returns the list of cached values until it (or its parent resource)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8090b3f5","line":47,"range":{"start_line":47,"start_character":8,"end_line":47,"end_character":27},"updated":"2018-09-24 11:09:48.000000000","message":"I think its more typing here for ``volumes_sizes_bytes`` \u0026 ``max_volume_size_bytes`` when we are in the context of \"Volumes\" while invoking those. So, from the storage instance it would look something similar in the user code base:\n\n    all_volumes_sizes \u003d stor_inst.volumes.volumes_sizes_bytes\n    max_volume_size \u003d stor_inst.volumes.max_volume_size_bytes\n\nWouldn\u0027t that be more readable to say?\n\n    all_volumes_sizes \u003d stor_inst.volumes.sizes_bytes\n    max_volume_size \u003d stor_inst.volumes.max_size_bytes\n\nIlya, I know its little on the side of nit picking but if you are okay I am willing to make the change as part of my forthcoming caching patch. Let me know what you think.","commit_id":"21a62aedb542475c24f3ab2c71bbce61342d367b"}]}
