)]}'
{"cinder/tests/unit/volume/drivers/dell_emc/vmax/__init__.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7ffa3b31_3fb89c28","line":1,"updated":"2017-04-17 02:45:49.000000000","message":"I don\u0027t know why this file shows up as changed file.  It should not be changed.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"667e8d77c2e7b7530a408df7b01c7f271afe763b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7ffa3b31_eebff6f8","line":1,"in_reply_to":"7ffa3b31_3fb89c28","updated":"2017-04-18 13:50:00.000000000","message":"We have moved the smis test file from dell_emc to a new folder called dell_emc/vmax to avoid confusion","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"}],"cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 - 2015 EMC Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_5f66c8ef","line":1,"updated":"2017-04-17 02:45:49.000000000","message":"This file should not be moved.  Why did you move it outside of the vmax folder?","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"667e8d77c2e7b7530a408df7b01c7f271afe763b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 - 2015 EMC Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_ee6db698","line":1,"in_reply_to":"7ffa3b31_5f66c8ef","updated":"2017-04-18 13:50:00.000000000","message":"It was moved into the new vmax folder.  Before now it existed in dell_emc","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.tests.unit import fake_volume"},{"line_number":30,"context_line":"from cinder.volume import volume_types"},{"line_number":31,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from cinder.volume.drivers.dell_emc.vmax import common"},{"line_number":34,"context_line":"from cinder.volume.drivers.dell_emc.vmax import fc"},{"line_number":35,"context_line":"from cinder.volume.drivers.dell_emc.vmax import iscsi"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_bc4d569b","line":32,"updated":"2017-06-03 19:10:18.000000000","message":"Remove the blank line","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"}],"cinder/volume/drivers/dell_emc/vmax/common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":732,"context_line":"                          {\u0027maskedvols\u0027: maskedvols})"},{"line_number":733,"context_line":"        else:"},{"line_number":734,"context_line":"            exception_message \u003d (_(\"Cannot retrieve volume %(vol)s \""},{"line_number":735,"context_line":"                                   \"from the array. \") % {\u0027vol\u0027: volume_name})"},{"line_number":736,"context_line":"            LOG.exception(exception_message)"},{"line_number":737,"context_line":"            raise exception.VolumeBackendAPIException(exception_message)"},{"line_number":738,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_3c8a66be","line":735,"range":{"start_line":735,"start_character":51,"end_line":735,"end_character":52},"updated":"2017-06-03 19:10:18.000000000","message":"Remove white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":985,"context_line":"                    foundsnap_name \u003d snap_name"},{"line_number":986,"context_line":"            except Exception as e:"},{"line_number":987,"context_line":"                LOG.info(\"Exception in retrieving snapshot: %(e)s.\","},{"line_number":988,"context_line":"                         {\u0027e\u0027: six.text_type(e)})"},{"line_number":989,"context_line":"                foundsnap_name \u003d None"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"        if foundsnap_name is None or sourcedevice_id is None:"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_bcbf965f","line":988,"range":{"start_line":988,"start_character":31,"end_line":988,"end_character":44},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here because the logger will handle it.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"                                                snap_name, extra_specs)"},{"line_number":1020,"context_line":"        except Exception as e:"},{"line_number":1021,"context_line":"            exception_message \u003d (_(\"Error creating snap Vx of %(vol)s. \""},{"line_number":1022,"context_line":"                                   \"Exception received: %(e)s\")"},{"line_number":1023,"context_line":"                                 % {\u0027vol\u0027: source_device_id,"},{"line_number":1024,"context_line":"                                    \u0027e\u0027: six.text_type(e)})"},{"line_number":1025,"context_line":"            LOG.error(exception_message)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9cc4d2f6","line":1022,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1041,"context_line":"        if device_id is None:"},{"line_number":1042,"context_line":"            LOG.error(\"Volume %(name)s not found on the array. \""},{"line_number":1043,"context_line":"                      \"No volume to delete.\","},{"line_number":1044,"context_line":"                      {\u0027name\u0027: volume_name})"},{"line_number":1045,"context_line":"            return volume_name"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5cbaba6d","line":1042,"range":{"start_line":1042,"start_character":62,"end_line":1042,"end_character":63},"updated":"2017-06-03 19:10:18.000000000","message":"white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"            if num_vol_in_sg \u003d\u003d 0:"},{"line_number":1103,"context_line":"                LOG.debug(\"There are no volumes in the storage group \""},{"line_number":1104,"context_line":"                          \"%(sg_id)s. Deleting storage group\","},{"line_number":1105,"context_line":"                          {\u0027sg_id\u0027: storagegroup_name})"},{"line_number":1106,"context_line":"                self.rest.delete_storage_group("},{"line_number":1107,"context_line":"                    array, storagegroup_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1cb0c289","line":1104,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1167,"context_line":"                            \u0027srpName\u0027: pool_record[\u0027srpName\u0027],"},{"line_number":1168,"context_line":"                            \u0027array\u0027: pool_record[\u0027SerialNumber\u0027]})"},{"line_number":1169,"context_line":"            LOG.warning(\"Pool_name is not present in the extra_specs \""},{"line_number":1170,"context_line":"                        \"- using default pool %(pool_name)s\","},{"line_number":1171,"context_line":"                        {\u0027pool_name\u0027: pool_name})"},{"line_number":1172,"context_line":"        pool_details \u003d pool_name.split(\u0027+\u0027)"},{"line_number":1173,"context_line":"        slo_from_extra_spec \u003d pool_details[0]"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_fca86e20","line":1170,"updated":"2017-06-03 19:10:18.000000000","message":"Period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"        :param initiator_group_name: ig name"},{"line_number":1281,"context_line":"        :return: list of masking views"},{"line_number":1282,"context_line":"        \"\"\""},{"line_number":1283,"context_line":"        LOG.debug(\"Finding Masking Views for port group %(pg)s and %(ig)s\","},{"line_number":1284,"context_line":"                  {\u0027pg\u0027: portgroup_name, \u0027ig\u0027: initiator_group_name})"},{"line_number":1285,"context_line":"        masking_view_list \u003d self.rest.get_common_masking_views("},{"line_number":1286,"context_line":"            array, portgroup_name, initiator_group_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_dca5aa48","line":1283,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1308,"context_line":"        :returns: ip_and_iqn - list of dicts"},{"line_number":1309,"context_line":"        \"\"\""},{"line_number":1310,"context_line":"        ips_and_iqns \u003d []"},{"line_number":1311,"context_line":"        LOG.debug(\"The portgroup name for iscsiadm is %(pg)s\","},{"line_number":1312,"context_line":"                  {\u0027pg\u0027: port_group_name})"},{"line_number":1313,"context_line":"        ports \u003d self.rest.get_port_ids(array, port_group_name)"},{"line_number":1314,"context_line":"        for port in ports:"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_bc643623","line":1311,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"            if target_device_id:"},{"line_number":1355,"context_line":"                LOG.warning(\"Create replica failed. Cleaning up the target \""},{"line_number":1356,"context_line":"                            \"volume. Clone name: %(cloneName)s, Error \""},{"line_number":1357,"context_line":"                            \"received is %(e)s\","},{"line_number":1358,"context_line":"                            {\u0027cloneName\u0027: clone_name, \u0027e\u0027: e})"},{"line_number":1359,"context_line":"                self._cleanup_target("},{"line_number":1360,"context_line":"                    array, target_device_id, source_device_id,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9c6972fa","line":1357,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1484,"context_line":"            array, device_id)"},{"line_number":1485,"context_line":"        if snapvx_tgt or snapvx_src or rdf:"},{"line_number":1486,"context_line":"            msg \u003d (_(\"Unable to import volume %(device_id)s to cinder. \""},{"line_number":1487,"context_line":"                     \"It is part of a replication session\")"},{"line_number":1488,"context_line":"                   % {\u0027device_id\u0027: device_id})"},{"line_number":1489,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":1490,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_3c7826c2","line":1487,"updated":"2017-06-03 19:10:18.000000000","message":"Period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":1521,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (_(\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                               \"unmanage operation. Exiting...\")"},{"line_number":1525,"context_line":"                             % {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"},{"line_number":1527,"context_line":"        else:"},{"line_number":1528,"context_line":"            # Rename the volume to volumeId, thus remove the \u0027OS-\u0027 prefix."}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1c7562cb","line":1525,"range":{"start_line":1523,"start_character":0,"end_line":1525,"end_character":49},"updated":"2017-06-03 19:10:18.000000000","message":"This error_message is not raised in an exception.  So \",\" should be used instead of \"%\".","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":42,"context_line":"vmax_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027cinder_dell_emc_config_file\u0027,"},{"line_number":44,"context_line":"               default\u003dCINDER_EMC_CONFIG_FILE,"},{"line_number":45,"context_line":"               help\u003d\u0027use this file for cinder emc plugin \u0027"},{"line_number":46,"context_line":"                    \u0027config data\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027intervals\u0027,"},{"line_number":48,"context_line":"               default\u003d3,"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_94e4a20e","line":45,"range":{"start_line":45,"start_character":21,"end_line":45,"end_character":22},"updated":"2017-06-04 20:14:21.000000000","message":"Only if you need to do another update, please change these back to starting uppercase to be consistent. Probably good to end with a period too.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"vmax_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027cinder_dell_emc_config_file\u0027,"},{"line_number":44,"context_line":"               default\u003dCINDER_EMC_CONFIG_FILE,"},{"line_number":45,"context_line":"               help\u003d\u0027use this file for cinder emc plugin \u0027"},{"line_number":46,"context_line":"                    \u0027config data\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027intervals\u0027,"},{"line_number":48,"context_line":"               default\u003d3,"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_b0956989","line":45,"range":{"start_line":45,"start_character":21,"end_line":45,"end_character":22},"in_reply_to":"df140735_94e4a20e","updated":"2017-06-05 08:38:54.000000000","message":"Thanks Sean, will do","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        else:"},{"line_number":115,"context_line":"            self.pool_info[\u0027config_file\u0027] \u003d ("},{"line_number":116,"context_line":"                self.configuration.safe_get(\u0027cinder_dell_emc_config_file\u0027))"},{"line_number":117,"context_line":"        self.intervals \u003d (self.configuration.safe_get(\u0027intervals\u0027))"},{"line_number":118,"context_line":"        self.retries \u003d (self.configuration.safe_get(\u0027retries\u0027))"},{"line_number":119,"context_line":"        self.pool_info[\u0027backend_name\u0027] \u003d ("},{"line_number":120,"context_line":"            self.configuration.safe_get(\u0027volume_backend_name\u0027))"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_14c2d259","line":117,"range":{"start_line":117,"start_character":25,"end_line":117,"end_character":26},"updated":"2017-06-04 20:14:21.000000000","message":"Outer () not needed on these two lines.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        else:"},{"line_number":115,"context_line":"            self.pool_info[\u0027config_file\u0027] \u003d ("},{"line_number":116,"context_line":"                self.configuration.safe_get(\u0027cinder_dell_emc_config_file\u0027))"},{"line_number":117,"context_line":"        self.intervals \u003d (self.configuration.safe_get(\u0027intervals\u0027))"},{"line_number":118,"context_line":"        self.retries \u003d (self.configuration.safe_get(\u0027retries\u0027))"},{"line_number":119,"context_line":"        self.pool_info[\u0027backend_name\u0027] \u003d ("},{"line_number":120,"context_line":"            self.configuration.safe_get(\u0027volume_backend_name\u0027))"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_70e0f126","line":117,"range":{"start_line":117,"start_character":25,"end_line":117,"end_character":26},"in_reply_to":"df140735_14c2d259","updated":"2017-06-05 08:38:54.000000000","message":"We will remove them","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1041,"context_line":"        if device_id is None:"},{"line_number":1042,"context_line":"            LOG.error(\"Volume %(name)s not found on the array.\""},{"line_number":1043,"context_line":"                      \"No volume to delete.\","},{"line_number":1044,"context_line":"                      {\u0027name\u0027: volume_name})"},{"line_number":1045,"context_line":"            return volume_name"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_b497a648","line":1042,"range":{"start_line":1042,"start_character":62,"end_line":1042,"end_character":63},"updated":"2017-06-04 20:14:21.000000000","message":"Needs trailing space.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1041,"context_line":"        if device_id is None:"},{"line_number":1042,"context_line":"            LOG.error(\"Volume %(name)s not found on the array.\""},{"line_number":1043,"context_line":"                      \"No volume to delete.\","},{"line_number":1044,"context_line":"                      {\u0027name\u0027: volume_name})"},{"line_number":1045,"context_line":"            return volume_name"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_d0c8dda6","line":1042,"range":{"start_line":1042,"start_character":62,"end_line":1042,"end_character":63},"in_reply_to":"df140735_b497a648","updated":"2017-06-05 08:38:54.000000000","message":"Sure","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":1521,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (_(\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                               \"unmanage operation. Exiting...\"),"},{"line_number":1525,"context_line":"                             {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_14909249","line":1523,"range":{"start_line":1523,"start_character":29,"end_line":1523,"end_character":30},"updated":"2017-06-04 20:14:21.000000000","message":"This is on;y being used for the LOG.error message, so it shouldn\u0027t have _() on it.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":1521,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (_(\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                               \"unmanage operation. Exiting...\"),"},{"line_number":1525,"context_line":"                             {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_b071e978","line":1523,"range":{"start_line":1523,"start_character":29,"end_line":1523,"end_character":30},"in_reply_to":"df140735_14909249","updated":"2017-06-05 08:38:54.000000000","message":"ok","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (_(\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                               \"unmanage operation. Exiting...\"),"},{"line_number":1525,"context_line":"                             {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"},{"line_number":1527,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_b480c6f6","line":1524,"range":{"start_line":1524,"start_character":64,"end_line":1524,"end_character":65},"updated":"2017-06-04 20:14:21.000000000","message":"If adding an exception here, this need to change to % so error_message isn\u0027t a tuple.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (_(\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                               \"unmanage operation. Exiting...\"),"},{"line_number":1525,"context_line":"                             {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"},{"line_number":1527,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_906ca59c","line":1524,"range":{"start_line":1524,"start_character":64,"end_line":1524,"end_character":65},"in_reply_to":"df140735_b480c6f6","updated":"2017-06-05 08:38:54.000000000","message":"ok","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"38eb66975c9bf923c1ca2e3ab853e6224c6f40ea","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                             \"unmanage operation. Exiting...\""},{"line_number":1525,"context_line":"                             % {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"},{"line_number":1527,"context_line":"        else:"},{"line_number":1528,"context_line":"            # Rename the volume to volumeId, thus remove the \u0027OS-\u0027 prefix."}],"source_content_type":"text/x-python","patch_set":25,"id":"df140735_65cdc883","line":1525,"range":{"start_line":1525,"start_character":29,"end_line":1525,"end_character":30},"updated":"2017-06-05 13:33:09.000000000","message":"This should be \",\" because this is not an exception.\n\nIf you read Sean\u0027s comments in the previous patch set again, he said if this is not used in a raised exception and only used in logs, this should not use _() and should use \",\"; if this is used in a raised exception, then it needs _() and needs to use %.\n\nhttps://review.openstack.org/#/c/455428/24/cinder/volume/drivers/dell_emc/vmax/common.py","commit_id":"c7560c971035eba6f82d7d4a0fd70938f31edcf4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1b61a9e8d78dbd699da6bf5cb1808339b5410bae","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"        if device_id is None:"},{"line_number":1523,"context_line":"            error_message \u003d (\"Cannot find Volume: %(id)s for \""},{"line_number":1524,"context_line":"                             \"unmanage operation. Exiting...\""},{"line_number":1525,"context_line":"                             % {\u0027id\u0027: volume_id})"},{"line_number":1526,"context_line":"            LOG.error(error_message)"},{"line_number":1527,"context_line":"        else:"},{"line_number":1528,"context_line":"            # Rename the volume to volumeId, thus remove the \u0027OS-\u0027 prefix."}],"source_content_type":"text/x-python","patch_set":25,"id":"df140735_457f64aa","line":1525,"range":{"start_line":1525,"start_character":29,"end_line":1525,"end_character":30},"in_reply_to":"df140735_65cdc883","updated":"2017-06-05 13:43:22.000000000","message":"Just to clarify, it can be moved directly into the LOG.error call. If it\u0027s just passed into the logger, then it should use a comma so that the format values are passed as args to the logger and the string isn\u0027t preformatted.\n\nThis assumes getting rid of the error_message variable. Anywhere that you need to format a string up front and assign it to a variable, you will need to use %, otherwise you end up assigning a tuple to the variable.","commit_id":"c7560c971035eba6f82d7d4a0fd70938f31edcf4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f62d0840549d83133723f4bce73ccec6ba566e43","unresolved":false,"context_lines":[{"line_number":42,"context_line":"vmax_opts \u003d ["},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027cinder_dell_emc_config_file\u0027,"},{"line_number":44,"context_line":"               default\u003dCINDER_EMC_CONFIG_FILE,"},{"line_number":45,"context_line":"               help\u003d\u0027Use this file for cinder emc plugin.\u0027"},{"line_number":46,"context_line":"                    \u0027config data\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027intervals\u0027,"},{"line_number":48,"context_line":"               default\u003d3,"}],"source_content_type":"text/x-python","patch_set":27,"id":"df140735_686c789b","line":45,"range":{"start_line":45,"start_character":56,"end_line":45,"end_character":57},"updated":"2017-06-05 16:32:32.000000000","message":"Period should go at the end of the sentence.","commit_id":"29ec15b404b451dc3ed5ac0b66034ec24d15d821"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ed7d1a70fde9c3f49fcc1e3a07595da18282c0db","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                    \u0027config data.\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027intervals\u0027,"},{"line_number":48,"context_line":"               default\u003d3,"},{"line_number":49,"context_line":"               help\u003d\u0027Use this value to specify.\u0027"},{"line_number":50,"context_line":"                    \u0027length of intervals in seconds\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027retries\u0027,"},{"line_number":52,"context_line":"               default\u003d200,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df140735_521b9f71","line":49,"range":{"start_line":49,"start_character":46,"end_line":49,"end_character":47},"updated":"2017-06-05 19:26:37.000000000","message":"In all of them.","commit_id":"6ecb8b02efb840dd7aaf16db2e71eceeb6721147"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"707edc359dd0c3c4955971c175c86e7febd8a5dd","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                    \u0027config data.\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027intervals\u0027,"},{"line_number":48,"context_line":"               default\u003d3,"},{"line_number":49,"context_line":"               help\u003d\u0027Use this value to specify.\u0027"},{"line_number":50,"context_line":"                    \u0027length of intervals in seconds\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027retries\u0027,"},{"line_number":52,"context_line":"               default\u003d200,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df140735_5276ff3f","line":49,"range":{"start_line":49,"start_character":46,"end_line":49,"end_character":47},"in_reply_to":"df140735_521b9f71","updated":"2017-06-05 19:41:53.000000000","message":"+1.  All the config options have \".\" in the middle of the help message and missed the period at the end.","commit_id":"6ecb8b02efb840dd7aaf16db2e71eceeb6721147"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ae88d4fbc19da2f1bbcf070aed3c67c16826734a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                    \u0027config data.\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027intervals\u0027,"},{"line_number":48,"context_line":"               default\u003d3,"},{"line_number":49,"context_line":"               help\u003d\u0027Use this value to specify.\u0027"},{"line_number":50,"context_line":"                    \u0027length of intervals in seconds\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027retries\u0027,"},{"line_number":52,"context_line":"               default\u003d200,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df140735_127c07ea","line":49,"range":{"start_line":49,"start_character":46,"end_line":49,"end_character":47},"in_reply_to":"df140735_5276ff3f","updated":"2017-06-05 19:50:08.000000000","message":"Apologies.  Will change them all","commit_id":"6ecb8b02efb840dd7aaf16db2e71eceeb6721147"}],"cinder/volume/drivers/dell_emc/vmax/fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    .. code-block:: none"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        1.0.0 - Initial driver"},{"line_number":38,"context_line":"        1.1.0 - Multiple pools and thick/thin provisioning,"},{"line_number":39,"context_line":"                performance enhancement."},{"line_number":40,"context_line":"        2.0.0 - Add driver requirement functions"},{"line_number":41,"context_line":"        2.1.0 - Add consistency group functions"},{"line_number":42,"context_line":"        2.1.1 - Fixed issue with mismatched config (bug #1442376)"},{"line_number":43,"context_line":"        2.1.2 - Clean up failed clones (bug #1440154)"},{"line_number":44,"context_line":"        2.1.3 - Fixed a problem with FAST support (bug #1435069)"},{"line_number":45,"context_line":"        2.2.0 - Add manage/unmanage"},{"line_number":46,"context_line":"        2.2.1 - Support for SE 8.0.3"},{"line_number":47,"context_line":"        2.2.2 - Update Consistency Group"},{"line_number":48,"context_line":"        2.2.3 - Pool aware scheduler(multi-pool) support"},{"line_number":49,"context_line":"        2.2.4 - Create CG from CG snapshot"},{"line_number":50,"context_line":"        2.3.0 - Name change for MV and SG for FAST (bug #1515181)"},{"line_number":51,"context_line":"              - Fix for randomly choosing port group. (bug #1501919)"},{"line_number":52,"context_line":"              - get_short_host_name needs to be called in find_device_number"},{"line_number":53,"context_line":"                (bug #1520635)"},{"line_number":54,"context_line":"              - Proper error handling for invalid SLOs (bug #1512795)"},{"line_number":55,"context_line":"              - Extend Volume for VMAX3, SE8.1.0.3"},{"line_number":56,"context_line":"              https://blueprints.launchpad.net/cinder/+spec/vmax3-extend-volume"},{"line_number":57,"context_line":"              - Incorrect SG selected on an attach (#1515176)"},{"line_number":58,"context_line":"              - Cleanup Zoning (bug #1501938)  NOTE: FC only"},{"line_number":59,"context_line":"              - Last volume in SG fix"},{"line_number":60,"context_line":"              - _remove_last_vol_and_delete_sg is not being called"},{"line_number":61,"context_line":"                for VMAX3 (bug #1520549)"},{"line_number":62,"context_line":"              - necessary updates for CG changes (#1534616)"},{"line_number":63,"context_line":"              - Changing PercentSynced to CopyState (bug #1517103)"},{"line_number":64,"context_line":"              - Getting iscsi ip from port in existing masking view"},{"line_number":65,"context_line":"              - Replacement of EMCGetTargetEndpoints api (bug #1512791)"},{"line_number":66,"context_line":"              - VMAX3 snapvx improvements (bug #1522821)"},{"line_number":67,"context_line":"              - Operations and timeout issues (bug #1538214)"},{"line_number":68,"context_line":"        2.4.0 - EMC VMAX - locking SG for concurrent threads (bug #1554634)"},{"line_number":69,"context_line":"              - SnapVX licensing checks for VMAX3 (bug #1587017)"},{"line_number":70,"context_line":"              - VMAX oversubscription Support (blueprint vmax-oversubscription)"},{"line_number":71,"context_line":"              - QoS support (blueprint vmax-qos)"},{"line_number":72,"context_line":"        2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot)"},{"line_number":73,"context_line":"              - MVs and SGs not reflecting correct protocol (bug #1640222)"},{"line_number":74,"context_line":"              - Storage assisted volume migration via retype"},{"line_number":75,"context_line":"                (bp vmax-volume-migration)"},{"line_number":76,"context_line":"              - Support for compression on All Flash"},{"line_number":77,"context_line":"              - Volume replication 2.1 (bp add-vmax-replication)"},{"line_number":78,"context_line":"              - rename and restructure driver (bp vmax-rename-dell-emc)"},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    VERSION \u003d \"2.5.0\""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7c9c5e0d","side":"PARENT","line":78,"range":{"start_line":37,"start_character":0,"end_line":78,"end_character":71},"updated":"2017-06-03 19:10:18.000000000","message":"Please add back the version history.","commit_id":"fed4be8a10c12bbfbbac7c7a31a01e9da64d094a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ccd02ee79bdf371877cc807b6dd15f9601d5f80","unresolved":false,"context_lines":[{"line_number":75,"context_line":"              - Support for compression on All Flash"},{"line_number":76,"context_line":"              - Volume replication 2.1 (bp add-vmax-replication)"},{"line_number":77,"context_line":"              - rename and restructure driver (bp vmax-rename-dell-emc)"},{"line_number":78,"context_line":"        3.0.0 - Rest based driver"},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    VERSION \u003d \"3.0.0\""}],"source_content_type":"text/x-python","patch_set":29,"id":"df140735_ad65f9b6","line":78,"updated":"2017-06-05 21:28:14.000000000","message":"[nit] REST","commit_id":"b925515ee64a509d34aa49392929a19a44b960fb"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"15ab5bfe0c011456e0bd8b8ae6821db24e1bd28c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"              - Support for compression on All Flash"},{"line_number":76,"context_line":"              - Volume replication 2.1 (bp add-vmax-replication)"},{"line_number":77,"context_line":"              - rename and restructure driver (bp vmax-rename-dell-emc)"},{"line_number":78,"context_line":"        3.0.0 - Rest based driver"},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    VERSION \u003d \"3.0.0\""}],"source_content_type":"text/x-python","patch_set":29,"id":"df140735_0006df20","line":78,"in_reply_to":"df140735_ad65f9b6","updated":"2017-06-06 08:59:49.000000000","message":"Thank you.  I will change it in iscsi.py also","commit_id":"b925515ee64a509d34aa49392929a19a44b960fb"}],"cinder/volume/drivers/dell_emc/vmax/iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    Version history:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    .. code-block:: none"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        1.0.0 - Initial driver"},{"line_number":43,"context_line":"        1.1.0 - Multiple pools and thick/thin provisioning,"},{"line_number":44,"context_line":"                performance enhancement."},{"line_number":45,"context_line":"        2.0.0 - Add driver requirement functions"},{"line_number":46,"context_line":"        2.1.0 - Add consistency group functions"},{"line_number":47,"context_line":"        2.1.1 - Fixed issue with mismatched config (bug #1442376)"},{"line_number":48,"context_line":"        2.1.2 - Clean up failed clones (bug #1440154)"},{"line_number":49,"context_line":"        2.1.3 - Fixed a problem with FAST support (bug #1435069)"},{"line_number":50,"context_line":"        2.2.0 - Add manage/unmanage"},{"line_number":51,"context_line":"        2.2.1 - Support for SE 8.0.3"},{"line_number":52,"context_line":"        2.2.2 - Update Consistency Group"},{"line_number":53,"context_line":"        2.2.3 - Pool aware scheduler(multi-pool) support"},{"line_number":54,"context_line":"        2.2.4 - Create CG from CG snapshot"},{"line_number":55,"context_line":"        2.3.0 - Name change for MV and SG for FAST (bug #1515181)"},{"line_number":56,"context_line":"              - Fix for randomly choosing port group. (bug #1501919)"},{"line_number":57,"context_line":"              - get_short_host_name needs to be called in find_device_number"},{"line_number":58,"context_line":"                (bug #1520635)"},{"line_number":59,"context_line":"              - Proper error handling for invalid SLOs (bug #1512795)"},{"line_number":60,"context_line":"              - Extend Volume for VMAX3, SE8.1.0.3"},{"line_number":61,"context_line":"              https://blueprints.launchpad.net/cinder/+spec/vmax3-extend-volume"},{"line_number":62,"context_line":"              - Incorrect SG selected on an attach (#1515176)"},{"line_number":63,"context_line":"              - Cleanup Zoning (bug #1501938)  NOTE: FC only"},{"line_number":64,"context_line":"              - Last volume in SG fix"},{"line_number":65,"context_line":"              - _remove_last_vol_and_delete_sg is not being called"},{"line_number":66,"context_line":"                for VMAX3 (bug #1520549)"},{"line_number":67,"context_line":"              - necessary updates for CG changes (#1534616)"},{"line_number":68,"context_line":"              - Changing PercentSynced to CopyState (bug #1517103)"},{"line_number":69,"context_line":"              - Getting iscsi ip from port in existing masking view"},{"line_number":70,"context_line":"              - Replacement of EMCGetTargetEndpoints api (bug #1512791)"},{"line_number":71,"context_line":"              - VMAX3 snapvx improvements (bug #1522821)"},{"line_number":72,"context_line":"              - Operations and timeout issues (bug #1538214)"},{"line_number":73,"context_line":"        2.4.0 - EMC VMAX - locking SG for concurrent threads (bug #1554634)"},{"line_number":74,"context_line":"              - SnapVX licensing checks for VMAX3 (bug #1587017)"},{"line_number":75,"context_line":"              - VMAX oversubscription Support (blueprint vmax-oversubscription)"},{"line_number":76,"context_line":"              - QoS support (blueprint vmax-qos)"},{"line_number":77,"context_line":"              - VMAX2/VMAX3 iscsi multipath support (iscsi only)"},{"line_number":78,"context_line":"              https://blueprints.launchpad.net/cinder/+spec/vmax-iscsi-multipath"},{"line_number":79,"context_line":"        2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot)"},{"line_number":80,"context_line":"              - MVs and SGs not reflecting correct protocol (bug #1640222)"},{"line_number":81,"context_line":"              - Storage assisted volume migration via retype"},{"line_number":82,"context_line":"                (bp vmax-volume-migration)"},{"line_number":83,"context_line":"              - Support for compression on All Flash"},{"line_number":84,"context_line":"              - Volume replication 2.1 (bp add-vmax-replication)"},{"line_number":85,"context_line":"              - rename and restructure driver (bp vmax-rename-dell-emc)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9c9bb216","side":"PARENT","line":85,"range":{"start_line":41,"start_character":0,"end_line":85,"end_character":71},"updated":"2017-06-03 19:10:18.000000000","message":"Please add back the version history.","commit_id":"fed4be8a10c12bbfbbac7c7a31a01e9da64d094a"}],"cinder/volume/drivers/dell_emc/vmax/masking.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                self.add_child_sg_to_parent_sg("},{"line_number":286,"context_line":"                    array, child_sg_name, parent_sg_name, extra_specs)"},{"line_number":287,"context_line":"            except Exception as e:"},{"line_number":288,"context_line":"                msg \u003d (\"Exception adding child sg %(child_sg)s to \""},{"line_number":289,"context_line":"                       \"%(parent_sg)s. Exception received was %(e)s\""},{"line_number":290,"context_line":"                       % {\u0027child_sg\u0027: child_sg_name,"},{"line_number":291,"context_line":"                          \u0027parent_sg\u0027: parent_sg_name,"},{"line_number":292,"context_line":"                          \u0027e\u0027: six.text_type(e)})"},{"line_number":293,"context_line":"                LOG.error(msg)"},{"line_number":294,"context_line":"        return msg"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def add_child_sg_to_parent_sg("},{"line_number":297,"context_line":"            self, array, child_sg_name, parent_sg_name, extra_specs):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5c5e3a76","line":294,"range":{"start_line":288,"start_character":0,"end_line":294,"end_character":18},"updated":"2017-06-03 19:10:18.000000000","message":"Will this msg be raised in an exception?  If so, % is correct here.  If the msg is only used in a log message, \",\" should be used instead.\n\nIf this message will be raised in an exception by its caller, please add a note here so people won\u0027t wonder whether it should use \"%\" or \",\".","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        if storagegroup is None:"},{"line_number":353,"context_line":"            msg \u003d (\"Cannot get or create a storage group: \""},{"line_number":354,"context_line":"                   \"%(storagegroup_name)s for volume %(volume_name)s. \""},{"line_number":355,"context_line":"                   % {\u0027storagegroup_name\u0027: storagegroup_name,"},{"line_number":356,"context_line":"                      \u0027volume_name\u0027: masking_view_dict[utils.VOL_NAME]})"},{"line_number":357,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1c544252","line":354,"range":{"start_line":354,"start_character":69,"end_line":354,"end_character":70},"updated":"2017-06-03 19:10:18.000000000","message":"Remove white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        if the required child storage group is already a member. If not, get"},{"line_number":366,"context_line":"        or create the child storage group."},{"line_number":367,"context_line":"        :param array: the array serial number"},{"line_number":368,"context_line":"        :param maskingview_name: the masking view name"},{"line_number":369,"context_line":"        :return: storage group name, msg"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        msg \u003d None"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_dc492ab7","line":368,"updated":"2017-06-03 19:10:18.000000000","message":"Missing masking_view_dict as param","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        if not storagegroup:"},{"line_number":380,"context_line":"            msg \u003d (\"Cannot get storage group: %(sg_from_mv)s \""},{"line_number":381,"context_line":"                   \"from masking view %(masking_view)s. \""},{"line_number":382,"context_line":"                   % {\u0027sg_from_mv\u0027: sg_from_mv,"},{"line_number":383,"context_line":"                      \u0027masking_view\u0027: maskingview_name})"},{"line_number":384,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_bcc8b621","line":381,"range":{"start_line":381,"start_character":55,"end_line":381,"end_character":56},"updated":"2017-06-03 19:10:18.000000000","message":"Remove white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        if not storagegroup:"},{"line_number":380,"context_line":"            msg \u003d (\"Cannot get storage group: %(sg_from_mv)s \""},{"line_number":381,"context_line":"                   \"from masking view %(masking_view)s. \""},{"line_number":382,"context_line":"                   % {\u0027sg_from_mv\u0027: sg_from_mv,"},{"line_number":383,"context_line":"                      \u0027masking_view\u0027: maskingview_name})"},{"line_number":384,"context_line":"            LOG.error(msg)"},{"line_number":385,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9ccdf232","line":382,"range":{"start_line":382,"start_character":19,"end_line":382,"end_character":20},"updated":"2017-06-03 19:10:18.000000000","message":"Same here.  If this msg will be raised later in an exception, please add a note here so we know \"%\" is correct.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            if check_child and not child_sg:"},{"line_number":391,"context_line":"                msg \u003d (\"Cannot get child storage group: %(sg_name)s \""},{"line_number":392,"context_line":"                       \"but it is listed as child of %(parent_sg)s\""},{"line_number":393,"context_line":"                       % {\u0027sg_name\u0027: child_sg_name, \u0027parent_sg\u0027: sg_from_mv})"},{"line_number":394,"context_line":"                LOG.error(msg)"},{"line_number":395,"context_line":"            elif check_child and child_sg:"},{"line_number":396,"context_line":"                LOG.info(\"Retrieved child sg %(sg_name)s from %(mv_name)s\","}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7cce9e2d","line":393,"range":{"start_line":393,"start_character":23,"end_line":393,"end_character":24},"updated":"2017-06-03 19:10:18.000000000","message":"Same","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        if found_init_group is None:"},{"line_number":462,"context_line":"            msg \u003d (\"Cannot get or create initiator group: \""},{"line_number":463,"context_line":"                   \"%(init_group_name)s. \""},{"line_number":464,"context_line":"                   % {\u0027init_group_name\u0027: init_group_name})"},{"line_number":465,"context_line":"            LOG.error(msg)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        return found_init_group, msg"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5cd3dad5","line":464,"range":{"start_line":464,"start_character":19,"end_line":464,"end_character":20},"updated":"2017-06-03 19:10:18.000000000","message":"Same","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":493,"context_line":"                storagegroup_name, portgroup_name, extra_specs)"},{"line_number":494,"context_line":"            if not check:"},{"line_number":495,"context_line":"                msg \u003d (\"Unable to verify initiator group: %(ig_name)s \""},{"line_number":496,"context_line":"                       \"in masking view %(maskingview_name)s. \""},{"line_number":497,"context_line":"                       % {\u0027ig_name\u0027: ig_from_mv,"},{"line_number":498,"context_line":"                          \u0027maskingview_name\u0027: maskingview_name})"},{"line_number":499,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_fce18e9c","line":496,"range":{"start_line":496,"start_character":61,"end_line":496,"end_character":62},"updated":"2017-06-03 19:10:18.000000000","message":"Remove white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            if not check:"},{"line_number":495,"context_line":"                msg \u003d (\"Unable to verify initiator group: %(ig_name)s \""},{"line_number":496,"context_line":"                       \"in masking view %(maskingview_name)s. \""},{"line_number":497,"context_line":"                       % {\u0027ig_name\u0027: ig_from_mv,"},{"line_number":498,"context_line":"                          \u0027maskingview_name\u0027: maskingview_name})"},{"line_number":499,"context_line":"                LOG.error(msg)"},{"line_number":500,"context_line":"        return ig_from_mv, msg"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_3cdca6e2","line":497,"range":{"start_line":497,"start_character":23,"end_line":497,"end_character":24},"updated":"2017-06-03 19:10:18.000000000","message":"Same","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":525,"context_line":"                    volume_name, extra_specs)"},{"line_number":526,"context_line":"            except Exception as e:"},{"line_number":527,"context_line":"                msg \u003d (\"Exception adding volume %(vol)s to %(sg)s.\""},{"line_number":528,"context_line":"                       \"Exception received was %(e)s\""},{"line_number":529,"context_line":"                       % {\u0027vol\u0027: volume_name, \u0027sg\u0027: storagegroup_name,"},{"line_number":530,"context_line":"                          \u0027e\u0027: six.text_type(e)})"},{"line_number":531,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_bcf1d66d","line":528,"updated":"2017-06-03 19:10:18.000000000","message":"Add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            except Exception as e:"},{"line_number":527,"context_line":"                msg \u003d (\"Exception adding volume %(vol)s to %(sg)s.\""},{"line_number":528,"context_line":"                       \"Exception received was %(e)s\""},{"line_number":529,"context_line":"                       % {\u0027vol\u0027: volume_name, \u0027sg\u0027: storagegroup_name,"},{"line_number":530,"context_line":"                          \u0027e\u0027: six.text_type(e)})"},{"line_number":531,"context_line":"                LOG.error(msg)"},{"line_number":532,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_dcdecad8","line":529,"range":{"start_line":529,"start_character":23,"end_line":529,"end_character":24},"updated":"2017-06-03 19:10:18.000000000","message":"Same","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":921,"context_line":"                            array, device_id, sg_name, vol_name, extra_specs)"},{"line_number":922,"context_line":"                else:"},{"line_number":923,"context_line":"                    LOG.info(\"Volume with device_id %(dev)s is no longer a \""},{"line_number":924,"context_line":"                             \"member of %(sg)s\","},{"line_number":925,"context_line":"                             {\u0027dev\u0027: device_id, \u0027sg\u0027: sg_name})"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"            return do_remove_volume_from_sg(storagegroup_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5cecfa8d","line":924,"updated":"2017-06-03 19:10:18.000000000","message":"Add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                            array, device_id, sg_name, vol_name, extra_specs)"},{"line_number":962,"context_line":"                else:"},{"line_number":963,"context_line":"                    LOG.info(\"Volume with device_id %(dev)s is no longer a \""},{"line_number":964,"context_line":"                             \"member of %(sg)s\","},{"line_number":965,"context_line":"                             {\u0027dev\u0027: device_id, \u0027sg\u0027: sg_name})"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"            return do_remove_volume_from_sg(masking_name, storagegroup_name,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_3c05c646","line":964,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"        self.rest.delete_storage_group(array, child_sg_name)"},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        LOG.debug(\"Storage Groups %(storagegroup_name)s and %(parent)s \""},{"line_number":1134,"context_line":"                  \"successfully deleted. \","},{"line_number":1135,"context_line":"                  {\u0027storagegroup_name\u0027: child_sg_name,"},{"line_number":1136,"context_line":"                   \u0027parent\u0027: parent_sg_name})"},{"line_number":1137,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_dcf7ea58","line":1134,"range":{"start_line":1134,"start_character":40,"end_line":1134,"end_character":42},"updated":"2017-06-03 19:10:18.000000000","message":"White space not needed.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            LOG.exception("},{"line_number":82,"context_line":"                \"Masking View creation or retrieval was not successful \""},{"line_number":83,"context_line":"                \"for masking view %(maskingview_name)s. \""},{"line_number":84,"context_line":"                \"Attempting rollback.\" %"},{"line_number":85,"context_line":"                {\u0027maskingview_name\u0027: masking_view_dict[utils.MV_NAME]})"},{"line_number":86,"context_line":"            error_message \u003d six.text_type(e)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_d49a1a60","line":84,"range":{"start_line":84,"start_character":38,"end_line":84,"end_character":40},"updated":"2017-06-04 20:14:21.000000000","message":"Should not have been changed from ,","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            LOG.exception("},{"line_number":82,"context_line":"                \"Masking View creation or retrieval was not successful \""},{"line_number":83,"context_line":"                \"for masking view %(maskingview_name)s. \""},{"line_number":84,"context_line":"                \"Attempting rollback.\" %"},{"line_number":85,"context_line":"                {\u0027maskingview_name\u0027: masking_view_dict[utils.MV_NAME]})"},{"line_number":86,"context_line":"            error_message \u003d six.text_type(e)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_50316da2","line":84,"range":{"start_line":84,"start_character":38,"end_line":84,"end_character":40},"in_reply_to":"df140735_d49a1a60","updated":"2017-06-05 08:38:54.000000000","message":"Sure, will change it back","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":525,"context_line":"                    array, device_id, storagegroup_name,"},{"line_number":526,"context_line":"                    volume_name, extra_specs)"},{"line_number":527,"context_line":"            except Exception as e:"},{"line_number":528,"context_line":"                msg \u003d (\"Exception adding volume %(vol)s to %(sg)s.\""},{"line_number":529,"context_line":"                       \"Exception received was %(e)s.\""},{"line_number":530,"context_line":"                       % {\u0027vol\u0027: volume_name, \u0027sg\u0027: storagegroup_name,"},{"line_number":531,"context_line":"                          \u0027e\u0027: six.text_type(e)})"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_14be52b3","line":528,"range":{"start_line":528,"start_character":66,"end_line":528,"end_character":67},"updated":"2017-06-04 20:14:21.000000000","message":"Need trailing space.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ccd02ee79bdf371877cc807b6dd15f9601d5f80","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                 maskingview_name, extra_specs):"},{"line_number":181,"context_line":"        \"\"\"Create a new masking view."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        :param array: the array serial number"},{"line_number":184,"context_line":"        :param masking_view_dict: the masking view dict"},{"line_number":185,"context_line":"        :param maskingview_name: the masking view name"},{"line_number":186,"context_line":"        :param extra_specs: the extra specifications"}],"source_content_type":"text/x-python","patch_set":29,"id":"df140735_2d0b292a","line":183,"updated":"2017-06-05 21:28:14.000000000","message":"can we name this something better? like array_serial.  array is just too generic and I\u0027m not sure what it means.","commit_id":"b925515ee64a509d34aa49392929a19a44b960fb"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"15ab5bfe0c011456e0bd8b8ae6821db24e1bd28c","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                 maskingview_name, extra_specs):"},{"line_number":181,"context_line":"        \"\"\"Create a new masking view."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        :param array: the array serial number"},{"line_number":184,"context_line":"        :param masking_view_dict: the masking view dict"},{"line_number":185,"context_line":"        :param maskingview_name: the masking view name"},{"line_number":186,"context_line":"        :param extra_specs: the extra specifications"}],"source_content_type":"text/x-python","patch_set":29,"id":"df140735_454d093c","line":183,"in_reply_to":"df140735_2d0b292a","updated":"2017-06-06 08:59:49.000000000","message":"We use array a lot so I will change it to serial_number everywhere in masking.  Thank you","commit_id":"b925515ee64a509d34aa49392929a19a44b960fb"}],"cinder/volume/drivers/dell_emc/vmax/provision.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            LOG.debug(\"Create storage group took: %(delta)s H:MM:SS.\","},{"line_number":56,"context_line":"                      {\u0027delta\u0027: self.utils.get_time_delta(start_time,"},{"line_number":57,"context_line":"                                                          time.time())})"},{"line_number":58,"context_line":"            LOG.info(\"Storage group %(sg)s created successfully\","},{"line_number":59,"context_line":"                     {\u0027sg\u0027: storagegroup_name})"},{"line_number":60,"context_line":"            return storagegroup"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1c3d622a","line":58,"updated":"2017-06-03 19:10:18.000000000","message":"Add period.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        start_time \u003d time.time()"},{"line_number":115,"context_line":"        LOG.debug(\"Create Snap Vx snapshot of: %(source)s\","},{"line_number":116,"context_line":"                  {\u0027source\u0027: source_device_id})"},{"line_number":117,"context_line":"        self.rest.create_volume_snap("},{"line_number":118,"context_line":"            array, snap_name, source_device_id, extra_specs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_dc424aab","line":115,"updated":"2017-06-03 19:10:18.000000000","message":"add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except Exception as e:"},{"line_number":173,"context_line":"            LOG.error("},{"line_number":174,"context_line":"                \"Error modifying volume snap. Exception received: %(e)s.\","},{"line_number":175,"context_line":"                {\u0027e\u0027: six.text_type(e)})"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def delete_volume_snap(self, array, snap_name, source_device_id):"},{"line_number":178,"context_line":"        \"\"\"Delete a snapVx snapshot of a volume."}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9c1a92c9","line":175,"range":{"start_line":175,"start_character":22,"end_line":175,"end_character":36},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here as the logger will apply six.text_type if needed.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        :param snap_name: the snapshot name"},{"line_number":182,"context_line":"        :param source_device_id: the source device id"},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        LOG.debug(\"Delete SnapVx: %(snap_name)s for volume %(vol)s .\","},{"line_number":185,"context_line":"                  {\u0027vol\u0027: source_device_id, \u0027snap_name\u0027: snap_name})"},{"line_number":186,"context_line":"        self.rest.delete_volume_snap(array, snap_name, source_device_id)"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7c0b3e7c","line":184,"range":{"start_line":184,"start_character":66,"end_line":184,"end_character":67},"updated":"2017-06-03 19:10:18.000000000","message":"Remove unneeded white space.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        LOG.debug(\"Check for linked devices to SnapVx: %(snap_name)s \""},{"line_number":220,"context_line":"                  \"for volume %(vol)s .\","},{"line_number":221,"context_line":"                  {\u0027vol\u0027: source_device, \u0027snap_name\u0027: snap_name})"},{"line_number":222,"context_line":"        linked_list \u003d self.rest.get_snap_linked_device_list("},{"line_number":223,"context_line":"            array, source_device, snap_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5c107aa8","line":220,"range":{"start_line":220,"start_character":37,"end_line":220,"end_character":38},"updated":"2017-06-03 19:10:18.000000000","message":"Remove unneeded white space.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"}],"cinder/volume/drivers/dell_emc/vmax/rest.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":957,"context_line":"            vol \u003d self.get_volume(array, device_id)"},{"line_number":958,"context_line":"            cap \u003d vol[\u0027cap_gb\u0027]"},{"line_number":959,"context_line":"        except Exception as e:"},{"line_number":960,"context_line":"            LOG.error(\"Error retrieving size of volume %(vol)s.\""},{"line_number":961,"context_line":"                      \"Exception received was %(e)s\","},{"line_number":962,"context_line":"                      {\u0027vol\u0027: device_id, \u0027e\u0027: e})"},{"line_number":963,"context_line":"        return cap"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_34e036cd","line":960,"range":{"start_line":960,"start_character":63,"end_line":960,"end_character":64},"updated":"2017-06-04 20:14:21.000000000","message":"Space needed.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"        found_init_group_name \u003d None"},{"line_number":1097,"context_line":"        init_details \u003d self.get_initiator(array, initiator)"},{"line_number":1098,"context_line":"        if init_details:"},{"line_number":1099,"context_line":"            try:"},{"line_number":1100,"context_line":"                found_init_group_name \u003d init_details[\u0027host\u0027]"},{"line_number":1101,"context_line":"            except KeyError:"},{"line_number":1102,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_d4e8dab3","line":1099,"range":{"start_line":1099,"start_character":12,"end_line":1099,"end_character":15},"updated":"2017-06-04 20:14:21.000000000","message":"try/except could be simplified to just:\n\nfound_init_group_name \u003d init_details.get(\u0027host\u0027, False)","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f62d0840549d83133723f4bce73ccec6ba566e43","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"        found_init_group_name \u003d None"},{"line_number":1097,"context_line":"        init_details \u003d self.get_initiator(array, initiator)"},{"line_number":1098,"context_line":"        if init_details:"},{"line_number":1099,"context_line":"            found_init_group_name \u003d init_details.get(\u0027host\u0027, None)"},{"line_number":1100,"context_line":"        else:"},{"line_number":1101,"context_line":"            LOG.error(\"Unable to retrieve initiator details for \""},{"line_number":1102,"context_line":"                      \"%(init)s.\", {\u0027init\u0027: initiator})"}],"source_content_type":"text/x-python","patch_set":27,"id":"df140735_c8102403","line":1099,"range":{"start_line":1099,"start_character":59,"end_line":1099,"end_character":65},"updated":"2017-06-05 16:32:32.000000000","message":"None is the default, so in this case, this second arg can be omitted.","commit_id":"29ec15b404b451dc3ed5ac0b66034ec24d15d821"}],"cinder/volume/drivers/dell_emc/vmax/rest/common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        :returns:  model_update - dict"},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        model_update \u003d {}"},{"line_number":193,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":194,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # Volume_name naming convention is \u0027OS-UUID\u0027."}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0dad9d87","line":193,"range":{"start_line":193,"start_character":20,"end_line":193,"end_character":32},"updated":"2017-05-16 15:32:46.000000000","message":"volume.id","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # Volume_name naming convention is \u0027OS-UUID\u0027."},{"line_number":197,"context_line":"        volume_name \u003d self.utils.get_volume_element_name(volume_id)"},{"line_number":198,"context_line":"        volume_size \u003d volume[\u0027size\u0027]"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        volume_dict \u003d (self._create_volume("},{"line_number":201,"context_line":"            volume_name, volume_size, extra_specs))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_adbb49c2","line":198,"updated":"2017-05-16 15:32:46.000000000","message":"volume.size","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        :param volume: volume object"},{"line_number":249,"context_line":"        \"\"\""},{"line_number":250,"context_line":"        LOG.info(\"Deleting Volume: %(volume)s\","},{"line_number":251,"context_line":"                 {\u0027volume\u0027: volume[\u0027name\u0027]})"},{"line_number":252,"context_line":"        volume_name \u003d self._delete_volume(volume)"},{"line_number":253,"context_line":"        LOG.info(\"Leaving delete_volume: %(volume_name)s.\","},{"line_number":254,"context_line":"                 {\u0027volume_name\u0027: volume_name})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_6db541cd","line":251,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        :param volume: source volume"},{"line_number":274,"context_line":"        \"\"\""},{"line_number":275,"context_line":"        LOG.info(\"Delete Snapshot: %(snapshotName)s.\","},{"line_number":276,"context_line":"                 {\u0027snapshotName\u0027: snapshot[\u0027name\u0027]})"},{"line_number":277,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":278,"context_line":"        sourcedevice_id, snap_name \u003d self._parse_snap_info("},{"line_number":279,"context_line":"            extra_specs[utils.ARRAY], snapshot)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0dc6bd49","line":276,"updated":"2017-05-16 15:32:46.000000000","message":"snapshot.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        :param device_id: the VMAX volume device id"},{"line_number":296,"context_line":"        :param extra_specs: extra specifications"},{"line_number":297,"context_line":"        \"\"\""},{"line_number":298,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":299,"context_line":"        LOG.debug(\"Detaching volume %s.\", volume_name)"},{"line_number":300,"context_line":"        return self.masking.remove_and_reset_members("},{"line_number":301,"context_line":"            array, device_id, volume_name, extra_specs, True)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_edc0312d","line":298,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        \"\"\""},{"line_number":310,"context_line":"        device_info \u003d {}"},{"line_number":311,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":312,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":313,"context_line":"        LOG.info(\"Unmap volume: %(volume)s.\","},{"line_number":314,"context_line":"                 {\u0027volume\u0027: volume_name})"},{"line_number":315,"context_line":"        if connector is not None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_ade0e9cd","line":312,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":357,"context_line":"        is_multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":360,"context_line":"        LOG.info(\"Initialize connection: %(volume)s.\","},{"line_number":361,"context_line":"                 {\u0027volume\u0027: volume_name})"},{"line_number":362,"context_line":"        device_info_dict \u003d self.find_host_lun_id("}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_8de76de5","line":359,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                  String -- port group name"},{"line_number":400,"context_line":"        :raises: VolumeBackendAPIException"},{"line_number":401,"context_line":"        \"\"\""},{"line_number":402,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        rollback_dict \u003d self.masking.setup_masking_view("},{"line_number":405,"context_line":"            masking_view_dict[utils.ARRAY],"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_2dccd95f","line":402,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        :param volume: the volume Object"},{"line_number":432,"context_line":"        :param connector: the connector Object"},{"line_number":433,"context_line":"        \"\"\""},{"line_number":434,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":435,"context_line":"        LOG.info(\"Terminate connection: %(volume)s.\","},{"line_number":436,"context_line":"                 {\u0027volume\u0027: volume_name})"},{"line_number":437,"context_line":"        self._unmap_lun(volume, connector)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_cd069587","line":434,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        :returns: dict -- modifiedVolumeDict - the extended volume Object"},{"line_number":445,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":446,"context_line":"        \"\"\""},{"line_number":447,"context_line":"        original_vol_size \u003d volume[\u0027size\u0027]"},{"line_number":448,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":449,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":450,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":451,"context_line":"        array \u003d extra_specs[utils.ARRAY]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_8d008d69","line":448,"range":{"start_line":447,"start_character":8,"end_line":448,"end_character":36},"updated":"2017-05-16 15:32:46.000000000","message":"use .","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":665,"context_line":"        :returns: array, device_id"},{"line_number":666,"context_line":"        \"\"\""},{"line_number":667,"context_line":"        founddevice_id \u003d None"},{"line_number":668,"context_line":"        volume_name \u003d volume[\u0027id\u0027]"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":671,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_cd1455a3","line":668,"updated":"2017-05-16 15:32:46.000000000","message":"volume.id","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        founddevice_id \u003d None"},{"line_number":668,"context_line":"        volume_name \u003d volume[\u0027id\u0027]"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        if isinstance(loc, six.string_types):"},{"line_number":673,"context_line":"            name \u003d ast.literal_eval(loc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_4d2845e1","line":670,"updated":"2017-05-16 15:32:46.000000000","message":"volume.provider_location","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":701,"context_line":"        :returns: dict -- the data dict"},{"line_number":702,"context_line":"        \"\"\""},{"line_number":703,"context_line":"        maskedvols \u003d {}"},{"line_number":704,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":705,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"},{"line_number":706,"context_line":"        if device_id:"},{"line_number":707,"context_line":"            array \u003d extra_specs[utils.ARRAY]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0d223d01","line":704,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":823,"context_line":""},{"line_number":824,"context_line":"            extra_specs \u003d self._set_vmax_extra_specs(extra_specs, array_info)"},{"line_number":825,"context_line":"        except Exception:"},{"line_number":826,"context_line":"            import sys"},{"line_number":827,"context_line":"            exception_message \u003d (_("},{"line_number":828,"context_line":"                \"Unable to get configuration information necessary to \""},{"line_number":829,"context_line":"                \"create a volume: %(errorMessage)s.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_6d5f8172","line":826,"range":{"start_line":826,"start_character":12,"end_line":826,"end_character":22},"updated":"2017-05-16 15:32:46.000000000","message":"Please do import in the beginning of the file, not here.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":916,"context_line":"        :returns: dict -- cloneDict the cloned volume dictionary"},{"line_number":917,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":918,"context_line":"        \"\"\""},{"line_number":919,"context_line":"        clone_name \u003d volume[\u0027name\u0027]"},{"line_number":920,"context_line":"        snap_name \u003d None"},{"line_number":921,"context_line":"        LOG.info(\"Create a replica from Volume: Clone Volume: %(clone_name)s \""},{"line_number":922,"context_line":"                 \"from Source Volume: %(source_name)s.\","}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_cdc7b512","line":919,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        LOG.info(\"Create a replica from Volume: Clone Volume: %(clone_name)s \""},{"line_number":922,"context_line":"                 \"from Source Volume: %(source_name)s.\","},{"line_number":923,"context_line":"                 {\u0027clone_name\u0027: clone_name,"},{"line_number":924,"context_line":"                  \u0027source_name\u0027: source_volume[\u0027name\u0027]})"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        array \u003d extra_specs[utils.ARRAY]"},{"line_number":927,"context_line":"        is_clone_license \u003d self.rest.is_snapvx_licensed(array)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_2dd619c5","line":924,"range":{"start_line":924,"start_character":33,"end_line":924,"end_character":54},"updated":"2017-05-16 15:32:46.000000000","message":"source_volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":967,"context_line":"        \"\"\""},{"line_number":968,"context_line":"        foundsnap_name \u003d None"},{"line_number":969,"context_line":"        sourcedevice_id \u003d None"},{"line_number":970,"context_line":"        volume_name \u003d snapshot[\u0027id\u0027]"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"        loc \u003d snapshot[\u0027provider_location\u0027]"},{"line_number":973,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_6ded418a","line":970,"updated":"2017-05-16 15:32:46.000000000","message":"snapshot.id\n\nPlease use . where referencing an object.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":969,"context_line":"        sourcedevice_id \u003d None"},{"line_number":970,"context_line":"        volume_name \u003d snapshot[\u0027id\u0027]"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"        loc \u003d snapshot[\u0027provider_location\u0027]"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"        if isinstance(loc, six.string_types):"},{"line_number":975,"context_line":"            name \u003d ast.literal_eval(loc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_cd9575e6","line":972,"updated":"2017-05-16 15:32:46.000000000","message":"Use . instead of [\u0027\u0027]","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":1011,"context_line":"        :return: snap_dict"},{"line_number":1012,"context_line":"        \"\"\""},{"line_number":1013,"context_line":"        clone_name \u003d self.utils.get_volume_element_name(snapshot[\u0027id\u0027])"},{"line_number":1014,"context_line":"        snap_name \u003d self.utils.truncate_string(clone_name, 19)"},{"line_number":1015,"context_line":"        try:"},{"line_number":1016,"context_line":"            self.provision.create_volume_snapvx(array, source_device_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0d935dfc","line":1013,"range":{"start_line":1013,"start_character":56,"end_line":1013,"end_character":70},"updated":"2017-05-16 15:32:46.000000000","message":"Use . instead of [\u0027\u0027]","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"        :param volume: volume object to be deleted"},{"line_number":1033,"context_line":"        :returns: volume_name (string vol name)"},{"line_number":1034,"context_line":"        \"\"\""},{"line_number":1035,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":1036,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        device_id \u003d self._find_device_on_array(volume, extra_specs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_4db28596","line":1035,"updated":"2017-05-16 15:32:46.000000000","message":"Use . instead of [\u0027\u0027]","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"        # size at this point to avoid having to extend later"},{"line_number":1336,"context_line":"        try:"},{"line_number":1337,"context_line":"            clone_dict \u003d self._create_volume("},{"line_number":1338,"context_line":"                clone_name, clone_volume[\u0027size\u0027], extra_specs)"},{"line_number":1339,"context_line":"            target_device_id \u003d clone_dict[\u0027device_id\u0027]"},{"line_number":1340,"context_line":"            LOG.info(\"The target device id is: %(device_id)s.\","},{"line_number":1341,"context_line":"                     {\u0027device_id\u0027: target_device_id})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_6d49c189","line":1338,"range":{"start_line":1338,"start_character":28,"end_line":1338,"end_character":48},"updated":"2017-05-16 15:32:46.000000000","message":"Use . instead of [\u0027\u0027]","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"                data\u003dexception_message)"},{"line_number":1449,"context_line":""},{"line_number":1450,"context_line":"        # Rename the volume"},{"line_number":1451,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":1452,"context_line":"        volume_name \u003d self.utils.get_volume_element_name(volume_id)"},{"line_number":1453,"context_line":"        LOG.debug(\"Rename volume %(vol)s to %(elementName)s.\","},{"line_number":1454,"context_line":"                  {\u0027vol\u0027: volume_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_ad1d8974","line":1451,"updated":"2017-05-16 15:32:46.000000000","message":"Use . instead of [\u0027\u0027]","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":1486,"context_line":"        :param volume: the volume object"},{"line_number":1487,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":1488,"context_line":"        \"\"\""},{"line_number":1489,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":1490,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":1491,"context_line":"        LOG.info(\"Unmanage volume %(name)s, id\u003d%(id)s\","},{"line_number":1492,"context_line":"                 {\u0027name\u0027: volume_name, \u0027id\u0027: volume_id})"},{"line_number":1493,"context_line":"        extra_specs \u003d self._initial_setup(volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_2d2059b0","line":1490,"range":{"start_line":1489,"start_character":8,"end_line":1490,"end_character":32},"updated":"2017-05-16 15:32:46.000000000","message":"Use . instead of [\u0027\u0027]","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"02a152a27754b924a6658a5addc0070bdf0ac709","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        :returns:  model_update - dict"},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        model_update \u003d {}"},{"line_number":193,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":194,"context_line":"        extra_specs \u003d self._initial_setup(volume)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # Volume_name naming convention is \u0027OS-UUID\u0027."}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_ab8d8132","line":193,"range":{"start_line":193,"start_character":20,"end_line":193,"end_character":32},"updated":"2017-05-19 03:30:43.000000000","message":"My comments in patch set 10 are not addressed.","commit_id":"0d6b7beb3058386158614f00a6b728e6f5ce86df"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c4af5ea26628cad647a29b678be4e35f34fd69fb","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.pool_info[\u0027arrays_info\u0027] \u003d finalarrayinfolist"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _get_attributes_from_config(self):"},{"line_number":110,"context_line":"        \"\"\"Get relevent details from configuration file\"\"\""},{"line_number":111,"context_line":"        if hasattr(self.configuration, \u0027cinder_dell_emc_config_file\u0027):"},{"line_number":112,"context_line":"            self.pool_info[\u0027config_file\u0027] \u003d ("},{"line_number":113,"context_line":"                self.configuration.cinder_dell_emc_config_file)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_7d10ba4e","line":110,"updated":"2017-05-24 16:03:52.000000000","message":"Add period.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"600560df83ef64b7d3c46abb2903a3cee902c9f1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.pool_info[\u0027arrays_info\u0027] \u003d finalarrayinfolist"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _get_attributes_from_config(self):"},{"line_number":110,"context_line":"        \"\"\"Get relevent details from configuration file\"\"\""},{"line_number":111,"context_line":"        if hasattr(self.configuration, \u0027cinder_dell_emc_config_file\u0027):"},{"line_number":112,"context_line":"            self.pool_info[\u0027config_file\u0027] \u003d ("},{"line_number":113,"context_line":"                self.configuration.cinder_dell_emc_config_file)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_f67e27e2","line":110,"in_reply_to":"ff0f0b1f_7d10ba4e","updated":"2017-05-24 17:25:34.000000000","message":"Thanks, will do.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c4af5ea26628cad647a29b678be4e35f34fd69fb","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        Takes the arrayinfolist object and generates a set which has"},{"line_number":148,"context_line":"        all available SLO \u0026 Workload combinations"},{"line_number":149,"context_line":"        :param array_info: the array information"},{"line_number":150,"context_line":"        :return: finalarrayinfolist"},{"line_number":151,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":152,"context_line":"        \"\"\""},{"line_number":153,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_3de00226","line":150,"range":{"start_line":150,"start_character":9,"end_line":150,"end_character":15},"updated":"2017-05-24 16:03:52.000000000","message":":returns:","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"600560df83ef64b7d3c46abb2903a3cee902c9f1","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        Takes the arrayinfolist object and generates a set which has"},{"line_number":148,"context_line":"        all available SLO \u0026 Workload combinations"},{"line_number":149,"context_line":"        :param array_info: the array information"},{"line_number":150,"context_line":"        :return: finalarrayinfolist"},{"line_number":151,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":152,"context_line":"        \"\"\""},{"line_number":153,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_36d49fe8","line":150,"range":{"start_line":150,"start_character":9,"end_line":150,"end_character":15},"in_reply_to":"ff0f0b1f_3de00226","updated":"2017-05-24 17:25:34.000000000","message":"Thanks, I will fix this.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c4af5ea26628cad647a29b678be4e35f34fd69fb","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            # Remove \u0027None\u0027 from the list (so a \u0027None\u0027 slo is not combined"},{"line_number":158,"context_line":"            # with a workload, which is not permitted)"},{"line_number":159,"context_line":"            slo_settings \u003d [x for x in slo_settings"},{"line_number":160,"context_line":"                            if x not in [\u0027None\u0027, \u0027NONE\u0027, \u0027none\u0027]]"},{"line_number":161,"context_line":"            workload_settings \u003d self.rest.get_workload_settings(array)"},{"line_number":162,"context_line":"            workload_settings.append(\"None\")"},{"line_number":163,"context_line":"            slo_workload_set \u003d set("}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_5d761640","line":160,"range":{"start_line":160,"start_character":30,"end_line":160,"end_character":64},"updated":"2017-05-24 16:03:52.000000000","message":"Isn\u0027t it better to make x lower case and just compare with \u0027none\u0027?  It is possible it is set to noNe, NoNe, etc. and should still be valid.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"600560df83ef64b7d3c46abb2903a3cee902c9f1","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            # Remove \u0027None\u0027 from the list (so a \u0027None\u0027 slo is not combined"},{"line_number":158,"context_line":"            # with a workload, which is not permitted)"},{"line_number":159,"context_line":"            slo_settings \u003d [x for x in slo_settings"},{"line_number":160,"context_line":"                            if x not in [\u0027None\u0027, \u0027NONE\u0027, \u0027none\u0027]]"},{"line_number":161,"context_line":"            workload_settings \u003d self.rest.get_workload_settings(array)"},{"line_number":162,"context_line":"            workload_settings.append(\"None\")"},{"line_number":163,"context_line":"            slo_workload_set \u003d set("}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_16175ba6","line":160,"range":{"start_line":160,"start_character":30,"end_line":160,"end_character":64},"in_reply_to":"ff0f0b1f_5d761640","updated":"2017-05-24 17:25:34.000000000","message":"Agreed, I will fix this.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c4af5ea26628cad647a29b678be4e35f34fd69fb","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param volume: volume object"},{"line_number":214,"context_line":"        :param snapshot: snapshot object"},{"line_number":215,"context_line":"        :returns: model_update, dict"},{"line_number":216,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        LOG.debug(\"Entering create_volume_from_snapshot.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_5dd9761f","line":215,"range":{"start_line":215,"start_character":18,"end_line":215,"end_character":36},"updated":"2017-05-24 16:03:52.000000000","message":"This looks like you are returning two parameters.  Change to \"model_update dict\".","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"600560df83ef64b7d3c46abb2903a3cee902c9f1","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param volume: volume object"},{"line_number":214,"context_line":"        :param snapshot: snapshot object"},{"line_number":215,"context_line":"        :returns: model_update, dict"},{"line_number":216,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        LOG.debug(\"Entering create_volume_from_snapshot.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_76f7b78c","line":215,"range":{"start_line":215,"start_character":18,"end_line":215,"end_character":36},"in_reply_to":"ff0f0b1f_5dd9761f","updated":"2017-05-24 17:25:34.000000000","message":"Thanks, I will fix this.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c4af5ea26628cad647a29b678be4e35f34fd69fb","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"        slo_from_extra_spec \u003d pool_details[0]"},{"line_number":1174,"context_line":"        workload_from_extra_spec \u003d pool_details[1]"},{"line_number":1175,"context_line":"        # standardize slo and workload \u0027NONE\u0027 naming conventions"},{"line_number":1176,"context_line":"        if workload_from_extra_spec.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":1177,"context_line":"            workload_from_extra_spec \u003d \u0027NONE\u0027"},{"line_number":1178,"context_line":"        if slo_from_extra_spec.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":1179,"context_line":"            slo_from_extra_spec \u003d None"},{"line_number":1180,"context_line":"        extra_specs[utils.SLO] \u003d slo_from_extra_spec"},{"line_number":1181,"context_line":"        extra_specs[utils.WORKLOAD] \u003d workload_from_extra_spec"},{"line_number":1182,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_405d0913","line":1179,"range":{"start_line":1176,"start_character":0,"end_line":1179,"end_character":38},"updated":"2017-05-24 16:03:52.000000000","message":"Why is the workload set to \u0027NONE\u0027 while the slo set to None?  This could be error prone.  If it has to be this way, I suggest you make them constants.","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"600560df83ef64b7d3c46abb2903a3cee902c9f1","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"        slo_from_extra_spec \u003d pool_details[0]"},{"line_number":1174,"context_line":"        workload_from_extra_spec \u003d pool_details[1]"},{"line_number":1175,"context_line":"        # standardize slo and workload \u0027NONE\u0027 naming conventions"},{"line_number":1176,"context_line":"        if workload_from_extra_spec.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":1177,"context_line":"            workload_from_extra_spec \u003d \u0027NONE\u0027"},{"line_number":1178,"context_line":"        if slo_from_extra_spec.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":1179,"context_line":"            slo_from_extra_spec \u003d None"},{"line_number":1180,"context_line":"        extra_specs[utils.SLO] \u003d slo_from_extra_spec"},{"line_number":1181,"context_line":"        extra_specs[utils.WORKLOAD] \u003d workload_from_extra_spec"},{"line_number":1182,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ff0f0b1f_1692bb4c","line":1179,"range":{"start_line":1176,"start_character":0,"end_line":1179,"end_character":38},"in_reply_to":"ff0f0b1f_405d0913","updated":"2017-05-24 17:25:34.000000000","message":"We set slo as a null value so it is easier to evaluate, e.g. \"if slo *do something* else *something else*\". We never pass a \"none\" slo to the array. We set workload as a string \"NONE\" because this is a valid value to pass to the array (but it equally could be \"none\" or \"None\" etc.), and we do pass it in when creating a storage group IF slo is not None. I can change it to the null value here and evaluate it later though if you think that would be clearer. \n\nThanks for the feedback!\nCiara","commit_id":"31dc0b1f2340ad94482b53b0777f3e4b050e4f00"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"            error_message \u003d (_(\"Failed to delete volume %(volume_name)s. \""},{"line_number":1222,"context_line":"                               \"Exception received: %(e)s\") %"},{"line_number":1223,"context_line":"                             {\u0027volume_name\u0027: volume_name, \u0027e\u0027: e})"},{"line_number":1224,"context_line":"            LOG.exception(error_message)"},{"line_number":1225,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derror_message)"},{"line_number":1226,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_c4e2f801","line":1223,"range":{"start_line":1223,"start_character":63,"end_line":1223,"end_character":64},"updated":"2017-05-26 21:41:18.000000000","message":"Wrap this in six.text_type","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"            LOG.info(\"Target wwns in masking view %(maskingView)s: \""},{"line_number":1248,"context_line":"                     \"%(targetWwns)s.\","},{"line_number":1249,"context_line":"                     {\u0027maskingView\u0027: masking_view_list[0],"},{"line_number":1250,"context_line":"                      \u0027targetWwns\u0027: six.text_type(target_wwns)})"},{"line_number":1251,"context_line":"        return target_wwns"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    def get_port_group_from_masking_view(self, array, maskingview_name):"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_04ba30dd","line":1250,"range":{"start_line":1250,"start_character":36,"end_line":1250,"end_character":49},"updated":"2017-05-26 21:41:18.000000000","message":"This one actually does not need to be wrapped in six.text_type because it only goes to the LOG.  LOG will wrap it with six.text_type if needed. \n\nIf it goes to a raised exception as on line 1225, then it should be wrapped.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"        :param array: the array serial number"},{"line_number":1325,"context_line":"        :param clone_volume: the clone volume object"},{"line_number":1326,"context_line":"        :param source_device_id: the device ID of the volume"},{"line_number":1327,"context_line":"        :param extra_specs: extra specifications"},{"line_number":1328,"context_line":"        :returns: int -- return code"},{"line_number":1329,"context_line":"        :returns: dict -- cloneDict"},{"line_number":1330,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_84a88077","line":1327,"updated":"2017-05-26 21:41:18.000000000","message":"Missing snap_name","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"}],"cinder/volume/drivers/dell_emc/vmax/rest/fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        :param snapshot: the cinder snapshot object"},{"line_number":96,"context_line":"        :return: provider location dict"},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        src_volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":99,"context_line":"        return self.common.create_snapshot(snapshot, src_volume)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def delete_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_edeb91d9","line":98,"updated":"2017-05-16 15:32:46.000000000","message":"snapshot.volume","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        :param snapshot: the cinder snapshot object"},{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        src_volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":107,"context_line":"        self.common.delete_snapshot(snapshot, src_volume)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def ensure_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_adbfc9ce","line":106,"updated":"2017-05-16 15:32:46.000000000","message":"snapshot.volume","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                           \u0027target_wwns\u0027: None,"},{"line_number":239,"context_line":"                           \u0027init_targ_map\u0027: None,"},{"line_number":240,"context_line":"                           \u0027array\u0027: None}"},{"line_number":241,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":242,"context_line":"        name \u003d ast.literal_eval(loc)"},{"line_number":243,"context_line":"        host \u003d connector[\u0027host\u0027]"},{"line_number":244,"context_line":"        array \u003d name[\u0027array\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_4dd04520","line":241,"updated":"2017-05-16 15:32:46.000000000","message":"volume.provider_location","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        array \u003d name[\u0027array\u0027]"},{"line_number":245,"context_line":"        device_id \u003d name[\u0027device_id\u0027]"},{"line_number":246,"context_line":"        LOG.debug(\"Start FC detach process for volume: %(volume)s.\","},{"line_number":247,"context_line":"                  {\u0027volume\u0027: volume[\u0027name\u0027]})"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        masking_views \u003d self.common.get_masking_views_from_volume("},{"line_number":250,"context_line":"            array, device_id, host)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0dca3d6c","line":247,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                               \u0027array\u0027: array}"},{"line_number":271,"context_line":"        else:"},{"line_number":272,"context_line":"            LOG.warning(\"Volume %(volume)s is not in any masking view.\","},{"line_number":273,"context_line":"                        {\u0027volume\u0027: volume[\u0027name\u0027]})"},{"line_number":274,"context_line":"        return zoning_mappings"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _cleanup_zones(self, zoning_mappings):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_6dae6199","line":273,"updated":"2017-05-16 15:32:46.000000000","message":"volume.name","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"}],"cinder/volume/drivers/dell_emc/vmax/rest/iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"ISCSI Drivers for Dell EMC VMAX arrays based on REST."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"import six"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_edba7108","line":21,"range":{"start_line":19,"start_character":0,"end_line":21,"end_character":35},"updated":"2017-05-16 15:32:46.000000000","message":"These two should be in the same import group without the new line in between.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    .. code-block:: none"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        1.0.0 - Initial driver"},{"line_number":41,"context_line":"        2.0.0 - Add driver requirement functions"},{"line_number":42,"context_line":"        3.0.0 - Rest based driver"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0d559dc6","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":48},"updated":"2017-05-16 15:32:46.000000000","message":"Those are referring to the SMI-S based drivers?","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        :param snapshot: the cinder snapshot object"},{"line_number":100,"context_line":"        :return: provider location dict"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        src_volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":103,"context_line":"        return self.common.create_snapshot(snapshot, src_volume)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def delete_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_cd0575c4","line":102,"updated":"2017-05-16 15:32:46.000000000","message":"Please use object notation snapshot.volume.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        :param snapshot: the cinder snapshot object"},{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        src_volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.common.delete_snapshot(snapshot, src_volume)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_ad08e9d8","line":110,"updated":"2017-05-16 15:32:46.000000000","message":"Same","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        properties[\u0027target_iqn\u0027] \u003d ip_and_iqn[0][\u0027iqn\u0027].split(\",\")[0]"},{"line_number":237,"context_line":"        properties[\u0027target_portal\u0027] \u003d ip_and_iqn[0][\u0027ip\u0027] + \":3260\""},{"line_number":238,"context_line":"        properties[\u0027target_lun\u0027] \u003d host_lun_id"},{"line_number":239,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        LOG.info(\"ISCSI properties: %(properties)s.\","},{"line_number":242,"context_line":"                 {\u0027properties\u0027: properties})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_0d1c7d10","line":239,"updated":"2017-05-16 15:32:46.000000000","message":"the volume should be an object here, so use volume.id.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"                properties[\u0027auth_method\u0027] \u003d auth_method"},{"line_number":256,"context_line":"                properties[\u0027auth_username\u0027] \u003d auth_username"},{"line_number":257,"context_line":"                properties[\u0027auth_password\u0027] \u003d auth_secret"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"                LOG.info(\"AUTH properties: %s.\", properties)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        return properties"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_8469a08c","line":259,"range":{"start_line":257,"start_character":16,"end_line":259,"end_character":60},"updated":"2017-05-26 21:41:18.000000000","message":"Password should not be printed out in logs.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"}],"cinder/volume/drivers/dell_emc/vmax/rest/masking.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                \"Cannot get or create a storage group: %(storagegroup_name)s\""},{"line_number":275,"context_line":"                \" for volume %(volume_name)s \") %"},{"line_number":276,"context_line":"                {\u0027storagegroup_name\u0027: storagegroup_name,"},{"line_number":277,"context_line":"                 \u0027volume_name\u0027: masking_view_dict[self.utils.VOL_NAME]})"},{"line_number":278,"context_line":"            LOG.error(msg)"},{"line_number":279,"context_line":"        return msg"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_df8e582d","line":277,"updated":"2017-04-17 02:45:49.000000000","message":"Don\u0027t use _(\"xxxx\") in this function.  Use it in the caller where you need to raise an exception.  LOG.error no longer needs to be translated.  Please fix other similar places.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                     \"from masking view %(maskingViewInstanceName)s. \")"},{"line_number":298,"context_line":"                   % {\u0027sgGroupName\u0027: sg_from_mv,"},{"line_number":299,"context_line":"                      \u0027maskingViewInstanceName\u0027: maskingview_name})"},{"line_number":300,"context_line":"            LOG.error(msg)"},{"line_number":301,"context_line":"        return sg_from_mv, msg"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _check_port_group(self, array, portgroup_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_ff8eb425","line":300,"updated":"2017-04-17 02:45:49.000000000","message":"Don\u0027t use _ here.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                     \"%(array)s. Portgroups must be pre-configured - please \""},{"line_number":315,"context_line":"                     \"check the array.\") %"},{"line_number":316,"context_line":"                   {\u0027portgroup\u0027: portgroup_name, \u0027array\u0027: array})"},{"line_number":317,"context_line":"            LOG.error(msg)"},{"line_number":318,"context_line":"        return portgroup_name, msg"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _get_or_create_initiator_group("}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_3f777c3d","line":317,"updated":"2017-04-17 02:45:49.000000000","message":"Don\u0027t use _(\"\") here.  Use it in the caller where you need to raise exception.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            LOG.exception("},{"line_number":81,"context_line":"                \"Masking View creation or retrieval was not successful \""},{"line_number":82,"context_line":"                \"for masking view %(maskingview_name)s. \""},{"line_number":83,"context_line":"                \"Attempting rollback.\","},{"line_number":84,"context_line":"                {\u0027maskingview_name\u0027: masking_view_dict[utils.MV_NAME]})"},{"line_number":85,"context_line":"            error_message \u003d e"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_67ed628a","line":83,"range":{"start_line":83,"start_character":38,"end_line":83,"end_character":39},"updated":"2017-05-16 15:32:46.000000000","message":"Shouldn\u0027t this be \"%\" if this error_message could be raised?","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                \"for masking view %(maskingview_name)s. \""},{"line_number":83,"context_line":"                \"Attempting rollback.\","},{"line_number":84,"context_line":"                {\u0027maskingview_name\u0027: masking_view_dict[utils.MV_NAME]})"},{"line_number":85,"context_line":"            error_message \u003d e"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        rollback_dict \u003d masking_view_dict"},{"line_number":88,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_67d442be","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":29},"updated":"2017-05-16 15:32:46.000000000","message":"Should be wrapped with six.text_type","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _check_add_child_sg_to_parent_sg("},{"line_number":266,"context_line":"            self, array, child_sg_name, parent_sg_name, extra_specs):"},{"line_number":267,"context_line":"        \"\"\"Ckeck adding a child storage group to a parent storage group."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        :param array: the array serial number"},{"line_number":270,"context_line":"        :param child_sg_name: the name of the child storage group"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_67bb2272","line":267,"range":{"start_line":267,"start_character":11,"end_line":267,"end_character":16},"updated":"2017-05-16 15:32:46.000000000","message":"Check","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder import coordination"},{"line_number":21,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_4206db22","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":11},"updated":"2017-05-26 21:41:18.000000000","message":"time should be in the first import group.  olso and six in the second.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        storagegroup \u003d self.rest.get_storage_group(array, sg_from_mv)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        if not storagegroup:"},{"line_number":379,"context_line":"            msg \u003d (\"Cannot get storage group: %(sgGroupName)s \""},{"line_number":380,"context_line":"                   \"from masking view %(maskingView)s. \""},{"line_number":381,"context_line":"                   % {\u0027sgGroupName\u0027: sg_from_mv,"},{"line_number":382,"context_line":"                      \u0027maskingView\u0027: maskingview_name})"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_045b502e","line":379,"range":{"start_line":379,"start_character":48,"end_line":379,"end_character":59},"updated":"2017-05-26 21:41:18.000000000","message":"It\u0027s better to use snake_case when possible, i.e., sg_group_name.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        if not storagegroup:"},{"line_number":379,"context_line":"            msg \u003d (\"Cannot get storage group: %(sgGroupName)s \""},{"line_number":380,"context_line":"                   \"from masking view %(maskingView)s. \""},{"line_number":381,"context_line":"                   % {\u0027sgGroupName\u0027: sg_from_mv,"},{"line_number":382,"context_line":"                      \u0027maskingView\u0027: maskingview_name})"},{"line_number":383,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_e43f3cb3","line":380,"range":{"start_line":380,"start_character":40,"end_line":380,"end_character":51},"updated":"2017-05-26 21:41:18.000000000","message":"Same","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def _check_existing_initiator_group("},{"line_number":469,"context_line":"            self, array, maskingview_name, masking_view_dict,"},{"line_number":470,"context_line":"            storagegroup_name, portgroup_name, extra_specs):"},{"line_number":471,"context_line":"        \"\"\"Checks an existing initiator group in the masking view."},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        Check if the initiators in the initiator group match those in the"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_449f08b4","line":470,"range":{"start_line":470,"start_character":12,"end_line":470,"end_character":58},"updated":"2017-05-26 21:41:18.000000000","message":"These are missing from param.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"}],"cinder/volume/drivers/dell_emc/vmax/rest/provision.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder.volume.drivers.dell_emc.vmax.rest import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import coordination"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_c7bc36de","line":21,"range":{"start_line":19,"start_character":0,"end_line":21,"end_character":31},"updated":"2017-05-16 15:32:46.000000000","message":"These two imports should be together, not separated by new line, in the 3rd import group.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.volume.drivers.dell_emc.vmax.rest import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import coordination"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_a7d6ca26","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":35},"updated":"2017-05-16 15:32:46.000000000","message":"This should be in the 2nd import group.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder import coordination"},{"line_number":21,"context_line":"from cinder.volume.drivers.dell_emc.vmax.rest import utils"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_e2660f2a","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":11},"updated":"2017-05-26 21:41:18.000000000","message":"time is a built-in lib.  Should be in the first import group.  oslo_log and six are 3rd-party libs and should be in the second import group.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        total_capacity_gb \u003d 0"},{"line_number":256,"context_line":"        remaining_capacity_gb \u003d 0"},{"line_number":257,"context_line":"        allocated_capacity_gb \u003d None"},{"line_number":258,"context_line":"        subscribed_capacity_gb \u003d 10"},{"line_number":259,"context_line":"        array_reserve_percent \u003d 0"},{"line_number":260,"context_line":"        wlp_enabled \u003d False"},{"line_number":261,"context_line":"        srp \u003d array_info[\u0027srpName\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_6220bfb1","line":258,"range":{"start_line":258,"start_character":33,"end_line":258,"end_character":35},"updated":"2017-05-26 21:41:18.000000000","message":"Why is this default to 10?","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"}],"cinder/volume/drivers/dell_emc/vmax/rest/utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    This Utility class is for VMAX volume drivers based on Unisphere Rest API."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":"    # SHARED CONSTANTS"},{"line_number":39,"context_line":"    ISCSI \u003d \u0027iscsi\u0027"},{"line_number":40,"context_line":"    FC \u003d \u0027fc\u0027"},{"line_number":41,"context_line":"    INTERVAL \u003d \u0027interval\u0027"},{"line_number":42,"context_line":"    RETRIES \u003d \u0027retries\u0027"},{"line_number":43,"context_line":"    VOLUME_ELEMENT_NAME_PREFIX \u003d \u0027OS-\u0027"},{"line_number":44,"context_line":"    MAX_SRP_LENGTH \u003d 16"},{"line_number":45,"context_line":"    TRUNCATE_5 \u003d 5"},{"line_number":46,"context_line":"    TRUNCATE_27 \u003d 27"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    ARRAY \u003d \u0027array\u0027"},{"line_number":49,"context_line":"    SLO \u003d \u0027slo\u0027"},{"line_number":50,"context_line":"    WORKLOAD \u003d \u0027workload\u0027"},{"line_number":51,"context_line":"    SRP \u003d \u0027srp\u0027"},{"line_number":52,"context_line":"    PORTGROUPNAME \u003d \u0027port_group_name\u0027"},{"line_number":53,"context_line":"    DEVICE_ID \u003d \u0027device_id\u0027"},{"line_number":54,"context_line":"    INITIATOR_CHECK \u003d \u0027initiator_check\u0027"},{"line_number":55,"context_line":"    SG_NAME \u003d \u0027storagegroup_name\u0027"},{"line_number":56,"context_line":"    MV_NAME \u003d \u0027maskingview_name\u0027"},{"line_number":57,"context_line":"    IG_NAME \u003d \u0027init_group_name\u0027"},{"line_number":58,"context_line":"    CONNECTOR \u003d \u0027connector\u0027"},{"line_number":59,"context_line":"    VOL_NAME \u003d \u0027volume_name\u0027"},{"line_number":60,"context_line":"    EXTRA_SPECS \u003d \u0027extra_specs\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        \"\"\"Utility class for Rest based VMAX volume drivers.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_dfc09853","line":60,"range":{"start_line":39,"start_character":0,"end_line":60,"end_character":31},"updated":"2017-04-17 02:45:49.000000000","message":"Constants should be moved outside of the class.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":23276,"name":"Nicholas Jones","email":"nj762h@att.com","username":"nj762h"},"change_message_id":"5b6350d3440d07ad85db856d4bb2c70e848dbba1","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        my_file \u003d open(file_name, \u0027r\u0027)"},{"line_number":313,"context_line":"        data \u003d my_file.read()"},{"line_number":314,"context_line":"        my_file.close()"},{"line_number":315,"context_line":"        dom \u003d minidom.parseString(data)"},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            connargs \u003d self._get_connection_info(dom)"},{"line_number":318,"context_line":"            portgroup \u003d self._get_random_portgroup(dom)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_18a82bd9","line":315,"range":{"start_line":315,"start_character":8,"end_line":315,"end_character":39},"updated":"2017-04-25 20:57:35.000000000","message":"Bandit likes to complain about xml parsing as a vector of attack. Are we reasonable sure that this function can\u0027t be used to load some nasty xml?","commit_id":"43da4033d7330a339b4bba7b0073b8151d2e2a28"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                extra_specs \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":101,"context_line":"        except Exception as e:"},{"line_number":102,"context_line":"            LOG.debug(\u0027Exception getting volume type extra specs: %(e)s\u0027,"},{"line_number":103,"context_line":"                      {\u0027e\u0027: e})"},{"line_number":104,"context_line":"            pass"},{"line_number":105,"context_line":"        return extra_specs"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_47414639","line":103,"range":{"start_line":103,"start_character":28,"end_line":103,"end_character":29},"updated":"2017-05-16 15:32:46.000000000","message":"Please wrap it with six.text_type","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                max_over_sub_ratio \u003d max(float(max_over_sub_ratio),"},{"line_number":235,"context_line":"                                         float(max_sub_ratio_from_per))"},{"line_number":236,"context_line":"            except ValueError:"},{"line_number":237,"context_line":"                max_over_sub_ratio \u003d float(max_sub_ratio_from_per)"},{"line_number":238,"context_line":"        elif max_sub_ratio_from_per:"},{"line_number":239,"context_line":"            max_over_sub_ratio \u003d float(max_sub_ratio_from_per)"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_675d62e8","line":237,"range":{"start_line":237,"start_character":43,"end_line":237,"end_character":65},"updated":"2017-05-16 15:32:46.000000000","message":"How do  you know this won\u0027t raise ValueError?","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"}],"cinder/volume/drivers/dell_emc/vmax/rest/vmax_rest.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.i18n import _"},{"line_number":24,"context_line":"from cinder.volume.drivers.dell_emc.vmax.rest import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import requests"},{"line_number":27,"context_line":"from requests.auth import HTTPBasicAuth"},{"line_number":28,"context_line":"from requests.packages.urllib3.exceptions import InsecureRequestWarning"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_7fdce473","line":26,"updated":"2017-04-17 02:45:49.000000000","message":"All requests imports are third party libs and should be moved up to the same group as six.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinder.volume.drivers.dell_emc.vmax.rest import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import requests"},{"line_number":27,"context_line":"from requests.auth import HTTPBasicAuth"},{"line_number":28,"context_line":"from requests.packages.urllib3.exceptions import InsecureRequestWarning"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"requests.packages.urllib3.disable_warnings(InsecureRequestWarning)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_5f94888b","line":27,"updated":"2017-04-17 02:45:49.000000000","message":"Import module, not Class.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import requests"},{"line_number":27,"context_line":"from requests.auth import HTTPBasicAuth"},{"line_number":28,"context_line":"from requests.packages.urllib3.exceptions import InsecureRequestWarning"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"requests.packages.urllib3.disable_warnings(InsecureRequestWarning)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_3f91bc9a","line":28,"updated":"2017-04-17 02:45:49.000000000","message":"Import module, not class.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":35,"context_line":"class VMAXRest(object):"},{"line_number":36,"context_line":"    \"\"\"Rest class based on Unisphere for VMAX Rest API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    SLOPROVISIONING \u003d \u0027sloprovisioning\u0027"},{"line_number":40,"context_line":"    REPLICATION \u003d \u0027replication\u0027"},{"line_number":41,"context_line":"    U4V_VERSION \u003d \u002784\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_dfd65850","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":7},"updated":"2017-04-17 02:45:49.000000000","message":"Move up to line 36.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\"Rest class based on Unisphere for VMAX Rest API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    SLOPROVISIONING \u003d \u0027sloprovisioning\u0027"},{"line_number":40,"context_line":"    REPLICATION \u003d \u0027replication\u0027"},{"line_number":41,"context_line":"    U4V_VERSION \u003d \u002784\u0027"},{"line_number":42,"context_line":"    # HTTP constants"},{"line_number":43,"context_line":"    GET \u003d \u0027GET\u0027"},{"line_number":44,"context_line":"    POST \u003d \u0027POST\u0027"},{"line_number":45,"context_line":"    PUT \u003d \u0027PUT\u0027"},{"line_number":46,"context_line":"    DELETE \u003d \u0027DELETE\u0027"},{"line_number":47,"context_line":"    STATUS_200 \u003d 200"},{"line_number":48,"context_line":"    STATUS_201 \u003d 201"},{"line_number":49,"context_line":"    STATUS_202 \u003d 202"},{"line_number":50,"context_line":"    STATUS_204 \u003d 204"},{"line_number":51,"context_line":"    # Job constants"},{"line_number":52,"context_line":"    INCOMPLETE_LIST \u003d [\u0027created\u0027, \u0027scheduled\u0027, \u0027running\u0027,"},{"line_number":53,"context_line":"                       \u0027validating\u0027, \u0027validated\u0027]"},{"line_number":54,"context_line":"    CREATED \u003d \u0027created\u0027"},{"line_number":55,"context_line":"    SUCCEEDED \u003d \u0027succeeded\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self):"},{"line_number":58,"context_line":"        self.utils \u003d utils.VMAXUtils()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_5fc24887","line":55,"range":{"start_line":39,"start_character":0,"end_line":55,"end_character":27},"updated":"2017-04-17 02:45:49.000000000","message":"All these are constants and should be moved outside of the class.","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        except requests.Timeout:"},{"line_number":140,"context_line":"            LOG.error(\"The %(method)s request to URL %(url)s timed-out, \""},{"line_number":141,"context_line":"                      \"but may have been successful. Please check the array. \""},{"line_number":142,"context_line":"                      % {\u0027method\u0027: method, \u0027url\u0027: url})"},{"line_number":143,"context_line":"        except Exception as e:"},{"line_number":144,"context_line":"            exception_message \u003d (_(\"The %(method)s request to URL %(url)s \""},{"line_number":145,"context_line":"                                   \"failed with exception %(e)s\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_9f45701a","line":142,"range":{"start_line":142,"start_character":22,"end_line":142,"end_character":24},"updated":"2017-04-17 02:45:49.000000000","message":",","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"52248732d1c789b71d5f7e09500c75a475930933","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            except Exception:"},{"line_number":183,"context_line":"                exception_message \u003d (_(\"Issue encountered waiting for job.\"))"},{"line_number":184,"context_line":"                LOG.exception(exception_message)"},{"line_number":185,"context_line":"                raise exception.VolumeBackendAPIException(exception_message)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"            if retries \u003e int(extra_specs[self.utils.RETRIES]):"},{"line_number":188,"context_line":"                LOG.error(\"_wait_for_job_complete failed after \""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_bf594cff","line":185,"updated":"2017-04-17 02:45:49.000000000","message":"data\u003dexception_message","commit_id":"27d5167b9fd6da2cd6108e3d56f62c40cfff246a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":"from oslo_service import loopingcall"},{"line_number":19,"context_line":"import requests"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_f9ac778d","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":11},"updated":"2017-05-16 15:32:46.000000000","message":"json is stdlib.  Should be in its own group.  Add a new line after this.","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        except Exception as e:"},{"line_number":143,"context_line":"            exception_message \u003d (_(\"The %(method)s request to URL %(url)s \""},{"line_number":144,"context_line":"                                   \"failed with exception %(e)s\")"},{"line_number":145,"context_line":"                                 % {\u0027method\u0027: method, \u0027url\u0027: url, \u0027e\u0027: e})"},{"line_number":146,"context_line":"            LOG.exception(exception_message)"},{"line_number":147,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_f9e477ae","line":145,"range":{"start_line":145,"start_character":71,"end_line":145,"end_character":72},"updated":"2017-05-16 15:32:46.000000000","message":"Should be wrapped with six.text_type","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            except Exception:"},{"line_number":182,"context_line":"                exception_message \u003d (_(\"Issue encountered waiting for job.\"))"},{"line_number":183,"context_line":"                LOG.exception(exception_message)"},{"line_number":184,"context_line":"                raise exception.VolumeBackendAPIException(exception_message)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            if retries \u003e int(extra_specs[utils.RETRIES]):"},{"line_number":187,"context_line":"                LOG.error(\"_wait_for_job_complete failed after \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_b995cfe6","line":184,"updated":"2017-05-16 15:32:46.000000000","message":"data\u003dexception_message","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        try:"},{"line_number":309,"context_line":"            self.check_status_code_success(operation, sc, message)"},{"line_number":310,"context_line":"        except Exception as e:"},{"line_number":311,"context_line":"            LOG.debug(\"Get resource failed with %(e)s\", {\u0027e\u0027: e})"},{"line_number":312,"context_line":"        if sc \u003d\u003d STATUS_200:"},{"line_number":313,"context_line":"            resource_object \u003d message"},{"line_number":314,"context_line":"        return resource_object"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_3c3c0dc7","line":311,"range":{"start_line":311,"start_character":62,"end_line":311,"end_character":63},"updated":"2017-05-16 15:32:46.000000000","message":"Please wrap it with six.text_type","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"49eb4595b8e7266606b7f23048dec0c1ee5ef6d4","unresolved":false,"context_lines":[{"line_number":1439,"context_line":"                exception_message \u003d (_(\"Issue encountered waiting for \""},{"line_number":1440,"context_line":"                                       \"synchronization.\"))"},{"line_number":1441,"context_line":"                LOG.exception(exception_message)"},{"line_number":1442,"context_line":"                raise exception.VolumeBackendAPIException(exception_message)"},{"line_number":1443,"context_line":""},{"line_number":1444,"context_line":"            if kwargs[\u0027retries\u0027] \u003e int(extra_specs[utils.RETRIES]):"},{"line_number":1445,"context_line":"                LOG.error(\"_wait_for_sync failed after %(retries)d \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f013ff3_7c46157f","line":1442,"updated":"2017-05-16 15:32:46.000000000","message":"data\u003dexception_message","commit_id":"3dca32a682e62315a6eae98ed4cffccf2922a558"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0e48e3107ae0b62e0894acecf848b2f854362bac","unresolved":false,"context_lines":[{"line_number":648,"context_line":"            for t in task:"},{"line_number":649,"context_line":"                try:"},{"line_number":650,"context_line":"                    desc \u003d t[\"description\"]"},{"line_number":651,"context_line":"                    if \"Creating new Volumes\" in desc:"},{"line_number":652,"context_line":"                        t_list \u003d desc.split()"},{"line_number":653,"context_line":"                        device_id \u003d t_list[(len(t_list) - 1)]"},{"line_number":654,"context_line":"                        device_id \u003d device_id[1:-1]"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_22a88775","line":651,"range":{"start_line":651,"start_character":23,"end_line":651,"end_character":45},"updated":"2017-05-26 21:41:18.000000000","message":"This is error prone. Please use constant.","commit_id":"aa348e1442b0ed4cb0dd59e594311755150f4a3c"}],"cinder/volume/drivers/dell_emc/vmax/utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        except Exception as e:"},{"line_number":102,"context_line":"            LOG.debug(\u0027Exception getting volume type extra specs: %(e)s\u0027,"},{"line_number":103,"context_line":"                      {\u0027e\u0027: six.text_type(e)})"},{"line_number":104,"context_line":"            pass"},{"line_number":105,"context_line":"        return extra_specs"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_74d90e20","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":16},"updated":"2017-06-04 20:14:21.000000000","message":"pass not needed.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        except Exception as e:"},{"line_number":102,"context_line":"            LOG.debug(\u0027Exception getting volume type extra specs: %(e)s\u0027,"},{"line_number":103,"context_line":"                      {\u0027e\u0027: six.text_type(e)})"},{"line_number":104,"context_line":"            pass"},{"line_number":105,"context_line":"        return extra_specs"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_508ded2f","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":16},"in_reply_to":"df140735_74d90e20","updated":"2017-06-05 08:38:54.000000000","message":"I will remove it.  Thank you","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"38eb66975c9bf923c1ca2e3ab853e6224c6f40ea","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        except Exception as e:"},{"line_number":102,"context_line":"            LOG.debug(\u0027Exception getting volume type extra specs: %(e)s\u0027,"},{"line_number":103,"context_line":"                      {\u0027e\u0027: six.text_type(e)})"},{"line_number":104,"context_line":"            pass"},{"line_number":105,"context_line":"        return extra_specs"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":25,"id":"df140735_a501a06c","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":16},"updated":"2017-06-05 13:33:09.000000000","message":"Please remove \"pass\".  This is not needed.","commit_id":"c7560c971035eba6f82d7d4a0fd70938f31edcf4"}],"cinder/volume/drivers/dell_emc/vmax/vmax_rest.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"44db170fdce159e5861b144d0f253d54f6347a1f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Dell Inc. or its subsidiaries."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_df447c49","line":1,"updated":"2017-06-03 19:33:52.000000000","message":"vmax_rest.py can be renamed to rest.py because vmax is already in the path.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                          {\u0027status_code\u0027: status_code})"},{"line_number":136,"context_line":"                message \u003d None"},{"line_number":137,"context_line":"            LOG.debug(\"%(method)s request to %(url)s has returned with \""},{"line_number":138,"context_line":"                      \"a status code of: %(status_code)s\","},{"line_number":139,"context_line":"                      {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":140,"context_line":"                       \u0027status_code\u0027: status_code})"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1ccfa256","line":138,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        except requests.Timeout:"},{"line_number":143,"context_line":"            LOG.error(\"The %(method)s request to URL %(url)s timed-out, \""},{"line_number":144,"context_line":"                      \"but may have been successful. Please check the array. \","},{"line_number":145,"context_line":"                      {\u0027method\u0027: method, \u0027url\u0027: url})"},{"line_number":146,"context_line":"        except Exception as e:"},{"line_number":147,"context_line":"            exception_message \u003d (_(\"The %(method)s request to URL %(url)s \""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7c81fefa","line":144,"range":{"start_line":144,"start_character":76,"end_line":144,"end_character":77},"updated":"2017-06-03 19:10:18.000000000","message":"Remove unneeded white space.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_wait_for_job_complete)"},{"line_number":206,"context_line":"        timer.start(interval\u003dint(extra_specs[utils.INTERVAL])).wait()"},{"line_number":207,"context_line":"        LOG.debug(\"Return code is: %(rc)lu. Result is %(res)s\","},{"line_number":208,"context_line":"                  {\u0027rc\u0027: kwargs[\u0027rc\u0027], \u0027res\u0027: kwargs[\u0027result\u0027]})"},{"line_number":209,"context_line":"        return (kwargs[\u0027rc\u0027], kwargs[\u0027result\u0027],"},{"line_number":210,"context_line":"                kwargs[\u0027status\u0027], kwargs[\u0027task\u0027])"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_fcd74eed","line":207,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            self.check_status_code_success(operation, sc, message)"},{"line_number":316,"context_line":"        except Exception as e:"},{"line_number":317,"context_line":"            LOG.debug(\"Get resource failed with %(e)s\","},{"line_number":318,"context_line":"                      {\u0027e\u0027: six.text_type(e)})"},{"line_number":319,"context_line":"        if sc \u003d\u003d STATUS_200:"},{"line_number":320,"context_line":"            resource_object \u003d message"},{"line_number":321,"context_line":"        return resource_object"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_3ca4a6a5","line":318,"range":{"start_line":318,"start_character":28,"end_line":318,"end_character":41},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here because the logger will apply six.text_type if needed.  Add period.\n\nsix.text_type is only needed if this message is also raised in an exception.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        target_uri \u003d \u0027/%s/system/symmetrix/%s\u0027 % (U4V_VERSION, array)"},{"line_number":405,"context_line":"        array_details \u003d self._get_request(target_uri, \u0027system\u0027)"},{"line_number":406,"context_line":"        if not array_details:"},{"line_number":407,"context_line":"            LOG.error(\"Cannot connect to array %(array)s\","},{"line_number":408,"context_line":"                      {\u0027array\u0027: array})"},{"line_number":409,"context_line":"        return array_details"},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1cf8c278","line":407,"updated":"2017-06-03 19:10:18.000000000","message":"Add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":659,"context_line":"                except Exception as e:"},{"line_number":660,"context_line":"                    LOG.info(\"Could not retrieve device id from job. \""},{"line_number":661,"context_line":"                             \"Exception received was %(e)s. Attempting \""},{"line_number":662,"context_line":"                             \"retrieval by volume_identifier. \","},{"line_number":663,"context_line":"                             {\u0027e\u0027: six.text_type(e)})"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        if not device_id:"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_fcf06e93","line":662,"range":{"start_line":662,"start_character":61,"end_line":662,"end_character":62},"updated":"2017-06-03 19:10:18.000000000","message":"Remove white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":660,"context_line":"                    LOG.info(\"Could not retrieve device id from job. \""},{"line_number":661,"context_line":"                             \"Exception received was %(e)s. Attempting \""},{"line_number":662,"context_line":"                             \"retrieval by volume_identifier. \","},{"line_number":663,"context_line":"                             {\u0027e\u0027: six.text_type(e)})"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        if not device_id:"},{"line_number":666,"context_line":"            device_id \u003d self.find_volume_device_id(array, volume_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7cafbe7c","line":663,"range":{"start_line":663,"start_character":35,"end_line":663,"end_character":48},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here as I explained earlier.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        try:"},{"line_number":851,"context_line":"            self._modify_volume(array, device_id, payload)"},{"line_number":852,"context_line":"        except Exception as e:"},{"line_number":853,"context_line":"            LOG.warning(\u0027Deallocate volume failed with %(e)s. \u0027"},{"line_number":854,"context_line":"                        \u0027Attempting delete.\u0027, {\u0027e\u0027: six.text_type(e)})"},{"line_number":855,"context_line":"        # Delete volume"},{"line_number":856,"context_line":"        self.delete_resource(array, SLOPROVISIONING, \"volume\", device_id)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9c31725d","line":853,"range":{"start_line":853,"start_character":61,"end_line":853,"end_character":62},"updated":"2017-06-03 19:10:18.000000000","message":"Remove white space","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":851,"context_line":"            self._modify_volume(array, device_id, payload)"},{"line_number":852,"context_line":"        except Exception as e:"},{"line_number":853,"context_line":"            LOG.warning(\u0027Deallocate volume failed with %(e)s. \u0027"},{"line_number":854,"context_line":"                        \u0027Attempting delete.\u0027, {\u0027e\u0027: six.text_type(e)})"},{"line_number":855,"context_line":"        # Delete volume"},{"line_number":856,"context_line":"        self.delete_resource(array, SLOPROVISIONING, \"volume\", device_id)"},{"line_number":857,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5cb4fad0","line":854,"range":{"start_line":854,"start_character":52,"end_line":854,"end_character":65},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":872,"context_line":"            resource_name\u003dresource_name, params\u003dparams)"},{"line_number":873,"context_line":"        if not connection_info:"},{"line_number":874,"context_line":"            LOG.error(\u0027Cannot retrive masking view connection information \u0027"},{"line_number":875,"context_line":"                      \u0027for %(mv)s\u0027, {\u0027mv\u0027: maskingview})"},{"line_number":876,"context_line":"        else:"},{"line_number":877,"context_line":"            try:"},{"line_number":878,"context_line":"                host_lun_id \u003d (connection_info[\u0027maskingViewConnection\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_fcc2ae33","line":875,"updated":"2017-06-03 19:10:18.000000000","message":"Add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":881,"context_line":"            except Exception as e:"},{"line_number":882,"context_line":"                LOG.error(\"Unable to retrieve connection information \""},{"line_number":883,"context_line":"                          \"for volume %(vol)s in masking view %(mv)s\""},{"line_number":884,"context_line":"                          \"Exception received: %(e)s\","},{"line_number":885,"context_line":"                          {\u0027vol\u0027: device_id, \u0027mv\u0027: maskingview,"},{"line_number":886,"context_line":"                           \u0027e\u0027: six.text_type(e)})"},{"line_number":887,"context_line":"        return host_lun_id"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_dcbfeaa7","line":884,"updated":"2017-06-03 19:10:18.000000000","message":"Add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":883,"context_line":"                          \"for volume %(vol)s in masking view %(mv)s\""},{"line_number":884,"context_line":"                          \"Exception received: %(e)s\","},{"line_number":885,"context_line":"                          {\u0027vol\u0027: device_id, \u0027mv\u0027: maskingview,"},{"line_number":886,"context_line":"                           \u0027e\u0027: six.text_type(e)})"},{"line_number":887,"context_line":"        return host_lun_id"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    def get_storage_groups_from_volume(self, array, device_id):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_bcde760e","line":886,"range":{"start_line":886,"start_character":32,"end_line":886,"end_character":45},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        volume_list \u003d self.get_volume_list(array, params)"},{"line_number":931,"context_line":"        if not volume_list:"},{"line_number":932,"context_line":"            LOG.debug(\"Cannot find record for volume %(volumeId)s\","},{"line_number":933,"context_line":"                      {\u0027volumeId\u0027: volume_name})"},{"line_number":934,"context_line":"        else:"},{"line_number":935,"context_line":"            device_id \u003d volume_list[0]"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_9ce3b2d9","line":932,"updated":"2017-06-03 19:10:18.000000000","message":"Add period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":959,"context_line":"        except Exception as e:"},{"line_number":960,"context_line":"            LOG.error(\"Error retrieving size of volume %(vol)s.\""},{"line_number":961,"context_line":"                      \"Exception received was %(e)s\","},{"line_number":962,"context_line":"                      {\u0027vol\u0027: device_id, \u0027e\u0027: six.text_type(e)})"},{"line_number":963,"context_line":"        return cap"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"    def get_portgroup(self, array, portgroup):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7ce45ee0","line":962,"range":{"start_line":962,"start_character":46,"end_line":962,"end_character":59},"updated":"2017-06-03 19:10:18.000000000","message":"six.text_type is not needed here.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"                target_wwns.append(wwn)"},{"line_number":1034,"context_line":"            else:"},{"line_number":1035,"context_line":"                LOG.error(\"Error retrieving port %(port)s \""},{"line_number":1036,"context_line":"                          \"from portgroup %(portgroup)s\","},{"line_number":1037,"context_line":"                          {\u0027port\u0027: port, \u0027portgroup\u0027: portgroup})"},{"line_number":1038,"context_line":"        return target_wwns"},{"line_number":1039,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5ce99ab4","line":1036,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"22c9c1dd03f2c318e5ee97d27b117b53e151dd18","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"                pass"},{"line_number":1103,"context_line":"        else:"},{"line_number":1104,"context_line":"            LOG.error(\"Unable to retrieve initiator details for \""},{"line_number":1105,"context_line":"                      \"%(init)s\", {\u0027init\u0027: initiator})"},{"line_number":1106,"context_line":"        return found_init_group_name"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"    def create_initiator_group(self, array, init_group_name,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_3cd26601","line":1105,"updated":"2017-06-03 19:10:18.000000000","message":"period","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"}],"cinder/volume/manager.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ee86e4d3a2476448ff8f7e112ab1e7c892b974f8","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    \u0027cinder.volume.drivers.dell_emc.vmax.iscsi.VMAXISCSIDriver\u0027,"},{"line_number":166,"context_line":"    \u0027cinder.volume.drivers.emc.emc_vmax_fc.EMCVMAXFCDriver\u0027:"},{"line_number":167,"context_line":"    \u0027cinder.volume.drivers.dell_emc.vmax.fc.VMAXFCDriver\u0027,"},{"line_number":168,"context_line":"    \u0027cinder.volume.drivers.dell_emc.vmax.rest.fc.VMAXFCDriver\u0027:"},{"line_number":169,"context_line":"    \u0027cinder.volume.drivers.dell_emc.vmax.fc.VMAXFCDriver\u0027,"},{"line_number":170,"context_line":"    \u0027cinder.volume.drivers.dell_emc.vmax.rest.iscsi.VMAXISCSIDriver\u0027:"},{"line_number":171,"context_line":"    \u0027cinder.volume.drivers.dell_emc.vmax.iscsi.VMAXISCSIDriver\u0027,"},{"line_number":172,"context_line":"    \u0027cinder.volume.drivers.eqlx.DellEQLSanISCSIDriver\u0027:"},{"line_number":173,"context_line":"    \u0027cinder.volume.drivers.dell_emc.ps.PSSeriesISCSIDriver\u0027,"},{"line_number":174,"context_line":"    \u0027cinder.volume.drivers.dell.dell_storagecenter_iscsi.\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_7cb33e0b","line":171,"range":{"start_line":168,"start_character":4,"end_line":171,"end_character":64},"updated":"2017-06-03 17:44:54.000000000","message":"Actually this change is not needed because the code under vmax/rest was never merged.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"}],"releasenotes/notes/vmax-rest-94e48bed6f9c134c.yaml":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"98159abd737252a4ceb52b5fe444ba2f2ed3df99","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    New VMAX driver version 3.0, replacing SMI-S with unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f044301_cfa90de0","line":4,"range":{"start_line":4,"start_character":33,"end_line":4,"end_character":68},"updated":"2017-05-04 17:52:55.000000000","message":"Is this a feature or an implementation detail?","commit_id":"de11228c7b833e4bfb920b6b09567e4e2aa2f7f4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"943997a6fde3dffca5d444bd2ad20ef342218a98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    New VMAX driver version 3.0, replacing SMI-S with unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1f013ff3_b3b850c8","line":4,"range":{"start_line":4,"start_character":33,"end_line":4,"end_character":68},"in_reply_to":"3f044301_cfa90de0","updated":"2017-05-16 12:55:14.000000000","message":"User doesn\u0027t need to set up SMI-S any more, so it\u0027s a big change that we should inform them about.  Maybe this needs some rewording.  Suggestions?","commit_id":"de11228c7b833e4bfb920b6b09567e4e2aa2f7f4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4acadd723ab022add2b389a6d7e4ece37cc30d69","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    VMAX driver version 3.0, replacing SMI-S with Unisphere REST."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_fcc62e68","line":4,"updated":"2017-06-03 17:48:43.000000000","message":"Add \"This driver supports VMAX3 hybrid and All Flash arrays.\"","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ee86e4d3a2476448ff8f7e112ab1e7c892b974f8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    VMAX driver version 3.0, replacing SMI-S with Unisphere REST."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - |"},{"line_number":7,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_bcbd56d9","line":7,"updated":"2017-06-03 17:44:54.000000000","message":"Add a period.","commit_id":"feffb8660c080bce9c9def7fdca61cbbbcf1100f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ba665cd52f266e3e9d226f171d311c14eb3f88fa","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    VMAX driver version 3.0, replacing SMI-S with Unisphere REST."},{"line_number":5,"context_line":"    This driver supports VMAX3 hybrid and All Flash arrays."},{"line_number":6,"context_line":"upgrade:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"df140735_34095695","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":7},"updated":"2017-06-04 20:14:21.000000000","message":"The upgrade section should call out things that operators need to do or be aware of when they upgrade to this version. I don\u0027t think this is needed in this case.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"719cd29ed0f26f5295052eaf5c435a604eec0628","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    VMAX driver version 3.0, replacing SMI-S with Unisphere REST."},{"line_number":5,"context_line":"    This driver supports VMAX3 hybrid and All Flash arrays."},{"line_number":6,"context_line":"upgrade:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"df140735_17ef741e","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":7},"in_reply_to":"df140735_34095695","updated":"2017-06-04 22:35:41.000000000","message":"Operators don\u0027t need to set up SMI-S for this driver any more, but that is already covered by line 4 above.  So it\u0027s probably ok to remove this upgrade section.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a80704e32a3ab7dc6acb943a1d792269e099cc4c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    This driver supports VMAX3 hybrid and All Flash arrays."},{"line_number":6,"context_line":"upgrade:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"df140735_f2c2d733","line":8,"range":{"start_line":8,"start_character":27,"end_line":8,"end_character":61},"updated":"2017-06-04 02:01:00.000000000","message":"Should this be \"use Unisphere REST instead of SMI-S\"?","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"a7083b7bce9306b06880af03053d9f3c7118acd3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    This driver supports VMAX3 hybrid and All Flash arrays."},{"line_number":6,"context_line":"upgrade:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"df140735_10989567","line":8,"range":{"start_line":8,"start_character":27,"end_line":8,"end_character":61},"in_reply_to":"df140735_b7dfa867","updated":"2017-06-05 08:38:54.000000000","message":"Thanks Xing, I will remove this section","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"719cd29ed0f26f5295052eaf5c435a604eec0628","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    This driver supports VMAX3 hybrid and All Flash arrays."},{"line_number":6,"context_line":"upgrade:"},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    Upgrade VMAX driver to use REST instead of Unisphere REST."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"df140735_b7dfa867","line":8,"range":{"start_line":8,"start_character":27,"end_line":8,"end_character":61},"in_reply_to":"df140735_f2c2d733","updated":"2017-06-04 22:35:41.000000000","message":"Helen,\n\nIgnore this comment as the upgrade section should be removed.","commit_id":"32e516050f9a05117f676d2f8164b2773c080f6d"}]}
