)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"48c3c316bbb08861210b6a1e2f53dcb618140d64","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alyson Rosa \u003calyson.rodrigues.rosa@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-08 08:40:49 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HNAS: Add support for consistency groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added support for consistency groups in HNAS iSCSI driver."},{"line_number":10,"context_line":"update_consistencygroup is not implemented in this patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_16e06495","line":7,"range":{"start_line":7,"start_character":6,"end_line":7,"end_character":40},"updated":"2016-06-08 11:56:33.000000000","message":"Please, specify that it\u0027s only for HNAS iSCSI driver","commit_id":"21b46434487c49fb092d926cfa1ada57a25fbbeb"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"48c3c316bbb08861210b6a1e2f53dcb618140d64","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HNAS: Add support for consistency groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added support for consistency groups in HNAS iSCSI driver."},{"line_number":10,"context_line":"update_consistencygroup is not implemented in this patch."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_f6b31896","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":5},"updated":"2016-06-08 11:56:33.000000000","message":"s/Added/Adds","commit_id":"21b46434487c49fb092d926cfa1ada57a25fbbeb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e7449d55688c56723bfaa7fa82e720c9491b1e93","unresolved":false,"context_lines":[{"line_number":7,"context_line":"HNAS: Add support for consistency groups in iSCSI driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added support for consistency groups in HNAS iSCSI driver."},{"line_number":10,"context_line":"update_consistencygroup is not implemented in this patch."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Adriano Rosso \u003cadriano.rosso@fit-tecnologia.org.br\u003e"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aa08908_1edbab1c","line":10,"updated":"2016-06-17 01:47:02.000000000","message":"I have questions in the code on why this cannot be supported.","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"}],"cinder/tests/unit/test_hitachi_hnas_backend.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e7449d55688c56723bfaa7fa82e720c9491b1e93","unresolved":false,"context_lines":[{"line_number":207,"context_line":"Access configuration:                                                 \\n\\"},{"line_number":208,"context_line":"\""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"replication_active \u003d \"GUID: 71fe9ab4-a9f5-11d1-9b90-836896aada5d           \\n\\"},{"line_number":211,"context_line":"  Source file system          : source-cg on EVS 2                         \\n\\"},{"line_number":212,"context_line":"  Target file system          : target-cg on 172.24.49.21(172.24.49.21):595\\n\\"},{"line_number":213,"context_line":"  Policy ID                   : 71ef6c38-a9f5-11d1-9b8f-836896aada5d       \\n\\"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_febe9fac","line":210,"updated":"2016-06-17 01:47:02.000000000","message":"Why adding a replication test for CG snapshot feature?","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e7449d55688c56723bfaa7fa82e720c9491b1e93","unresolved":false,"context_lines":[{"line_number":869,"context_line":"        self.hnas_backend.recreate_existing_lu(\u0027new-volume-name\u0027,"},{"line_number":870,"context_line":"                                               \u0027old-volume-name\u0027, \u0027cg-fs\u0027)"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":"    def test_track_active_replication(self):"},{"line_number":873,"context_line":"        self.mock_object(self.hnas_backend, \u0027_run_cmd\u0027,"},{"line_number":874,"context_line":"                         mock.Mock(side_effect\u003d[(replication_active, \u0027\u0027),"},{"line_number":875,"context_line":"                                                (replication_finished, \u0027\u0027)]))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_3edf870d","line":872,"updated":"2016-06-17 01:47:02.000000000","message":"I don\u0027t know why replication is added here.  This patch adds support for CG snapshot.","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"}],"cinder/volume/drivers/hitachi/hnas_backend.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e7449d55688c56723bfaa7fa82e720c9491b1e93","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id, \"iscsi-lu\", \"add\","},{"line_number":988,"context_line":"                      new_name, fs_label, \u0027/.cinder/\u0027 + new_name + \u0027.iscsi\u0027)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _track_active_replication(self, evs_id, target):"},{"line_number":991,"context_line":"        found \u003d True"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        out, err \u003d self._run_cmd(\"console-context\", \"--evs\", evs_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_3eb827c7","line":990,"updated":"2016-06-17 01:47:02.000000000","message":"This patch adds consistency group snapshot, why is replication added here?","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f979194f8eee4e1148c62b5d17a3b8e0509952cd","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id, \"iscsi-lu\", \"add\","},{"line_number":988,"context_line":"                      new_name, fs_label, \u0027/.cinder/\u0027 + new_name + \u0027.iscsi\u0027)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    def _track_active_replication(self, evs_id, target):"},{"line_number":991,"context_line":"        found \u003d True"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        out, err \u003d self._run_cmd(\"console-context\", \"--evs\", evs_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_737db26c","line":990,"in_reply_to":"7aa08908_3eb827c7","updated":"2016-06-17 12:20:25.000000000","message":"When creating a snapshot or a CG from another CG, we are using a mechanism in HNAS called Object Replication, that copies an entire filesystem in a consistent way to another one. Im using this function to track the progress of this copy. Maybe the name \u0027replication\u0027 sounds weird, but I wanted to name things in backend layer as the name used in HNAS.","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        return evs_info"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def get_backend_info(self, fs_label, cg_enabled\u003dFalse):"},{"line_number":156,"context_line":"        if cg_enabled:"},{"line_number":157,"context_line":"            return self._get_span_info()"},{"line_number":158,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_df120162","line":155,"range":{"start_line":155,"start_character":8,"end_line":155,"end_character":24},"updated":"2016-06-21 13:26:12.000000000","message":"This function name is too generic. Anything can be a backend info. The version_info, the evs_info, etc. Going in this direction, we would need to unify all the get*info in this function which I think is not needed. So, let\u0027s just create a get_span_info() like the other functions.\n\nAlso, please document the object returned by the function.","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        return fs_info"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def get_evs(self, fs_label, evs\u003dFalse):"},{"line_number":261,"context_line":"        \"\"\"Gets the EVSID for the named filesystem or EVSID from an EVS name."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        :param fs_label: The filesystem label related to the EVS required"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_e235a246","line":260,"updated":"2016-06-21 13:26:12.000000000","message":"def get_evs(self, label, label_type\u003d\u0027filesystem\u0027):","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":742,"context_line":""},{"line_number":743,"context_line":"        return self.fslist"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"    def _get_evs_ip(self, fs_label):"},{"line_number":746,"context_line":"        evslabel \u003d self.get_evs(fs_label, True)"},{"line_number":747,"context_line":"        out, _ \u003d self._run_cmd(\u0027evs\u0027, \u0027list\u0027, \u0027-e\u0027, evslabel)"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"        items \u003d out.split(\u0027\\n\u0027)"},{"line_number":750,"context_line":"        for i in range(len(items)):"},{"line_number":751,"context_line":"            if evslabel in items[i]:"},{"line_number":752,"context_line":"                return items[i].split()[6]"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def _get_evs_list(self):"},{"line_number":755,"context_line":"        \"\"\"Gets a list of EVS configured on the backend."}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_a574449c","line":752,"range":{"start_line":745,"start_character":4,"end_line":752,"end_character":42},"updated":"2016-06-21 13:26:12.000000000","message":"Is this is function used? An EVS can have multiple IPs. You need to get this from the config file.","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":863,"context_line":"    def extend_fs(self, fs_label, size):"},{"line_number":864,"context_line":"        evs_id \u003d self.get_evs(fs_label)"},{"line_number":865,"context_line":"        # get current size and expand to current + new_size"},{"line_number":866,"context_line":"        original_fs_size \u003d self.get_fs_size(fs_label)"},{"line_number":867,"context_line":"        # concerns about the snapshots size"},{"line_number":868,"context_line":"        new_fs_size \u003d (original_fs_size + size)"},{"line_number":869,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_0570b871","line":866,"range":{"start_line":866,"start_character":8,"end_line":866,"end_character":53},"updated":"2016-06-21 13:26:12.000000000","message":"original_fs_size \u003d self._get_fs_info(fs_label)[\u0027total_size\u0027]","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":864,"context_line":"        evs_id \u003d self.get_evs(fs_label)"},{"line_number":865,"context_line":"        # get current size and expand to current + new_size"},{"line_number":866,"context_line":"        original_fs_size \u003d self.get_fs_size(fs_label)"},{"line_number":867,"context_line":"        # concerns about the snapshots size"},{"line_number":868,"context_line":"        new_fs_size \u003d (original_fs_size + size)"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id, \"filesystem-expand\","}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_a52c444b","line":867,"range":{"start_line":867,"start_character":10,"end_line":867,"end_character":43},"updated":"2016-06-21 13:26:12.000000000","message":"Didn\u0027t get this comment.","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":872,"context_line":""},{"line_number":873,"context_line":"        return new_fs_size"},{"line_number":874,"context_line":""},{"line_number":875,"context_line":"    def get_fs_size(self, fs_label):"},{"line_number":876,"context_line":"        evs_id \u003d self.get_evs(fs_label)"},{"line_number":877,"context_line":"        out, _ \u003d self._run_cmd(\"console-context\", \"--evs\", evs_id, \"df\", \"-af\","},{"line_number":878,"context_line":"                               fs_label)"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":881,"context_line":"        for i in range(len(lines)):"},{"line_number":882,"context_line":"            if fs_label in lines[i]:"},{"line_number":883,"context_line":"                element \u003d lines[i].strip().split()"},{"line_number":884,"context_line":"                # gets the size in float, round up and convert to int"},{"line_number":885,"context_line":"                size \u003d float(element[3])"},{"line_number":886,"context_line":"                size \u003d int(math.ceil(size))"},{"line_number":887,"context_line":"                return size"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    def create_filesystem(self, cg_id):"},{"line_number":890,"context_line":"        \"\"\"Creates a new filesystem in HNAS"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_65bffcfb","line":887,"range":{"start_line":875,"start_character":0,"end_line":887,"end_character":27},"updated":"2016-06-21 13:26:12.000000000","message":"Use _get_fs_info()","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":886,"context_line":"                size \u003d int(math.ceil(size))"},{"line_number":887,"context_line":"                return size"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    def create_filesystem(self, cg_id):"},{"line_number":890,"context_line":"        \"\"\"Creates a new filesystem in HNAS"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"        :param cg_id: cg name (cg-ID)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_45c64068","line":889,"range":{"start_line":889,"start_character":32,"end_line":889,"end_character":37},"updated":"2016-06-21 13:26:12.000000000","message":"fslabel","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":897,"context_line":"        # block-size formats and mount the fs, we create it as size of 3"},{"line_number":898,"context_line":"        # that is the minimum required by the HNAS. It will be expanded as"},{"line_number":899,"context_line":"        # needed when adding volumes"},{"line_number":900,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id, \"filesystem-create\","},{"line_number":901,"context_line":"                      \"--block-size\", \"4\", self.cg_span, cg_id, \"3\")"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"        LOG.debug(\u0027Created new filesystem %(cg)s.\u0027, {\u0027cg\u0027: cg_id})"},{"line_number":904,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_c85c0528","line":901,"range":{"start_line":900,"start_character":8,"end_line":901,"end_character":68},"updated":"2016-06-21 13:26:12.000000000","message":"We should give the admin the option to set the block size and dedupe\u003dTrue/False.","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"        LOG.debug(\u0027Created new filesystem %(cg)s.\u0027, {\u0027cg\u0027: cg_id})"},{"line_number":904,"context_line":""},{"line_number":905,"context_line":"    def delete_filesystem(self, cg_id):"},{"line_number":906,"context_line":"        evs_id \u003d self.cg_evs"},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"        # to delete a filesystem, we need unmount it first"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_88795d96","line":905,"range":{"start_line":905,"start_character":32,"end_line":905,"end_character":37},"updated":"2016-06-21 13:26:12.000000000","message":"fslabel","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id,"},{"line_number":920,"context_line":"                      \"snapshot-rule-create\", \"--file-system\", fs_label,"},{"line_number":921,"context_line":"                      snapshot_name)"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id,"},{"line_number":924,"context_line":"                      \"snapshot-create\", \"--rule\", snapshot_name)"},{"line_number":925,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_e87c6174","line":922,"updated":"2016-06-21 13:26:12.000000000","message":"# Then...?","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edeb49bd43b8a7b530b4e4e0c40b3b93b8332177","unresolved":false,"context_lines":[{"line_number":996,"context_line":"        self._run_cmd(\"console-context\", \"--evs\", evs_id, \"iscsi-lu\", \"add\","},{"line_number":997,"context_line":"                      new_name, fs_label, \u0027/.cinder/\u0027 + new_name + \u0027.iscsi\u0027)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def _track_active_replication(self, evs_id, target):"},{"line_number":1000,"context_line":"        found \u003d True"},{"line_number":1001,"context_line":""},{"line_number":1002,"context_line":"        out, err \u003d self._run_cmd(\"console-context\", \"--evs\", evs_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_c8a40559","line":999,"range":{"start_line":999,"start_character":7,"end_line":999,"end_character":33},"updated":"2016-06-21 13:26:12.000000000","message":"This waiting will blow all Cinder timeouts, making impracticable to create snapshots by \u0027FS cloning\u0027.","commit_id":"dcf23fb1d4a0736b5da7e231223567e6505a7b2e"}],"cinder/volume/drivers/hitachi/hnas_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e7449d55688c56723bfaa7fa82e720c9491b1e93","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                size \u003d 3"},{"line_number":860,"context_line":"                # Trying to keep filesystem size as minimum"},{"line_number":861,"context_line":"                for i, volume in enumerate(volumes):"},{"line_number":862,"context_line":"                    size \u003d size + volumes[i].size"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"            source_id \u003d \u0027cg-\u0027 + cgsnapshot[\u0027consistencygroup_id\u0027]"},{"line_number":865,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_3e3947a4","line":862,"updated":"2016-06-17 01:47:02.000000000","message":"What does \"3+volume_size\" mean?  Are you supposed to create a snapshot that is the same size as the volume?  How do you create a volume of size 1 if 3 is the min size for the filesystem?","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f979194f8eee4e1148c62b5d17a3b8e0509952cd","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                size \u003d 3"},{"line_number":860,"context_line":"                # Trying to keep filesystem size as minimum"},{"line_number":861,"context_line":"                for i, volume in enumerate(volumes):"},{"line_number":862,"context_line":"                    size \u003d size + volumes[i].size"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"            source_id \u003d \u0027cg-\u0027 + cgsnapshot[\u0027consistencygroup_id\u0027]"},{"line_number":865,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_454f0992","line":862,"in_reply_to":"7aa08908_3e3947a4","updated":"2016-06-17 12:20:25.000000000","message":"3 value corresponds to the value necessary to HNAS creates a new filesystem, it contains internal filesystem metadata. So I need to sum this minimum size with the volumes size to create a new filesystem.","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e7449d55688c56723bfaa7fa82e720c9491b1e93","unresolved":false,"context_lines":[{"line_number":936,"context_line":"        \"\"\""},{"line_number":937,"context_line":"        LOG.debug(\"Updating consistency group is not supported.\")"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        return None, None, None"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_de948345","line":939,"updated":"2016-06-17 01:47:02.000000000","message":"You are actually supporting it by returning \"None, None, None\" because Cinder will be adding/removing a volume to/from the db.  If you really can\u0027t support it, just remove this function.\n\nI do have a question though on why this cannot be supported.  If user does this \"cinder create --volume-type typeA 1\" and the volume gets created in the pool where a CG resides, you can then use \"cinder consisgroup-update --add-volumes \u003cvolume uuid\u003e \u003cCG uuid\u003e\" to add this volume to the CG.  It should work.  So why can\u0027t you support update?","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f979194f8eee4e1148c62b5d17a3b8e0509952cd","unresolved":false,"context_lines":[{"line_number":936,"context_line":"        \"\"\""},{"line_number":937,"context_line":"        LOG.debug(\"Updating consistency group is not supported.\")"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        return None, None, None"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_58889522","line":939,"in_reply_to":"7aa08908_de948345","updated":"2016-06-17 12:20:25.000000000","message":"Oh, ok, I\u0027ll remove this function.\nIt doesn\u0027t work because in our backend, a consistency group is a filesystem, and adding or removing a volume from CG means moving files between filesystems, it can be done in HNAS only by File Replication, that doesn\u0027t have CLI support by now.","commit_id":"9e1fc2d7622736bedf9a910609cb029293fdff1b"}],"cinder/volume/drivers/hitachi/hnas_utils.py":[{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"94d19a23c39d65b0b394e9ecdabd7d8e015a63f3","unresolved":false,"context_lines":[{"line_number":67,"context_line":"               help\u003d\u0027EVS from HNAS where Consistency Groups will be created.\u0027),"},{"line_number":68,"context_line":"    cfg.IPOpt(\u0027hnas_consisgroup_evs_ip\u0027,"},{"line_number":69,"context_line":"              default\u003dNone,"},{"line_number":70,"context_line":"              help\u003d\u0027Since an EVS can have multiples IPs, this conf allow the \u0027"},{"line_number":71,"context_line":"                   \u0027user choose which one will be used to replication.\u0027),"},{"line_number":72,"context_line":"    cfg.StrOpt(\u0027hnas_consisgroup_snapshot_approach\u0027,"},{"line_number":73,"context_line":"               default\u003d\u0027new_fs\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_e8b46836","line":70,"range":{"start_line":70,"start_character":67,"end_line":70,"end_character":72},"updated":"2016-06-15 21:51:06.000000000","message":"s/allow/allows","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"4a5034b1a66cb1bd0cbcc41c77c9cfebbfdfb9af","unresolved":false,"context_lines":[{"line_number":67,"context_line":"               help\u003d\u0027EVS from HNAS where Consistency Groups will be created.\u0027),"},{"line_number":68,"context_line":"    cfg.IPOpt(\u0027hnas_consisgroup_evs_ip\u0027,"},{"line_number":69,"context_line":"              default\u003dNone,"},{"line_number":70,"context_line":"              help\u003d\u0027Since an EVS can have multiples IPs, this conf allow the \u0027"},{"line_number":71,"context_line":"                   \u0027user choose which one will be used to replication.\u0027),"},{"line_number":72,"context_line":"    cfg.StrOpt(\u0027hnas_consisgroup_snapshot_approach\u0027,"},{"line_number":73,"context_line":"               default\u003d\u0027new_fs\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_24db02ef","line":70,"range":{"start_line":70,"start_character":67,"end_line":70,"end_character":72},"in_reply_to":"7aa08908_e8b46836","updated":"2016-06-16 19:46:36.000000000","message":"Done","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"94d19a23c39d65b0b394e9ecdabd7d8e015a63f3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    cfg.IntOpt(\u0027hnas_filesystem_expansion_ratio\u0027,"},{"line_number":81,"context_line":"               default\u003d100,"},{"line_number":82,"context_line":"               help\u003d\u0027Accept values between 1-100. When using \\\u0027same_fs\\\u0027 \u0027"},{"line_number":83,"context_line":"                    \u0027approach for consistency groups, this conf allow the \u0027"},{"line_number":84,"context_line":"                    \u0027user control the filesystem expansion rate. \u0027"},{"line_number":85,"context_line":"                    \u0027Default value (100) means that every snapshot will \u0027"},{"line_number":86,"context_line":"                    \u0027allocated a space equals the size of original filesystem,\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_e8e2a82e","line":83,"range":{"start_line":83,"start_character":64,"end_line":83,"end_character":69},"updated":"2016-06-15 21:51:06.000000000","message":"s/allow/allows","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"4a5034b1a66cb1bd0cbcc41c77c9cfebbfdfb9af","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    cfg.IntOpt(\u0027hnas_filesystem_expansion_ratio\u0027,"},{"line_number":81,"context_line":"               default\u003d100,"},{"line_number":82,"context_line":"               help\u003d\u0027Accept values between 1-100. When using \\\u0027same_fs\\\u0027 \u0027"},{"line_number":83,"context_line":"                    \u0027approach for consistency groups, this conf allow the \u0027"},{"line_number":84,"context_line":"                    \u0027user control the filesystem expansion rate. \u0027"},{"line_number":85,"context_line":"                    \u0027Default value (100) means that every snapshot will \u0027"},{"line_number":86,"context_line":"                    \u0027allocated a space equals the size of original filesystem,\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_04d6c6c2","line":83,"range":{"start_line":83,"start_character":64,"end_line":83,"end_character":69},"in_reply_to":"7aa08908_e8e2a82e","updated":"2016-06-16 19:46:36.000000000","message":"Done","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"94d19a23c39d65b0b394e9ecdabd7d8e015a63f3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    \u0027approach for consistency groups, this conf allow the \u0027"},{"line_number":84,"context_line":"                    \u0027user control the filesystem expansion rate. \u0027"},{"line_number":85,"context_line":"                    \u0027Default value (100) means that every snapshot will \u0027"},{"line_number":86,"context_line":"                    \u0027allocated a space equals the size of original filesystem,\u0027"},{"line_number":87,"context_line":"                    \u0027(the sum of all volumes sizes from consistency group).\u0027),"},{"line_number":88,"context_line":"    cfg.StrOpt(\u0027hnas_svc0_volume_type\u0027,"},{"line_number":89,"context_line":"               help\u003d\u0027Service 0 volume type\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_286150a9","line":86,"range":{"start_line":86,"start_character":21,"end_line":86,"end_character":66},"updated":"2016-06-15 21:51:06.000000000","message":"allocate a space equals to the size of the original","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"4a5034b1a66cb1bd0cbcc41c77c9cfebbfdfb9af","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    \u0027approach for consistency groups, this conf allow the \u0027"},{"line_number":84,"context_line":"                    \u0027user control the filesystem expansion rate. \u0027"},{"line_number":85,"context_line":"                    \u0027Default value (100) means that every snapshot will \u0027"},{"line_number":86,"context_line":"                    \u0027allocated a space equals the size of original filesystem,\u0027"},{"line_number":87,"context_line":"                    \u0027(the sum of all volumes sizes from consistency group).\u0027),"},{"line_number":88,"context_line":"    cfg.StrOpt(\u0027hnas_svc0_volume_type\u0027,"},{"line_number":89,"context_line":"               help\u003d\u0027Service 0 volume type\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_64e50aa7","line":86,"range":{"start_line":86,"start_character":21,"end_line":86,"end_character":66},"in_reply_to":"7aa08908_286150a9","updated":"2016-06-16 19:46:36.000000000","message":"Done","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"94d19a23c39d65b0b394e9ecdabd7d8e015a63f3","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            \u0027hnas_svc%(idx)s_hdp\u0027 % {\u0027idx\u0027: idx}))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        # It\u0027s mandatory to have at least 1 pool configured (svc_0)"},{"line_number":383,"context_line":"        if idx \u003d\u003d \u00270\u0027 or svc_vol_type is not None:"},{"line_number":384,"context_line":"            config[\u0027services\u0027][svc_vol_type] \u003d {}"},{"line_number":385,"context_line":"            config[\u0027fs\u0027][svc_hdp] \u003d svc_hdp"},{"line_number":386,"context_line":"            config[\u0027services\u0027][svc_vol_type][\u0027hdp\u0027] \u003d svc_hdp"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_8807a417","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":50},"updated":"2016-06-15 21:51:06.000000000","message":"I see svc_hdp is not required anymore. But what happens if a service that is not a consistency group is configured without a svc_hdp now?","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"4a5034b1a66cb1bd0cbcc41c77c9cfebbfdfb9af","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            \u0027hnas_svc%(idx)s_hdp\u0027 % {\u0027idx\u0027: idx}))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        # It\u0027s mandatory to have at least 1 pool configured (svc_0)"},{"line_number":383,"context_line":"        if idx \u003d\u003d \u00270\u0027 or svc_vol_type is not None:"},{"line_number":384,"context_line":"            config[\u0027services\u0027][svc_vol_type] \u003d {}"},{"line_number":385,"context_line":"            config[\u0027fs\u0027][svc_hdp] \u003d svc_hdp"},{"line_number":386,"context_line":"            config[\u0027services\u0027][svc_vol_type][\u0027hdp\u0027] \u003d svc_hdp"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_9f25e3af","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":50},"in_reply_to":"7aa08908_8807a417","updated":"2016-06-16 19:46:36.000000000","message":"I changed a little the approach about the need of svc_hdp in services with consistency group enabled. I\u0027ve added an exception for svc_hdp again, but now it only checks services without cg enabled.","commit_id":"0b6d4f02d5f1c4bc436c36e44126da7590a670f3"}]}
