)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6e2bf289833c72fd7fc11d3c799a69d1d56bc0a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"snapshots to HNAS NFS driver."},{"line_number":11,"context_line":"Also, adds some missing docstrings."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ide48b84f22efe409f9493918b27a05cf5782b893"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_b7ac7ba1","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"updated":"2016-11-01 18:02:18.000000000","message":"No need to add this. This was (at least should) documented in the general list/snapshot volumes.","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"7f171d7dc12b23913d01cc4a30847457759e87f3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"snapshots to HNAS NFS driver."},{"line_number":11,"context_line":"Also, adds some missing docstrings."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ide48b84f22efe409f9493918b27a05cf5782b893"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_814df2c5","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"in_reply_to":"ba5da102_b7ac7ba1","updated":"2016-11-03 19:08:01.000000000","message":"Even though we don\u0027t need to explain how the feature work, we need to add this in the driver supported features list at least. I guess this justifies the DocImpact flag.","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"}],"cinder/volume/drivers/hitachi/hnas_backend.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6e2bf289833c72fd7fc11d3c799a69d1d56bc0a","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                        relative \u003d value.split(\u0027:\u0027)[1]"},{"line_number":894,"context_line":"                        relatives.append(relative)"},{"line_number":895,"context_line":"        else:"},{"line_number":896,"context_line":"            LOG.error(_LE(\"File %(path)s is not a clone.\") % {"},{"line_number":897,"context_line":"                \u0027path\u0027: file_path})"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        return relatives"},{"line_number":900,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_5c9ded08","line":897,"range":{"start_line":896,"start_character":12,"end_line":897,"end_character":35},"updated":"2016-11-01 18:02:18.000000000","message":"This should not be an error message. Just a debug is enough.","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"7f171d7dc12b23913d01cc4a30847457759e87f3","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                        relative \u003d value.split(\u0027:\u0027)[1]"},{"line_number":894,"context_line":"                        relatives.append(relative)"},{"line_number":895,"context_line":"        else:"},{"line_number":896,"context_line":"            LOG.error(_LE(\"File %(path)s is not a clone.\") % {"},{"line_number":897,"context_line":"                \u0027path\u0027: file_path})"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        return relatives"},{"line_number":900,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_b6d5e1e5","line":897,"range":{"start_line":896,"start_character":12,"end_line":897,"end_character":35},"in_reply_to":"ba5da102_5c9ded08","updated":"2016-11-03 19:08:01.000000000","message":"Done","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"92126d52469cdb51c6a127130a895b8d0ec69244","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                        relative \u003d value.split(\u0027:\u0027)[1]"},{"line_number":894,"context_line":"                        relatives.append(relative)"},{"line_number":895,"context_line":"        else:"},{"line_number":896,"context_line":"            LOG.debug(\"File %(path)s is not a clone.\" % {"},{"line_number":897,"context_line":"                \u0027path\u0027: file_path})"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        return relatives"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_91ece72a","line":896,"range":{"start_line":896,"start_character":53,"end_line":896,"end_character":55},"updated":"2016-12-09 12:55:35.000000000","message":"Please change % to ,","commit_id":"7978ef1ba4fc82821b8161af292be2579dea0052"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"304351f4fd11f80ad67c86204fda6ee276ac09f1","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                        relative \u003d value.split(\u0027:\u0027)[1]"},{"line_number":894,"context_line":"                        relatives.append(relative)"},{"line_number":895,"context_line":"        else:"},{"line_number":896,"context_line":"            LOG.debug(\"File %(path)s is not a clone.\" % {"},{"line_number":897,"context_line":"                \u0027path\u0027: file_path})"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        return relatives"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_c125aac2","line":896,"range":{"start_line":896,"start_character":53,"end_line":896,"end_character":55},"in_reply_to":"3a71b18c_91ece72a","updated":"2016-12-09 15:47:14.000000000","message":"Done","commit_id":"7978ef1ba4fc82821b8161af292be2579dea0052"}],"cinder/volume/drivers/hitachi/hnas_nfs.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"bc6ea0741f46fba3b6c615577c64597e52cc33d1","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        return self._execute(\"ls\", mnt_point, run_as_root\u003dFalse,"},{"line_number":780,"context_line":"                             check_exit_code\u003dTrue)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"    def _get_manageable_resource_info(self, cinder_resources, resource_type,"},{"line_number":783,"context_line":"                                      marker, limit, offset, sort_keys,"},{"line_number":784,"context_line":"                                      sort_dirs):"},{"line_number":785,"context_line":"        entries \u003d []"},{"line_number":786,"context_line":"        exports \u003d {}"},{"line_number":787,"context_line":"        bend_rsrc \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_933792af","line":784,"range":{"start_line":782,"start_character":3,"end_line":784,"end_character":49},"updated":"2016-10-19 14:22:53.000000000","message":"this function can be splitted into smaller ones","commit_id":"e3b7d30266a4585df140afba5699bf753bc800e1"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"e02463592d6260c042e47fa52d7214b3fcb0a5cb","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        return self._execute(\"ls\", mnt_point, run_as_root\u003dFalse,"},{"line_number":780,"context_line":"                             check_exit_code\u003dTrue)"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"    def _get_manageable_resource_info(self, cinder_resources, resource_type,"},{"line_number":783,"context_line":"                                      marker, limit, offset, sort_keys,"},{"line_number":784,"context_line":"                                      sort_dirs):"},{"line_number":785,"context_line":"        entries \u003d []"},{"line_number":786,"context_line":"        exports \u003d {}"},{"line_number":787,"context_line":"        bend_rsrc \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_ff72b7ac","line":784,"range":{"start_line":782,"start_character":3,"end_line":784,"end_character":49},"in_reply_to":"fa6399be_933792af","updated":"2016-10-20 19:15:01.000000000","message":"Done","commit_id":"e3b7d30266a4585df140afba5699bf753bc800e1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"bc6ea0741f46fba3b6c615577c64597e52cc33d1","unresolved":false,"context_lines":[{"line_number":928,"context_line":"                                 sort_keys, sort_dirs):"},{"line_number":929,"context_line":"        \"\"\"List snapshots on the backend available for management by Cinder."},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"            Returns a list of dictionaries, each specifying a snapshot in"},{"line_number":932,"context_line":"            the host, with the following keys:"},{"line_number":933,"context_line":"            - reference (dictionary): The reference for a snapshot,"},{"line_number":934,"context_line":"            which can be passed to \"manage_existing_snapshot\"."},{"line_number":935,"context_line":"            - size (int): The size of the snapshot according to the storage"},{"line_number":936,"context_line":"              backend, rounded up to the nearest GB."},{"line_number":937,"context_line":"            - safe_to_manage (boolean): Whether or not this snapshot is"},{"line_number":938,"context_line":"            safe to manage according to the storage backend. For example,"},{"line_number":939,"context_line":"              is the snapshot in use or invalid for any reason."},{"line_number":940,"context_line":"            - reason_not_safe (string): If safe_to_manage is False,"},{"line_number":941,"context_line":"              the reason why."},{"line_number":942,"context_line":"            - cinder_id (string): If already managed, provide the Cinder ID."},{"line_number":943,"context_line":"            - extra_info (string): Any extra information to return to the"},{"line_number":944,"context_line":"            user"},{"line_number":945,"context_line":"            - source_reference (string): Similar to \"reference\", but for the"},{"line_number":946,"context_line":"              snapshot\u0027s source volume."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"            :param cinder_snapshots: A list of snapshots in this host"},{"line_number":949,"context_line":"            that Cinder currently manages, used to determine if a snapshot is"},{"line_number":950,"context_line":"            manageable or not."},{"line_number":951,"context_line":"            :param marker: The last item of the previous page; we return the"},{"line_number":952,"context_line":"            next results after this value (after sorting)"},{"line_number":953,"context_line":"            :param limit: Maximum number of items to return"},{"line_number":954,"context_line":"            :param offset: Number of items to skip after marker"},{"line_number":955,"context_line":"            :param sort_keys: List of keys to sort results by (valid keys"},{"line_number":956,"context_line":"            are \u0027identifier\u0027 and \u0027size\u0027)"},{"line_number":957,"context_line":"            :param sort_dirs: List of directions to sort by, corresponding to"},{"line_number":958,"context_line":"            sort_keys (valid directions are \u0027asc\u0027 and \u0027desc\u0027)"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"        \"\"\""},{"line_number":961,"context_line":"        return self._get_manageable_resource_info(cinder_snapshots, \u0027snapshot\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_73b59e2f","line":958,"range":{"start_line":931,"start_character":11,"end_line":958,"end_character":61},"updated":"2016-10-19 14:22:53.000000000","message":"I prefer to move these \"return\" docstring to the inner function and decorated with \"resouce\" rather than volumes or snapshots","commit_id":"e3b7d30266a4585df140afba5699bf753bc800e1"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"e02463592d6260c042e47fa52d7214b3fcb0a5cb","unresolved":false,"context_lines":[{"line_number":928,"context_line":"                                 sort_keys, sort_dirs):"},{"line_number":929,"context_line":"        \"\"\"List snapshots on the backend available for management by Cinder."},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"            Returns a list of dictionaries, each specifying a snapshot in"},{"line_number":932,"context_line":"            the host, with the following keys:"},{"line_number":933,"context_line":"            - reference (dictionary): The reference for a snapshot,"},{"line_number":934,"context_line":"            which can be passed to \"manage_existing_snapshot\"."},{"line_number":935,"context_line":"            - size (int): The size of the snapshot according to the storage"},{"line_number":936,"context_line":"              backend, rounded up to the nearest GB."},{"line_number":937,"context_line":"            - safe_to_manage (boolean): Whether or not this snapshot is"},{"line_number":938,"context_line":"            safe to manage according to the storage backend. For example,"},{"line_number":939,"context_line":"              is the snapshot in use or invalid for any reason."},{"line_number":940,"context_line":"            - reason_not_safe (string): If safe_to_manage is False,"},{"line_number":941,"context_line":"              the reason why."},{"line_number":942,"context_line":"            - cinder_id (string): If already managed, provide the Cinder ID."},{"line_number":943,"context_line":"            - extra_info (string): Any extra information to return to the"},{"line_number":944,"context_line":"            user"},{"line_number":945,"context_line":"            - source_reference (string): Similar to \"reference\", but for the"},{"line_number":946,"context_line":"              snapshot\u0027s source volume."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"            :param cinder_snapshots: A list of snapshots in this host"},{"line_number":949,"context_line":"            that Cinder currently manages, used to determine if a snapshot is"},{"line_number":950,"context_line":"            manageable or not."},{"line_number":951,"context_line":"            :param marker: The last item of the previous page; we return the"},{"line_number":952,"context_line":"            next results after this value (after sorting)"},{"line_number":953,"context_line":"            :param limit: Maximum number of items to return"},{"line_number":954,"context_line":"            :param offset: Number of items to skip after marker"},{"line_number":955,"context_line":"            :param sort_keys: List of keys to sort results by (valid keys"},{"line_number":956,"context_line":"            are \u0027identifier\u0027 and \u0027size\u0027)"},{"line_number":957,"context_line":"            :param sort_dirs: List of directions to sort by, corresponding to"},{"line_number":958,"context_line":"            sort_keys (valid directions are \u0027asc\u0027 and \u0027desc\u0027)"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"        \"\"\""},{"line_number":961,"context_line":"        return self._get_manageable_resource_info(cinder_snapshots, \u0027snapshot\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_5f4ba359","line":958,"range":{"start_line":931,"start_character":11,"end_line":958,"end_character":61},"in_reply_to":"fa6399be_73b59e2f","updated":"2016-10-20 19:15:01.000000000","message":"Done","commit_id":"e3b7d30266a4585df140afba5699bf753bc800e1"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6e2bf289833c72fd7fc11d3c799a69d1d56bc0a","unresolved":false,"context_lines":[{"line_number":835,"context_line":"        exports \u003d {}"},{"line_number":836,"context_line":"        bend_rsrc \u003d {}"},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"        if cinder_resources:"},{"line_number":839,"context_line":"            cinder_ids \u003d [resource.id for resource in cinder_resources]"},{"line_number":840,"context_line":"            # Getting all the exports from the specified host. It can be up to"},{"line_number":841,"context_line":"            # 4 since each pool should use a different export"},{"line_number":842,"context_line":"            for resource in cinder_resources:"},{"line_number":843,"context_line":"                if \u0027snapshot\u0027 not in resource.name:"},{"line_number":844,"context_line":"                    (exp_path, exp_name, fs_label) \u003d self._get_service("},{"line_number":845,"context_line":"                        resource)"},{"line_number":846,"context_line":"                else:"},{"line_number":847,"context_line":"                    # As snapshots does not have host, we use the host of the"},{"line_number":848,"context_line":"                    # original volume, since it\u0027s the same for HNAS drivers."},{"line_number":849,"context_line":"                    (exp_path, exp_name, fs_label) \u003d self._get_service("},{"line_number":850,"context_line":"                        resource.volume)"},{"line_number":851,"context_line":""},{"line_number":852,"context_line":"                if exp_path not in exports.keys():"},{"line_number":853,"context_line":"                    # We\u0027ll also need the FS to search for the snapshot source"},{"line_number":854,"context_line":"                    # volume"},{"line_number":855,"context_line":"                    exports[exp_path] \u003d fs_label"},{"line_number":856,"context_line":"        else:"},{"line_number":857,"context_line":"            LOG.warning(_LW(\"Could not get the right host because there is no \""},{"line_number":858,"context_line":"                            \"volume/snapshot created on cinder for this host \""},{"line_number":859,"context_line":"                            \"yet. Try to create a cinder volume on the \""},{"line_number":860,"context_line":"                            \"required host and try again.\"))"},{"line_number":861,"context_line":"            return utils.paginate_entries_list(entries, marker, limit, offset,"},{"line_number":862,"context_line":"                                               sort_keys, sort_dirs)"},{"line_number":863,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_94a2f149","line":860,"range":{"start_line":838,"start_character":0,"end_line":860,"end_character":60},"updated":"2016-11-01 18:02:18.000000000","message":"We should try to use the information in self.config.","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"7f171d7dc12b23913d01cc4a30847457759e87f3","unresolved":false,"context_lines":[{"line_number":835,"context_line":"        exports \u003d {}"},{"line_number":836,"context_line":"        bend_rsrc \u003d {}"},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"        if cinder_resources:"},{"line_number":839,"context_line":"            cinder_ids \u003d [resource.id for resource in cinder_resources]"},{"line_number":840,"context_line":"            # Getting all the exports from the specified host. It can be up to"},{"line_number":841,"context_line":"            # 4 since each pool should use a different export"},{"line_number":842,"context_line":"            for resource in cinder_resources:"},{"line_number":843,"context_line":"                if \u0027snapshot\u0027 not in resource.name:"},{"line_number":844,"context_line":"                    (exp_path, exp_name, fs_label) \u003d self._get_service("},{"line_number":845,"context_line":"                        resource)"},{"line_number":846,"context_line":"                else:"},{"line_number":847,"context_line":"                    # As snapshots does not have host, we use the host of the"},{"line_number":848,"context_line":"                    # original volume, since it\u0027s the same for HNAS drivers."},{"line_number":849,"context_line":"                    (exp_path, exp_name, fs_label) \u003d self._get_service("},{"line_number":850,"context_line":"                        resource.volume)"},{"line_number":851,"context_line":""},{"line_number":852,"context_line":"                if exp_path not in exports.keys():"},{"line_number":853,"context_line":"                    # We\u0027ll also need the FS to search for the snapshot source"},{"line_number":854,"context_line":"                    # volume"},{"line_number":855,"context_line":"                    exports[exp_path] \u003d fs_label"},{"line_number":856,"context_line":"        else:"},{"line_number":857,"context_line":"            LOG.warning(_LW(\"Could not get the right host because there is no \""},{"line_number":858,"context_line":"                            \"volume/snapshot created on cinder for this host \""},{"line_number":859,"context_line":"                            \"yet. Try to create a cinder volume on the \""},{"line_number":860,"context_line":"                            \"required host and try again.\"))"},{"line_number":861,"context_line":"            return utils.paginate_entries_list(entries, marker, limit, offset,"},{"line_number":862,"context_line":"                                               sort_keys, sort_dirs)"},{"line_number":863,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_a914a6e8","line":860,"range":{"start_line":838,"start_character":0,"end_line":860,"end_character":60},"in_reply_to":"ba5da102_94a2f149","updated":"2016-11-03 19:08:01.000000000","message":"Done","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6e2bf289833c72fd7fc11d3c799a69d1d56bc0a","unresolved":false,"context_lines":[{"line_number":866,"context_line":"        #   [\u0027volume-325e7cdc-8f65-40a8-be9a-6172c12c9394\u0027,"},{"line_number":867,"context_line":"        # \u0027     snapshot-1bfb6f0d-9497-4c12-a052-5426a76cacdc\u0027,\u0027\u0027]}"},{"line_number":868,"context_line":"        for exp in exports.keys():"},{"line_number":869,"context_line":"            bend_rsrc[exp] \u003d list(self._get_volumes_from_export(exp))"},{"line_number":870,"context_line":"            bend_rsrc[exp] \u003d bend_rsrc[exp][0].split(\u0027\\n\u0027)"},{"line_number":871,"context_line":"            if \u0027\u0027 in bend_rsrc[exp]:"},{"line_number":872,"context_line":"                bend_rsrc[exp].remove(\u0027\u0027)"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        for exp in exports.keys():"},{"line_number":875,"context_line":"            mnt_point \u003d self._get_mount_point_for_share(exp)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_1402610b","line":872,"range":{"start_line":869,"start_character":12,"end_line":872,"end_character":41},"updated":"2016-11-01 18:02:18.000000000","message":"This function _get_volumes_from_export() should return the list ready to use so you don\u0027t need to do this processing here.","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"7f171d7dc12b23913d01cc4a30847457759e87f3","unresolved":false,"context_lines":[{"line_number":866,"context_line":"        #   [\u0027volume-325e7cdc-8f65-40a8-be9a-6172c12c9394\u0027,"},{"line_number":867,"context_line":"        # \u0027     snapshot-1bfb6f0d-9497-4c12-a052-5426a76cacdc\u0027,\u0027\u0027]}"},{"line_number":868,"context_line":"        for exp in exports.keys():"},{"line_number":869,"context_line":"            bend_rsrc[exp] \u003d list(self._get_volumes_from_export(exp))"},{"line_number":870,"context_line":"            bend_rsrc[exp] \u003d bend_rsrc[exp][0].split(\u0027\\n\u0027)"},{"line_number":871,"context_line":"            if \u0027\u0027 in bend_rsrc[exp]:"},{"line_number":872,"context_line":"                bend_rsrc[exp].remove(\u0027\u0027)"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        for exp in exports.keys():"},{"line_number":875,"context_line":"            mnt_point \u003d self._get_mount_point_for_share(exp)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_0c568005","line":872,"range":{"start_line":869,"start_character":12,"end_line":872,"end_character":41},"in_reply_to":"ba5da102_1402610b","updated":"2016-11-03 19:08:01.000000000","message":"Done","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6e2bf289833c72fd7fc11d3c799a69d1d56bc0a","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        for exp in exports.keys():"},{"line_number":875,"context_line":"            mnt_point \u003d self._get_mount_point_for_share(exp)"},{"line_number":876,"context_line":"            for rsrc in bend_rsrc[exp]:"},{"line_number":877,"context_line":"                # Ignoring resources of unwanted types"},{"line_number":878,"context_line":"                if ((resource_type \u003d\u003d \u0027volume\u0027 and \u0027snapshot\u0027 in rsrc) or"},{"line_number":879,"context_line":"                        (resource_type \u003d\u003d \u0027snapshot\u0027 and \u0027volume\u0027 in rsrc)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_1a8feb75","line":876,"range":{"start_line":876,"start_character":16,"end_line":876,"end_character":20},"updated":"2016-11-01 18:02:18.000000000","message":"These abbreviations are better to be avoided.","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"7f171d7dc12b23913d01cc4a30847457759e87f3","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        for exp in exports.keys():"},{"line_number":875,"context_line":"            mnt_point \u003d self._get_mount_point_for_share(exp)"},{"line_number":876,"context_line":"            for rsrc in bend_rsrc[exp]:"},{"line_number":877,"context_line":"                # Ignoring resources of unwanted types"},{"line_number":878,"context_line":"                if ((resource_type \u003d\u003d \u0027volume\u0027 and \u0027snapshot\u0027 in rsrc) or"},{"line_number":879,"context_line":"                        (resource_type \u003d\u003d \u0027snapshot\u0027 and \u0027volume\u0027 in rsrc)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_cc7648a3","line":876,"range":{"start_line":876,"start_character":16,"end_line":876,"end_character":20},"in_reply_to":"ba5da102_1a8feb75","updated":"2016-11-03 19:08:01.000000000","message":"Done","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6e2bf289833c72fd7fc11d3c799a69d1d56bc0a","unresolved":false,"context_lines":[{"line_number":891,"context_line":"                else:"},{"line_number":892,"context_line":"                    potential_id \u003d utils.extract_id_from_snapshot_name(rsrc)"},{"line_number":893,"context_line":""},{"line_number":894,"context_line":"                if potential_id in cinder_ids:"},{"line_number":895,"context_line":"                    rsrc_inf[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":896,"context_line":"                    rsrc_inf[\u0027reason_not_safe\u0027] \u003d \u0027already managed\u0027"},{"line_number":897,"context_line":"                    rsrc_inf[\u0027cinder_id\u0027] \u003d potential_id"},{"line_number":898,"context_line":"                else:"},{"line_number":899,"context_line":"                    rsrc_inf[\u0027safe_to_manage\u0027] \u003d True"},{"line_number":900,"context_line":"                    rsrc_inf[\u0027reason_not_safe\u0027] \u003d None"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"                # If it\u0027s a snapshot, we try to get its source volume. However,"},{"line_number":903,"context_line":"                # this search is not reliable in some cases. So, if it\u0027s not"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_9ae5bbdd","line":900,"range":{"start_line":894,"start_character":15,"end_line":900,"end_character":54},"updated":"2016-11-01 18:02:18.000000000","message":"Can you explain the logic here that defines when is safe or not to manage a volume?","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"7f171d7dc12b23913d01cc4a30847457759e87f3","unresolved":false,"context_lines":[{"line_number":891,"context_line":"                else:"},{"line_number":892,"context_line":"                    potential_id \u003d utils.extract_id_from_snapshot_name(rsrc)"},{"line_number":893,"context_line":""},{"line_number":894,"context_line":"                if potential_id in cinder_ids:"},{"line_number":895,"context_line":"                    rsrc_inf[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":896,"context_line":"                    rsrc_inf[\u0027reason_not_safe\u0027] \u003d \u0027already managed\u0027"},{"line_number":897,"context_line":"                    rsrc_inf[\u0027cinder_id\u0027] \u003d potential_id"},{"line_number":898,"context_line":"                else:"},{"line_number":899,"context_line":"                    rsrc_inf[\u0027safe_to_manage\u0027] \u003d True"},{"line_number":900,"context_line":"                    rsrc_inf[\u0027reason_not_safe\u0027] \u003d None"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"                # If it\u0027s a snapshot, we try to get its source volume. However,"},{"line_number":903,"context_line":"                # this search is not reliable in some cases. So, if it\u0027s not"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_2c70a4a3","line":900,"range":{"start_line":894,"start_character":15,"end_line":900,"end_character":54},"in_reply_to":"ba5da102_9ae5bbdd","updated":"2016-11-03 19:08:01.000000000","message":"Done","commit_id":"6859eaae8fd1c2c56d453494c8f22aa0092526ee"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"f84895d2857527914fe35ae76cae5d57bf158388","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from cinder.volume import utils"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"HNAS_NFS_VERSION \u003d \u00275.0.0\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_b9fd8570","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":25},"updated":"2016-12-08 11:28:56.000000000","message":"You need to bump the driver version.","commit_id":"19faa946b7c7d66485a9a3580068dee86ffbeba9"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"b270125d8e3112b65a64b1e8e524a4770105f15a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from cinder.volume import utils"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"HNAS_NFS_VERSION \u003d \u00275.0.0\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_7136a1b5","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":25},"in_reply_to":"3a71b18c_b9fd8570","updated":"2016-12-08 12:11:08.000000000","message":"Done","commit_id":"19faa946b7c7d66485a9a3580068dee86ffbeba9"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"f84895d2857527914fe35ae76cae5d57bf158388","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                       Changed the class name to HNASNFSDriver"},{"line_number":81,"context_line":"                       Deprecated XML config file"},{"line_number":82,"context_line":"                       Added support to manage/unmanage snapshots features"},{"line_number":83,"context_line":"                       Fixed driver stats reporting"},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":86,"context_line":"    CI_WIKI_NAME \u003d \"Hitachi_HNAS_CI\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_b934a54a","line":83,"range":{"start_line":83,"start_character":23,"end_line":83,"end_character":51},"updated":"2016-12-08 11:28:56.000000000","message":"Driver version bump!","commit_id":"19faa946b7c7d66485a9a3580068dee86ffbeba9"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"b270125d8e3112b65a64b1e8e524a4770105f15a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                       Changed the class name to HNASNFSDriver"},{"line_number":81,"context_line":"                       Deprecated XML config file"},{"line_number":82,"context_line":"                       Added support to manage/unmanage snapshots features"},{"line_number":83,"context_line":"                       Fixed driver stats reporting"},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":86,"context_line":"    CI_WIKI_NAME \u003d \"Hitachi_HNAS_CI\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_913b3d9c","line":83,"range":{"start_line":83,"start_character":23,"end_line":83,"end_character":51},"in_reply_to":"3a71b18c_b934a54a","updated":"2016-12-08 12:11:08.000000000","message":"Done","commit_id":"19faa946b7c7d66485a9a3580068dee86ffbeba9"}]}
