)]}'
{"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6d505bc38cc5a8a75ccea4cb3c4193e839a4afa5","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        if not sufficient_cap:"},{"line_number":403,"context_line":"            sufficient_cap \u003d self.manager.check_capacity(volume)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        if sufficient_cap:"},{"line_number":406,"context_line":"            msg \u003d \"Insufficient capacity on storage.\""},{"line_number":407,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def revert(self, result, volume, request_spec):"},{"line_number":410,"context_line":"        if isinstance(result, ft.Failure):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_234aa126","line":407,"range":{"start_line":405,"start_character":1,"end_line":407,"end_character":54},"updated":"2017-02-24 14:57:05.000000000","message":"this is not intuitive based on the variable name","commit_id":"41bdbae15bbbd4a238c72aba70b2570e82cbebcd"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"0aca032efd3614821dafe34099b07f0447e04c59","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        if not sufficient_cap:"},{"line_number":403,"context_line":"            sufficient_cap \u003d self.manager.check_capacity(volume)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        if sufficient_cap:"},{"line_number":406,"context_line":"            msg \u003d \"Insufficient capacity on storage.\""},{"line_number":407,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def revert(self, result, volume, request_spec):"},{"line_number":410,"context_line":"        if isinstance(result, ft.Failure):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_1181598f","line":407,"range":{"start_line":405,"start_character":1,"end_line":407,"end_character":54},"in_reply_to":"da36d5c6_234aa126","updated":"2017-02-24 22:59:12.000000000","message":"You are right, should have use a different variable.  Will change that in next patch.  Thanks.","commit_id":"41bdbae15bbbd4a238c72aba70b2570e82cbebcd"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":368,"context_line":"      1) created from a snapshot;"},{"line_number":369,"context_line":"      2) created from a source volume;"},{"line_number":370,"context_line":"      3) created from a source replica;"},{"line_number":371,"context_line":"    And the check if backend has sufficient capacity to serve the request."},{"line_number":372,"context_line":"    For other type of volumes is task is simply a no-op. The reason this"},{"line_number":373,"context_line":"    checking is needed for above types because they didn\u0027t get through"},{"line_number":374,"context_line":"    scheduler and thus potentially could cause backend overcommit their"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_728c7dd6","line":371,"range":{"start_line":371,"start_character":8,"end_line":371,"end_character":11},"updated":"2017-04-11 16:58:15.000000000","message":"then","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":369,"context_line":"      2) created from a source volume;"},{"line_number":370,"context_line":"      3) created from a source replica;"},{"line_number":371,"context_line":"    And the check if backend has sufficient capacity to serve the request."},{"line_number":372,"context_line":"    For other type of volumes is task is simply a no-op. The reason this"},{"line_number":373,"context_line":"    checking is needed for above types because they didn\u0027t get through"},{"line_number":374,"context_line":"    scheduler and thus potentially could cause backend overcommit their"},{"line_number":375,"context_line":"    capacity (i.e. silently by-pass the backend\u0027s limit)."}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_72a59d46","line":372,"range":{"start_line":372,"start_character":14,"end_line":372,"end_character":32},"updated":"2017-04-11 16:58:15.000000000","message":"types of volumes the","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":370,"context_line":"      3) created from a source replica;"},{"line_number":371,"context_line":"    And the check if backend has sufficient capacity to serve the request."},{"line_number":372,"context_line":"    For other type of volumes is task is simply a no-op. The reason this"},{"line_number":373,"context_line":"    checking is needed for above types because they didn\u0027t get through"},{"line_number":374,"context_line":"    scheduler and thus potentially could cause backend overcommit their"},{"line_number":375,"context_line":"    capacity (i.e. silently by-pass the backend\u0027s limit)."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_f26e4dfe","line":373,"range":{"start_line":373,"start_character":59,"end_line":373,"end_character":70},"updated":"2017-04-11 16:58:15.000000000","message":"got through the","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    And the check if backend has sufficient capacity to serve the request."},{"line_number":372,"context_line":"    For other type of volumes is task is simply a no-op. The reason this"},{"line_number":373,"context_line":"    checking is needed for above types because they didn\u0027t get through"},{"line_number":374,"context_line":"    scheduler and thus potentially could cause backend overcommit their"},{"line_number":375,"context_line":"    capacity (i.e. silently by-pass the backend\u0027s limit)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    Reversion strategy: if the task failed, revert method would set volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_d27909c8","line":374,"range":{"start_line":374,"start_character":41,"end_line":374,"end_character":55},"updated":"2017-04-11 16:58:15.000000000","message":"cause the backend to","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            # This is a volume based on a snapshot"},{"line_number":392,"context_line":"            sufficient_cap \u003d False"},{"line_number":393,"context_line":"        elif volume.source_volid:"},{"line_number":394,"context_line":"            # This is a volume based a source volume"},{"line_number":395,"context_line":"            sufficient_cap \u003d False"},{"line_number":396,"context_line":"        elif request_spec.get(\u0027source_replicaid\u0027):"},{"line_number":397,"context_line":"            sufficient_cap \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_d258e988","line":394,"range":{"start_line":394,"start_character":31,"end_line":394,"end_character":37},"updated":"2017-04-11 16:58:15.000000000","message":"based on","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            # A normal volume, will do nothing"},{"line_number":400,"context_line":"            pass"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        if not sufficient_cap:"},{"line_number":403,"context_line":"            sufficient_cap \u003d self.manager.check_capacity(volume)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        if sufficient_cap:"},{"line_number":406,"context_line":"            msg \u003d \"Insufficient capacity on storage.\""},{"line_number":407,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def revert(self, result, volume, request_spec):"},{"line_number":410,"context_line":"        if isinstance(result, ft.Failure):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_129e5106","line":407,"range":{"start_line":402,"start_character":0,"end_line":407,"end_character":54},"updated":"2017-04-11 16:58:15.000000000","message":"This logic is confusing.  So if we have sufficient_cap set to False we check the capacity.  Then if it is true we say there isn\u0027t sufficient capacity?","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"}],"cinder/volume/manager.py":[{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"d6d2523415effed83b657f2caf1892500fe439cc","unresolved":false,"context_lines":[{"line_number":2087,"context_line":"            self.update_service_capabilities(volume_stats)"},{"line_number":2088,"context_line":""},{"line_number":2089,"context_line":"    def _construct_volume_stats(self):"},{"line_number":2090,"context_line":"        volume_status \u003d self.driver.get_volume_stats(refresh\u003dTrue)"},{"line_number":2091,"context_line":"        if self.extra_capabilities:"},{"line_number":2092,"context_line":"            volume_stats.update(self.extra_capabilities)"},{"line_number":2093,"context_line":"        if volume_stats:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_227a3225","line":2090,"range":{"start_line":2090,"start_character":8,"end_line":2090,"end_character":21},"updated":"2017-03-17 20:15:10.000000000","message":"volume_stats?","commit_id":"41bdbae15bbbd4a238c72aba70b2570e82cbebcd"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"730ed7e2e0ee565a7bfc163aa107a230239c2aa7","unresolved":false,"context_lines":[{"line_number":2087,"context_line":"            self.update_service_capabilities(volume_stats)"},{"line_number":2088,"context_line":""},{"line_number":2089,"context_line":"    def _construct_volume_stats(self):"},{"line_number":2090,"context_line":"        volume_status \u003d self.driver.get_volume_stats(refresh\u003dTrue)"},{"line_number":2091,"context_line":"        if self.extra_capabilities:"},{"line_number":2092,"context_line":"            volume_stats.update(self.extra_capabilities)"},{"line_number":2093,"context_line":"        if volume_stats:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_cd49c38b","line":2090,"range":{"start_line":2090,"start_character":8,"end_line":2090,"end_character":21},"in_reply_to":"1a1ced50_227a3225","updated":"2017-10-02 22:12:54.000000000","message":"Done","commit_id":"41bdbae15bbbd4a238c72aba70b2570e82cbebcd"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"d6d2523415effed83b657f2caf1892500fe439cc","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"            volume_stats \u003d ("},{"line_number":2099,"context_line":"                self._append_filter_goodness_functions(volume_stats))"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        return volume_status"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"    def _append_volume_stats(self, vol_stats):"},{"line_number":2104,"context_line":"        pools \u003d vol_stats.get(\u0027pools\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_42c9ee77","line":2101,"range":{"start_line":2101,"start_character":15,"end_line":2101,"end_character":28},"updated":"2017-03-17 20:15:10.000000000","message":"volume_stats?","commit_id":"41bdbae15bbbd4a238c72aba70b2570e82cbebcd"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"730ed7e2e0ee565a7bfc163aa107a230239c2aa7","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"            volume_stats \u003d ("},{"line_number":2099,"context_line":"                self._append_filter_goodness_functions(volume_stats))"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        return volume_status"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"    def _append_volume_stats(self, vol_stats):"},{"line_number":2104,"context_line":"        pools \u003d vol_stats.get(\u0027pools\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_ad60bf02","line":2101,"range":{"start_line":2101,"start_character":15,"end_line":2101,"end_character":28},"in_reply_to":"1a1ced50_42c9ee77","updated":"2017-10-02 22:12:54.000000000","message":"Done","commit_id":"41bdbae15bbbd4a238c72aba70b2570e82cbebcd"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b7999af994fadba867bc1d7b4e021c34d42ca68f","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        else:"},{"line_number":878,"context_line":"            LOG.debug(\"Not volume or snapshot, API doesn\u0027t support \""},{"line_number":879,"context_line":"                      \"this type yet: %(resource)s\", {\u0027resource\u0027, resource})"},{"line_number":880,"context_line":"            # Set size of resource to large enough so it\u0027d fail filtering"},{"line_number":881,"context_line":"            size \u003d float(inf)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"        # prepare input for CapacityFilter"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_32371502","line":880,"range":{"start_line":880,"start_character":38,"end_line":880,"end_character":73},"updated":"2017-04-11 16:58:15.000000000","message":"value large enough so it wouldn\u0027t fail filtering","commit_id":"9b14ed05c97079d138b76cc1a5ec0262fa8d5368"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b4dd41828a7045c310fc2d9eced308794ecfba9a","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"        :param ctxt: openstack context for DB access"},{"line_number":1038,"context_line":"        :param resource: resource that requires capacity checking"},{"line_number":1039,"context_line":"        :param source_volid: if the \u0027resource\u0027 is volume, and the volume is"},{"line_number":1040,"context_line":"                             being created from a source volume, source volume"},{"line_number":1041,"context_line":"                             id should be passed in as this parameter."},{"line_number":1042,"context_line":"        :returns: True if backend has enough capacity to host new resource,"},{"line_number":1043,"context_line":"                  False if not."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_3adf5c3b","line":1040,"range":{"start_line":1040,"start_character":0,"end_line":1040,"end_character":29},"updated":"2017-07-11 15:17:44.000000000","message":"Do not indent these lines.  This will cause a documentation build failure. The should line up with :param:","commit_id":"183ca6c9596843bf1acf4e813e2b04d466facfde"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b4dd41828a7045c310fc2d9eced308794ecfba9a","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"                             being created from a source volume, source volume"},{"line_number":1041,"context_line":"                             id should be passed in as this parameter."},{"line_number":1042,"context_line":"        :returns: True if backend has enough capacity to host new resource,"},{"line_number":1043,"context_line":"                  False if not."},{"line_number":1044,"context_line":"        \"\"\""},{"line_number":1045,"context_line":"        # get latest backend stats"},{"line_number":1046,"context_line":"        volume_stats \u003d self._construct_volume_stats()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_1ae6e017","line":1043,"range":{"start_line":1043,"start_character":0,"end_line":1043,"end_character":17},"updated":"2017-07-11 15:17:44.000000000","message":"Same here.","commit_id":"183ca6c9596843bf1acf4e813e2b04d466facfde"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"c77d30d289c3e513d79ed022ef533f1c4bdcc4d4","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"            size \u003d float(\u0027inf\u0027)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        # Match volume[\u0027host\u0027] in all_pools and then let it go through filter"},{"line_number":1074,"context_line":"        pool \u003d self.driver.get_pool(source_vol)"},{"line_number":1075,"context_line":"        poolstate \u003d None"},{"line_number":1076,"context_line":"        msg \u003d (\"Unable to find pool info from volume stats, this \""},{"line_number":1077,"context_line":"               \"shall cause failure of checking backend\u0027s capacity \""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_42cb5ca4","line":1074,"updated":"2017-07-11 10:12:31.000000000","message":"What happens if a backend does not use pools? This fails.","commit_id":"183ca6c9596843bf1acf4e813e2b04d466facfde"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b4dd41828a7045c310fc2d9eced308794ecfba9a","unresolved":false,"context_lines":[{"line_number":1118,"context_line":"            sufficient_cap \u003d self.check_capacity(context, snapshot)"},{"line_number":1119,"context_line":"            if not sufficient_cap:"},{"line_number":1120,"context_line":"                msg \u003d \"Insufficient capacity on storage.\""},{"line_number":1121,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":1122,"context_line":""},{"line_number":1123,"context_line":"            model_update \u003d self.driver.create_snapshot(snapshot)"},{"line_number":1124,"context_line":"            if model_update:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_da2068fa","line":1121,"range":{"start_line":1121,"start_character":22,"end_line":1121,"end_character":54},"updated":"2017-07-11 15:17:44.000000000","message":"VolumeDriverException doesn\u0027t really seem like the right choice here.  I would rather see an exception added or use \u0027NoValidBackend\u0027.","commit_id":"183ca6c9596843bf1acf4e813e2b04d466facfde"}]}
