)]}'
{"cinder/tests/test_netapp_nfs.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(False)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        mox.ReplayAll()"},{"line_number":507,"context_line":"        (prop, cloned) \u003d drv. clone_image("},{"line_number":508,"context_line":"            \u0027\u0027,"},{"line_number":509,"context_line":"            volume,"},{"line_number":510,"context_line":"            (\u0027nfs://127.0.0.1:/share/img-id\u0027, None),"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_add30bd4","line":507,"updated":"2015-01-10 19:20:35.000000000","message":"Extra space?","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        drv._delete_file(\u0027/mnt/vol\u0027)"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        mox.ReplayAll()"},{"line_number":633,"context_line":"        vol_dict, result \u003d drv. clone_image("},{"line_number":634,"context_line":"            \u0027\u0027,"},{"line_number":635,"context_line":"            volume,"},{"line_number":636,"context_line":"            (\u0027nfs://127.0.0.1/share/img-id\u0027, None),"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_edd433bd","line":633,"updated":"2015-01-10 19:20:35.000000000","message":"Extra space.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"}],"cinder/tests/test_solidfire.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        sfv \u003d SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":325,"context_line":"        properties \u003d sfv.initialize_connection(testvol, connector)"},{"line_number":326,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027physical_block_size\u0027], \u00274096\u0027)"},{"line_number":327,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027logical_block_size\u0027], \u00274096\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def test_create_volume_with_qos(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_fa400b09","line":326,"updated":"2015-01-05 06:14:40.000000000","message":"Looks like the order of the parameters are reversed. It should be expected, actual.\n\nself.assertEqual(\u00274096\u0027, properties[\u0027data\u0027][\u0027physical_block_size\u0027])","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        sfv \u003d SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":325,"context_line":"        properties \u003d sfv.initialize_connection(testvol, connector)"},{"line_number":326,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027physical_block_size\u0027], \u00274096\u0027)"},{"line_number":327,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027logical_block_size\u0027], \u00274096\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def test_create_volume_with_qos(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_4ac118e3","line":326,"in_reply_to":"3a961159_fa400b09","updated":"2015-01-06 22:26:37.000000000","message":"Done","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        sfv \u003d SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":325,"context_line":"        properties \u003d sfv.initialize_connection(testvol, connector)"},{"line_number":326,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027physical_block_size\u0027], \u00274096\u0027)"},{"line_number":327,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027logical_block_size\u0027], \u00274096\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def test_create_volume_with_qos(self):"},{"line_number":330,"context_line":"        preset_qos \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_1a44f719","line":327,"updated":"2015-01-05 06:14:40.000000000","message":"Same here","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        sfv \u003d SolidFireDriver(configuration\u003dself.configuration)"},{"line_number":325,"context_line":"        properties \u003d sfv.initialize_connection(testvol, connector)"},{"line_number":326,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027physical_block_size\u0027], \u00274096\u0027)"},{"line_number":327,"context_line":"        self.assertEqual(properties[\u0027data\u0027][\u0027logical_block_size\u0027], \u00274096\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def test_create_volume_with_qos(self):"},{"line_number":330,"context_line":"        preset_qos \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_6ab25497","line":327,"in_reply_to":"3a961159_1a44f719","updated":"2015-01-06 22:26:37.000000000","message":"Done","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":772,"context_line":"        self.assertEqual(sfv.clone_image(self.ctxt, self.mock_volume,"},{"line_number":773,"context_line":"                                         \u0027fake\u0027, self.fake_image_meta[\u0027id\u0027],"},{"line_number":774,"context_line":"                                         self.fake_image_meta, \u0027fake\u0027),"},{"line_number":775,"context_line":"                         (None, False))"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    @mock.patch.object(SolidFireDriver, \u0027_issue_api_request\u0027)"},{"line_number":778,"context_line":"    def test_clone_image_authorization(self, _mock_issue_api_request):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_1a5b17f7","line":775,"updated":"2015-01-05 06:14:40.000000000","message":"Same here","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":772,"context_line":"        self.assertEqual(sfv.clone_image(self.ctxt, self.mock_volume,"},{"line_number":773,"context_line":"                                         \u0027fake\u0027, self.fake_image_meta[\u0027id\u0027],"},{"line_number":774,"context_line":"                                         self.fake_image_meta, \u0027fake\u0027),"},{"line_number":775,"context_line":"                         (None, False))"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    @mock.patch.object(SolidFireDriver, \u0027_issue_api_request\u0027)"},{"line_number":778,"context_line":"    def test_clone_image_authorization(self, _mock_issue_api_request):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_0aa39043","line":775,"in_reply_to":"3a961159_1a5b17f7","updated":"2015-01-06 22:26:37.000000000","message":"Done","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        self.assertEqual(sfv.clone_image(self.ctxt, self.mock_volume,"},{"line_number":794,"context_line":"                                         \u0027fake\u0027, self.fake_image_meta[\u0027id\u0027],"},{"line_number":795,"context_line":"                                         _fake_image_meta, \u0027fake\u0027),"},{"line_number":796,"context_line":"                         (None, False))"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"        # And is_public False, but the correct owner does work"},{"line_number":799,"context_line":"        # expect raise AccountNotFound as that\u0027s the next call after"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_3a71b377","line":796,"updated":"2015-01-05 06:14:40.000000000","message":"Same here","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        self.assertEqual(sfv.clone_image(self.ctxt, self.mock_volume,"},{"line_number":794,"context_line":"                                         \u0027fake\u0027, self.fake_image_meta[\u0027id\u0027],"},{"line_number":795,"context_line":"                                         _fake_image_meta, \u0027fake\u0027),"},{"line_number":796,"context_line":"                         (None, False))"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"        # And is_public False, but the correct owner does work"},{"line_number":799,"context_line":"        # expect raise AccountNotFound as that\u0027s the next call after"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_4a6838f5","line":796,"in_reply_to":"3a961159_3a71b377","updated":"2015-01-06 22:26:37.000000000","message":"Done","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":830,"context_line":"        self.assertEqual(sfv.clone_image(self.ctxt, self.mock_volume,"},{"line_number":831,"context_line":"                                         \u0027fake\u0027, self.fake_image_meta[\u0027id\u0027],"},{"line_number":832,"context_line":"                                         _fake_image_meta, \u0027fake\u0027),"},{"line_number":833,"context_line":"                         (None, False))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_fa0e4be4","line":833,"updated":"2015-01-05 06:14:40.000000000","message":"Same here","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":830,"context_line":"        self.assertEqual(sfv.clone_image(self.ctxt, self.mock_volume,"},{"line_number":831,"context_line":"                                         \u0027fake\u0027, self.fake_image_meta[\u0027id\u0027],"},{"line_number":832,"context_line":"                                         _fake_image_meta, \u0027fake\u0027),"},{"line_number":833,"context_line":"                         (None, False))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_8a6ea0fe","line":833,"in_reply_to":"3a961159_fa0e4be4","updated":"2015-01-06 22:26:37.000000000","message":"Done","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"}],"cinder/tests/test_volume.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            mock_trace_cls.return_value \u003d mock_decorator"},{"line_number":107,"context_line":"            self.volume \u003d importutils.import_object(CONF.volume_manager)"},{"line_number":108,"context_line":"        self.configuration \u003d mock.Mock(conf.Configuration)"},{"line_number":109,"context_line":"        #self.configuration \u003d conf.Configuration(fake_opts, \u0027fake_group\u0027)"},{"line_number":110,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":111,"context_line":"        self.context.user_id \u003d \u0027fake\u0027"},{"line_number":112,"context_line":"        self.context.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_2ddf1bd8","line":109,"updated":"2015-01-10 19:20:35.000000000","message":"Please remove commented out code.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"}],"cinder/volume/driver.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"45de128047ecccc7404a8f803f06914597f9ca36","unresolved":false,"context_lines":[{"line_number":535,"context_line":"    def clone_image(self, context, volume,"},{"line_number":536,"context_line":"                    image_location, image_meta,"},{"line_number":537,"context_line":"                    image_service):"},{"line_number":538,"context_line":"        \"\"\"Create a volume efficiently from an existing image."},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"        image_location is a string whose format depends on the"},{"line_number":541,"context_line":"        image service backend in use. The driver should use it"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_c9ea599f","line":538,"updated":"2015-01-07 18:13:58.000000000","message":"Can you add a comment below to cover what image_service is, please? Don\u0027t think we need one for context","commit_id":"a21d638c92b9c2baae34b01d10f424da69642ea5"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"3afd95f7aa94190417b3ee9c9e11f6ba7bc74c31","unresolved":false,"context_lines":[{"line_number":535,"context_line":"    def clone_image(self, context, volume,"},{"line_number":536,"context_line":"                    image_location, image_meta,"},{"line_number":537,"context_line":"                    image_service):"},{"line_number":538,"context_line":"        \"\"\"Create a volume efficiently from an existing image."},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"        image_location is a string whose format depends on the"},{"line_number":541,"context_line":"        image service backend in use. The driver should use it"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_cc517d0f","line":538,"in_reply_to":"3a961159_c9ea599f","updated":"2015-01-08 00:11:38.000000000","message":"Yeah, I\u0027ll add the parameter.  For some extra info, existing implementations for like Gluster and Ceph operates on the premise that they\u0027re also the Glance store.  This gives us the opportunity to have the Glance backing and the Block driver to NOT be the same device and allows the driver itself to have access to Glance backend.  Without the image_service we couldn\u0027t do that.","commit_id":"a21d638c92b9c2baae34b01d10f424da69642ea5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        image service backend in use. The driver should use it"},{"line_number":542,"context_line":"        to determine whether cloning is possible."},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        image_id is a string which represents id of the image."},{"line_number":545,"context_line":"        It can be used by the driver to introspect internal"},{"line_number":546,"context_line":"        stores or registry to do an efficient image clone."},{"line_number":547,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_adea2b72","line":544,"updated":"2015-01-10 19:20:35.000000000","message":"image_id removed and comment no longer needed.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"321f4e86f1a2e6c65930ebce535056ac0bf7191d","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        decide whether they can clone the image without first requiring"},{"line_number":551,"context_line":"        conversion."},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        image_service is the a reference of the image_service to use."},{"line_number":554,"context_line":"        Note that this is needed to be passed here for drivers that"},{"line_number":555,"context_line":"        will want to fetch images from the image service directly."},{"line_number":556,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_d8d9f385","line":553,"updated":"2015-01-10 21:37:27.000000000","message":"There\u0027s an extra \"a\" here:\n\nthe a reference -\u003e the reference.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"}],"cinder/volume/drivers/lvm.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # the cow table and only overwriting what\u0027s necessary?"},{"line_number":126,"context_line":"        # for now we\u0027re still skipping on snaps due to hang issue"},{"line_number":127,"context_line":"        if not os.path.exists(dev_path):"},{"line_number":128,"context_line":"            msg \u003d (_LE(\u0027Volume device file path %s does not exist.\u0027)"},{"line_number":129,"context_line":"                   % dev_path)"},{"line_number":130,"context_line":"            LOG.error(msg)"},{"line_number":131,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_edfb5346","line":128,"updated":"2015-01-10 19:20:35.000000000","message":"I thought if the msg was also used for an exception that we use _() instead of _LE(). I could very well be wrong though.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"321f4e86f1a2e6c65930ebce535056ac0bf7191d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # the cow table and only overwriting what\u0027s necessary?"},{"line_number":126,"context_line":"        # for now we\u0027re still skipping on snaps due to hang issue"},{"line_number":127,"context_line":"        if not os.path.exists(dev_path):"},{"line_number":128,"context_line":"            msg \u003d (_LE(\u0027Volume device file path %s does not exist.\u0027)"},{"line_number":129,"context_line":"                   % dev_path)"},{"line_number":130,"context_line":"            LOG.error(msg)"},{"line_number":131,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_38e1172b","line":128,"in_reply_to":"3a961159_edfb5346","updated":"2015-01-10 21:37:27.000000000","message":"Sean is right, though this was in the original code, not added by this patch. We usually don\u0027t ask people to make additional changes unless if the code was already touched in the patch being reviewed. So this is unrelated to this patch.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        size_in_g \u003d volume.get(\u0027size\u0027, volume.get(\u0027volume_size\u0027, None))"},{"line_number":134,"context_line":"        if size_in_g is None:"},{"line_number":135,"context_line":"            msg \u003d (_LE(\"Size for volume: %s not found, \""},{"line_number":136,"context_line":"                   \"cannot secure delete.\") % volume[\u0027id\u0027])"},{"line_number":137,"context_line":"            LOG.error(msg)"},{"line_number":138,"context_line":"            raise exception.InvalidParameterValue(msg)"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_0df97f4e","line":136,"updated":"2015-01-10 19:20:35.000000000","message":"Same.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"321f4e86f1a2e6c65930ebce535056ac0bf7191d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        size_in_g \u003d volume.get(\u0027size\u0027, volume.get(\u0027volume_size\u0027, None))"},{"line_number":134,"context_line":"        if size_in_g is None:"},{"line_number":135,"context_line":"            msg \u003d (_LE(\"Size for volume: %s not found, \""},{"line_number":136,"context_line":"                   \"cannot secure delete.\") % volume[\u0027id\u0027])"},{"line_number":137,"context_line":"            LOG.error(msg)"},{"line_number":138,"context_line":"            raise exception.InvalidParameterValue(msg)"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_78d2bf5c","line":136,"in_reply_to":"3a961159_0df97f4e","updated":"2015-01-10 21:37:27.000000000","message":"Same here.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":826,"context_line":"            LOG.warn(_LW(\u0027volume_tmp_dir is now deprecated, please use \u0027"},{"line_number":827,"context_line":"                         \u0027image_conversion_dir\u0027))"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"        # ensure temporary directory exists"},{"line_number":830,"context_line":"        if not os.path.exists(tmpdir):"},{"line_number":831,"context_line":"            os.makedirs(tmpdir)"},{"line_number":832,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_2df63b5e","line":829,"updated":"2015-01-10 19:20:35.000000000","message":"Please start with an uppercase E.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"}],"cinder/volume/drivers/scality.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1376a7b28f244433ec848e5d5181eb23905dc493","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        image service backend in use. The driver should use it"},{"line_number":266,"context_line":"        to determine whether cloning is possible."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        image_id is a string which represents id of the image."},{"line_number":269,"context_line":"        It can be used by the driver to introspect internal"},{"line_number":270,"context_line":"        stores or registry to do an efficient image clone."},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_4d92a7fd","line":268,"updated":"2015-01-10 19:20:35.000000000","message":"Comments should be updated.","commit_id":"e9fff7dac1c932c83bce477b1ad656c561f8987e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"47f1efd09a1b43add19e12f9b07174b64f24ad70","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        image service backend in use. The driver should use it"},{"line_number":266,"context_line":"        to determine whether cloning is possible."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        image_id is a string which represents id of the image."},{"line_number":269,"context_line":"        It can be used by the driver to introspect internal"},{"line_number":270,"context_line":"        stores or registry to do an efficient image clone."},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_dbeaca73","line":268,"updated":"2015-01-11 16:35:15.000000000","message":"Still think the comments should be updated to reflect the current arguments.","commit_id":"b1ce7605b980bfe191e7f61a328dd8e374f0a27c"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"959dd638bd3d504d993f123dcc04b437b3eecf6b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        image service backend in use. The driver should use it"},{"line_number":266,"context_line":"        to determine whether cloning is possible."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        image_id is a string which represents id of the image."},{"line_number":269,"context_line":"        It can be used by the driver to introspect internal"},{"line_number":270,"context_line":"        stores or registry to do an efficient image clone."},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_5e66c8bc","line":268,"in_reply_to":"3a961159_dbeaca73","updated":"2015-01-11 18:50:08.000000000","message":"You\u0027re correct, they should... let me work that up and resubmit","commit_id":"b1ce7605b980bfe191e7f61a328dd8e374f0a27c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d55d32a339d0f505e2bcd62911dca031a8b4984","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        image service backend in use. The driver should use it"},{"line_number":266,"context_line":"        to determine whether cloning is possible."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        image_id is a string which represents id of the image."},{"line_number":269,"context_line":"        It can be used by the driver to introspect internal"},{"line_number":270,"context_line":"        stores or registry to do an efficient image clone."},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_1467bf52","line":268,"updated":"2015-01-12 01:40:14.000000000","message":"image_id was removed, so this should be deleted. That can be done in a batch general cleanup though I think. At least image_service was added, which is really more relevant to this patch anyway. Thanks!","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"79e97df326c12bc2b4368ff7641328bb8867ea43","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        image service backend in use. The driver should use it"},{"line_number":266,"context_line":"        to determine whether cloning is possible."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        image_id is a string which represents id of the image."},{"line_number":269,"context_line":"        It can be used by the driver to introspect internal"},{"line_number":270,"context_line":"        stores or registry to do an efficient image clone."},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_6523dea7","line":268,"in_reply_to":"3a961159_1467bf52","updated":"2015-01-12 19:06:34.000000000","message":"Grrr... can\u0027t believe I missed that one!","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3d97bbaabb7a736cff76a18e353547fea876074b","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                                     attach_info[\u0027device\u0027][\u0027path\u0027],"},{"line_number":552,"context_line":"                                     self.configuration.volume_dd_blocksize,"},{"line_number":553,"context_line":"                                     size\u003dmin_sz_in_gig)"},{"line_number":554,"context_line":"        except Exception:"},{"line_number":555,"context_line":"            # FAIL! clean up our mess"},{"line_number":556,"context_line":"            self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":557,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_6bf8e1c4","line":554,"updated":"2015-01-02 19:06:50.000000000","message":"Could we catch more specific exception here? Also some logs will be useful.","commit_id":"b53ded2d0bcd4d739911b1c82c7bfba71020f473"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"f4d400ea4bb15ccc747a67c579739bc8884afb4b","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                                     attach_info[\u0027device\u0027][\u0027path\u0027],"},{"line_number":552,"context_line":"                                     self.configuration.volume_dd_blocksize,"},{"line_number":553,"context_line":"                                     size\u003dmin_sz_in_gig)"},{"line_number":554,"context_line":"        except Exception:"},{"line_number":555,"context_line":"            # FAIL! clean up our mess"},{"line_number":556,"context_line":"            self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":557,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_f1ed9e8f","line":554,"in_reply_to":"3a961159_6bf8e1c4","updated":"2015-01-03 00:25:34.000000000","message":"We don\u0027t raise a specific exception, could probably wrap the call itself to throw something specific in a follow up and implement that except clause here and in the other drivers that use it.\n\nLogging for sure, I\u0027ll get that turned around.","commit_id":"b53ded2d0bcd4d739911b1c82c7bfba71020f473"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3d97bbaabb7a736cff76a18e353547fea876074b","unresolved":false,"context_lines":[{"line_number":576,"context_line":"        if sf_vol is None:"},{"line_number":577,"context_line":"            return"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        # check updated_at field, delete copy and update if needed"},{"line_number":580,"context_line":"        if sf_vol[\u0027attributes\u0027][\u0027image_info\u0027][\u0027image_updated_at\u0027] \u003d\u003d\\"},{"line_number":581,"context_line":"                image_meta[\u0027updated_at\u0027].isoformat():"},{"line_number":582,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_4b296536","line":579,"updated":"2015-01-02 19:06:50.000000000","message":"Please, start a comment with an upper-case letter","commit_id":"b53ded2d0bcd4d739911b1c82c7bfba71020f473"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"f4d400ea4bb15ccc747a67c579739bc8884afb4b","unresolved":false,"context_lines":[{"line_number":576,"context_line":"        if sf_vol is None:"},{"line_number":577,"context_line":"            return"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        # check updated_at field, delete copy and update if needed"},{"line_number":580,"context_line":"        if sf_vol[\u0027attributes\u0027][\u0027image_info\u0027][\u0027image_updated_at\u0027] \u003d\u003d\\"},{"line_number":581,"context_line":"                image_meta[\u0027updated_at\u0027].isoformat():"},{"line_number":582,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_11f14a6a","line":579,"in_reply_to":"3a961159_4b296536","updated":"2015-01-03 00:25:34.000000000","message":"For sure, thanks","commit_id":"b53ded2d0bcd4d739911b1c82c7bfba71020f473"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":558,"context_line":"                      template_vol[\u0027volumeID\u0027])"},{"line_number":559,"context_line":"            self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":560,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"},{"line_number":561,"context_line":"            self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_7ab89b2a","line":561,"updated":"2015-01-05 06:14:40.000000000","message":"Needs a \"return\" here?","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":558,"context_line":"                      template_vol[\u0027volumeID\u0027])"},{"line_number":559,"context_line":"            self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":560,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"},{"line_number":561,"context_line":"            self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_960a451e","line":561,"in_reply_to":"3a961159_7ab89b2a","updated":"2015-01-06 22:26:37.000000000","message":"Done","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"},{"line_number":561,"context_line":"            self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"},{"line_number":565,"context_line":"        LOG.debug(\u0027Succesfully created SolidFire Image Template \u0027,"},{"line_number":566,"context_line":"                  \u0027for image-id: %s\u0027, image_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_b429399d","line":563,"updated":"2015-01-05 06:14:40.000000000","message":"If an exception is caught, _detach_volume will be called twice. Also I think the volume is already deleted at this point if it goes through the exception handling block above. Do you want to raise an exception or return success after detach_volume and DeleteVolume are called in the exception handling block above?","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"1c59db747b692646415551ea93f523b2bc707b38","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"},{"line_number":561,"context_line":"            self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"},{"line_number":565,"context_line":"        LOG.debug(\u0027Succesfully created SolidFire Image Template \u0027,"},{"line_number":566,"context_line":"                  \u0027for image-id: %s\u0027, image_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_44e13dfb","line":563,"in_reply_to":"3a961159_b429399d","updated":"2015-01-05 14:21:52.000000000","message":"+1","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            params[\u0027volumeID\u0027] \u003d template_vol[\u0027volumeID\u0027]"},{"line_number":561,"context_line":"            self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"},{"line_number":565,"context_line":"        LOG.debug(\u0027Succesfully created SolidFire Image Template \u0027,"},{"line_number":566,"context_line":"                  \u0027for image-id: %s\u0027, image_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_d60f6d2c","line":563,"in_reply_to":"3a961159_b429399d","updated":"2015-01-06 22:26:37.000000000","message":"Oops... yeah, I\u0027ll add a finally there","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3c50156d411b95542b2b0fbbf0697585b4290ed","unresolved":false,"context_lines":[{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"},{"line_number":565,"context_line":"        LOG.debug(\u0027Succesfully created SolidFire Image Template \u0027,"},{"line_number":566,"context_line":"                  \u0027for image-id: %s\u0027, image_id)"},{"line_number":567,"context_line":"        return sf_vol"},{"line_number":568,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_741fd170","line":565,"updated":"2015-01-05 06:14:40.000000000","message":"Typo: Missing a \"s\" in Successfully.","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        self._detach_volume(context, attach_info, tvol, properties)"},{"line_number":564,"context_line":"        sf_vol \u003d self._get_sf_volume(image_id, params)"},{"line_number":565,"context_line":"        LOG.debug(\u0027Succesfully created SolidFire Image Template \u0027,"},{"line_number":566,"context_line":"                  \u0027for image-id: %s\u0027, image_id)"},{"line_number":567,"context_line":"        return sf_vol"},{"line_number":568,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_369b51ca","line":565,"in_reply_to":"3a961159_741fd170","updated":"2015-01-06 22:26:37.000000000","message":"Fixed, and a couple more before somebody notices :)","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"1c59db747b692646415551ea93f523b2bc707b38","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        # Is the image owned by this tenant or public?"},{"line_number":611,"context_line":"        if not image_meta.get(\u0027is_public\u0027, False):"},{"line_number":612,"context_line":"            if image_meta[\u0027owner\u0027] !\u003d volume[\u0027project_id\u0027]:"},{"line_number":613,"context_line":"                LOG.warning(_LI(\"Requested image is not \""},{"line_number":614,"context_line":"                                \"accesible by current Tenant.\"))"},{"line_number":615,"context_line":"                return None, False"},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_a4d2e131","line":613,"updated":"2015-01-05 14:21:52.000000000","message":"I think this should be _LW","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"931527c96aca6207f8ba7c577e86a77da33cc16b","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        # Is the image owned by this tenant or public?"},{"line_number":611,"context_line":"        if not image_meta.get(\u0027is_public\u0027, False):"},{"line_number":612,"context_line":"            if image_meta[\u0027owner\u0027] !\u003d volume[\u0027project_id\u0027]:"},{"line_number":613,"context_line":"                LOG.warning(_LI(\"Requested image is not \""},{"line_number":614,"context_line":"                                \"accesible by current Tenant.\"))"},{"line_number":615,"context_line":"                return None, False"},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_36827152","line":613,"in_reply_to":"3a961159_a4d2e131","updated":"2015-01-06 22:26:37.000000000","message":"You are correct good sir","commit_id":"0749464820d1dce15155f79e884ac7a65b9a19eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b751b83a364f51422c7e0673b92df3c706450c1e","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                (not image_meta[\u0027properties\u0027].get(\u0027virtual_size\u0027, None))):"},{"line_number":625,"context_line":"            LOG.info(_LI(\u0027Unable to create cache volume because image: %s \u0027"},{"line_number":626,"context_line":"                         \u0027does not include properties.virtual_size\u0027)"},{"line_number":627,"context_line":"                     % image_id)"},{"line_number":628,"context_line":"            return None, False"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_26795c2f","line":627,"updated":"2015-01-07 04:55:15.000000000","message":"\",\" is recommended instead of \"%\" for delayed string interpolation.","commit_id":"f24aa92e877b3d3f537c52cecbd8a95370690026"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"dbf43b3e31bf98066060c2326a57b640532ca257","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            # Bummer, it\u0027s been updated, delete it"},{"line_number":592,"context_line":"            params \u003d {\u0027accountID\u0027: sfaccount[\u0027accountID\u0027]}"},{"line_number":593,"context_line":"            params \u003d {\u0027volumeID\u0027: sf_vol[\u0027volumeID\u0027]}"},{"line_number":594,"context_line":"            data \u003d self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":595,"context_line":"            if \u0027result\u0027 not in data:"},{"line_number":596,"context_line":"                msg \u003d _(\"Failed to delete SolidFire Image-Volume: %s\") % data"},{"line_number":597,"context_line":"                raise exception.SolidFireAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_aa3846ef","line":594,"updated":"2015-01-12 05:49:12.000000000","message":"Deleting a volume during an operation to create a volume looks odd.  Ideally out-of-date copies would be cleaned up offline.  Less ideally, I would say to not raise an exception so that we don\u0027t fail the creation due to deletion failure.  What do you think?","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"79e97df326c12bc2b4368ff7641328bb8867ea43","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            # Bummer, it\u0027s been updated, delete it"},{"line_number":592,"context_line":"            params \u003d {\u0027accountID\u0027: sfaccount[\u0027accountID\u0027]}"},{"line_number":593,"context_line":"            params \u003d {\u0027volumeID\u0027: sf_vol[\u0027volumeID\u0027]}"},{"line_number":594,"context_line":"            data \u003d self._issue_api_request(\u0027DeleteVolume\u0027, params)"},{"line_number":595,"context_line":"            if \u0027result\u0027 not in data:"},{"line_number":596,"context_line":"                msg \u003d _(\"Failed to delete SolidFire Image-Volume: %s\") % data"},{"line_number":597,"context_line":"                raise exception.SolidFireAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_42241860","line":594,"in_reply_to":"3a961159_aa3846ef","updated":"2015-01-12 19:06:34.000000000","message":"I don\u0027t think the delete here is a bad thing, so this call is where we have the opportunity to check the status of the cache and compare it to the latest and greatest glance info.  I suppose this whole process could be turned into a background or periodic at some point; I didn\u0027t like that approach before because I didn\u0027t want to have to worry about races or timing issues.\n\nThis exception won\u0027t propagate out, note that we\u0027re catching this exception in the caller and only aborting the clone enhancement (ie it will just fall back to the generalized/slower method).  The actual create process from the callers perspective will continue on (see the try/except block at Line #631)","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"dbf43b3e31bf98066060c2326a57b640532ca257","unresolved":false,"context_lines":[{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        # Is the image owned by this tenant or public?"},{"line_number":616,"context_line":"        if not image_meta.get(\u0027is_public\u0027, False):"},{"line_number":617,"context_line":"            if image_meta[\u0027owner\u0027] !\u003d volume[\u0027project_id\u0027]:"},{"line_number":618,"context_line":"                LOG.warning(_LW(\"Requested image is not \""},{"line_number":619,"context_line":"                                \"accesible by current Tenant.\"))"},{"line_number":620,"context_line":"                return None, False"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_ca46727b","line":617,"updated":"2015-01-12 05:49:12.000000000","message":"\u0027and\u0027 instead of two \u0027if\u0027s?","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"79e97df326c12bc2b4368ff7641328bb8867ea43","unresolved":false,"context_lines":[{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        # Is the image owned by this tenant or public?"},{"line_number":616,"context_line":"        if not image_meta.get(\u0027is_public\u0027, False):"},{"line_number":617,"context_line":"            if image_meta[\u0027owner\u0027] !\u003d volume[\u0027project_id\u0027]:"},{"line_number":618,"context_line":"                LOG.warning(_LW(\"Requested image is not \""},{"line_number":619,"context_line":"                                \"accesible by current Tenant.\"))"},{"line_number":620,"context_line":"                return None, False"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_82d8c0f1","line":617,"in_reply_to":"3a961159_ca46727b","updated":"2015-01-12 19:06:34.000000000","message":"seems completely the same but I\u0027m fine with changing it if it\u0027s a deal breaker.  In either case the second statement never gets evaluated if the first isn\u0027t True so there\u0027s no difference here, and myself I find the \"and\" logic to be more difficult for people to read.","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"dbf43b3e31bf98066060c2326a57b640532ca257","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            if self._create_image_volume(context,"},{"line_number":644,"context_line":"                                         image_meta,"},{"line_number":645,"context_line":"                                         image_service,"},{"line_number":646,"context_line":"                                         image_meta[\u0027id\u0027]) is None:"},{"line_number":647,"context_line":"                # We failed, dump out"},{"line_number":648,"context_line":"                return None, False"},{"line_number":649,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_0a06ba21","line":646,"updated":"2015-01-12 05:49:12.000000000","message":"_create_image_volume will return None if fetch_to_raw failed, but if the volume creation, attach, detach, etc. failed, you will get an exception.  I don\u0027t think that is what you want.","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"79e97df326c12bc2b4368ff7641328bb8867ea43","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            if self._create_image_volume(context,"},{"line_number":644,"context_line":"                                         image_meta,"},{"line_number":645,"context_line":"                                         image_service,"},{"line_number":646,"context_line":"                                         image_meta[\u0027id\u0027]) is None:"},{"line_number":647,"context_line":"                # We failed, dump out"},{"line_number":648,"context_line":"                return None, False"},{"line_number":649,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_8510ca50","line":646,"in_reply_to":"3a961159_0a06ba21","updated":"2015-01-12 19:06:34.000000000","message":"I think it is, remember this is an \"internal\" clone volume that\u0027s not visible to Cinder or the end user.","commit_id":"25a139e62e08f20eec290bf1366f41e55575b836"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"6d556f5df6572476531edfe3000d8a7d58c0f420","unresolved":false,"context_lines":[{"line_number":398,"context_line":"        # Increment the usage count, just for data collection"},{"line_number":399,"context_line":"        cloned_count \u003d sf_vol[\u0027attributes\u0027].get(\u0027cloned_count\u0027, 0)"},{"line_number":400,"context_line":"        cloned_count +\u003d 1"},{"line_number":401,"context_line":"        attributes \u003d sf_vol[\u0027attributes\u0027]"},{"line_number":402,"context_line":"        attributes[\u0027cloned_count\u0027] \u003d cloned_count"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        params \u003d {\u0027volumeID\u0027: int(sf_vol[\u0027volumeID\u0027])}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_6f93494f","line":401,"updated":"2015-01-15 09:59:23.000000000","message":"dictionary lookup with same key at line 399. Could be optimised, but only if you feel like, i.e. completely optional","commit_id":"ee653ad1389e38f32faddf9dabb79a0c0e9a4770"}]}
