)]}'
{"cinder/volume/drivers/pure.py":[{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"f6b9557df2c4f0dd025e9df11b0e1a44e60b3dce","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":337,"context_line":"        return model_update"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _create_cg_from_cgsnap(self, group, cgsnapshot,"},{"line_number":340,"context_line":"                               volumes, snapshots):"},{"line_number":341,"context_line":"        \"\"\"Creates a new consistency group from a cgsnapshot."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_5539c2a2","line":339,"updated":"2015-08-12 20:23:45.000000000","message":"We don\u0027t need group and cgsnapshot here.","commit_id":"6d97f9f6d078040ac1f0149d01f2b1689e967261"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"94bb70865eb41559983a5083e9a2b920c4e77b76","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":337,"context_line":"        return model_update"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _create_cg_from_cgsnap(self, group, cgsnapshot,"},{"line_number":340,"context_line":"                               volumes, snapshots):"},{"line_number":341,"context_line":"        \"\"\"Creates a new consistency group from a cgsnapshot."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_a9a6afa8","line":339,"in_reply_to":"1a4dcd0f_5539c2a2","updated":"2015-08-12 22:26:24.000000000","message":"Agreed.  Unused parameters should be removed.","commit_id":"6d97f9f6d078040ac1f0149d01f2b1689e967261"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"c6f850c6cda24f8c7af6e4cf97c3d59410d340de","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":337,"context_line":"        return model_update"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _create_cg_from_cgsnap(self, group, cgsnapshot,"},{"line_number":340,"context_line":"                               volumes, snapshots):"},{"line_number":341,"context_line":"        \"\"\"Creates a new consistency group from a cgsnapshot."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_2445e66d","line":339,"in_reply_to":"1a4dcd0f_a9a6afa8","updated":"2015-08-12 23:22:50.000000000","message":"Done","commit_id":"6d97f9f6d078040ac1f0149d01f2b1689e967261"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"94bb70865eb41559983a5083e9a2b920c4e77b76","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        \"\"\"Creates a new consistency group from an existing cg."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        The new volumes will be in a consistent state, but this requires"},{"line_number":352,"context_line":"        taking a new temporary group snapshot and cloning from that."},{"line_number":353,"context_line":"        \"\"\""},{"line_number":354,"context_line":"        pgroup_name \u003d self._get_pgroup_name_from_id(source_group.id)"},{"line_number":355,"context_line":"        tmp_suffix \u003d \u0027%s-tmp\u0027 % uuid.uuid4()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_29361f51","line":352,"updated":"2015-08-12 22:26:24.000000000","message":"Is this extra step necessary?  When you create a new CG and add volumes to it, the volumes are not consistent either.","commit_id":"6d97f9f6d078040ac1f0149d01f2b1689e967261"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"c6f850c6cda24f8c7af6e4cf97c3d59410d340de","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        \"\"\"Creates a new consistency group from an existing cg."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        The new volumes will be in a consistent state, but this requires"},{"line_number":352,"context_line":"        taking a new temporary group snapshot and cloning from that."},{"line_number":353,"context_line":"        \"\"\""},{"line_number":354,"context_line":"        pgroup_name \u003d self._get_pgroup_name_from_id(source_group.id)"},{"line_number":355,"context_line":"        tmp_suffix \u003d \u0027%s-tmp\u0027 % uuid.uuid4()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_6f874761","line":352,"in_reply_to":"1a4dcd0f_29361f51","updated":"2015-08-12 23:22:50.000000000","message":"I suppose it isn\u0027t if the goal is simply to create a new consistency group with clones of volumes from another group. I chose to do this to make the result consistent (heh) between creating from source cgsnap and creating from source cg. The idea being that when a user calls cinder consisgroup-create-from-src they would have a new group where the volumes were consistent with eachother just like the source ones were regardless of which source was being provided.\n\n\nThere is some extra overhead in doing it this way, but not very much considering the benefits gained if a user actually did want to clone a cg and have the volumes consistent.","commit_id":"6d97f9f6d078040ac1f0149d01f2b1689e967261"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"5d3dff2a7c06a683a5997a5cf032de2850306996","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    def _create_cg_from_cgsnap(self, volumes, snapshots):"},{"line_number":339,"context_line":"        \"\"\"Creates a new consistency group from a cgsnapshot."},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        The new volumes will be consistent with the snapshot"},{"line_number":342,"context_line":"        \"\"\""},{"line_number":343,"context_line":"        for volume, snapshot in zip(volumes, snapshots):"},{"line_number":344,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_4653f66c","line":341,"updated":"2015-08-14 15:18:46.000000000","message":"Add a \u0027.\u0027 at the EOL.","commit_id":"56d4a0835b71b4f9cb08d15ef7e62e6c85695545"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"b9849d244fd96775e687707288e6106da71e0850","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    def _create_cg_from_cgsnap(self, volumes, snapshots):"},{"line_number":339,"context_line":"        \"\"\"Creates a new consistency group from a cgsnapshot."},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        The new volumes will be consistent with the snapshot"},{"line_number":342,"context_line":"        \"\"\""},{"line_number":343,"context_line":"        for volume, snapshot in zip(volumes, snapshots):"},{"line_number":344,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_33d5c01a","line":341,"in_reply_to":"1a4dcd0f_4653f66c","updated":"2015-08-14 18:14:11.000000000","message":"Done","commit_id":"56d4a0835b71b4f9cb08d15ef7e62e6c85695545"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"09cac59857286411f303f979a09ff2b57963a0a3","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        \"\"\""},{"line_number":352,"context_line":"        pgroup_name \u003d self._get_pgroup_name_from_id(source_group.id)"},{"line_number":353,"context_line":"        tmp_suffix \u003d \u0027%s-tmp\u0027 % uuid.uuid4()"},{"line_number":354,"context_line":"        tmp_pgsnap_name \u003d \u0027%s.%s\u0027 % (pgroup_name, tmp_suffix)"},{"line_number":355,"context_line":"        LOG.debug(\u0027Creating temporary Protection Group snapshot %(snap_name)s \u0027"},{"line_number":356,"context_line":"                  \u0027while cloning Consistency Group %(source_group)s.\u0027,"},{"line_number":357,"context_line":"                  {\u0027snap_name\u0027: tmp_pgsnap_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5cfbb947","line":354,"updated":"2015-08-14 19:41:53.000000000","message":"It\u0027s better to use named interpolation.","commit_id":"a6e2801b6ecea5e40833d39f7326949fe488d63a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"59c07cc668a49df986666fe32f3cbbe6ea4e3f26","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        \"\"\""},{"line_number":352,"context_line":"        pgroup_name \u003d self._get_pgroup_name_from_id(source_group.id)"},{"line_number":353,"context_line":"        tmp_suffix \u003d \u0027%s-tmp\u0027 % uuid.uuid4()"},{"line_number":354,"context_line":"        tmp_pgsnap_name \u003d \u0027%s.%s\u0027 % (pgroup_name, tmp_suffix)"},{"line_number":355,"context_line":"        LOG.debug(\u0027Creating temporary Protection Group snapshot %(snap_name)s \u0027"},{"line_number":356,"context_line":"                  \u0027while cloning Consistency Group %(source_group)s.\u0027,"},{"line_number":357,"context_line":"                  {\u0027snap_name\u0027: tmp_pgsnap_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_1243d514","line":354,"in_reply_to":"1a4dcd0f_5cfbb947","updated":"2015-08-14 23:02:49.000000000","message":"Done","commit_id":"a6e2801b6ecea5e40833d39f7326949fe488d63a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"09cac59857286411f303f979a09ff2b57963a0a3","unresolved":false,"context_lines":[{"line_number":602,"context_line":""},{"line_number":603,"context_line":"    @staticmethod"},{"line_number":604,"context_line":"    def _get_pgroup_vol_snap_name(pg_name, pgsnap_suffix, volume_name):"},{"line_number":605,"context_line":"        return \"%s.%s.%s\" % (pg_name, pgsnap_suffix, volume_name)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    def _get_pgroup_snap_name_from_snapshot(self, snapshot):"},{"line_number":608,"context_line":"        \"\"\"Return the name of the snapshot that Purity will use.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_7c8d55d2","line":605,"updated":"2015-08-14 19:41:53.000000000","message":"Please use named interpolation.","commit_id":"a6e2801b6ecea5e40833d39f7326949fe488d63a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"59c07cc668a49df986666fe32f3cbbe6ea4e3f26","unresolved":false,"context_lines":[{"line_number":602,"context_line":""},{"line_number":603,"context_line":"    @staticmethod"},{"line_number":604,"context_line":"    def _get_pgroup_vol_snap_name(pg_name, pgsnap_suffix, volume_name):"},{"line_number":605,"context_line":"        return \"%s.%s.%s\" % (pg_name, pgsnap_suffix, volume_name)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    def _get_pgroup_snap_name_from_snapshot(self, snapshot):"},{"line_number":608,"context_line":"        \"\"\"Return the name of the snapshot that Purity will use.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_b24a2126","line":605,"in_reply_to":"1a4dcd0f_7c8d55d2","updated":"2015-08-14 23:02:49.000000000","message":"Done","commit_id":"a6e2801b6ecea5e40833d39f7326949fe488d63a"}]}
