)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af22c51a547cb280a8e7709fde0cb227b3f053c6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     nidhimittalhada \u003cnidhimittal19@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-09 10:41:37 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"manila does not calculate provisioned_capacity_gb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently \u0027provisioned_capacity_gb\u0027 is expected from"},{"line_number":10,"context_line":"the drivers as part of capability reporting."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9a89bdaa_d78cf281","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":49},"updated":"2016-09-09 05:57:14.000000000","message":"Commit message titles have to be in imperative tone and must suggest what\u0027s been done in this commit. \n\nhttps://wiki.openstack.org/wiki/GitCommitMessages\n\nSo, something along the lines of:\n\n \"Calculate provisioned_capacity_gb in the scheduler if unavailable\"\n\nor \n\n \"Add provisioned_capacity_gb estimation\"\n\nwould be good.. \n\nImperative commit messages are preferred for the convention that exists that you\u0027d like to describe this change by prefixing:\n\n  \"This commit will ... \u003ccommit message heading\u003e\"","commit_id":"ed3933c7c99eba07e995312897e116905cdeaaf4"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6533b5ae10e6757b16be9b5da27f78a1834d0295","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"            )"},{"line_number":1235,"context_line":"        ).all()"},{"line_number":1236,"context_line":"    )"},{"line_number":1237,"context_line":"    if with_share_data:"},{"line_number":1238,"context_line":"        instances \u003d _set_instances_share_data(context, instances, session)"},{"line_number":1239,"context_line":"    return instances"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_eac40a41","line":1239,"range":{"start_line":1237,"start_character":0,"end_line":1239,"end_character":20},"updated":"2016-08-04 13:16:02.000000000","message":"The problem with this is that the share and the share instance may be deleted by the time you enter the loop on line 1217.. which causes the NotFound exceptions in the scheduler. You should handle these exceptions..","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6533b5ae10e6757b16be9b5da27f78a1834d0295","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"        instances \u003d _set_instances_share_data(context, instances, session)"},{"line_number":1239,"context_line":"    return instances"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"@require_context"},{"line_number":1243,"context_line":"def share_instances_get_all_by_share_network(context, share_network_id):"},{"line_number":1244,"context_line":"    \"\"\"Returns list of share instances that belong to given share network.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_2a9582e3","line":1241,"range":{"start_line":1241,"start_character":0,"end_line":1241,"end_character":0},"updated":"2016-08-04 13:16:02.000000000","message":"Please add unit tests","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b815014cb764b2def6dbcd0f0ef1c2b31be4e16e","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"            share_access_delete_all_by_share(context, share[\u0027id\u0027])"},{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":""},{"line_number":1213,"context_line":"@require_admin_context"},{"line_number":1214,"context_line":"def share_instances_get_all_by_host(context, host):"},{"line_number":1215,"context_line":"    \"\"\"Retrieves all share instances hosted on a host.\"\"\""},{"line_number":1216,"context_line":"    result \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_0a6784b7","side":"PARENT","line":1213,"updated":"2016-08-23 22:02:30.000000000","message":"Is there any reason why this is changed from admin to non-admin context?","commit_id":"d6637a43b8fc206b90fb628c423b993c7e84f57a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"38ee50e6efbed151b75189e76d05174b7c7a2d3e","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"        instances \u003d [instances]"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    for instance in instances:"},{"line_number":1218,"context_line":"        parent_share \u003d share_get(context, instance[\u0027share_id\u0027],"},{"line_number":1219,"context_line":"                                 session\u003dsession)"},{"line_number":1220,"context_line":"        instance.set_share_data(parent_share)"},{"line_number":1221,"context_line":"    return instances"},{"line_number":1222,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_f8502734","line":1219,"range":{"start_line":1218,"start_character":8,"end_line":1219,"end_character":49},"updated":"2016-08-23 13:13:52.000000000","message":"this needs to be protected with a try-except.. if there is no share, just ignore the share and move on.. else, you\u0027ll break out of this loop at the first exception. \n\n\n instances_with_share_data \u003d []\n for instance in instances:\n     try:\n        parent_share \u003d share_get(context, instance[\u0027share_id\u0027], session\u003dsession)\n     except exceptions.NotFound:\n        continue\n\n     instance.set_share_data(parent_share)\n     instances_with_share_data.append(instance)\n\n  return instances_with_share_data","commit_id":"1fc884ee19e043494f6f59b55f5a93d13f547c1c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"38ee50e6efbed151b75189e76d05174b7c7a2d3e","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"    )"},{"line_number":1237,"context_line":""},{"line_number":1238,"context_line":"    if with_share_data:"},{"line_number":1239,"context_line":"        try:"},{"line_number":1240,"context_line":"            instances \u003d _set_instances_share_data(context, instances, session)"},{"line_number":1241,"context_line":"        except exception.NotFound:"},{"line_number":1242,"context_line":"            raise"},{"line_number":1243,"context_line":"    return instances"},{"line_number":1244,"context_line":""},{"line_number":1245,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_58397bf1","line":1242,"range":{"start_line":1239,"start_character":0,"end_line":1242,"end_character":17},"updated":"2016-08-23 13:13:52.000000000","message":"see comment above","commit_id":"1fc884ee19e043494f6f59b55f5a93d13f547c1c"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"fbf98cf231c70d4677d8a04fed923b00f2235fc3","unresolved":false,"context_lines":[{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    instances_with_share_data \u003d []"},{"line_number":1218,"context_line":"    for instance in instances:"},{"line_number":1219,"context_line":"        try:"},{"line_number":1220,"context_line":"            parent_share \u003d share_get(context, instance[\u0027share_id\u0027],"},{"line_number":1221,"context_line":"                                     session\u003dsession)"},{"line_number":1222,"context_line":"        except exception.NotFound:"},{"line_number":1223,"context_line":"            continue"},{"line_number":1224,"context_line":"        instance.set_share_data(parent_share)"},{"line_number":1225,"context_line":"        instances_with_share_data.append(instance)"},{"line_number":1226,"context_line":"    return instances_with_share_data"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_539c2869","line":1223,"range":{"start_line":1219,"start_character":8,"end_line":1223,"end_character":20},"updated":"2016-09-06 11:54:27.000000000","message":"I am curious to know in which case this could happen. We shouldn\u0027t add this type of precautions if they cannot happen else we could end up masking errors.","commit_id":"33a2275a4614ef5e86a0228ec18e82d4c7678c1b"}],"manila/scheduler/host_manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6533b5ae10e6757b16be9b5da27f78a1834d0295","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        # No pools in pool"},{"line_number":352,"context_line":"        self.pools \u003d None"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_aad172fd","line":354,"range":{"start_line":354,"start_character":0,"end_line":354,"end_character":68},"updated":"2016-08-04 13:16:02.000000000","message":"add a docstring please..","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"d35736712d1f893d34bc26d82dcd004623887337","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_f2b9aa16","line":356,"updated":"2016-08-04 09:20:27.000000000","message":"how about the snapshots\u0027 size?","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4ebe50d6d0d6c8e28856fa8f5adb101cf38c1eb6","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_2e5766cf","line":356,"in_reply_to":"1ac06dbe_fb5fce3e","updated":"2016-08-22 12:46:51.000000000","message":"it\u0027s an estimate; we can leave the snapshot sizes out","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16305,"name":"NidhiMittalHada","email":"nidhimittal19@gmail.com","username":"nidhimittalhada"},"change_message_id":"4540386a8b98bef6aadd15098f0178923dded5c9","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_fb5fce3e","line":356,"in_reply_to":"9ad45d7e_f7c33187","updated":"2016-08-22 12:42:18.000000000","message":"stack@controller:~/devstack$ manila create --name \"share1\" --share-type type1 NFS 5\n\n manila snapshot-create 676a02f3-c2ab-4701-bf83-3a19ba71bf0f\n\n\nshows size of snapshot created same as share, which doesn\u0027t show whether share actually took some space on backend or not.\n\nShould we rely on this reported snapshot size from database for this calculation ? i guess no .. any suggestion ?","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6533b5ae10e6757b16be9b5da27f78a1834d0295","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_ea208af9","line":356,"in_reply_to":"bacf61ea_980fafe0","updated":"2016-08-04 13:16:02.000000000","message":"Hmm, for some backends snapshots may occupy the same amount of space as the volume.. but for most, snapshots are just a collection of file pointers and occupy negligible space.. i would leave them out.","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"089596049d6d8fbf22e866371783c1033763371f","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_f7c33187","line":356,"in_reply_to":"bacf61ea_ea208af9","updated":"2016-08-10 18:43:15.000000000","message":"Agree with Goutham, snapshot space consumption is too variable to be included in this calculation.","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16305,"name":"NidhiMittalHada","email":"nidhimittal19@gmail.com","username":"nidhimittalhada"},"change_message_id":"c744f076407f09daea08ab94672407024b44d04d","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _estimate_allocated_capacity(self, host_name, context\u003dNone):"},{"line_number":355,"context_line":"        instances \u003d db.share_instances_get_all_by_host("},{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_980fafe0","line":356,"in_reply_to":"bacf61ea_f2b9aa16","updated":"2016-08-04 10:14:20.000000000","message":"yes that also can be added..","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"dc6c001f0a368e7dd4dcc29cd870caf7a9bf5783","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":357,"context_line":"        allocated_capacity \u003d 0"},{"line_number":358,"context_line":"        for instance in instances:"},{"line_number":359,"context_line":"            allocated_capacity \u003d allocated_capacity + instance[\u0027size\u0027]"},{"line_number":360,"context_line":"        return allocated_capacity"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def update_from_share_capability("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_b3b8b876","line":359,"range":{"start_line":359,"start_character":0,"end_line":359,"end_character":70},"updated":"2016-08-04 18:22:07.000000000","message":"Could shorten to just using a +\u003d","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"d35736712d1f893d34bc26d82dcd004623887337","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                capability.get(\u0027allocated_capacity_gb\u0027))"},{"line_number":375,"context_line":"            if self.allocated_capacity_gb is None:"},{"line_number":376,"context_line":"                self.allocated_capacity_gb \u003d self._estimate_allocated_capacity("},{"line_number":377,"context_line":"                    self.host, context\u003dcontext)"},{"line_number":378,"context_line":"            self.qos \u003d capability.get(\u0027qos\u0027, False)"},{"line_number":379,"context_line":"            self.reserved_percentage \u003d capability[\u0027reserved_percentage\u0027]"},{"line_number":380,"context_line":"            # NOTE(xyang): provisioned_capacity_gb is the apparent total"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_12e8be0f","line":377,"updated":"2016-08-04 09:20:27.000000000","message":"For all pools of a host, their allocated_capacity_gb will be the same, and equal to the sum of all allocated shares size of the host. So the calculated size might be larger than the actual allocated size of a pool.","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":16305,"name":"NidhiMittalHada","email":"nidhimittal19@gmail.com","username":"nidhimittalhada"},"change_message_id":"c744f076407f09daea08ab94672407024b44d04d","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                capability.get(\u0027allocated_capacity_gb\u0027))"},{"line_number":375,"context_line":"            if self.allocated_capacity_gb is None:"},{"line_number":376,"context_line":"                self.allocated_capacity_gb \u003d self._estimate_allocated_capacity("},{"line_number":377,"context_line":"                    self.host, context\u003dcontext)"},{"line_number":378,"context_line":"            self.qos \u003d capability.get(\u0027qos\u0027, False)"},{"line_number":379,"context_line":"            self.reserved_percentage \u003d capability[\u0027reserved_percentage\u0027]"},{"line_number":380,"context_line":"            # NOTE(xyang): provisioned_capacity_gb is the apparent total"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_531238b5","line":377,"in_reply_to":"bacf61ea_12e8be0f","updated":"2016-08-04 10:14:20.000000000","message":"allocated_capacity_gb and provisioned_capacity_gb they are variables per host for calculating provision_ratio.","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b815014cb764b2def6dbcd0f0ef1c2b31be4e16e","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            self.total_capacity_gb \u003d capability[\u0027total_capacity_gb\u0027]"},{"line_number":360,"context_line":"            self.free_capacity_gb \u003d capability[\u0027free_capacity_gb\u0027]"},{"line_number":361,"context_line":"            self.allocated_capacity_gb \u003d capability.get("},{"line_number":362,"context_line":"                \u0027allocated_capacity_gb\u0027, 0)"},{"line_number":363,"context_line":"            self.qos \u003d capability.get(\u0027qos\u0027, False)"},{"line_number":364,"context_line":"            self.reserved_percentage \u003d capability[\u0027reserved_percentage\u0027]"},{"line_number":365,"context_line":"            # NOTE(xyang): provisioned_capacity_gb is the apparent total"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_6a639842","side":"PARENT","line":362,"updated":"2016-08-23 22:02:30.000000000","message":"The default 0 should not be removed.  Otherwise default becomes None which is not right.","commit_id":"d6637a43b8fc206b90fb628c423b993c7e84f57a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b815014cb764b2def6dbcd0f0ef1c2b31be4e16e","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            self.free_capacity_gb \u003d capability[\u0027free_capacity_gb\u0027]"},{"line_number":380,"context_line":"            self.allocated_capacity_gb \u003d ("},{"line_number":381,"context_line":"                capability.get(\u0027allocated_capacity_gb\u0027))"},{"line_number":382,"context_line":"            if self.allocated_capacity_gb is None:"},{"line_number":383,"context_line":"                self.allocated_capacity_gb \u003d self._estimate_allocated_capacity("},{"line_number":384,"context_line":"                    self.host, context\u003dcontext)"},{"line_number":385,"context_line":"            self.qos \u003d capability.get(\u0027qos\u0027, False)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_8559a737","line":382,"updated":"2016-08-23 22:02:30.000000000","message":"We should calculate provisioned_capacity instead and leave allocated_capacity alone.  Allocated_capacity is something from Cinder and it is used for the Allocated Capacity Weigher.  If we really want to keep allocated_capacity, then we should look at Cinder\u0027s code and do the similar thing.\n\nWhat you are estimating in this patch should be provisioned_capacity instead.\n\nI suggest that you just make changes for provisioned capacity in this patch and sort out how to clean up allocated capacity in another patch.  Either we don\u0027t need it in Manila and it can be removed, or we can take a look of Cinder and copy the Allocated Capacity Weigher code over.","commit_id":"1fc884ee19e043494f6f59b55f5a93d13f547c1c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1470b1f229c3acfebe3a25dcf09341eb169d05d7","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            context, host_name, with_share_data\u003dTrue)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"        for instance in instances:"},{"line_number":362,"context_line":"            provisioned_capacity +\u003d instance[\u0027size\u0027]"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        return provisioned_capacity"},{"line_number":365,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_e9699bbf","line":362,"range":{"start_line":362,"start_character":36,"end_line":362,"end_character":52},"updated":"2016-09-01 23:40:42.000000000","message":"instance[\u0027size\u0027] or 0\n\nand add a comment above..\n # if a share instance is still being created, its size will be None.","commit_id":"4b82e2760e8a23caab8135671c3b349eca83684d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"506983c0c14b18f4933566e2b987a8b5a75fa2a8","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            # apparent total capacity of all the shares created on a backend"},{"line_number":385,"context_line":"            # in Manila. Using allocated_capacity_gb as the default of"},{"line_number":386,"context_line":"            # provisioned_capacity_gb if it is not set."},{"line_number":387,"context_line":"            self.provisioned_capacity_gb \u003d capability.get("},{"line_number":388,"context_line":"                \u0027provisioned_capacity_gb\u0027, self.allocated_capacity_gb)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            # NOTE(nidhimittalhada): If both \u0027provisioned_capacity_gb\u0027 and"},{"line_number":391,"context_line":"            # \u0027allocated_capacity_gb\u0027 are not set, then calculating"},{"line_number":392,"context_line":"            # \u0027provisioned_capacity_gb\u0027 from share sizes on host, as per"},{"line_number":393,"context_line":"            # information available in manila database."},{"line_number":394,"context_line":"            if all(k not in capability for k in("},{"line_number":395,"context_line":"                    \u0027provisioned_capacity_gb\u0027, \u0027allocated_capacity_gb\u0027)):"},{"line_number":396,"context_line":"                self.provisioned_capacity_gb \u003d ("},{"line_number":397,"context_line":"                    self._estimate_provisioned_capacity(self.host,"},{"line_number":398,"context_line":"                                                        context\u003dcontext))"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"            self.max_over_subscription_ratio \u003d capability.get("},{"line_number":401,"context_line":"                \u0027max_over_subscription_ratio\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_4918c775","line":398,"range":{"start_line":387,"start_character":0,"end_line":398,"end_character":73},"updated":"2016-09-01 23:37:55.000000000","message":"I guess what Xing meant was don\u0027t worry about the allocated_capacity here.. \n\nSo this should just be:\n\n    self.provisioned_capacity_gb \u003d capability.get(\n        \u0027provisioned_capacity_gb\u0027) or self._estimate_provisioned_capacity(\n         self.host, context\u003dcontext)","commit_id":"4b82e2760e8a23caab8135671c3b349eca83684d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"beee4c78856aab49c0c252d5e20cc3e799e45de8","unresolved":false,"context_lines":[{"line_number":387,"context_line":"            self.provisioned_capacity_gb \u003d capability.get("},{"line_number":388,"context_line":"                \u0027provisioned_capacity_gb\u0027, self.allocated_capacity_gb)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            # NOTE(nidhimittalhada): If both \u0027provisioned_capacity_gb\u0027 and"},{"line_number":391,"context_line":"            # \u0027allocated_capacity_gb\u0027 are not set, then calculating"},{"line_number":392,"context_line":"            # \u0027provisioned_capacity_gb\u0027 from share sizes on host, as per"},{"line_number":393,"context_line":"            # information available in manila database."},{"line_number":394,"context_line":"            if all(k not in capability for k in("},{"line_number":395,"context_line":"                    \u0027provisioned_capacity_gb\u0027, \u0027allocated_capacity_gb\u0027)):"},{"line_number":396,"context_line":"                self.provisioned_capacity_gb \u003d ("},{"line_number":397,"context_line":"                    self._estimate_provisioned_capacity(self.host,"},{"line_number":398,"context_line":"                                                        context\u003dcontext))"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"            self.max_over_subscription_ratio \u003d capability.get("},{"line_number":401,"context_line":"                \u0027max_over_subscription_ratio\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_a773577f","line":398,"range":{"start_line":390,"start_character":0,"end_line":398,"end_character":73},"updated":"2016-09-06 19:08:13.000000000","message":"Why don\u0027t we decouple provisioned and allocated capacity GB now? I posted about this in my last review. Could you please explain the reasoning behind this change?","commit_id":"33a2275a4614ef5e86a0228ec18e82d4c7678c1b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c9141db2bb31e97014c149aa3a0b9d682ea6fab4","unresolved":false,"context_lines":[{"line_number":387,"context_line":"            self.provisioned_capacity_gb \u003d capability.get("},{"line_number":388,"context_line":"                \u0027provisioned_capacity_gb\u0027, self.allocated_capacity_gb)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            # NOTE(nidhimittalhada): If both \u0027provisioned_capacity_gb\u0027 and"},{"line_number":391,"context_line":"            # \u0027allocated_capacity_gb\u0027 are not set, then calculating"},{"line_number":392,"context_line":"            # \u0027provisioned_capacity_gb\u0027 from share sizes on host, as per"},{"line_number":393,"context_line":"            # information available in manila database."},{"line_number":394,"context_line":"            if all(k not in capability for k in("},{"line_number":395,"context_line":"                    \u0027provisioned_capacity_gb\u0027, \u0027allocated_capacity_gb\u0027)):"},{"line_number":396,"context_line":"                self.provisioned_capacity_gb \u003d ("},{"line_number":397,"context_line":"                    self._estimate_provisioned_capacity(self.host,"},{"line_number":398,"context_line":"                                                        context\u003dcontext))"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"            self.max_over_subscription_ratio \u003d capability.get("},{"line_number":401,"context_line":"                \u0027max_over_subscription_ratio\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_d7961b3d","line":398,"range":{"start_line":390,"start_character":0,"end_line":398,"end_character":73},"in_reply_to":"9a89bdaa_87ebb3af","updated":"2016-09-07 13:46:48.000000000","message":"Agree that we should not use self.allocated_capacity_gb as the default for \u0027provisioned_capacity_gb\u0027 now because it is not properly calculated.  Please set the default to 0 for \u0027provisioned_capacity_gb\u0027 now.","commit_id":"33a2275a4614ef5e86a0228ec18e82d4c7678c1b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a9b09d1443707bf01c79ddde8b0465faa9c7e41f","unresolved":false,"context_lines":[{"line_number":387,"context_line":"            self.provisioned_capacity_gb \u003d capability.get("},{"line_number":388,"context_line":"                \u0027provisioned_capacity_gb\u0027, self.allocated_capacity_gb)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            # NOTE(nidhimittalhada): If both \u0027provisioned_capacity_gb\u0027 and"},{"line_number":391,"context_line":"            # \u0027allocated_capacity_gb\u0027 are not set, then calculating"},{"line_number":392,"context_line":"            # \u0027provisioned_capacity_gb\u0027 from share sizes on host, as per"},{"line_number":393,"context_line":"            # information available in manila database."},{"line_number":394,"context_line":"            if all(k not in capability for k in("},{"line_number":395,"context_line":"                    \u0027provisioned_capacity_gb\u0027, \u0027allocated_capacity_gb\u0027)):"},{"line_number":396,"context_line":"                self.provisioned_capacity_gb \u003d ("},{"line_number":397,"context_line":"                    self._estimate_provisioned_capacity(self.host,"},{"line_number":398,"context_line":"                                                        context\u003dcontext))"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"            self.max_over_subscription_ratio \u003d capability.get("},{"line_number":401,"context_line":"                \u0027max_over_subscription_ratio\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_87ebb3af","line":398,"range":{"start_line":390,"start_character":0,"end_line":398,"end_character":73},"in_reply_to":"9a89bdaa_a773577f","updated":"2016-09-06 19:13:39.000000000","message":"Please see previous reviews on PS 4 and Xing\u0027s comments on PS 2 ... decoupling these two fields will help us. For instance, a backend may report allocated_capacity_gb right now and we can add the weigher that Xing mentioned later.. If you don\u0027t decouple them, you will continue overloading allocated_capacity_gb and backends that can\u0027t give you provisioned_capacity_gb but can give you allocated_capacity_gb cannot take advantage of your code!","commit_id":"33a2275a4614ef5e86a0228ec18e82d4c7678c1b"}],"manila/tests/db/sqlalchemy/test_api.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"c1e8ed196c122966857c03045765f4191c3e7810","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        self.assertEqual(1, len(instances))"},{"line_number":204,"context_line":"        instance \u003d instances[0]"},{"line_number":205,"context_line":"        self.assertEqual(\u0027share-%s\u0027 % instance[\u0027id\u0027], instance[\u0027name\u0027])"},{"line_number":206,"context_line":"        if with_share_data:"},{"line_number":207,"context_line":"            self.assertEqual(\u0027NFS\u0027, instance[\u0027share_proto\u0027])"},{"line_number":208,"context_line":"            self.assertEqual(0, instance[\u0027size\u0027])"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def test_share_instance_get_all_by_host_exception(self):"},{"line_number":211,"context_line":"        db_utils.create_share()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_1fac6334","line":208,"range":{"start_line":206,"start_character":8,"end_line":208,"end_character":49},"updated":"2016-09-01 09:56:12.000000000","message":"How about else? such as:\nelse:\n    self.assertIsNone(instance.get(\u0027share_proto\u0027))\n.....\n\nor you could check the whole instance keys. such as:  \nhttps://github.com/openstack/manila/blob/master/manila/tests/db/sqlalchemy/test_api.py#L280","commit_id":"4b82e2760e8a23caab8135671c3b349eca83684d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"c1e8ed196c122966857c03045765f4191c3e7810","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            self.assertEqual(\u0027NFS\u0027, instance[\u0027share_proto\u0027])"},{"line_number":208,"context_line":"            self.assertEqual(0, instance[\u0027size\u0027])"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def test_share_instance_get_all_by_host_exception(self):"},{"line_number":211,"context_line":"        db_utils.create_share()"},{"line_number":212,"context_line":"        self.mock_object(db_api, \u0027share_get\u0027, mock.Mock("},{"line_number":213,"context_line":"                         side_effect\u003dexception.NotFound))"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_6ab5ab2f","line":210,"range":{"start_line":210,"start_character":44,"end_line":210,"end_character":53},"updated":"2016-09-01 09:56:12.000000000","message":"not_found","commit_id":"4b82e2760e8a23caab8135671c3b349eca83684d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc804a66d7850f85650fd86ed54be71b6f8ba4cf","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            self.assertNotIn(\u0027share_proto\u0027, instance)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def test_share_instance_get_all_by_host_not_found_exception(self):"},{"line_number":213,"context_line":"        db_utils.create_share()"},{"line_number":214,"context_line":"        self.mock_object(db_api, \u0027share_get\u0027, mock.Mock("},{"line_number":215,"context_line":"                         side_effect\u003dexception.NotFound))"},{"line_number":216,"context_line":"        instances \u003d db_api.share_instances_get_all_by_host("},{"line_number":217,"context_line":"            self.ctxt, \u0027fake_host\u0027, True)"},{"line_number":218,"context_line":"        self.assertEqual(0, len(instances))"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def test_share_instance_get_all_by_consistency_group(self):"},{"line_number":221,"context_line":"        cg \u003d db_utils.create_consistency_group()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_f783cd00","line":218,"range":{"start_line":213,"start_character":8,"end_line":218,"end_character":43},"updated":"2016-09-08 18:19:47.000000000","message":"separate sections within your unit test with one blank line before and after the call to the unit that you are testing. It makes for better readability; see other tests in this module.. \n\nSame above.","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"}],"manila/tests/scheduler/test_host_manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6533b5ae10e6757b16be9b5da27f78a1834d0295","unresolved":false,"context_lines":[{"line_number":809,"context_line":"    def test_update_from_share_capability(self, share_capability):"},{"line_number":810,"context_line":"        fake_context \u003d context.RequestContext(\u0027user\u0027, \u0027project\u0027)"},{"line_number":811,"context_line":"        fake_instances \u003d ["},{"line_number":812,"context_line":"            {\u0027id\u0027: \u0027fake_id1\u0027, \u0027size\u0027: 2},"},{"line_number":813,"context_line":"            {\u0027id\u0027: \u0027fake_id2\u0027, \u0027size\u0027: 3},"},{"line_number":814,"context_line":"        ]"},{"line_number":815,"context_line":"        self.mock_object("},{"line_number":816,"context_line":"            db, \u0027share_instances_get_all_by_host\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_aadb32ec","line":813,"range":{"start_line":812,"start_character":0,"end_line":813,"end_character":42},"updated":"2016-08-04 13:16:02.000000000","message":"use more realistic fakes from the fakes file..","commit_id":"7a4a251621f40654c826ad95db29f4f5a03949fb"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"ea10c47d549212860d6c0e535b8c281b5ad8815f","unresolved":false,"context_lines":[{"line_number":805,"context_line":"                 \u0027reserved_percentage\u0027: 0, \u0027timestamp\u0027: None,"},{"line_number":806,"context_line":"                 \u0027cap1\u0027: \u0027val1\u0027, \u0027cap2\u0027: \u0027val2\u0027},"},{"line_number":807,"context_line":"            \u0027instances\u0027:"},{"line_number":808,"context_line":"                [dict(id\u003d1, host\u003d\u0027host1\u0027, status\u003d\u0027available\u0027, share_id\u003d11,"},{"line_number":809,"context_line":"                      size\u003d4, updated_at\u003dtimeutils.utcnow())]"},{"line_number":810,"context_line":"        },"},{"line_number":811,"context_line":"        {"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_bf6e17c7","line":808,"range":{"start_line":808,"start_character":17,"end_line":808,"end_character":21},"updated":"2016-09-01 09:43:38.000000000","message":"https://www.python.org/dev/peps/pep-0274/","commit_id":"4b82e2760e8a23caab8135671c3b349eca83684d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc804a66d7850f85650fd86ed54be71b6f8ba4cf","unresolved":false,"context_lines":[{"line_number":889,"context_line":"            mock.Mock(return_value\u003dinstances))"},{"line_number":890,"context_line":"        fake_pool \u003d host_manager.PoolState(\u0027host1\u0027, None, \u0027pool0\u0027)"},{"line_number":891,"context_line":"        self.assertIsNone(fake_pool.free_capacity_gb)"},{"line_number":892,"context_line":"        fake_pool.update_from_share_capability(share_capability,"},{"line_number":893,"context_line":"                                               context\u003dfake_context)"},{"line_number":894,"context_line":"        self.assertEqual(fake_pool.host, \u0027host1#pool0\u0027)"},{"line_number":895,"context_line":"        self.assertEqual(fake_pool.pool_name, \u0027pool0\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_77ec1dbb","line":892,"range":{"start_line":892,"start_character":0,"end_line":892,"end_character":64},"updated":"2016-09-08 18:19:47.000000000","message":"add a blank line before this line","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc804a66d7850f85650fd86ed54be71b6f8ba4cf","unresolved":false,"context_lines":[{"line_number":891,"context_line":"        self.assertIsNone(fake_pool.free_capacity_gb)"},{"line_number":892,"context_line":"        fake_pool.update_from_share_capability(share_capability,"},{"line_number":893,"context_line":"                                               context\u003dfake_context)"},{"line_number":894,"context_line":"        self.assertEqual(fake_pool.host, \u0027host1#pool0\u0027)"},{"line_number":895,"context_line":"        self.assertEqual(fake_pool.pool_name, \u0027pool0\u0027)"},{"line_number":896,"context_line":"        self.assertEqual(fake_pool.total_capacity_gb, 1024)"},{"line_number":897,"context_line":"        self.assertEqual(fake_pool.free_capacity_gb, 512)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_972d2100","line":894,"range":{"start_line":894,"start_character":0,"end_line":894,"end_character":55},"updated":"2016-09-08 18:19:47.000000000","message":"add a blank line before this line","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"df30688822a6ea24545a68706cb373bf5a7e8548","unresolved":false,"context_lines":[{"line_number":891,"context_line":"        self.assertIsNone(fake_pool.free_capacity_gb)"},{"line_number":892,"context_line":"        fake_pool.update_from_share_capability(share_capability,"},{"line_number":893,"context_line":"                                               context\u003dfake_context)"},{"line_number":894,"context_line":"        self.assertEqual(fake_pool.host, \u0027host1#pool0\u0027)"},{"line_number":895,"context_line":"        self.assertEqual(fake_pool.pool_name, \u0027pool0\u0027)"},{"line_number":896,"context_line":"        self.assertEqual(fake_pool.total_capacity_gb, 1024)"},{"line_number":897,"context_line":"        self.assertEqual(fake_pool.free_capacity_gb, 512)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_de6174aa","line":894,"range":{"start_line":894,"start_character":0,"end_line":894,"end_character":55},"in_reply_to":"9a89bdaa_972d2100","updated":"2016-09-09 00:49:25.000000000","message":"self.assertEqual(\u0027host1#pool0\u0027, fake_pool.host)","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc804a66d7850f85650fd86ed54be71b6f8ba4cf","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            db.share_instances_get_all_by_host.assert_called_once_with("},{"line_number":902,"context_line":"                fake_context, fake_pool.host, with_share_data\u003dTrue)"},{"line_number":903,"context_line":"            if len(instances) \u003e 0:"},{"line_number":904,"context_line":"                self.assertEqual(fake_pool.provisioned_capacity_gb, 4)"},{"line_number":905,"context_line":"            else:"},{"line_number":906,"context_line":"                self.assertEqual(fake_pool.provisioned_capacity_gb, 0)"},{"line_number":907,"context_line":"            if \u0027allocated_capacity_gb\u0027 in share_capability:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_97dfe10b","line":904,"range":{"start_line":904,"start_character":33,"end_line":904,"end_character":69},"updated":"2016-09-08 18:19:47.000000000","message":"the order is supposed to be (expected, actual), so:\n\n   self.assertEqual(4, fake_pool.provisioned_capacity_gb)","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc804a66d7850f85650fd86ed54be71b6f8ba4cf","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            if len(instances) \u003e 0:"},{"line_number":904,"context_line":"                self.assertEqual(fake_pool.provisioned_capacity_gb, 4)"},{"line_number":905,"context_line":"            else:"},{"line_number":906,"context_line":"                self.assertEqual(fake_pool.provisioned_capacity_gb, 0)"},{"line_number":907,"context_line":"            if \u0027allocated_capacity_gb\u0027 in share_capability:"},{"line_number":908,"context_line":"                self.assertEqual(fake_pool.allocated_capacity_gb,"},{"line_number":909,"context_line":"                                 share_capability[\u0027allocated_capacity_gb\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_d7e5e9db","line":906,"range":{"start_line":906,"start_character":0,"end_line":906,"end_character":70},"updated":"2016-09-08 18:19:47.000000000","message":"same","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"df30688822a6ea24545a68706cb373bf5a7e8548","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            if len(instances) \u003e 0:"},{"line_number":904,"context_line":"                self.assertEqual(fake_pool.provisioned_capacity_gb, 4)"},{"line_number":905,"context_line":"            else:"},{"line_number":906,"context_line":"                self.assertEqual(fake_pool.provisioned_capacity_gb, 0)"},{"line_number":907,"context_line":"            if \u0027allocated_capacity_gb\u0027 in share_capability:"},{"line_number":908,"context_line":"                self.assertEqual(fake_pool.allocated_capacity_gb,"},{"line_number":909,"context_line":"                                 share_capability[\u0027allocated_capacity_gb\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_3ee6e016","line":906,"range":{"start_line":906,"start_character":0,"end_line":906,"end_character":70},"in_reply_to":"9a89bdaa_d7e5e9db","updated":"2016-09-09 00:49:25.000000000","message":"Check all the assertEqual after this one too.","commit_id":"262a9021a054117fa7281939f0e9ae56cdbf2941"}]}
