)]}'
{"cinder/volume/drivers/emc/emc_vmax_common.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    import inspect"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    import pywbem"},{"line_number":40,"context_line":"    argspec \u003d inspect.getargspec(pywbem.WBEMConnection.__init__)"},{"line_number":41,"context_line":"    if any(\"ca_certs\" in s for s in argspec.args):"},{"line_number":42,"context_line":"        updatedPywbem \u003d True"},{"line_number":43,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_91c5683f","line":40,"updated":"2014-12-30 05:24:00.000000000","message":"lines 40-44 doesn\u0027t seem to throw ImportError, so can be moved outside of try..except construct","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    import inspect"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    import pywbem"},{"line_number":40,"context_line":"    argspec \u003d inspect.getargspec(pywbem.WBEMConnection.__init__)"},{"line_number":41,"context_line":"    if any(\"ca_certs\" in s for s in argspec.args):"},{"line_number":42,"context_line":"        updatedPywbem \u003d True"},{"line_number":43,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_add3ddd3","line":40,"in_reply_to":"3a961159_91c5683f","updated":"2014-12-30 18:24:37.000000000","message":"It references pywbem library. If it is not installed, it will throw an exception.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"665fe0f36d50f0a30eb8ad63b8bfd8df2e344c33","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    import inspect"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    import pywbem"},{"line_number":40,"context_line":"    argspec \u003d inspect.getargspec(pywbem.WBEMConnection.__init__)"},{"line_number":41,"context_line":"    if any(\"ca_certs\" in s for s in argspec.args):"},{"line_number":42,"context_line":"        updatedPywbem \u003d True"},{"line_number":43,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e1b5507d","line":40,"in_reply_to":"3a961159_95a078a6","updated":"2015-01-16 19:20:24.000000000","message":"Done","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3f712e4463d9d6363971fdd89a9d7106325f0da7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    import inspect"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    import pywbem"},{"line_number":40,"context_line":"    argspec \u003d inspect.getargspec(pywbem.WBEMConnection.__init__)"},{"line_number":41,"context_line":"    if any(\"ca_certs\" in s for s in argspec.args):"},{"line_number":42,"context_line":"        updatedPywbem \u003d True"},{"line_number":43,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_95a078a6","line":40,"in_reply_to":"3a961159_a3ab9086","updated":"2015-01-16 14:55:41.000000000","message":"I see. Yes, I think this can be moved.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"e38525582f35bbabc4a296afe32d7dd87ed2e043","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    import inspect"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    import pywbem"},{"line_number":40,"context_line":"    argspec \u003d inspect.getargspec(pywbem.WBEMConnection.__init__)"},{"line_number":41,"context_line":"    if any(\"ca_certs\" in s for s in argspec.args):"},{"line_number":42,"context_line":"        updatedPywbem \u003d True"},{"line_number":43,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_a3ab9086","line":40,"in_reply_to":"3a961159_add3ddd3","updated":"2015-01-15 07:47:45.000000000","message":"What I\u0027m saying is, lines 40-44 are not throwing importerror. So those can be moved out of this block, and at a later point you coud do something like:\n\n if pywbemAvailable:\n   \u003cdo lines 40-44\u003e","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        For a striped compositeType:"},{"line_number":120,"context_line":"        The user must supply an extra spec to determine how many metas"},{"line_number":121,"context_line":"        will make up the striped volume.If the meta size is greater than"},{"line_number":122,"context_line":"        240GB an error is returned to the user. Otherwise the"},{"line_number":123,"context_line":"        EMCNumberOfMembers is what the user specifies."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b1c26432","line":121,"updated":"2014-12-30 05:24:00.000000000","message":"nit: space should be put back","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        For a striped compositeType:"},{"line_number":120,"context_line":"        The user must supply an extra spec to determine how many metas"},{"line_number":121,"context_line":"        will make up the striped volume.If the meta size is greater than"},{"line_number":122,"context_line":"        240GB an error is returned to the user. Otherwise the"},{"line_number":123,"context_line":"        EMCNumberOfMembers is what the user specifies."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_edd405bd","line":121,"in_reply_to":"3a961159_b1c26432","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        Removes volume from the Device Masking Group that belongs to"},{"line_number":251,"context_line":"        a Masking View."},{"line_number":252,"context_line":"        Check if fast policy is in the extra specs, if it isn\u0027t we do"},{"line_number":253,"context_line":"        not need to do any thing for FAST"},{"line_number":254,"context_line":"        Assume that isTieringPolicySupported is False unless the FAST"},{"line_number":255,"context_line":"        policy is in the extra specs and tiering is enabled on the array"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_11089890","line":253,"updated":"2014-12-30 05:24:00.000000000","message":"Can put back dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        Removes volume from the Device Masking Group that belongs to"},{"line_number":251,"context_line":"        a Masking View."},{"line_number":252,"context_line":"        Check if fast policy is in the extra specs, if it isn\u0027t we do"},{"line_number":253,"context_line":"        not need to do any thing for FAST"},{"line_number":254,"context_line":"        Assume that isTieringPolicySupported is False unless the FAST"},{"line_number":255,"context_line":"        policy is in the extra specs and tiering is enabled on the array"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_4ded198e","line":253,"in_reply_to":"3a961159_11089890","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        \"\"\""},{"line_number":263,"context_line":"        volumeName \u003d volumeInstance[\u0027ElementName\u0027]"},{"line_number":264,"context_line":"        LOG.debug(\"Detaching volume %s\", volumeName)"},{"line_number":265,"context_line":"        try:"},{"line_number":266,"context_line":"            fastPolicyName \u003d extraSpecs[FASTPOLICY]"},{"line_number":267,"context_line":"        except KeyError:"},{"line_number":268,"context_line":"            fastPolicyName \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_51022070","line":265,"updated":"2014-12-30 05:24:00.000000000","message":"could have been done in one line using extraSpecs.get(FASTPOLICY), but not a big deal","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        \"\"\""},{"line_number":263,"context_line":"        volumeName \u003d volumeInstance[\u0027ElementName\u0027]"},{"line_number":264,"context_line":"        LOG.debug(\"Detaching volume %s\", volumeName)"},{"line_number":265,"context_line":"        try:"},{"line_number":266,"context_line":"            fastPolicyName \u003d extraSpecs[FASTPOLICY]"},{"line_number":267,"context_line":"        except KeyError:"},{"line_number":268,"context_line":"            fastPolicyName \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6df01567","line":265,"in_reply_to":"3a961159_51022070","updated":"2014-12-30 18:24:37.000000000","message":"Yes, try except is not needed.\n\nextraSpecs.get(FASTPOLICY, None)","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"e38525582f35bbabc4a296afe32d7dd87ed2e043","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        \"\"\""},{"line_number":263,"context_line":"        volumeName \u003d volumeInstance[\u0027ElementName\u0027]"},{"line_number":264,"context_line":"        LOG.debug(\"Detaching volume %s\", volumeName)"},{"line_number":265,"context_line":"        try:"},{"line_number":266,"context_line":"            fastPolicyName \u003d extraSpecs[FASTPOLICY]"},{"line_number":267,"context_line":"        except KeyError:"},{"line_number":268,"context_line":"            fastPolicyName \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_837db420","line":265,"in_reply_to":"3a961159_6df01567","updated":"2015-01-15 07:47:45.000000000","message":"the second argument (None) is optional, and is the default, but I\u0027m perfectly fine with the current way","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        if \u0027hostlunid\u0027 not in deviceInfoDict:"},{"line_number":389,"context_line":"            # Did not successfully attach to host,"},{"line_number":390,"context_line":"            # so a rollback for FAST is required."},{"line_number":391,"context_line":"            LOG.error(_LE(\"Error Attaching volume %(vol)s. \"),"},{"line_number":392,"context_line":"                      {\u0027vol\u0027: volumeName})"},{"line_number":393,"context_line":"            if ((rollbackDict[\u0027fastPolicyName\u0027] is not None) or"},{"line_number":394,"context_line":"                    (rollbackDict[\u0027isV3\u0027] is not None)):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f1294cf3","line":391,"updated":"2014-12-30 05:24:00.000000000","message":"nit: space after dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        if \u0027hostlunid\u0027 not in deviceInfoDict:"},{"line_number":389,"context_line":"            # Did not successfully attach to host,"},{"line_number":390,"context_line":"            # so a rollback for FAST is required."},{"line_number":391,"context_line":"            LOG.error(_LE(\"Error Attaching volume %(vol)s. \"),"},{"line_number":392,"context_line":"                      {\u0027vol\u0027: volumeName})"},{"line_number":393,"context_line":"            if ((rollbackDict[\u0027fastPolicyName\u0027] is not None) or"},{"line_number":394,"context_line":"                    (rollbackDict[\u0027isV3\u0027] is not None)):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6d9735ec","line":391,"in_reply_to":"3a961159_f1294cf3","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        if arrayName is None:"},{"line_number":546,"context_line":"            LOG.error(_LE("},{"line_number":547,"context_line":"                \"Array Serial Number %(arrayName)s must be in the file \""},{"line_number":548,"context_line":"                \"%(emcConfigFileName)s \"),"},{"line_number":549,"context_line":"                {\u0027arrayName\u0027: arrayName,"},{"line_number":550,"context_line":"                 \u0027emcConfigFileName\u0027: emcConfigFileName})"},{"line_number":551,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_51394040","line":548,"updated":"2014-12-30 05:24:00.000000000","message":"nit: space after end of string. Optional: can end with a period","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        if arrayName is None:"},{"line_number":546,"context_line":"            LOG.error(_LE("},{"line_number":547,"context_line":"                \"Array Serial Number %(arrayName)s must be in the file \""},{"line_number":548,"context_line":"                \"%(emcConfigFileName)s \"),"},{"line_number":549,"context_line":"                {\u0027arrayName\u0027: arrayName,"},{"line_number":550,"context_line":"                 \u0027emcConfigFileName\u0027: emcConfigFileName})"},{"line_number":551,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_cd8749b5","line":548,"in_reply_to":"3a961159_51394040","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        LOG.info(_LI("},{"line_number":599,"context_line":"            \"Capacity stats for SRP pool %(poolName)s on array \""},{"line_number":600,"context_line":"            \"%(arrayName)s (total_capacity_gb\u003d%(total_capacity_gb)lu, \""},{"line_number":601,"context_line":"            \"free_capacity_gb\u003d%(free_capacity_gb)lu\"),"},{"line_number":602,"context_line":"            {\u0027poolName\u0027: poolName,"},{"line_number":603,"context_line":"             \u0027arrayName\u0027: arrayName,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d14450b9","line":600,"updated":"2014-12-30 05:24:00.000000000","message":"brace just before word \u0027total capacity_gb\u0027 is never closed later","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        LOG.info(_LI("},{"line_number":599,"context_line":"            \"Capacity stats for SRP pool %(poolName)s on array \""},{"line_number":600,"context_line":"            \"%(arrayName)s (total_capacity_gb\u003d%(total_capacity_gb)lu, \""},{"line_number":601,"context_line":"            \"free_capacity_gb\u003d%(free_capacity_gb)lu\"),"},{"line_number":602,"context_line":"            {\u0027poolName\u0027: poolName,"},{"line_number":603,"context_line":"             \u0027arrayName\u0027: arrayName,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6dbe5566","line":600,"in_reply_to":"3a961159_d14450b9","updated":"2014-12-30 18:24:37.000000000","message":"You are right. brace just before total_capacity_gb\u003d can be removed.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":768,"context_line":"            LOG.error(_LE("},{"line_number":769,"context_line":"                \"Failed to return volume %(volumeName)s to \""},{"line_number":770,"context_line":"                \"original storage pool. Please contact your system \""},{"line_number":771,"context_line":"                \"administrator to return it to the correct location \"),"},{"line_number":772,"context_line":"                {\u0027volumeName\u0027: volumeName})"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"        if sourceFastPolicyName is not None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_1116d8a7","line":771,"updated":"2014-12-30 05:24:00.000000000","message":"can replace space with a period at end of string","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":768,"context_line":"            LOG.error(_LE("},{"line_number":769,"context_line":"                \"Failed to return volume %(volumeName)s to \""},{"line_number":770,"context_line":"                \"original storage pool. Please contact your system \""},{"line_number":771,"context_line":"                \"administrator to return it to the correct location \"),"},{"line_number":772,"context_line":"                {\u0027volumeName\u0027: volumeName})"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"        if sourceFastPolicyName is not None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_adb83d76","line":771,"in_reply_to":"3a961159_1116d8a7","updated":"2014-12-30 18:24:37.000000000","message":"Yes.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        :returns: int, the return code from migrate operation"},{"line_number":792,"context_line":"        \"\"\""},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        LOG.warn(_LW(\"_migrate_cleanup on : %(volumeName)s from \"),"},{"line_number":795,"context_line":"                 {\u0027volumeName\u0027: volumeName})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        controllerConfigurationService \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_310bd47e","line":794,"updated":"2014-12-30 05:24:00.000000000","message":"log message seems incomplete. Sorry, I know this is not part of the patch, but couldn\u0027t help noticing :)","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        :returns: int, the return code from migrate operation"},{"line_number":792,"context_line":"        \"\"\""},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        LOG.warn(_LW(\"_migrate_cleanup on : %(volumeName)s from \"),"},{"line_number":795,"context_line":"                 {\u0027volumeName\u0027: volumeName})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        controllerConfigurationService \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_cdae692f","line":794,"in_reply_to":"3a961159_310bd47e","updated":"2014-12-30 18:24:37.000000000","message":"This message should be fixed.\n\nLOG.warn(_LW(\"_migrate_cleanup on : %(volumeName)s.\"),","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        falseRet \u003d False"},{"line_number":843,"context_line":"        LOG.info(_LI("},{"line_number":844,"context_line":"            \"Adding volume: %(volumeName)s to default storage group \""},{"line_number":845,"context_line":"            \"for FAST policy: %(fastPolicyName)s \"),"},{"line_number":846,"context_line":"            {\u0027volumeName\u0027: volumeName,"},{"line_number":847,"context_line":"             \u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":848,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_71247c0e","line":845,"updated":"2014-12-30 05:24:00.000000000","message":"space can be replaced with a period","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        falseRet \u003d False"},{"line_number":843,"context_line":"        LOG.info(_LI("},{"line_number":844,"context_line":"            \"Adding volume: %(volumeName)s to default storage group \""},{"line_number":845,"context_line":"            \"for FAST policy: %(fastPolicyName)s \"),"},{"line_number":846,"context_line":"            {\u0027volumeName\u0027: volumeName,"},{"line_number":847,"context_line":"             \u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":848,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_2da44d4a","line":845,"in_reply_to":"3a961159_71247c0e","updated":"2014-12-30 18:24:37.000000000","message":"Yes.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        if defaultStorageGroupInstanceName is None:"},{"line_number":858,"context_line":"            LOG.error(_LE("},{"line_number":859,"context_line":"                \"Unable to create or get default storage group for FAST policy\""},{"line_number":860,"context_line":"                \": %(fastPolicyName)s. \"),"},{"line_number":861,"context_line":"                {\u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"            return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_9121e8fe","line":860,"updated":"2014-12-30 05:24:00.000000000","message":"redundant space at end of string","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        if defaultStorageGroupInstanceName is None:"},{"line_number":858,"context_line":"            LOG.error(_LE("},{"line_number":859,"context_line":"                \"Unable to create or get default storage group for FAST policy\""},{"line_number":860,"context_line":"                \": %(fastPolicyName)s. \"),"},{"line_number":861,"context_line":"                {\u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"            return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_ad6f5dfb","line":860,"in_reply_to":"3a961159_9121e8fe","updated":"2014-12-30 18:24:37.000000000","message":"Space should be removed.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":869,"context_line":"        if defaultStorageGroupInstanceName is None:"},{"line_number":870,"context_line":"            LOG.error(_LE("},{"line_number":871,"context_line":"                \"Failed to verify that volume was added to storage group for \""},{"line_number":872,"context_line":"                \"FAST policy: %(fastPolicyName)s. \"),"},{"line_number":873,"context_line":"                {\u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":874,"context_line":"            return falseRet"},{"line_number":875,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b11ee4b9","line":872,"updated":"2014-12-30 05:24:00.000000000","message":"ditto","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":869,"context_line":"        if defaultStorageGroupInstanceName is None:"},{"line_number":870,"context_line":"            LOG.error(_LE("},{"line_number":871,"context_line":"                \"Failed to verify that volume was added to storage group for \""},{"line_number":872,"context_line":"                \"FAST policy: %(fastPolicyName)s. \"),"},{"line_number":873,"context_line":"                {\u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":874,"context_line":"            return falseRet"},{"line_number":875,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d811c554","line":872,"in_reply_to":"3a961159_b11ee4b9","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        volumeName \u003d volume[\u0027name\u0027]"},{"line_number":891,"context_line":"        storageSystemName \u003d volumeInstance[\u0027SystemName\u0027]"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"        LOG.debug(\"sourceFastPolicyName is : %(sourceFastPolicyName)s. \","},{"line_number":894,"context_line":"                  {\u0027sourceFastPolicyName\u0027: sourceFastPolicyName})"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        # If the source volume is is FAST enabled it must first be removed"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f1778c06","line":893,"updated":"2014-12-30 05:24:00.000000000","message":"same","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        volumeName \u003d volume[\u0027name\u0027]"},{"line_number":891,"context_line":"        storageSystemName \u003d volumeInstance[\u0027SystemName\u0027]"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"        LOG.debug(\"sourceFastPolicyName is : %(sourceFastPolicyName)s. \","},{"line_number":894,"context_line":"                  {\u0027sourceFastPolicyName\u0027: sourceFastPolicyName})"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        # If the source volume is is FAST enabled it must first be removed"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f80cc13b","line":893,"in_reply_to":"3a961159_f1778c06","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        if targetPoolInstanceName is None:"},{"line_number":910,"context_line":"            LOG.error(_LE("},{"line_number":911,"context_line":"                \"Error finding targe pool instance name for pool: \""},{"line_number":912,"context_line":"                \"%(targetPoolName)s. \"),"},{"line_number":913,"context_line":"                {\u0027targetPoolName\u0027: targetPoolName})"},{"line_number":914,"context_line":"            return falseRet"},{"line_number":915,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_117df8e7","line":912,"updated":"2014-12-30 05:24:00.000000000","message":"same","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        if targetPoolInstanceName is None:"},{"line_number":910,"context_line":"            LOG.error(_LE("},{"line_number":911,"context_line":"                \"Error finding targe pool instance name for pool: \""},{"line_number":912,"context_line":"                \"%(targetPoolName)s. \"),"},{"line_number":913,"context_line":"                {\u0027targetPoolName\u0027: targetPoolName})"},{"line_number":914,"context_line":"            return falseRet"},{"line_number":915,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f83a01c3","line":912,"in_reply_to":"3a961159_117df8e7","updated":"2014-12-30 18:24:37.000000000","message":"Ok","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":922,"context_line":"            LOG.error(_LE(\"Exception: %s\"), e)"},{"line_number":923,"context_line":"            LOG.error(_LE("},{"line_number":924,"context_line":"                \"Error migrating volume: %(volumename)s. \""},{"line_number":925,"context_line":"                \"to target pool  %(targetPoolName)s. \"),"},{"line_number":926,"context_line":"                {\u0027volumename\u0027: volumeName,"},{"line_number":927,"context_line":"                 \u0027targetPoolName\u0027: targetPoolName})"},{"line_number":928,"context_line":"            return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_518780d7","line":925,"updated":"2014-12-30 05:24:00.000000000","message":"two spaces after \u0027pool\u0027, also, redundant space at end of line","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":922,"context_line":"            LOG.error(_LE(\"Exception: %s\"), e)"},{"line_number":923,"context_line":"            LOG.error(_LE("},{"line_number":924,"context_line":"                \"Error migrating volume: %(volumename)s. \""},{"line_number":925,"context_line":"                \"to target pool  %(targetPoolName)s. \"),"},{"line_number":926,"context_line":"                {\u0027volumename\u0027: volumeName,"},{"line_number":927,"context_line":"                 \u0027targetPoolName\u0027: targetPoolName})"},{"line_number":928,"context_line":"            return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_184a6d55","line":925,"in_reply_to":"3a961159_518780d7","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":943,"context_line":"            return falseRet"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        else:"},{"line_number":946,"context_line":"            LOG.debug(\"Terminating migration session on : %(volumeName)s. \","},{"line_number":947,"context_line":"                      {\u0027volumeName\u0027: volumeName})"},{"line_number":948,"context_line":"            self.provision._terminate_migrate_session("},{"line_number":949,"context_line":"                self.conn, volumeInstance.path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_716b9c1f","line":946,"updated":"2014-12-30 05:24:00.000000000","message":"space at end of string","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":943,"context_line":"            return falseRet"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        else:"},{"line_number":946,"context_line":"            LOG.debug(\"Terminating migration session on : %(volumeName)s. \","},{"line_number":947,"context_line":"                      {\u0027volumeName\u0027: volumeName})"},{"line_number":948,"context_line":"            self.provision._terminate_migrate_session("},{"line_number":949,"context_line":"                self.conn, volumeInstance.path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_38456943","line":946,"in_reply_to":"3a961159_716b9c1f","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":980,"context_line":"            exceptionMessage \u003d (_("},{"line_number":981,"context_line":"                \"Failed to remove: %(volumename)s. \""},{"line_number":982,"context_line":"                \"from the default storage group for \""},{"line_number":983,"context_line":"                \"FAST policy %(fastPolicyName)s. \")"},{"line_number":984,"context_line":"                % {\u0027volumename\u0027: volumeName,"},{"line_number":985,"context_line":"                   \u0027fastPolicyName\u0027: sourceFastPolicyName})"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_91680823","line":983,"updated":"2014-12-30 05:24:00.000000000","message":"same","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":980,"context_line":"            exceptionMessage \u003d (_("},{"line_number":981,"context_line":"                \"Failed to remove: %(volumename)s. \""},{"line_number":982,"context_line":"                \"from the default storage group for \""},{"line_number":983,"context_line":"                \"FAST policy %(fastPolicyName)s. \")"},{"line_number":984,"context_line":"                % {\u0027volumename\u0027: volumeName,"},{"line_number":985,"context_line":"                   \u0027fastPolicyName\u0027: sourceFastPolicyName})"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_587315b4","line":983,"in_reply_to":"3a961159_91680823","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"            LOG.error(_LE("},{"line_number":1022,"context_line":"                \"Failed to add %(volumeName)s \""},{"line_number":1023,"context_line":"                \"to default storage group for fast policy \""},{"line_number":1024,"context_line":"                \"%(fastPolicyName)s \"),"},{"line_number":1025,"context_line":"                {\u0027volumeName\u0027: volumeName,"},{"line_number":1026,"context_line":"                 \u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":1027,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b17504fc","line":1024,"updated":"2014-12-30 05:24:00.000000000","message":"redundant space. Can replace it with a dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"            LOG.error(_LE("},{"line_number":1022,"context_line":"                \"Failed to add %(volumeName)s \""},{"line_number":1023,"context_line":"                \"to default storage group for fast policy \""},{"line_number":1024,"context_line":"                \"%(fastPolicyName)s \"),"},{"line_number":1025,"context_line":"                {\u0027volumeName\u0027: volumeName,"},{"line_number":1026,"context_line":"                 \u0027fastPolicyName\u0027: targetFastPolicyName})"},{"line_number":1027,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_787611a5","line":1024,"in_reply_to":"3a961159_b17504fc","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        \"\"\""},{"line_number":1045,"context_line":"        falseRet \u003d (False, None, None)"},{"line_number":1046,"context_line":"        if \u0027location_info\u0027 not in host[\u0027capabilities\u0027]:"},{"line_number":1047,"context_line":"            LOG.error(_LE(\u0027Error getting array, pool, SLO and workload\u0027))"},{"line_number":1048,"context_line":"            return falseRet"},{"line_number":1049,"context_line":"        info \u003d host[\u0027capabilities\u0027][\u0027location_info\u0027]"},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d1729010","line":1047,"updated":"2014-12-30 05:24:00.000000000","message":"nit: can end with a dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        \"\"\""},{"line_number":1045,"context_line":"        falseRet \u003d (False, None, None)"},{"line_number":1046,"context_line":"        if \u0027location_info\u0027 not in host[\u0027capabilities\u0027]:"},{"line_number":1047,"context_line":"            LOG.error(_LE(\u0027Error getting array, pool, SLO and workload\u0027))"},{"line_number":1048,"context_line":"            return falseRet"},{"line_number":1049,"context_line":"        info \u003d host[\u0027capabilities\u0027][\u0027location_info\u0027]"},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_986d7dcf","line":1047,"in_reply_to":"3a961159_d1729010","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"            targetPoolName \u003d infoDetail[1]"},{"line_number":1057,"context_line":"            targetSlo \u003d infoDetail[2]"},{"line_number":1058,"context_line":"            targetWorkload \u003d infoDetail[3]"},{"line_number":1059,"context_line":"        except Exception:"},{"line_number":1060,"context_line":"            LOG.error(_LE(\"Error parsing array, pool, SLO and workload\"))"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_914f28be","line":1059,"updated":"2014-12-30 05:24:00.000000000","message":"I think the block only raises IndexError. Excepting \u0027Exception\u0027 seems too lax IMO","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"            targetPoolName \u003d infoDetail[1]"},{"line_number":1057,"context_line":"            targetSlo \u003d infoDetail[2]"},{"line_number":1058,"context_line":"            targetWorkload \u003d infoDetail[3]"},{"line_number":1059,"context_line":"        except Exception:"},{"line_number":1060,"context_line":"            LOG.error(_LE(\"Error parsing array, pool, SLO and workload\"))"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_589a35c6","line":1059,"in_reply_to":"3a961159_914f28be","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"            targetSlo \u003d infoDetail[2]"},{"line_number":1058,"context_line":"            targetWorkload \u003d infoDetail[3]"},{"line_number":1059,"context_line":"        except Exception:"},{"line_number":1060,"context_line":"            LOG.error(_LE(\"Error parsing array, pool, SLO and workload\"))"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1063,"context_line":"            LOG.error(_LE("}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f15eac78","line":1060,"updated":"2014-12-30 05:24:00.000000000","message":"can end with a dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"            targetSlo \u003d infoDetail[2]"},{"line_number":1058,"context_line":"            targetWorkload \u003d infoDetail[3]"},{"line_number":1059,"context_line":"        except Exception:"},{"line_number":1060,"context_line":"            LOG.error(_LE(\"Error parsing array, pool, SLO and workload\"))"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1063,"context_line":"            LOG.error(_LE("}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f86121d5","line":1060,"in_reply_to":"3a961159_f15eac78","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1063,"context_line":"            LOG.error(_LE("},{"line_number":1064,"context_line":"                \"The source array : %(sourceArraySerialNumber)s does not \""},{"line_number":1065,"context_line":"                \"match the target array: %(targetArraySerialNumber)s\""},{"line_number":1066,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1067,"context_line":"                {\u0027sourceArraySerialNumber\u0027: sourceArraySerialNumber,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b8a7990a","line":1064,"updated":"2014-12-30 18:24:37.000000000","message":"Need to remove extra space before : too.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1063,"context_line":"            LOG.error(_LE("},{"line_number":1064,"context_line":"                \"The source array : %(sourceArraySerialNumber)s does not \""},{"line_number":1065,"context_line":"                \"match the target array: %(targetArraySerialNumber)s\""},{"line_number":1066,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1067,"context_line":"                {\u0027sourceArraySerialNumber\u0027: sourceArraySerialNumber,"},{"line_number":1068,"context_line":"                 \u0027targetArraySerialNumber\u0027: targetArraySerialNumber})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_11cb381f","line":1065,"updated":"2014-12-30 05:24:00.000000000","message":"space before \u0027\"\u0027.\n\nAlso, you can end the statement here, and start the next one with a capital, and end with a dot, or three dots (\u0027Skipping storage assisted migration...\u0027)","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1063,"context_line":"            LOG.error(_LE("},{"line_number":1064,"context_line":"                \"The source array : %(sourceArraySerialNumber)s does not \""},{"line_number":1065,"context_line":"                \"match the target array: %(targetArraySerialNumber)s\""},{"line_number":1066,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1067,"context_line":"                {\u0027sourceArraySerialNumber\u0027: sourceArraySerialNumber,"},{"line_number":1068,"context_line":"                 \u0027targetArraySerialNumber\u0027: targetArraySerialNumber})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_98a49d09","line":1065,"in_reply_to":"3a961159_11cb381f","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if targetPoolName not in sourcePoolName:"},{"line_number":1072,"context_line":"            LOG.error(_LE("},{"line_number":1073,"context_line":"                \"Only SLO/workload migration within the same SRP Pool \""},{"line_number":1074,"context_line":"                \"Is supported in this version \""},{"line_number":1075,"context_line":"                \"The source pool : %(sourcePoolName)s does not \""},{"line_number":1076,"context_line":"                \"match the target array: %(targetPoolName)s\""},{"line_number":1077,"context_line":"                \"skipping storage-assisted migration\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_51d5c0b7","line":1074,"updated":"2014-12-30 05:24:00.000000000","message":"\u0027Is\u0027 can be un-capitalized. This line can end with a dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"        if targetPoolName not in sourcePoolName:"},{"line_number":1072,"context_line":"            LOG.error(_LE("},{"line_number":1073,"context_line":"                \"Only SLO/workload migration within the same SRP Pool \""},{"line_number":1074,"context_line":"                \"Is supported in this version \""},{"line_number":1075,"context_line":"                \"The source pool : %(sourcePoolName)s does not \""},{"line_number":1076,"context_line":"                \"match the target array: %(targetPoolName)s\""},{"line_number":1077,"context_line":"                \"skipping storage-assisted migration\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f8a841db","line":1074,"in_reply_to":"3a961159_51d5c0b7","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"            LOG.error(_LE("},{"line_number":1073,"context_line":"                \"Only SLO/workload migration within the same SRP Pool \""},{"line_number":1074,"context_line":"                \"Is supported in this version \""},{"line_number":1075,"context_line":"                \"The source pool : %(sourcePoolName)s does not \""},{"line_number":1076,"context_line":"                \"match the target array: %(targetPoolName)s\""},{"line_number":1077,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1078,"context_line":"                {\u0027sourcePoolName\u0027: sourcePoolName,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b87eb968","line":1075,"updated":"2014-12-30 18:24:37.000000000","message":"Remove space before :","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"                \"Is supported in this version \""},{"line_number":1075,"context_line":"                \"The source pool : %(sourcePoolName)s does not \""},{"line_number":1076,"context_line":"                \"match the target array: %(targetPoolName)s\""},{"line_number":1077,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1078,"context_line":"                {\u0027sourcePoolName\u0027: sourcePoolName,"},{"line_number":1079,"context_line":"                 \u0027targetPoolName\u0027: targetPoolName})"},{"line_number":1080,"context_line":"            return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_71d9dcf3","line":1077,"updated":"2014-12-30 05:24:00.000000000","message":"can end with a dot","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"                \"Is supported in this version \""},{"line_number":1075,"context_line":"                \"The source pool : %(sourcePoolName)s does not \""},{"line_number":1076,"context_line":"                \"match the target array: %(targetPoolName)s\""},{"line_number":1077,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1078,"context_line":"                {\u0027sourcePoolName\u0027: sourcePoolName,"},{"line_number":1079,"context_line":"                 \u0027targetPoolName\u0027: targetPoolName})"},{"line_number":1080,"context_line":"            return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_18b8ad29","line":1077,"in_reply_to":"3a961159_71d9dcf3","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1084,"context_line":"                self.conn, volumeInstanceName))"},{"line_number":1085,"context_line":"        if foundStorageGroupInstanceName is None:"},{"line_number":1086,"context_line":"            LOG.warn(_LW("},{"line_number":1087,"context_line":"                \"Volume : %(volumeName)s is not currently \""},{"line_number":1088,"context_line":"                \"belonging to any storage group \"),"},{"line_number":1089,"context_line":"                {\u0027volumeName\u0027: volumeName})"},{"line_number":1090,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_987bbd7a","line":1087,"updated":"2014-12-30 18:24:37.000000000","message":"Remove space before :","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"        if foundStorageGroupInstanceName is None:"},{"line_number":1086,"context_line":"            LOG.warn(_LW("},{"line_number":1087,"context_line":"                \"Volume : %(volumeName)s is not currently \""},{"line_number":1088,"context_line":"                \"belonging to any storage group \"),"},{"line_number":1089,"context_line":"                {\u0027volumeName\u0027: volumeName})"},{"line_number":1090,"context_line":""},{"line_number":1091,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_91d648c2","line":1088,"updated":"2014-12-30 05:24:00.000000000","message":"s/ /./","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"        if foundStorageGroupInstanceName is None:"},{"line_number":1086,"context_line":"            LOG.warn(_LW("},{"line_number":1087,"context_line":"                \"Volume : %(volumeName)s is not currently \""},{"line_number":1088,"context_line":"                \"belonging to any storage group \"),"},{"line_number":1089,"context_line":"                {\u0027volumeName\u0027: volumeName})"},{"line_number":1090,"context_line":""},{"line_number":1091,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_5881554c","line":1088,"in_reply_to":"3a961159_91d648c2","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"                LOG.error(_LE("},{"line_number":1099,"context_line":"                    \"No action required. Volume : %(volumeName)s is \""},{"line_number":1100,"context_line":"                    \"already part of slo/workload combination : \""},{"line_number":1101,"context_line":"                    \"%(targetCombination)s\"),"},{"line_number":1102,"context_line":"                    {\u0027volumeName\u0027: volumeName,"},{"line_number":1103,"context_line":"                     \u0027targetCombination\u0027: targetCombination})"},{"line_number":1104,"context_line":"                return falseRet"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d894658e","line":1101,"updated":"2014-12-30 18:24:37.000000000","message":"period","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1141,"context_line":"            LOG.error(_LE("},{"line_number":1142,"context_line":"                \"The source array : %(sourceArraySerialNumber)s does not \""},{"line_number":1143,"context_line":"                \"match the target array: %(targetArraySerialNumber)s\""},{"line_number":1144,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1145,"context_line":"                {\u0027sourceArraySerialNumber\u0027: sourceArraySerialNumber,"},{"line_number":1146,"context_line":"                 \u0027targetArraySerialNumber\u0027: targetArraySerialNumber})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d1e0d098","line":1143,"updated":"2014-12-30 05:24:00.000000000","message":"same as one previous comment","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"        if targetArraySerialNumber not in sourceArraySerialNumber:"},{"line_number":1141,"context_line":"            LOG.error(_LE("},{"line_number":1142,"context_line":"                \"The source array : %(sourceArraySerialNumber)s does not \""},{"line_number":1143,"context_line":"                \"match the target array: %(targetArraySerialNumber)s\""},{"line_number":1144,"context_line":"                \"skipping storage-assisted migration\"),"},{"line_number":1145,"context_line":"                {\u0027sourceArraySerialNumber\u0027: sourceArraySerialNumber,"},{"line_number":1146,"context_line":"                 \u0027targetArraySerialNumber\u0027: targetArraySerialNumber})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_58e87516","line":1143,"in_reply_to":"3a961159_d1e0d098","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1455,"context_line":"            LOG.debug(\"HardwareID instance is  : %(hardwareIdInstance)s  \","},{"line_number":1456,"context_line":"                      {\u0027hardwareIdInstance\u0027: hardwareIdInstance})"},{"line_number":1457,"context_line":"            try:"},{"line_number":1458,"context_line":"                rc, targetEndpoints \u003d (  # @UnusedVariable"},{"line_number":1459,"context_line":"                    self.provision.get_target_endpoints("},{"line_number":1460,"context_line":"                        self.conn, storageHardwareService, hardwareIdInstance))"},{"line_number":1461,"context_line":"            except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_11f2586f","line":1458,"updated":"2014-12-30 05:24:00.000000000","message":"is this a comment?","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1455,"context_line":"            LOG.debug(\"HardwareID instance is  : %(hardwareIdInstance)s  \","},{"line_number":1456,"context_line":"                      {\u0027hardwareIdInstance\u0027: hardwareIdInstance})"},{"line_number":1457,"context_line":"            try:"},{"line_number":1458,"context_line":"                rc, targetEndpoints \u003d (  # @UnusedVariable"},{"line_number":1459,"context_line":"                    self.provision.get_target_endpoints("},{"line_number":1460,"context_line":"                        self.conn, storageHardwareService, hardwareIdInstance))"},{"line_number":1461,"context_line":"            except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_38e1e92a","line":1458,"in_reply_to":"3a961159_11f2586f","updated":"2014-12-30 18:24:37.000000000","message":"Should replace the unused variable rc with _ instead.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1484,"context_line":"                    {\u0027hardwareIdInstance\u0027: hardwareIdInstance})"},{"line_number":1485,"context_line":""},{"line_number":1486,"context_line":"        LOG.debug(\"Target WWNs: : %(targetWwns)s  \","},{"line_number":1487,"context_line":"                  {\u0027targetWwns\u0027: targetWwns})"},{"line_number":1488,"context_line":""},{"line_number":1489,"context_line":"        return targetWwns"},{"line_number":1490,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d8c2a585","line":1487,"updated":"2014-12-30 18:24:37.000000000","message":"Extra : and space","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1805,"context_line":"        :params volumeSize: the size to create the volume"},{"line_number":1806,"context_line":"        :returns: volumeInstance the volume instance"},{"line_number":1807,"context_line":"        \"\"\""},{"line_number":1808,"context_line":"        volumeDict, rc \u003d (  # @UnusedVariable"},{"line_number":1809,"context_line":"            self.provision.create_volume_from_pool("},{"line_number":1810,"context_line":"                self.conn, storageConfigService, volumeName, poolInstanceName,"},{"line_number":1811,"context_line":"                volumeSize))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_38b80911","line":1808,"updated":"2014-12-30 18:24:37.000000000","message":"_","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1826,"context_line":"        :returns: unboundVolumeInstance the unbound volume instance"},{"line_number":1827,"context_line":"        \"\"\""},{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"        rc, job \u003d (  # @UnusedVariable"},{"line_number":1830,"context_line":"            self.provision.unbind_volume_from_storage_pool("},{"line_number":1831,"context_line":"                conn, storageConfigService, poolInstanceName,"},{"line_number":1832,"context_line":"                volumeInstanceName,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_5836b5b5","line":1829,"updated":"2014-12-30 18:24:37.000000000","message":"_","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":"        LOG.info(_LI("},{"line_number":1915,"context_line":"            \"Create a replica from Volume: Clone Volume: %(cloneName)s \""},{"line_number":1916,"context_line":"            \" Source Volume: %(sourceName)s\"),"},{"line_number":1917,"context_line":"            {\u0027cloneName\u0027: cloneName,"},{"line_number":1918,"context_line":"             \u0027sourceName\u0027: sourceName})"},{"line_number":1919,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_31e754ae","line":1916,"updated":"2014-12-30 05:24:00.000000000","message":"space not required at start of this part of the string","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":"        LOG.info(_LI("},{"line_number":1915,"context_line":"            \"Create a replica from Volume: Clone Volume: %(cloneName)s \""},{"line_number":1916,"context_line":"            \" Source Volume: %(sourceName)s\"),"},{"line_number":1917,"context_line":"            {\u0027cloneName\u0027: cloneName,"},{"line_number":1918,"context_line":"             \u0027sourceName\u0027: sourceName})"},{"line_number":1919,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_7839b1a2","line":1916,"in_reply_to":"3a961159_31e754ae","updated":"2014-12-30 18:24:37.000000000","message":"Ok.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"        self._delete_volume(snapshot)"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":2242,"context_line":"        \"\"\"Creates a consistencygroup"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"        :param context:"},{"line_number":2245,"context_line":"        :param group: the group object to be created"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_51ece08f","line":2242,"updated":"2014-12-30 05:24:00.000000000","message":"can end with a dot for consistency :)","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"        self._delete_volume(snapshot)"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":2242,"context_line":"        \"\"\"Creates a consistencygroup"},{"line_number":2243,"context_line":""},{"line_number":2244,"context_line":"        :param context:"},{"line_number":2245,"context_line":"        :param group: the group object to be created"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_98573dca","line":2242,"in_reply_to":"3a961159_51ece08f","updated":"2014-12-30 18:24:37.000000000","message":"Sure.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":2293,"context_line":"        modelUpdate \u003d {}"},{"line_number":2294,"context_line":"        modelUpdate[\u0027status\u0027] \u003d group[\u0027status\u0027]"},{"line_number":2295,"context_line":""},{"line_number":2296,"context_line":"        # Temp only - asking Xing why it is postfixed by comma"},{"line_number":2297,"context_line":"        volumeTypeId \u003d group[\u0027volume_type_id\u0027].replace(\",\", \"\")"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"        extraSpecs \u003d self._initial_setup(None, volumeTypeId)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_7100fc35","line":2296,"updated":"2014-12-30 05:24:00.000000000","message":"intentional?","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":2293,"context_line":"        modelUpdate \u003d {}"},{"line_number":2294,"context_line":"        modelUpdate[\u0027status\u0027] \u003d group[\u0027status\u0027]"},{"line_number":2295,"context_line":""},{"line_number":2296,"context_line":"        # Temp only - asking Xing why it is postfixed by comma"},{"line_number":2297,"context_line":"        volumeTypeId \u003d group[\u0027volume_type_id\u0027].replace(\",\", \"\")"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"        extraSpecs \u003d self._initial_setup(None, volumeTypeId)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f86be183","line":2296,"in_reply_to":"3a961159_7100fc35","updated":"2014-12-30 18:24:37.000000000","message":"Need to remove this comment:).","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"        extraSpecs \u003d self._initial_setup(None, volumeTypeId)"},{"line_number":2300,"context_line":""},{"line_number":2301,"context_line":"        poolInstanceName, storageSystem \u003d (  # @UnusedVariable"},{"line_number":2302,"context_line":"            self._get_pool_and_storage_system(extraSpecs))"},{"line_number":2303,"context_line":""},{"line_number":2304,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_386649bc","line":2301,"updated":"2014-12-30 18:24:37.000000000","message":"_","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"                    for volumeRef in volumes:"},{"line_number":2348,"context_line":"                        volumeRef[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2349,"context_line":"                        modelUpdate[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2350,"context_line":"        except Exception as ex:"},{"line_number":2351,"context_line":"            LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2352,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2353,"context_line":"                \"Failed to delete consistency group: %(cgName)s. \")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b1fa6441","line":2350,"updated":"2014-12-30 05:24:00.000000000","message":"I see a try..except block inside another try..except block. Both the excepts are for class Exception. I think this can be simplified..","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"e38525582f35bbabc4a296afe32d7dd87ed2e043","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"                    for volumeRef in volumes:"},{"line_number":2348,"context_line":"                        volumeRef[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2349,"context_line":"                        modelUpdate[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2350,"context_line":"        except Exception as ex:"},{"line_number":2351,"context_line":"            LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2352,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2353,"context_line":"                \"Failed to delete consistency group: %(cgName)s. \")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_63e1a8cf","line":2350,"in_reply_to":"3a961159_38d569e5","updated":"2015-01-15 07:47:45.000000000","message":"Any update on this comment..? Sorry if I\u0027m becoming a pest :)","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3f712e4463d9d6363971fdd89a9d7106325f0da7","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"                    for volumeRef in volumes:"},{"line_number":2348,"context_line":"                        volumeRef[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2349,"context_line":"                        modelUpdate[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2350,"context_line":"        except Exception as ex:"},{"line_number":2351,"context_line":"            LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2352,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2353,"context_line":"                \"Failed to delete consistency group: %(cgName)s. \")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b5673424","line":2350,"in_reply_to":"3a961159_63e1a8cf","updated":"2015-01-16 14:55:41.000000000","message":"No problem. Thank you for reviewing this. Actually _delete_cg_and_members is for delete_cgsnapshot, not for delete_consistencygroup. delete_consistencygroup needs to return the modelupdate of the group as well as status of volumes. That\u0027s why the try except is needed for volumes. The outer loop is for operations on the group level. We can move the inner try except into a separate function to make the code more readable.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"                    for volumeRef in volumes:"},{"line_number":2348,"context_line":"                        volumeRef[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2349,"context_line":"                        modelUpdate[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2350,"context_line":"        except Exception as ex:"},{"line_number":2351,"context_line":"            LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2352,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2353,"context_line":"                \"Failed to delete consistency group: %(cgName)s. \")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_38d569e5","line":2350,"in_reply_to":"3a961159_b1fa6441","updated":"2014-12-30 18:24:37.000000000","message":"There\u0027s actually a helper function  _delete_cg_and_members on line 3543 that can be used here. Will look into it.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"665fe0f36d50f0a30eb8ad63b8bfd8df2e344c33","unresolved":false,"context_lines":[{"line_number":2347,"context_line":"                    for volumeRef in volumes:"},{"line_number":2348,"context_line":"                        volumeRef[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2349,"context_line":"                        modelUpdate[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":2350,"context_line":"        except Exception as ex:"},{"line_number":2351,"context_line":"            LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2352,"context_line":"            exceptionMessage \u003d (_("},{"line_number":2353,"context_line":"                \"Failed to delete consistency group: %(cgName)s. \")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_417d44b1","line":2350,"in_reply_to":"3a961159_b5673424","updated":"2015-01-16 19:20:24.000000000","message":"Moved inner try except to a separate function.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"            self.utils.populate_cgsnapshot_status("},{"line_number":2530,"context_line":"                context, db, cgsnapshot[\u0027id\u0027], modelUpdate[\u0027status\u0027])"},{"line_number":2531,"context_line":"            LOG.error(_LE(\"Exception: %(ex)s\"), {\u0027ex\u0027: ex})"},{"line_number":2532,"context_line":"            exceptionMessage \u003d (_(\"Failed to delete snapshot for cg: \""},{"line_number":2533,"context_line":"                                  \"%(cgId)s. \")"},{"line_number":2534,"context_line":"                                % {\u0027cgId\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":2535,"context_line":"            LOG.error(exceptionMessage)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d1f7f057","line":2532,"updated":"2014-12-30 05:24:00.000000000","message":"micro-nit: outer brackets can be removed","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3f712e4463d9d6363971fdd89a9d7106325f0da7","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"            self.utils.populate_cgsnapshot_status("},{"line_number":2530,"context_line":"                context, db, cgsnapshot[\u0027id\u0027], modelUpdate[\u0027status\u0027])"},{"line_number":2531,"context_line":"            LOG.error(_LE(\"Exception: %(ex)s\"), {\u0027ex\u0027: ex})"},{"line_number":2532,"context_line":"            exceptionMessage \u003d (_(\"Failed to delete snapshot for cg: \""},{"line_number":2533,"context_line":"                                  \"%(cgId)s. \")"},{"line_number":2534,"context_line":"                                % {\u0027cgId\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":2535,"context_line":"            LOG.error(exceptionMessage)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d50a00d0","line":2532,"in_reply_to":"3a961159_23a5e09e","updated":"2015-01-16 14:55:41.000000000","message":"I tried it and I got SyntaxError without the bracket.  If everything is on the same line, it is fine without the bracket. Another choice is to use \\, but () is preferred.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"e38525582f35bbabc4a296afe32d7dd87ed2e043","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"            self.utils.populate_cgsnapshot_status("},{"line_number":2530,"context_line":"                context, db, cgsnapshot[\u0027id\u0027], modelUpdate[\u0027status\u0027])"},{"line_number":2531,"context_line":"            LOG.error(_LE(\"Exception: %(ex)s\"), {\u0027ex\u0027: ex})"},{"line_number":2532,"context_line":"            exceptionMessage \u003d (_(\"Failed to delete snapshot for cg: \""},{"line_number":2533,"context_line":"                                  \"%(cgId)s. \")"},{"line_number":2534,"context_line":"                                % {\u0027cgId\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":2535,"context_line":"            LOG.error(exceptionMessage)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_23a5e09e","line":2532,"in_reply_to":"3a961159_bf085829","updated":"2015-01-15 07:47:45.000000000","message":"I thought it would still work. I might be wrong. And anyway, I\u0027m okay with or without brackets :)","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ff2e4a88f3de0dd1ed71be6325265a81f4883f11","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"            self.utils.populate_cgsnapshot_status("},{"line_number":2530,"context_line":"                context, db, cgsnapshot[\u0027id\u0027], modelUpdate[\u0027status\u0027])"},{"line_number":2531,"context_line":"            LOG.error(_LE(\"Exception: %(ex)s\"), {\u0027ex\u0027: ex})"},{"line_number":2532,"context_line":"            exceptionMessage \u003d (_(\"Failed to delete snapshot for cg: \""},{"line_number":2533,"context_line":"                                  \"%(cgId)s. \")"},{"line_number":2534,"context_line":"                                % {\u0027cgId\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":2535,"context_line":"            LOG.error(exceptionMessage)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_bf085829","line":2532,"in_reply_to":"3a961159_d1f7f057","updated":"2014-12-31 04:35:54.000000000","message":"I think this outer bracket is needed because this message format statement is broken into multiple lines. We\u0027ll get SyntaxError without the outer bracket.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":3070,"context_line":"                \"There are: %(stripedMetaCount)s striped metas in \""},{"line_number":3071,"context_line":"                \"the extra specs\","},{"line_number":3072,"context_line":"                {\u0027stripedMetaCount\u0027: stripedMetaCount})"},{"line_number":3073,"context_line":"        except Exception:"},{"line_number":3074,"context_line":"            memberCount \u003d \u00271\u0027"},{"line_number":3075,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3076,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f1930cfe","line":3073,"updated":"2014-12-30 05:24:00.000000000","message":"I would prefer a more specific exception. I think IndexError will do the job here","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":3070,"context_line":"                \"There are: %(stripedMetaCount)s striped metas in \""},{"line_number":3071,"context_line":"                \"the extra specs\","},{"line_number":3072,"context_line":"                {\u0027stripedMetaCount\u0027: stripedMetaCount})"},{"line_number":3073,"context_line":"        except Exception:"},{"line_number":3074,"context_line":"            memberCount \u003d \u00271\u0027"},{"line_number":3075,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3076,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b884f90b","line":3073,"in_reply_to":"3a961159_f1930cfe","updated":"2014-12-30 18:24:37.000000000","message":"Agreed. This one doesn\u0027t have anything else to catch.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":3286,"context_line":"    def _create_clone_v2(self, repServiceInstanceName, cloneVolume,"},{"line_number":3287,"context_line":"                         sourceVolume, sourceInstance, isSnapshot,"},{"line_number":3288,"context_line":"                         extraSpecs):"},{"line_number":3289,"context_line":"        \"\"\"create a clone (v2)"},{"line_number":3290,"context_line":""},{"line_number":3291,"context_line":"        :param repServiceInstanceName: the replication service"},{"line_number":3292,"context_line":"        :param cloneVolume: the clone volume object"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_1199781f","line":3289,"updated":"2014-12-30 05:24:00.000000000","message":"Capital \u0027C\u0027 for create","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":3286,"context_line":"    def _create_clone_v2(self, repServiceInstanceName, cloneVolume,"},{"line_number":3287,"context_line":"                         sourceVolume, sourceInstance, isSnapshot,"},{"line_number":3288,"context_line":"                         extraSpecs):"},{"line_number":3289,"context_line":"        \"\"\"create a clone (v2)"},{"line_number":3290,"context_line":""},{"line_number":3291,"context_line":"        :param repServiceInstanceName: the replication service"},{"line_number":3292,"context_line":"        :param cloneVolume: the clone volume object"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f875a133","line":3289,"in_reply_to":"3a961159_1199781f","updated":"2014-12-30 18:24:37.000000000","message":"Ok","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4f42102fb3d5dba67b1f38a27aab139c96024dad","unresolved":false,"context_lines":[{"line_number":3440,"context_line":"        if mvInstanceName is not None:"},{"line_number":3441,"context_line":"            targetWwns \u003d self.masking.get_target_wwns("},{"line_number":3442,"context_line":"                self.conn, mvInstanceName)"},{"line_number":3443,"context_line":"            LOG.info(\"Target wwns in masking view %(maskingView)s: \""},{"line_number":3444,"context_line":"                     \"%(targetWwns)s\""},{"line_number":3445,"context_line":"                     % {\u0027maskingView\u0027: mvInstanceName,"},{"line_number":3446,"context_line":"                        \u0027targetWwns\u0027: str(targetWwns)})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_319e7408","line":3443,"updated":"2014-12-30 05:24:00.000000000","message":"requires _LI marker","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":3440,"context_line":"        if mvInstanceName is not None:"},{"line_number":3441,"context_line":"            targetWwns \u003d self.masking.get_target_wwns("},{"line_number":3442,"context_line":"                self.conn, mvInstanceName)"},{"line_number":3443,"context_line":"            LOG.info(\"Target wwns in masking view %(maskingView)s: \""},{"line_number":3444,"context_line":"                     \"%(targetWwns)s\""},{"line_number":3445,"context_line":"                     % {\u0027maskingView\u0027: mvInstanceName,"},{"line_number":3446,"context_line":"                        \u0027targetWwns\u0027: str(targetWwns)})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_38700940","line":3443,"in_reply_to":"3a961159_319e7408","updated":"2014-12-30 18:24:37.000000000","message":"Yes.","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":3442,"context_line":"                self.conn, mvInstanceName)"},{"line_number":3443,"context_line":"            LOG.info(\"Target wwns in masking view %(maskingView)s: \""},{"line_number":3444,"context_line":"                     \"%(targetWwns)s\""},{"line_number":3445,"context_line":"                     % {\u0027maskingView\u0027: mvInstanceName,"},{"line_number":3446,"context_line":"                        \u0027targetWwns\u0027: str(targetWwns)})"},{"line_number":3447,"context_line":"        return targetWwns"},{"line_number":3448,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_7891b145","line":3445,"updated":"2014-12-30 18:24:37.000000000","message":", instead of %","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3b9207644c00e6961fbea23f0152f315bc846530","unresolved":false,"context_lines":[{"line_number":3522,"context_line":""},{"line_number":3523,"context_line":"        cloneVolume[\u0027provider_location\u0027] \u003d six.text_type(cloneDict)"},{"line_number":3524,"context_line":""},{"line_number":3525,"context_line":"        syncInstanceName, storageSystemName \u003d (  # @UnusedVariable"},{"line_number":3526,"context_line":"            self._find_storage_sync_sv_sv(cloneVolume, sourceVolume, True))"},{"line_number":3527,"context_line":""},{"line_number":3528,"context_line":"        # detach/dissolve the clone/snap relationship"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b8b239e3","line":3525,"updated":"2014-12-30 18:24:37.000000000","message":"_","commit_id":"f4f3663a26d20d265365b0f8d596c00c51a27755"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"631dea4eccc5674561d152b2e4ae504dccf087da","unresolved":false,"context_lines":[{"line_number":3061,"context_line":"                \"There are: %(stripedMetaCount)s striped metas in \""},{"line_number":3062,"context_line":"                \"the extra specs.\","},{"line_number":3063,"context_line":"                {\u0027stripedMetaCount\u0027: stripedMetaCount})"},{"line_number":3064,"context_line":"        except Exception:"},{"line_number":3065,"context_line":"            memberCount \u003d \u00271\u0027"},{"line_number":3066,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3067,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_438e6c28","line":3064,"updated":"2015-01-15 07:47:54.000000000","message":"Missed changing Exception to IndexError, as discussed in last PS","commit_id":"34e05babdb85d712acee88ba8c712c86d09f5ad5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e3b93124e05b7ebd9ca7264194fedddb3299a7c7","unresolved":false,"context_lines":[{"line_number":3061,"context_line":"                \"There are: %(stripedMetaCount)s striped metas in \""},{"line_number":3062,"context_line":"                \"the extra specs.\","},{"line_number":3063,"context_line":"                {\u0027stripedMetaCount\u0027: stripedMetaCount})"},{"line_number":3064,"context_line":"        except Exception:"},{"line_number":3065,"context_line":"            memberCount \u003d \u00271\u0027"},{"line_number":3066,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3067,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_f5a53c03","line":3064,"in_reply_to":"3a961159_438e6c28","updated":"2015-01-15 14:40:04.000000000","message":"Sorry. Forgot about this one.  It is actually KeyError because it is a dictionary. Will fix in the next patch.","commit_id":"34e05babdb85d712acee88ba8c712c86d09f5ad5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d325354e15eb8e2b134ed0594f9ea573447f9e24","unresolved":false,"context_lines":[{"line_number":3061,"context_line":"                \"There are: %(stripedMetaCount)s striped metas in \""},{"line_number":3062,"context_line":"                \"the extra specs.\","},{"line_number":3063,"context_line":"                {\u0027stripedMetaCount\u0027: stripedMetaCount})"},{"line_number":3064,"context_line":"        except Exception:"},{"line_number":3065,"context_line":"            memberCount \u003d \u00271\u0027"},{"line_number":3066,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3067,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_2184b8af","line":3064,"in_reply_to":"3a961159_f5a53c03","updated":"2015-01-16 19:14:27.000000000","message":"Done","commit_id":"34e05babdb85d712acee88ba8c712c86d09f5ad5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acd461a9143ece0615f9eba57687d645d1a39b22","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        The volume may be already mapped, if this is so the deviceInfo tuple"},{"line_number":303,"context_line":"        is returned.  If the volume is not already mapped then we need to"},{"line_number":304,"context_line":"        gather information to either 1. Create an new masking view or 2.Add"},{"line_number":305,"context_line":"        the volume to to an existing storage group within an already existing"},{"line_number":306,"context_line":"        maskingview."},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_7263bab1","line":304,"updated":"2015-01-29 04:46:20.000000000","message":"space after \"2.\"","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        The volume may be already mapped, if this is so the deviceInfo tuple"},{"line_number":303,"context_line":"        is returned.  If the volume is not already mapped then we need to"},{"line_number":304,"context_line":"        gather information to either 1. Create an new masking view or 2.Add"},{"line_number":305,"context_line":"        the volume to to an existing storage group within an already existing"},{"line_number":306,"context_line":"        maskingview."},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_094a17ac","line":304,"in_reply_to":"fa81d914_7263bab1","updated":"2015-01-29 06:05:40.000000000","message":"Sure. Will remove it.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        The volume may be already mapped, if this is so the deviceInfo tuple"},{"line_number":303,"context_line":"        is returned.  If the volume is not already mapped then we need to"},{"line_number":304,"context_line":"        gather information to either 1. Create an new masking view or 2.Add"},{"line_number":305,"context_line":"        the volume to to an existing storage group within an already existing"},{"line_number":306,"context_line":"        maskingview."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        The naming convention is the following:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_8987e7d6","line":305,"updated":"2015-01-29 06:05:40.000000000","message":"Remove duplicate \"to\".","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acd461a9143ece0615f9eba57687d645d1a39b22","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        return deviceInfoDict"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def _attach_volume("},{"line_number":354,"context_line":"            self, volume, connector, extraSpecs, isLiveMigration\u003dNone):"},{"line_number":355,"context_line":"        \"\"\"Attach a volume to a host."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        If live migration is being undertaken then the volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b21452f6","line":354,"updated":"2015-01-29 04:46:20.000000000","message":"I prefer the previous formatting.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        return deviceInfoDict"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def _attach_volume("},{"line_number":354,"context_line":"            self, volume, connector, extraSpecs, isLiveMigration\u003dNone):"},{"line_number":355,"context_line":"        \"\"\"Attach a volume to a host."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        If live migration is being undertaken then the volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_c9d63fc3","line":354,"in_reply_to":"fa81d914_b21452f6","updated":"2015-01-29 06:05:40.000000000","message":"Ok. We\u0027ll change it back to the original style on the left hand side.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acd461a9143ece0615f9eba57687d645d1a39b22","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                \u0027location_info\u0027: location_info,"},{"line_number":571,"context_line":"                \u0027consistencygroup_support\u0027: True}"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        self.stats \u003d data"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        return self.stats"},{"line_number":576,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_72c1fae3","line":573,"updated":"2015-01-29 04:46:20.000000000","message":"self.stats doesn\u0027t seem to be used anywhere.   The classes that use common don\u0027t access it.  They also store the stats in self._stats","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                \u0027location_info\u0027: location_info,"},{"line_number":571,"context_line":"                \u0027consistencygroup_support\u0027: True}"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        self.stats \u003d data"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        return self.stats"},{"line_number":576,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_8971a7e2","line":573,"in_reply_to":"fa81d914_72c1fae3","updated":"2015-01-29 06:05:40.000000000","message":"You are right.  We can just do \"return data\" and remove \"self.stats\u003ddata\".","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acd461a9143ece0615f9eba57687d645d1a39b22","unresolved":false,"context_lines":[{"line_number":1361,"context_line":"            name \u003d \u0027world wide port names\u0027"},{"line_number":1362,"context_line":""},{"line_number":1363,"context_line":"        if foundinitiatornames is None or len(foundinitiatornames) \u003d\u003d 0:"},{"line_number":1364,"context_line":"            msg \u003d (_(\"Error finding %s.\"), name)"},{"line_number":1365,"context_line":"            LOG.error(msg)"},{"line_number":1366,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1367,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_06b5a430","line":1364,"updated":"2015-01-29 04:46:20.000000000","message":", isn\u0027t necessary here.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":1361,"context_line":"            name \u003d \u0027world wide port names\u0027"},{"line_number":1362,"context_line":""},{"line_number":1363,"context_line":"        if foundinitiatornames is None or len(foundinitiatornames) \u003d\u003d 0:"},{"line_number":1364,"context_line":"            msg \u003d (_(\"Error finding %s.\"), name)"},{"line_number":1365,"context_line":"            LOG.error(msg)"},{"line_number":1366,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1367,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_14278eb7","line":1364,"in_reply_to":"fa81d914_06b5a430","updated":"2015-01-29 06:05:40.000000000","message":"You are right. This should be a \"%\" instead of \",\".  The original code was correct.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acd461a9143ece0615f9eba57687d645d1a39b22","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"            cgInstanceName \u003d self._find_consistency_group("},{"line_number":2308,"context_line":"                replicationService, cgName)"},{"line_number":2309,"context_line":"            if cgInstanceName is None:"},{"line_number":2310,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\"),"},{"line_number":2311,"context_line":"                                     cgName)"},{"line_number":2312,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":2313,"context_line":"                    data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_c9355fdc","line":2310,"updated":"2015-01-29 04:46:20.000000000","message":"% here","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"            cgInstanceName \u003d self._find_consistency_group("},{"line_number":2308,"context_line":"                replicationService, cgName)"},{"line_number":2309,"context_line":"            if cgInstanceName is None:"},{"line_number":2310,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\"),"},{"line_number":2311,"context_line":"                                     cgName)"},{"line_number":2312,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":2313,"context_line":"                    data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_f42f5a86","line":2310,"in_reply_to":"fa81d914_c9355fdc","updated":"2015-01-29 06:05:40.000000000","message":"Good catch.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acd461a9143ece0615f9eba57687d645d1a39b22","unresolved":false,"context_lines":[{"line_number":2407,"context_line":"            cgInstanceName \u003d ("},{"line_number":2408,"context_line":"                self._find_consistency_group(replicationService, cgName))"},{"line_number":2409,"context_line":"            if cgInstanceName is None:"},{"line_number":2410,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\"), cgName)"},{"line_number":2411,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":2412,"context_line":"                    data\u003dexception_message)"},{"line_number":2413,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_49516f0d","line":2410,"updated":"2015-01-29 04:46:20.000000000","message":"% here","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":2407,"context_line":"            cgInstanceName \u003d ("},{"line_number":2408,"context_line":"                self._find_consistency_group(replicationService, cgName))"},{"line_number":2409,"context_line":"            if cgInstanceName is None:"},{"line_number":2410,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\"), cgName)"},{"line_number":2411,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":2412,"context_line":"                    data\u003dexception_message)"},{"line_number":2413,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b43c02c1","line":2410,"in_reply_to":"fa81d914_49516f0d","updated":"2015-01-29 06:05:40.000000000","message":"You are right.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":2476,"context_line":"                    self.conn, storageSystem)"},{"line_number":2477,"context_line":"                if repservice is None:"},{"line_number":2478,"context_line":"                    exception_message \u003d (_("},{"line_number":2479,"context_line":"                        \"Cannot find Replication service on system %s.\"),"},{"line_number":2480,"context_line":"                        storageSystem)"},{"line_number":2481,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":2482,"context_line":"                        data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_d44b3657","line":2479,"updated":"2015-01-29 06:05:40.000000000","message":"Should be %.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3029,"context_line":"            total_capacity_gb, free_capacity_gb \u003d ("},{"line_number":3030,"context_line":"                self.fast.get_capacities_associated_to_policy("},{"line_number":3031,"context_line":"                    self.conn, arrayName, fastPolicyName))"},{"line_number":3032,"context_line":"            LOG.info("},{"line_number":3033,"context_line":"                \"FAST: capacity stats for policy %(fastPolicyName)s on \""},{"line_number":3034,"context_line":"                \"array: %(arrayName)s total_capacity_gb\u003d%(total_capacity_gb)lu\""},{"line_number":3035,"context_line":"                \", free_capacity_gb\u003d%(free_capacity_gb)lu.\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_547d866d","line":3032,"updated":"2015-01-29 06:05:40.000000000","message":"Missing _LE","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3033,"context_line":"                \"FAST: capacity stats for policy %(fastPolicyName)s on \""},{"line_number":3034,"context_line":"                \"array: %(arrayName)s total_capacity_gb\u003d%(total_capacity_gb)lu\""},{"line_number":3035,"context_line":"                \", free_capacity_gb\u003d%(free_capacity_gb)lu.\""},{"line_number":3036,"context_line":"                % {\u0027fastPolicyName\u0027: fastPolicyName,"},{"line_number":3037,"context_line":"                   \u0027arrayName\u0027: arrayName,"},{"line_number":3038,"context_line":"                   \u0027total_capacity_gb\u0027: total_capacity_gb,"},{"line_number":3039,"context_line":"                   \u0027free_capacity_gb\u0027: free_capacity_gb})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_94961e93","line":3036,"updated":"2015-01-29 06:05:40.000000000","message":"% -\u003e ,","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3040,"context_line":"        else:  # NON-FAST"},{"line_number":3041,"context_line":"            total_capacity_gb, free_capacity_gb \u003d ("},{"line_number":3042,"context_line":"                self.utils.get_pool_capacities(self.conn, poolName, arrayName))"},{"line_number":3043,"context_line":"            LOG.info("},{"line_number":3044,"context_line":"                \"NON-FAST: capacity stats for pool %(poolName)s on array: \""},{"line_number":3045,"context_line":"                \"%(arrayName)s total_capacity_gb\u003d%(total_capacity_gb)lu, \""},{"line_number":3046,"context_line":"                \"free_capacity_gb\u003d%(free_capacity_gb)lu.\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b491629c","line":3043,"updated":"2015-01-29 06:05:40.000000000","message":"_LE","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3044,"context_line":"                \"NON-FAST: capacity stats for pool %(poolName)s on array: \""},{"line_number":3045,"context_line":"                \"%(arrayName)s total_capacity_gb\u003d%(total_capacity_gb)lu, \""},{"line_number":3046,"context_line":"                \"free_capacity_gb\u003d%(free_capacity_gb)lu.\""},{"line_number":3047,"context_line":"                % {\u0027poolName\u0027: poolName,"},{"line_number":3048,"context_line":"                   \u0027arrayName\u0027: arrayName,"},{"line_number":3049,"context_line":"                   \u0027total_capacity_gb\u0027: total_capacity_gb,"},{"line_number":3050,"context_line":"                   \u0027free_capacity_gb\u0027: free_capacity_gb})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_d4909697","line":3047,"updated":"2015-01-29 06:05:40.000000000","message":"% -\u003e ,","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3428,"context_line":"                storageSystemName \u003d sourceInstance[\u0027SystemName\u0027]"},{"line_number":3429,"context_line":"                self._add_clone_to_default_storage_group("},{"line_number":3430,"context_line":"                    fastPolicyName, storageSystemName, cloneDict, cloneName)"},{"line_number":3431,"context_line":"            LOG.info(\"Snapshot creation %(cloneName)s completed. \""},{"line_number":3432,"context_line":"                     \"Source Volume: %(sourceName)s.\""},{"line_number":3433,"context_line":"                     % {\u0027cloneName\u0027: cloneName,"},{"line_number":3434,"context_line":"                        \u0027sourceName\u0027: sourceName})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_f4e2fa2d","line":3431,"updated":"2015-01-29 06:05:40.000000000","message":"_LE","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3430,"context_line":"                    fastPolicyName, storageSystemName, cloneDict, cloneName)"},{"line_number":3431,"context_line":"            LOG.info(\"Snapshot creation %(cloneName)s completed. \""},{"line_number":3432,"context_line":"                     \"Source Volume: %(sourceName)s.\""},{"line_number":3433,"context_line":"                     % {\u0027cloneName\u0027: cloneName,"},{"line_number":3434,"context_line":"                        \u0027sourceName\u0027: sourceName})"},{"line_number":3435,"context_line":""},{"line_number":3436,"context_line":"            return rc, cloneDict"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_14d14e57","line":3433,"updated":"2015-01-29 06:05:40.000000000","message":"% -\u003e ,","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3463,"context_line":"        if mvInstanceName is not None:"},{"line_number":3464,"context_line":"            targetWwns \u003d self.masking.get_target_wwns("},{"line_number":3465,"context_line":"                self.conn, mvInstanceName)"},{"line_number":3466,"context_line":"            LOG.info(\"Target wwns in masking view %(maskingView)s: \""},{"line_number":3467,"context_line":"                     \"%(targetWwns)s.\""},{"line_number":3468,"context_line":"                     % {\u0027maskingView\u0027: mvInstanceName,"},{"line_number":3469,"context_line":"                        \u0027targetWwns\u0027: str(targetWwns)})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_34d49246","line":3466,"updated":"2015-01-29 06:05:40.000000000","message":"_LE","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3465,"context_line":"                self.conn, mvInstanceName)"},{"line_number":3466,"context_line":"            LOG.info(\"Target wwns in masking view %(maskingView)s: \""},{"line_number":3467,"context_line":"                     \"%(targetWwns)s.\""},{"line_number":3468,"context_line":"                     % {\u0027maskingView\u0027: mvInstanceName,"},{"line_number":3469,"context_line":"                        \u0027targetWwns\u0027: str(targetWwns)})"},{"line_number":3470,"context_line":"        return targetWwns"},{"line_number":3471,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_74ce0ab6","line":3468,"updated":"2015-01-29 06:05:40.000000000","message":"% -\u003e ,","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3501,"context_line":"    def _create_replica_v3("},{"line_number":3502,"context_line":"            self, repServiceInstanceName, cloneVolume,"},{"line_number":3503,"context_line":"            sourceVolume, sourceInstance, isSnapshot):"},{"line_number":3504,"context_line":"        \"\"\"V3 specific function, create replica for source volume,"},{"line_number":3505,"context_line":"        including clone and snapshot."},{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"        :param repServiceInstanceName: the replication service"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b446c21f","line":3504,"updated":"2015-01-29 06:05:40.000000000","message":"Period at the end of the first sentence.  Followed by an empty line.  Then more lines.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":3580,"context_line":"        cgInstanceName \u003d self._find_consistency_group("},{"line_number":3581,"context_line":"            replicationService, cgName)"},{"line_number":3582,"context_line":"        if cgInstanceName is None:"},{"line_number":3583,"context_line":"            exception_message \u003d (_(\"Cannot find CG group %s.\"), cgName)"},{"line_number":3584,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":3585,"context_line":"                data\u003dexception_message)"},{"line_number":3586,"context_line":"        memberInstanceNames \u003d self._get_members_of_replication_group("}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_3462d2ad","line":3583,"updated":"2015-01-29 06:05:40.000000000","message":"Should use %","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":787,"context_line":"            self.utils.find_controller_configuration_service("},{"line_number":788,"context_line":"                conn, storageSystemName))"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        # check to see what SG it is in."},{"line_number":791,"context_line":"        assocStorageGroupInstanceName \u003d ("},{"line_number":792,"context_line":"            self.utils.get_storage_group_from_volume(conn,"},{"line_number":793,"context_line":"                                                     volumeInstance.path))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_808d3a34","line":790,"updated":"2015-01-31 23:03:45.000000000","message":"Start capitalized if updating patch.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":787,"context_line":"            self.utils.find_controller_configuration_service("},{"line_number":788,"context_line":"                conn, storageSystemName))"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        # check to see what SG it is in."},{"line_number":791,"context_line":"        assocStorageGroupInstanceName \u003d ("},{"line_number":792,"context_line":"            self.utils.get_storage_group_from_volume(conn,"},{"line_number":793,"context_line":"                                                     volumeInstance.path))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6b3ca794","line":790,"in_reply_to":"da86d52c_808d3a34","updated":"2015-02-01 22:38:37.000000000","message":"Sure.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":2217,"context_line":"                if repservice is None:"},{"line_number":2218,"context_line":"                    exception_message \u003d (_LE("},{"line_number":2219,"context_line":"                        \"Cannot find Replication Service to\""},{"line_number":2220,"context_line":"                        \" delete snapshot %s.\"),"},{"line_number":2221,"context_line":"                        snapshotname)"},{"line_number":2222,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":2223,"context_line":"                        data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_a0995e70","line":2220,"updated":"2015-01-31 23:03:45.000000000","message":"Need % here.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":2217,"context_line":"                if repservice is None:"},{"line_number":2218,"context_line":"                    exception_message \u003d (_LE("},{"line_number":2219,"context_line":"                        \"Cannot find Replication Service to\""},{"line_number":2220,"context_line":"                        \" delete snapshot %s.\"),"},{"line_number":2221,"context_line":"                        snapshotname)"},{"line_number":2222,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":2223,"context_line":"                        data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_8b41db0d","line":2220,"in_reply_to":"da86d52c_a0995e70","updated":"2015-02-01 22:38:37.000000000","message":"You are right.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":3085,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3086,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"},{"line_number":3087,"context_line":"            LOG.debug(\"StripedMetaCount is not in the extra specs.\")"},{"line_number":3088,"context_line":"            pass"},{"line_number":3089,"context_line":""},{"line_number":3090,"context_line":"        poolName \u003d self.utils.parse_pool_name_from_file(configurationFile)"},{"line_number":3091,"context_line":"        if poolName is None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_00a06a8f","line":3088,"updated":"2015-01-31 23:03:45.000000000","message":"pass isn\u0027t needed here.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":3085,"context_line":"            extraSpecs[MEMBERCOUNT] \u003d memberCount"},{"line_number":3086,"context_line":"            extraSpecs[COMPOSITETYPE] \u003d CONCATENATED"},{"line_number":3087,"context_line":"            LOG.debug(\"StripedMetaCount is not in the extra specs.\")"},{"line_number":3088,"context_line":"            pass"},{"line_number":3089,"context_line":""},{"line_number":3090,"context_line":"        poolName \u003d self.utils.parse_pool_name_from_file(configurationFile)"},{"line_number":3091,"context_line":"        if poolName is None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_ab469f21","line":3088,"in_reply_to":"da86d52c_00a06a8f","updated":"2015-02-01 22:38:37.000000000","message":"Yes.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":3222,"context_line":"                         \u0027fastPolicyName\u0027: fastPolicyName})"},{"line_number":3223,"context_line":""},{"line_number":3224,"context_line":"            LOG.error(_LE(\"Exception: %s.\"), e)"},{"line_number":3225,"context_line":"            errorMessage \u003d (_(\"Failed to delete volume %(volumeName)s.\"),"},{"line_number":3226,"context_line":"                            {\u0027volumeName\u0027: volumeName})"},{"line_number":3227,"context_line":"            LOG.error(errorMessage)"},{"line_number":3228,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derrorMessage)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_20ad6e89","line":3225,"updated":"2015-01-31 23:03:45.000000000","message":"Need % instead of , in this case.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":3222,"context_line":"                         \u0027fastPolicyName\u0027: fastPolicyName})"},{"line_number":3223,"context_line":""},{"line_number":3224,"context_line":"            LOG.error(_LE(\"Exception: %s.\"), e)"},{"line_number":3225,"context_line":"            errorMessage \u003d (_(\"Failed to delete volume %(volumeName)s.\"),"},{"line_number":3226,"context_line":"                            {\u0027volumeName\u0027: volumeName})"},{"line_number":3227,"context_line":"            LOG.error(errorMessage)"},{"line_number":3228,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derrorMessage)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_cb4af326","line":3225,"in_reply_to":"da86d52c_20ad6e89","updated":"2015-02-01 22:38:37.000000000","message":"You are right.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":3286,"context_line":"                    storageGroupName)"},{"line_number":3287,"context_line":""},{"line_number":3288,"context_line":"            LOG.error(_LE(\"Exception: %s.\"), e)"},{"line_number":3289,"context_line":"            errorMessage \u003d (_(\"Failed to delete volume %(volumeName)s.\"),"},{"line_number":3290,"context_line":"                            {\u0027volumeName\u0027: volumeName})"},{"line_number":3291,"context_line":"            LOG.error(errorMessage)"},{"line_number":3292,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derrorMessage)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_40aa6271","line":3289,"updated":"2015-01-31 23:03:45.000000000","message":"Change , to %.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":3286,"context_line":"                    storageGroupName)"},{"line_number":3287,"context_line":""},{"line_number":3288,"context_line":"            LOG.error(_LE(\"Exception: %s.\"), e)"},{"line_number":3289,"context_line":"            errorMessage \u003d (_(\"Failed to delete volume %(volumeName)s.\"),"},{"line_number":3290,"context_line":"                            {\u0027volumeName\u0027: volumeName})"},{"line_number":3291,"context_line":"            LOG.error(errorMessage)"},{"line_number":3292,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derrorMessage)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_eb47b71b","line":3289,"in_reply_to":"da86d52c_40aa6271","updated":"2015-02-01 22:38:37.000000000","message":"Sure.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"35cb6fd27f55c32417d23b7559383f866886186d","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        if self.conn is None:"},{"line_number":533,"context_line":"            self._set_ecom_credentials(emcConfigFileName)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        arrayName \u003d self.utils.parse_array_name_from_file(emcConfigFileName)"},{"line_number":536,"context_line":"        if arrayName is None:"},{"line_number":537,"context_line":"            LOG.error(_LE("},{"line_number":538,"context_line":"                \"Array Serial Number %(arrayName)s must be in the file \""}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_eec30555","line":535,"updated":"2015-02-03 04:04:29.000000000","message":"Is it really necessary to parse out the array name from the config file every time get_volume_stats is called?   Why not read this in at driver startup time?","commit_id":"cf86243e3a93fc8d085641a3576e23df5cc9f16d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca3f656d5a3c7a22e9cae61e8069d29e1d1a17a3","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        if self.conn is None:"},{"line_number":533,"context_line":"            self._set_ecom_credentials(emcConfigFileName)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        arrayName \u003d self.utils.parse_array_name_from_file(emcConfigFileName)"},{"line_number":536,"context_line":"        if arrayName is None:"},{"line_number":537,"context_line":"            LOG.error(_LE("},{"line_number":538,"context_line":"                \"Array Serial Number %(arrayName)s must be in the file \""}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_84596e5c","line":535,"in_reply_to":"da86d52c_eec30555","updated":"2015-02-03 16:53:43.000000000","message":"Good suggestion. We\u0027ll move the parsing code in a separate function and call it in the __init__().","commit_id":"cf86243e3a93fc8d085641a3576e23df5cc9f16d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"35cb6fd27f55c32417d23b7559383f866886186d","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                {\u0027arrayName\u0027: arrayName,"},{"line_number":541,"context_line":"                 \u0027emcConfigFileName\u0027: emcConfigFileName})"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        poolName \u003d self.utils.parse_pool_name_from_file(emcConfigFileName)"},{"line_number":544,"context_line":"        if poolName is None:"},{"line_number":545,"context_line":"            LOG.error(_LE("},{"line_number":546,"context_line":"                \"PoolName %(poolName)s must be in the file \""}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_8e952942","line":543,"updated":"2015-02-03 04:04:29.000000000","message":"same?","commit_id":"cf86243e3a93fc8d085641a3576e23df5cc9f16d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca3f656d5a3c7a22e9cae61e8069d29e1d1a17a3","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                {\u0027arrayName\u0027: arrayName,"},{"line_number":541,"context_line":"                 \u0027emcConfigFileName\u0027: emcConfigFileName})"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        poolName \u003d self.utils.parse_pool_name_from_file(emcConfigFileName)"},{"line_number":544,"context_line":"        if poolName is None:"},{"line_number":545,"context_line":"            LOG.error(_LE("},{"line_number":546,"context_line":"                \"PoolName %(poolName)s must be in the file \""}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_2440c255","line":543,"in_reply_to":"da86d52c_8e952942","updated":"2015-02-03 16:53:43.000000000","message":"same","commit_id":"cf86243e3a93fc8d085641a3576e23df5cc9f16d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"35cb6fd27f55c32417d23b7559383f866886186d","unresolved":false,"context_lines":[{"line_number":565,"context_line":"                \u0027QoS_support\u0027: False,"},{"line_number":566,"context_line":"                \u0027volume_backend_name\u0027: backendName or self.__class__.__name__,"},{"line_number":567,"context_line":"                \u0027vendor_name\u0027: \"EMC\","},{"line_number":568,"context_line":"                \u0027driver_version\u0027: \u00272.1\u0027,"},{"line_number":569,"context_line":"                \u0027storage_protocol\u0027: \u0027unknown\u0027,"},{"line_number":570,"context_line":"                \u0027location_info\u0027: location_info,"},{"line_number":571,"context_line":"                \u0027consistencygroup_support\u0027: True}"}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_cedba119","line":568,"updated":"2015-02-03 04:04:29.000000000","message":"shouldn\u0027t the driver_version be set in the driver, not the common?  The FC driver version is actually 2.1.0, but this reports 2.1","commit_id":"cf86243e3a93fc8d085641a3576e23df5cc9f16d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca3f656d5a3c7a22e9cae61e8069d29e1d1a17a3","unresolved":false,"context_lines":[{"line_number":565,"context_line":"                \u0027QoS_support\u0027: False,"},{"line_number":566,"context_line":"                \u0027volume_backend_name\u0027: backendName or self.__class__.__name__,"},{"line_number":567,"context_line":"                \u0027vendor_name\u0027: \"EMC\","},{"line_number":568,"context_line":"                \u0027driver_version\u0027: \u00272.1\u0027,"},{"line_number":569,"context_line":"                \u0027storage_protocol\u0027: \u0027unknown\u0027,"},{"line_number":570,"context_line":"                \u0027location_info\u0027: location_info,"},{"line_number":571,"context_line":"                \u0027consistencygroup_support\u0027: True}"}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_4cc5e68c","line":568,"in_reply_to":"da86d52c_cedba119","updated":"2015-02-03 16:53:43.000000000","message":"This will be over-written by the FC driver version. So I think this is just a default value. We can keep the original value of 2.0.","commit_id":"cf86243e3a93fc8d085641a3576e23df5cc9f16d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c6ec80605e32a86e54bcd605afbdd59a49835634","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                \u0027volume_backend_name\u0027: self.pool_info[\u0027backend_name\u0027]"},{"line_number":591,"context_line":"                or self.__class__.__name__,"},{"line_number":592,"context_line":"                \u0027vendor_name\u0027: \"EMC\","},{"line_number":593,"context_line":"                \u0027driver_version\u0027: \u00272.1\u0027,"},{"line_number":594,"context_line":"                \u0027storage_protocol\u0027: \u0027unknown\u0027,"},{"line_number":595,"context_line":"                \u0027location_info\u0027: location_info,"},{"line_number":596,"context_line":"                \u0027consistencygroup_support\u0027: True}"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_a91fb459","line":593,"updated":"2015-02-06 04:02:04.000000000","message":"I\u0027d suggest self.VERSION","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"83d84d6aa73366f55dd33e22a4c98a60481f0665","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                \u0027volume_backend_name\u0027: self.pool_info[\u0027backend_name\u0027]"},{"line_number":591,"context_line":"                or self.__class__.__name__,"},{"line_number":592,"context_line":"                \u0027vendor_name\u0027: \"EMC\","},{"line_number":593,"context_line":"                \u0027driver_version\u0027: \u00272.1\u0027,"},{"line_number":594,"context_line":"                \u0027storage_protocol\u0027: \u0027unknown\u0027,"},{"line_number":595,"context_line":"                \u0027location_info\u0027: location_info,"},{"line_number":596,"context_line":"                \u0027consistencygroup_support\u0027: True}"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_69777ca0","line":593,"in_reply_to":"da86d52c_a91fb459","updated":"2015-02-06 04:04:47.000000000","message":"Sure. Will change.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"}],"cinder/volume/drivers/emc/emc_vmax_https.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 - 2014 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":10,"id":"fa81d914_1406aece","line":1,"updated":"2015-01-29 06:05:40.000000000","message":"2015","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if not pywbemAvailable:"},{"line_number":94,"context_line":"            LOG.info(_LI("},{"line_number":95,"context_line":"                \u0027Module PyWBEM not installed.  \u0027"},{"line_number":96,"context_line":"                \u0027Install PyWBEM using the python-pywbem package.\u0027))"},{"line_number":97,"context_line":"        if six.PY3:"},{"line_number":98,"context_line":"            excp_lst \u003d (TypeError, ssl.SSLError)"},{"line_number":99,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_83ba666c","line":96,"updated":"2015-01-29 05:01:33.000000000","message":"Why are you waiting until here to throw this?  Did you just used to throw this right at the check for its existence?","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if not pywbemAvailable:"},{"line_number":94,"context_line":"            LOG.info(_LI("},{"line_number":95,"context_line":"                \u0027Module PyWBEM not installed.  \u0027"},{"line_number":96,"context_line":"                \u0027Install PyWBEM using the python-pywbem package.\u0027))"},{"line_number":97,"context_line":"        if six.PY3:"},{"line_number":98,"context_line":"            excp_lst \u003d (TypeError, ssl.SSLError)"},{"line_number":99,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_74e1aafd","line":96,"in_reply_to":"fa81d914_83ba666c","updated":"2015-01-29 06:05:40.000000000","message":"We did the same thing in other places. We need to sync up to make sure we are talking about the same thing.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            # so to be compatible, we report the same kind as under"},{"line_number":113,"context_line":"            # Python2"},{"line_number":114,"context_line":"        except excp_lst as e:"},{"line_number":115,"context_line":"            raise pywbem.cim_http.Error(str(e))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @staticmethod"},{"line_number":118,"context_line":"    def host_matches_cert(host, x509):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_434eae97","line":115,"updated":"2015-01-29 05:01:33.000000000","message":"Please don\u0027t use str here.  six.text_type would be better.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            # so to be compatible, we report the same kind as under"},{"line_number":113,"context_line":"            # Python2"},{"line_number":114,"context_line":"        except excp_lst as e:"},{"line_number":115,"context_line":"            raise pywbem.cim_http.Error(str(e))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @staticmethod"},{"line_number":118,"context_line":"    def host_matches_cert(host, x509):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_d4f176ce","line":115,"in_reply_to":"fa81d914_434eae97","updated":"2015-01-29 06:05:40.000000000","message":"Good catch.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        for i in range(x509.get_extension_count()):"},{"line_number":143,"context_line":"            ext \u003d x509.get_extension(i)"},{"line_number":144,"context_line":"            if ext.get_short_name() \u003d\u003d b\u0027subjectAltName\u0027:"},{"line_number":145,"context_line":"                san_list \u003d str(ext)"},{"line_number":146,"context_line":"                for san in \u0027\u0027.join(san_list.split()).split(\u0027,\u0027):"},{"line_number":147,"context_line":"                    if san.startswith(\u0027DNS:\u0027):"},{"line_number":148,"context_line":"                        if check_match(san.split(\u0027:\u0027, 1)[1]):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_e32fa29f","line":145,"updated":"2015-01-29 05:01:33.000000000","message":"best to use six.text_type here as well.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        for i in range(x509.get_extension_count()):"},{"line_number":143,"context_line":"            ext \u003d x509.get_extension(i)"},{"line_number":144,"context_line":"            if ext.get_short_name() \u003d\u003d b\u0027subjectAltName\u0027:"},{"line_number":145,"context_line":"                san_list \u003d str(ext)"},{"line_number":146,"context_line":"                for san in \u0027\u0027.join(san_list.split()).split(\u0027,\u0027):"},{"line_number":147,"context_line":"                    if san.startswith(\u0027DNS:\u0027):"},{"line_number":148,"context_line":"                        if check_match(san.split(\u0027:\u0027, 1)[1]):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_14bb0ee6","line":145,"in_reply_to":"fa81d914_e32fa29f","updated":"2015-01-29 06:05:40.000000000","message":"Yes.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                            return True"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # Server certificate does not match host"},{"line_number":152,"context_line":"        msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":153,"context_line":"               \u0027CommonName \"%s\"\u0027 % (host, common_name))"},{"line_number":154,"context_line":"        if san_list is not None:"},{"line_number":155,"context_line":"            msg \u003d msg + \u0027, subjectAltName \"%s\"\u0027 % san_list"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_264e2870","line":152,"updated":"2015-01-29 05:01:33.000000000","message":"Need _() here.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                            return True"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # Server certificate does not match host"},{"line_number":152,"context_line":"        msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":153,"context_line":"               \u0027CommonName \"%s\"\u0027 % (host, common_name))"},{"line_number":154,"context_line":"        if san_list is not None:"},{"line_number":155,"context_line":"            msg \u003d msg + \u0027, subjectAltName \"%s\"\u0027 % san_list"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_34be52d5","line":152,"in_reply_to":"fa81d914_264e2870","updated":"2015-01-29 06:05:40.000000000","message":"Sure.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # Server certificate does not match host"},{"line_number":152,"context_line":"        msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":153,"context_line":"               \u0027CommonName \"%s\"\u0027 % (host, common_name))"},{"line_number":154,"context_line":"        if san_list is not None:"},{"line_number":155,"context_line":"            msg \u003d msg + \u0027, subjectAltName \"%s\"\u0027 % san_list"},{"line_number":156,"context_line":"        raise pywbem.cim_http.AuthError(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_f4c3da54","line":153,"updated":"2015-01-29 06:05:40.000000000","message":"Also should use a dict for variables.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":153,"context_line":"               \u0027CommonName \"%s\"\u0027 % (host, common_name))"},{"line_number":154,"context_line":"        if san_list is not None:"},{"line_number":155,"context_line":"            msg \u003d msg + \u0027, subjectAltName \"%s\"\u0027 % san_list"},{"line_number":156,"context_line":"        raise pywbem.cim_http.AuthError(msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def verify_callback(self, connection, x509, errnum,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_c63c6cc2","line":155,"updated":"2015-01-29 05:01:33.000000000","message":"Please don\u0027t use +.  Need to figure out a way to do this without doing +.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":153,"context_line":"               \u0027CommonName \"%s\"\u0027 % (host, common_name))"},{"line_number":154,"context_line":"        if san_list is not None:"},{"line_number":155,"context_line":"            msg \u003d msg + \u0027, subjectAltName \"%s\"\u0027 % san_list"},{"line_number":156,"context_line":"        raise pywbem.cim_http.AuthError(msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def verify_callback(self, connection, x509, errnum,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_54aca6a0","line":155,"in_reply_to":"fa81d914_c63c6cc2","updated":"2015-01-29 06:05:40.000000000","message":"Sure.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def verify_callback(self, connection, x509, errnum,"},{"line_number":159,"context_line":"                        depth, preverify_ok):"},{"line_number":160,"context_line":"        if x509.has_expired():"},{"line_number":161,"context_line":"            msg \u003d \"SSL Certificate expired on \u0027%s\u0027\" % x509.get_notAfter()"},{"line_number":162,"context_line":"            raise pywbem.cim_http.AuthError(msg)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        if depth \u003d\u003d 0 and preverify_ok:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_0647644c","line":161,"updated":"2015-01-29 05:01:33.000000000","message":"_()","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def verify_callback(self, connection, x509, errnum,"},{"line_number":159,"context_line":"                        depth, preverify_ok):"},{"line_number":160,"context_line":"        if x509.has_expired():"},{"line_number":161,"context_line":"            msg \u003d \"SSL Certificate expired on \u0027%s\u0027\" % x509.get_notAfter()"},{"line_number":162,"context_line":"            raise pywbem.cim_http.AuthError(msg)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        if depth \u003d\u003d 0 and preverify_ok:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_348c9235","line":161,"in_reply_to":"fa81d914_0647644c","updated":"2015-01-29 06:05:40.000000000","message":"Ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            try:"},{"line_number":185,"context_line":"                self.context.use_certificate_file(self.cert_file)"},{"line_number":186,"context_line":"            except Exception as e:"},{"line_number":187,"context_line":"                msg \u003d (\u0027Unable to load cert from \"%s\" %s\u0027"},{"line_number":188,"context_line":"                       % (self.cert_file, e))"},{"line_number":189,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":190,"context_line":"            if self.key_file is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_e66250d7","line":187,"updated":"2015-01-29 05:01:33.000000000","message":"_()","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            try:"},{"line_number":185,"context_line":"                self.context.use_certificate_file(self.cert_file)"},{"line_number":186,"context_line":"            except Exception as e:"},{"line_number":187,"context_line":"                msg \u003d (\u0027Unable to load cert from \"%s\" %s\u0027"},{"line_number":188,"context_line":"                       % (self.cert_file, e))"},{"line_number":189,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":190,"context_line":"            if self.key_file is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_14906e42","line":187,"in_reply_to":"fa81d914_e66250d7","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                self.context.use_certificate_file(self.cert_file)"},{"line_number":186,"context_line":"            except Exception as e:"},{"line_number":187,"context_line":"                msg \u003d (\u0027Unable to load cert from \"%s\" %s\u0027"},{"line_number":188,"context_line":"                       % (self.cert_file, e))"},{"line_number":189,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":190,"context_line":"            if self.key_file is None:"},{"line_number":191,"context_line":"                # We support having key and cert in same file"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_a6af78e2","line":188,"updated":"2015-01-29 05:01:33.000000000","message":"Should be using a dict {}","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                self.context.use_certificate_file(self.cert_file)"},{"line_number":186,"context_line":"            except Exception as e:"},{"line_number":187,"context_line":"                msg \u003d (\u0027Unable to load cert from \"%s\" %s\u0027"},{"line_number":188,"context_line":"                       % (self.cert_file, e))"},{"line_number":189,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":190,"context_line":"            if self.key_file is None:"},{"line_number":191,"context_line":"                # We support having key and cert in same file"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_94a37e9d","line":188,"in_reply_to":"fa81d914_a6af78e2","updated":"2015-01-29 06:05:40.000000000","message":"yes","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                try:"},{"line_number":193,"context_line":"                    self.context.use_privatekey_file(self.cert_file)"},{"line_number":194,"context_line":"                except Exception as e:"},{"line_number":195,"context_line":"                    msg \u003d (\u0027No key file specified and unable to load key \u0027"},{"line_number":196,"context_line":"                           \u0027from \"%s\" %s\u0027 % (self.cert_file, e))"},{"line_number":197,"context_line":"                    raise pywbem.cim_http.AuthError(msg)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_469f9cb4","line":195,"updated":"2015-01-29 05:01:33.000000000","message":"_()","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                try:"},{"line_number":193,"context_line":"                    self.context.use_privatekey_file(self.cert_file)"},{"line_number":194,"context_line":"                except Exception as e:"},{"line_number":195,"context_line":"                    msg \u003d (\u0027No key file specified and unable to load key \u0027"},{"line_number":196,"context_line":"                           \u0027from \"%s\" %s\u0027 % (self.cert_file, e))"},{"line_number":197,"context_line":"                    raise pywbem.cim_http.AuthError(msg)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_34bad2c0","line":195,"in_reply_to":"fa81d914_469f9cb4","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                    self.context.use_privatekey_file(self.cert_file)"},{"line_number":194,"context_line":"                except Exception as e:"},{"line_number":195,"context_line":"                    msg \u003d (\u0027No key file specified and unable to load key \u0027"},{"line_number":196,"context_line":"                           \u0027from \"%s\" %s\u0027 % (self.cert_file, e))"},{"line_number":197,"context_line":"                    raise pywbem.cim_http.AuthError(msg)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        if self.key_file:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_c6aaacd1","line":196,"updated":"2015-01-29 05:01:33.000000000","message":"Same here as above.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                    self.context.use_privatekey_file(self.cert_file)"},{"line_number":194,"context_line":"                except Exception as e:"},{"line_number":195,"context_line":"                    msg \u003d (\u0027No key file specified and unable to load key \u0027"},{"line_number":196,"context_line":"                           \u0027from \"%s\" %s\u0027 % (self.cert_file, e))"},{"line_number":197,"context_line":"                    raise pywbem.cim_http.AuthError(msg)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        if self.key_file:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b4c5e23e","line":196,"in_reply_to":"fa81d914_c6aaacd1","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                self.context.use_privatekey_file(self.key_file)"},{"line_number":202,"context_line":"            except Exception as e:"},{"line_number":203,"context_line":"                msg \u003d (\u0027Unable to load key from \"%s\" %s\u0027"},{"line_number":204,"context_line":"                       % (self.key_file, e))"},{"line_number":205,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if self.ca_certs:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_26838857","line":204,"updated":"2015-01-29 05:01:33.000000000","message":"Same comments here.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                self.context.use_privatekey_file(self.key_file)"},{"line_number":202,"context_line":"            except Exception as e:"},{"line_number":203,"context_line":"                msg \u003d (\u0027Unable to load key from \"%s\" %s\u0027"},{"line_number":204,"context_line":"                       % (self.key_file, e))"},{"line_number":205,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if self.ca_certs:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_14deae11","line":204,"in_reply_to":"fa81d914_26838857","updated":"2015-01-29 06:05:40.000000000","message":"sure, _(","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                self.context.load_verify_locations(to_bytes(self.ca_certs))"},{"line_number":210,"context_line":"            except Exception as e:"},{"line_number":211,"context_line":"                msg \u003d (\u0027Unable to load CA from \"%s\" %s\u0027"},{"line_number":212,"context_line":"                       % (self.ca_certs, e))"},{"line_number":213,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            self.context.set_default_verify_paths()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_667d806e","line":212,"updated":"2015-01-29 05:01:33.000000000","message":"And here.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                self.context.load_verify_locations(to_bytes(self.ca_certs))"},{"line_number":210,"context_line":"            except Exception as e:"},{"line_number":211,"context_line":"                msg \u003d (\u0027Unable to load CA from \"%s\" %s\u0027"},{"line_number":212,"context_line":"                       % (self.ca_certs, e))"},{"line_number":213,"context_line":"                raise pywbem.cim_http.AuthError(msg)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            self.context.set_default_verify_paths()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_74eb6ab0","line":212,"in_reply_to":"fa81d914_667d806e","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    elif no_verification:"},{"line_number":270,"context_line":"        ca_certs \u003d None"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    # local \u003d False"},{"line_number":273,"context_line":"    if use_ssl:"},{"line_number":274,"context_line":"        h \u003d HTTPSConnection("},{"line_number":275,"context_line":"            host,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_06ba040a","line":272,"updated":"2015-01-29 05:01:33.000000000","message":"Looks like this should maybe be removed?","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    elif no_verification:"},{"line_number":270,"context_line":"        ca_certs \u003d None"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    # local \u003d False"},{"line_number":273,"context_line":"    if use_ssl:"},{"line_number":274,"context_line":"        h \u003d HTTPSConnection("},{"line_number":275,"context_line":"            host,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b4cc0263","line":272,"in_reply_to":"fa81d914_06ba040a","updated":"2015-01-29 06:05:40.000000000","message":"You are right.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    def verify_callback(self, connection, x509, errnum,"},{"line_number":164,"context_line":"                        depth, preverify_ok):"},{"line_number":165,"context_line":"        if x509.has_expired():"},{"line_number":166,"context_line":"            msg \u003d msg \u003d (_(\"SSL Certificate expired on %s.\")"},{"line_number":167,"context_line":"                         % x509.get_notAfter())"},{"line_number":168,"context_line":"            raise pywbem.cim_http.AuthError(msg)"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c0b572ce","line":166,"updated":"2015-01-31 23:03:45.000000000","message":"Copy paste error?\n\nmsg \u003d msg \u003d ...","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    def verify_callback(self, connection, x509, errnum,"},{"line_number":164,"context_line":"                        depth, preverify_ok):"},{"line_number":165,"context_line":"        if x509.has_expired():"},{"line_number":166,"context_line":"            msg \u003d msg \u003d (_(\"SSL Certificate expired on %s.\")"},{"line_number":167,"context_line":"                         % x509.get_notAfter())"},{"line_number":168,"context_line":"            raise pywbem.cim_http.AuthError(msg)"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_0b55ebc5","line":166,"in_reply_to":"da86d52c_c0b572ce","updated":"2015-02-01 22:38:37.000000000","message":"Nice catch. Need to remove redundant \"msg \u003d\".","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"}],"cinder/volume/drivers/emc/emc_vmax_masking.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                if assocStorageGroupName !\u003d defaultSgGroupName:"},{"line_number":89,"context_line":"                    LOG.warn(_LW("},{"line_number":90,"context_line":"                        \"Volume: %(volumeName)s Does not belong \""},{"line_number":91,"context_line":"                        \"to storage storage group %(defaultSgGroupName)s.\"),"},{"line_number":92,"context_line":"                        {\u0027volumeName\u0027: volumeName,"},{"line_number":93,"context_line":"                         \u0027defaultSgGroupName\u0027: defaultSgGroupName})"},{"line_number":94,"context_line":"                defaultStorageGroupInstanceName \u003d assocStorageGroupInstanceName"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_06c04429","line":91,"updated":"2015-01-29 05:01:33.000000000","message":"\u0027storage\u0027 is repeated.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                if assocStorageGroupName !\u003d defaultSgGroupName:"},{"line_number":89,"context_line":"                    LOG.warn(_LW("},{"line_number":90,"context_line":"                        \"Volume: %(volumeName)s Does not belong \""},{"line_number":91,"context_line":"                        \"to storage storage group %(defaultSgGroupName)s.\"),"},{"line_number":92,"context_line":"                        {\u0027volumeName\u0027: volumeName,"},{"line_number":93,"context_line":"                         \u0027defaultSgGroupName\u0027: defaultSgGroupName})"},{"line_number":94,"context_line":"                defaultStorageGroupInstanceName \u003d assocStorageGroupInstanceName"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_54ff4667","line":91,"in_reply_to":"fa81d914_06c04429","updated":"2015-01-29 06:05:40.000000000","message":"You are right. duplicate \"storage\".","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            exceptionMessage \u003d (_("},{"line_number":153,"context_line":"                \"Failed to get, create or add volume %(volumeName)s \""},{"line_number":154,"context_line":"                \"to masking view %(maskingViewName)s \""},{"line_number":155,"context_line":"                \"The error message received was %(errorMessage)s.\")"},{"line_number":156,"context_line":"                % {\u0027maskingViewName\u0027: maskingViewName,"},{"line_number":157,"context_line":"                   \u0027volumeName\u0027: volumeName,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_e6db3019","line":154,"updated":"2015-01-29 05:01:33.000000000","message":"Should have \u0027.\u0027 at end of this line.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            exceptionMessage \u003d (_("},{"line_number":153,"context_line":"                \"Failed to get, create or add volume %(volumeName)s \""},{"line_number":154,"context_line":"                \"to masking view %(maskingViewName)s \""},{"line_number":155,"context_line":"                \"The error message received was %(errorMessage)s.\")"},{"line_number":156,"context_line":"                % {\u0027maskingViewName\u0027: maskingViewName,"},{"line_number":157,"context_line":"                   \u0027volumeName\u0027: volumeName,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_94f8de7d","line":154,"in_reply_to":"fa81d914_e6db3019","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    def _check_initiator_group("},{"line_number":347,"context_line":"            self, conn, controllerConfigService, igGroupName,"},{"line_number":348,"context_line":"            connector, storageSystemName):"},{"line_number":349,"context_line":"        \"\"\"Check that initiator group can be either got or created."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        :param conn - the ecom connection"},{"line_number":352,"context_line":"        :param controllerConfigService - controller configuration service"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_8687d4d6","line":349,"updated":"2015-01-29 05:01:33.000000000","message":"got -\u003e retrieved","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    def _check_initiator_group("},{"line_number":347,"context_line":"            self, conn, controllerConfigService, igGroupName,"},{"line_number":348,"context_line":"            connector, storageSystemName):"},{"line_number":349,"context_line":"        \"\"\"Check that initiator group can be either got or created."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        :param conn - the ecom connection"},{"line_number":352,"context_line":"        :param controllerConfigService - controller configuration service"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b4f3229e","line":349,"in_reply_to":"fa81d914_8687d4d6","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            self.add_volume_to_storage_group("},{"line_number":450,"context_line":"                conn, controllerConfigService,"},{"line_number":451,"context_line":"                storageGroupInstanceName, volumeInstance, volumeName,"},{"line_number":452,"context_line":"                sgGroupName, storageSystemName)"},{"line_number":453,"context_line":"            if not self._is_volume_in_storage_group("},{"line_number":454,"context_line":"                    conn, storageGroupInstanceName,"},{"line_number":455,"context_line":"                    volumeInstance):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_a6dbf8eb","line":452,"updated":"2015-01-29 05:01:33.000000000","message":"Might be good to have a log.info or log.debug message here at least if successful .","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            self.add_volume_to_storage_group("},{"line_number":450,"context_line":"                conn, controllerConfigService,"},{"line_number":451,"context_line":"                storageGroupInstanceName, volumeInstance, volumeName,"},{"line_number":452,"context_line":"                sgGroupName, storageSystemName)"},{"line_number":453,"context_line":"            if not self._is_volume_in_storage_group("},{"line_number":454,"context_line":"                    conn, storageGroupInstanceName,"},{"line_number":455,"context_line":"                    volumeInstance):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_943ffe24","line":452,"in_reply_to":"fa81d914_a6dbf8eb","updated":"2015-01-29 06:05:40.000000000","message":"ok","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b3ef4d301fd55ea17dd52b8d3a20c32cfc573d9b","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                    conn, storageGroupInstanceName,"},{"line_number":455,"context_line":"                    volumeInstance):"},{"line_number":456,"context_line":"                msg \u003d (_LE(\"Volume: %(volumeName)s was not added \""},{"line_number":457,"context_line":"                           \"to storage group %(sgGroupName)s.\"),"},{"line_number":458,"context_line":"                       {\u0027volumeName\u0027: volumeName,"},{"line_number":459,"context_line":"                        \u0027sgGroupName\u0027: sgGroupName})"},{"line_number":460,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_e0c9965b","line":457,"updated":"2015-01-31 23:03:45.000000000","message":"Need to use % instead of , here. Or get rid of msg variable and just move this into the LOG.error call.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e9adf733f72209d5602f7aeb1596f4dbd9d64950","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                    conn, storageGroupInstanceName,"},{"line_number":455,"context_line":"                    volumeInstance):"},{"line_number":456,"context_line":"                msg \u003d (_LE(\"Volume: %(volumeName)s was not added \""},{"line_number":457,"context_line":"                           \"to storage group %(sgGroupName)s.\"),"},{"line_number":458,"context_line":"                       {\u0027volumeName\u0027: volumeName,"},{"line_number":459,"context_line":"                        \u0027sgGroupName\u0027: sgGroupName})"},{"line_number":460,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_4b5e03eb","line":457,"in_reply_to":"da86d52c_e0c9965b","updated":"2015-02-01 22:38:37.000000000","message":"You are right. We need to use \"%\" here for the message to be formatted correctly. Can\u0027t move it to LOG.error call because \"msg\" is returned on line 467 and will be part of an exception later on.","commit_id":"8c365573de9619b0fd935684749e1a21e7b134aa"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d9ccf6d53fca1cc92e363452b82c840aaa36babc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                if assocStorageGroupName !\u003d defaultSgGroupName:"},{"line_number":89,"context_line":"                    LOG.warn(_LW("},{"line_number":90,"context_line":"                        \"Volume: %(volumeName)s Does not belong \""},{"line_number":91,"context_line":"                        \"to storage storage group %(defaultSgGroupName)s.\"),"},{"line_number":92,"context_line":"                        {\u0027volumeName\u0027: volumeName,"},{"line_number":93,"context_line":"                         \u0027defaultSgGroupName\u0027: defaultSgGroupName})"},{"line_number":94,"context_line":"                defaultStorageGroupInstanceName \u003d assocStorageGroupInstanceName"}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_992e90f9","line":91,"updated":"2015-02-13 19:19:11.000000000","message":"Missed fixing this, but not worth holding the patch up for.","commit_id":"92a817708a3938b1b734d2caaa206b310996d8d0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d973bbdd394ed5e2dc43148d40e2b5fdee6530f8","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                \"%(volumeName)s.\")"},{"line_number":553,"context_line":"                % {\u0027volumeName\u0027: volumeName})"},{"line_number":554,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":555,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":556,"context_line":"                data\u003dexceptionMessage)"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def _is_volume_in_storage_group("}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_c7769fa3","line":555,"updated":"2015-02-12 15:59:59.000000000","message":"You added a return value to _get_and_remove_from_storage_group_v2 but not _get_and_remove_from_storage_group_v3. Was that intended?","commit_id":"92a817708a3938b1b734d2caaa206b310996d8d0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b8386c116e8a51a288abcd8d0eca820380c28a57","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                \"%(volumeName)s.\")"},{"line_number":553,"context_line":"                % {\u0027volumeName\u0027: volumeName})"},{"line_number":554,"context_line":"            LOG.error(exceptionMessage)"},{"line_number":555,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":556,"context_line":"                data\u003dexceptionMessage)"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def _is_volume_in_storage_group("}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_3d74eb34","line":555,"in_reply_to":"da86d52c_c7769fa3","updated":"2015-02-12 17:05:06.000000000","message":"Good observation. This was intended. The v2 function returns the default storage group instance name. For v3, we have to call another utility function to get the same piece of data so the v3 function itself doesn\u0027t need to return anything.","commit_id":"92a817708a3938b1b734d2caaa206b310996d8d0"}],"cinder/volume/drivers/emc/emc_vmax_provision.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":166,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        LOG.debug(\"InvokeMethod CreateGroup \""},{"line_number":169,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":170,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":171,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_e9b9432f","line":168,"updated":"2015-01-29 05:01:33.000000000","message":"Why isn\u0027t this create_and _get_storage_group?","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":166,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        LOG.debug(\"InvokeMethod CreateGroup \""},{"line_number":169,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":170,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":171,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_34cbb21f","line":168,"in_reply_to":"fa81d914_e9b9432f","updated":"2015-01-29 06:05:40.000000000","message":"Sorry, this is not obvious.  This is actually referring to the SMI-S method \u0027CreateGroup\u0027 invoked on line 151.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":205,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        LOG.debug(\"InvokeMethod CreateGroup \""},{"line_number":208,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":209,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":210,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_697d536e","line":207,"updated":"2015-01-29 05:01:33.000000000","message":"Same question as above.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":205,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        LOG.debug(\"InvokeMethod CreateGroup \""},{"line_number":208,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":209,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":210,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b4d6c2c1","line":207,"in_reply_to":"fa81d914_697d536e","updated":"2015-01-29 06:05:40.000000000","message":"Same as above. This is referring to the SMI-S method \u0027CreateGroup\u0027 on line 190.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":280,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        LOG.debug(\"InvokeMethod RemoveMembers \""},{"line_number":283,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":284,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":285,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_e9906397","line":282,"updated":"2015-01-29 05:01:33.000000000","message":"Shouldn\u0027t this be remove_device_from_storage_group ?","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":280,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        LOG.debug(\"InvokeMethod RemoveMembers \""},{"line_number":283,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":284,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":285,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_f4e03a98","line":282,"in_reply_to":"fa81d914_e9906397","updated":"2015-01-29 06:05:40.000000000","message":"Similar to above. This is referring to the SMI-S method on line 268.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":391,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        LOG.debug(\"InvokeMethod CreateOrModifyCompositeElement \""},{"line_number":394,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":395,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":396,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_49d40f47","line":393,"updated":"2015-01-29 05:01:33.000000000","message":"Ok, so rather than comment on all of these, I will just say, it is fine to count and log this stuff.  Just not undertanding the naming/logging scheme.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":391,"context_line":"                    data\u003dexceptionMessage)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        LOG.debug(\"InvokeMethod CreateOrModifyCompositeElement \""},{"line_number":394,"context_line":"                  \"took: %(delta)s H:MM:SS.\","},{"line_number":395,"context_line":"                  {\u0027delta\u0027: self.utils.get_time_delta(startTime,"},{"line_number":396,"context_line":"                                                      time.time())})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_3499f21f","line":393,"in_reply_to":"fa81d914_49d40f47","updated":"2015-01-29 06:05:40.000000000","message":"Oh, this is to show how long it takes for the SMI-S method CreateOrModifyCompositeElement to complete.  H:MM::SS is hours:minutes:seconds.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":657,"context_line":"                repServiceInstanceName,"},{"line_number":658,"context_line":"                ResultClass\u003d\u0027CIM_ReplicationServiceCapabilities\u0027,"},{"line_number":659,"context_line":"                AssocClass\u003d\u0027CIM_ElementCapabilities\u0027)"},{"line_number":660,"context_line":"            repServiceCapabilityInstanceName \u003d \\"},{"line_number":661,"context_line":"                repServiceCapabilityInstanceNames[0]"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"            # ReplicationType 10 - Synchronous Clone Local."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_e955c3c6","line":660,"updated":"2015-01-29 05:01:33.000000000","message":"Yuck, don\u0027t like to see line continuation like this.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":657,"context_line":"                repServiceInstanceName,"},{"line_number":658,"context_line":"                ResultClass\u003d\u0027CIM_ReplicationServiceCapabilities\u0027,"},{"line_number":659,"context_line":"                AssocClass\u003d\u0027CIM_ElementCapabilities\u0027)"},{"line_number":660,"context_line":"            repServiceCapabilityInstanceName \u003d \\"},{"line_number":661,"context_line":"                repServiceCapabilityInstanceNames[0]"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"            # ReplicationType 10 - Synchronous Clone Local."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_74a36a4f","line":660,"in_reply_to":"fa81d914_e955c3c6","updated":"2015-01-29 06:05:40.000000000","message":"Ok. Will replace with ().","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"fb6fb89a6e2388af937aad6bb5eb70d9369b884f","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                if rc !\u003d 0L:"},{"line_number":672,"context_line":"                    exceptionMessage \u003d (_("},{"line_number":673,"context_line":"                        \"Error Create Cloned Volume: \""},{"line_number":674,"context_line":"                        \"Volume: %(cloneName)s  Source Volume:\""},{"line_number":675,"context_line":"                        \"%(sourceName)s.  Return code: %(rc)lu. \""},{"line_number":676,"context_line":"                        \"Error: %(error)s.\")"},{"line_number":677,"context_line":"                        % {\u0027cloneName\u0027: cloneName,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_095137d8","line":674,"updated":"2015-01-29 05:01:33.000000000","message":"Missing space at EOL.","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a0fdb5c9dc43ccaff6ea30511d9e72bb4be9596","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                if rc !\u003d 0L:"},{"line_number":672,"context_line":"                    exceptionMessage \u003d (_("},{"line_number":673,"context_line":"                        \"Error Create Cloned Volume: \""},{"line_number":674,"context_line":"                        \"Volume: %(cloneName)s  Source Volume:\""},{"line_number":675,"context_line":"                        \"%(sourceName)s.  Return code: %(rc)lu. \""},{"line_number":676,"context_line":"                        \"Error: %(error)s.\")"},{"line_number":677,"context_line":"                        % {\u0027cloneName\u0027: cloneName,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa81d914_b48402b2","line":674,"in_reply_to":"fa81d914_095137d8","updated":"2015-01-29 06:05:40.000000000","message":"Sure, will add a space at the end before the \"","commit_id":"e50f4858be9cbd6d3505601035a0c71932008349"}],"cinder/volume/drivers/emc/emc_vmax_provision_v3.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8e94bc94b31005627a51b406a884363741a13d6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 - 2014 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":21,"id":"da86d52c_263db82b","line":1,"updated":"2015-02-06 03:08:42.000000000","message":"We should change 2014 to 2015 in all files.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        :param storageConfigservice: volume created from job"},{"line_number":49,"context_line":"        :param volumeInstanceName: the volume instance name"},{"line_number":50,"context_line":"        :param volumeName: the volume name (String)"},{"line_number":51,"context_line":"        :param"},{"line_number":52,"context_line":"        :param rc: return code"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        startTime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_635c021a","line":51,"updated":"2015-02-05 23:45:34.000000000","message":"Why the extra param here?","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        :param storageConfigservice: volume created from job"},{"line_number":49,"context_line":"        :param volumeInstanceName: the volume instance name"},{"line_number":50,"context_line":"        :param volumeName: the volume name (String)"},{"line_number":51,"context_line":"        :param"},{"line_number":52,"context_line":"        :param rc: return code"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        startTime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_4808bb2d","line":51,"in_reply_to":"da86d52c_635c021a","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :param volumeInstanceName: the volume instance name"},{"line_number":50,"context_line":"        :param volumeName: the volume name (String)"},{"line_number":51,"context_line":"        :param"},{"line_number":52,"context_line":"        :param rc: return code"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        startTime \u003d time.time()"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_c37bee78","line":52,"updated":"2015-02-05 23:45:34.000000000","message":"You mean returns: rc - return code ?","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :param volumeInstanceName: the volume instance name"},{"line_number":50,"context_line":"        :param volumeName: the volume name (String)"},{"line_number":51,"context_line":"        :param"},{"line_number":52,"context_line":"        :param rc: return code"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        startTime \u003d time.time()"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_68057f13","line":52,"in_reply_to":"da86d52c_c37bee78","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        :param sgInstanceName: the storage group instance name"},{"line_number":98,"context_line":"                                associated with an SLO"},{"line_number":99,"context_line":"        :param volumeSize: volume size (String)"},{"line_number":100,"context_line":"        :returns: volumeDict - the volume dict"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        startTime \u003d time.time()"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_a30b5ad4","line":100,"updated":"2015-02-05 23:45:34.000000000","message":"also returns rc","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        :param sgInstanceName: the storage group instance name"},{"line_number":98,"context_line":"                                associated with an SLO"},{"line_number":99,"context_line":"        :param volumeSize: volume size (String)"},{"line_number":100,"context_line":"        :returns: volumeDict - the volume dict"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        startTime \u003d time.time()"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_287627d9","line":100,"in_reply_to":"da86d52c_a30b5ad4","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            ElementType\u003dself.utils.get_num(THINPROVISIONING, \u002716\u0027),"},{"line_number":109,"context_line":"            Size\u003dself.utils.get_num(volumeSize, \u002764\u0027))"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        LOG.debug(\"Create Volume: %(volumename)s  Return code: %(rc)lu.\","},{"line_number":112,"context_line":"                  {\u0027volumename\u0027: volumeName,"},{"line_number":113,"context_line":"                   \u0027rc\u0027: rc})"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_23704a71","line":111,"updated":"2015-02-05 23:45:34.000000000","message":"Suggest adding a \u0027.\u0027 after %(volumename)s","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            ElementType\u003dself.utils.get_num(THINPROVISIONING, \u002716\u0027),"},{"line_number":109,"context_line":"            Size\u003dself.utils.get_num(volumeSize, \u002764\u0027))"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        LOG.debug(\"Create Volume: %(volumename)s  Return code: %(rc)lu.\","},{"line_number":112,"context_line":"                  {\u0027volumename\u0027: volumeName,"},{"line_number":113,"context_line":"                   \u0027rc\u0027: rc})"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_48735be7","line":111,"in_reply_to":"da86d52c_23704a71","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            self, conn, maskingGroupDict, storageGroupName):"},{"line_number":139,"context_line":"        \"\"\"After creating an new storage group find it and return it."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        :param conn: connection the ecom server"},{"line_number":142,"context_line":"        :param maskingGroupDict: the maskingGroupDict dict"},{"line_number":143,"context_line":"        :param storageGroupName: storage group name (String)"},{"line_number":144,"context_line":"        :returns: maskingGroupDict[\u0027MaskingGroup\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_23f76ad4","line":141,"updated":"2015-02-05 23:45:34.000000000","message":"connection to the ecom server","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            self, conn, maskingGroupDict, storageGroupName):"},{"line_number":139,"context_line":"        \"\"\"After creating an new storage group find it and return it."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        :param conn: connection the ecom server"},{"line_number":142,"context_line":"        :param maskingGroupDict: the maskingGroupDict dict"},{"line_number":143,"context_line":"        :param storageGroupName: storage group name (String)"},{"line_number":144,"context_line":"        :returns: maskingGroupDict[\u0027MaskingGroup\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_ab25b1af","line":141,"in_reply_to":"da86d52c_23f76ad4","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        :param conn: connection the ecom server"},{"line_number":142,"context_line":"        :param maskingGroupDict: the maskingGroupDict dict"},{"line_number":143,"context_line":"        :param storageGroupName: storage group name (String)"},{"line_number":144,"context_line":"        :returns: maskingGroupDict[\u0027MaskingGroup\u0027]"},{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        foundStorageGroupInstanceName \u003d None"},{"line_number":147,"context_line":"        if \u0027MaskingGroup\u0027 in maskingGroupDict:"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_a3327aa4","line":144,"updated":"2015-02-05 23:45:34.000000000","message":"or None","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        :param conn: connection the ecom server"},{"line_number":142,"context_line":"        :param maskingGroupDict: the maskingGroupDict dict"},{"line_number":143,"context_line":"        :param storageGroupName: storage group name (String)"},{"line_number":144,"context_line":"        :returns: maskingGroupDict[\u0027MaskingGroup\u0027]"},{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        foundStorageGroupInstanceName \u003d None"},{"line_number":147,"context_line":"        if \u0027MaskingGroup\u0027 in maskingGroupDict:"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_cb2ae57d","line":144,"in_reply_to":"da86d52c_a3327aa4","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        :param conn: the connection to the ecom server"},{"line_number":242,"context_line":"        :param repServiceInstanceName: instance name of the replication service"},{"line_number":243,"context_line":"        :param syncInstanceName: instance name of the"},{"line_number":244,"context_line":"                                 SE_StorageSynchronized_SV_SV object"},{"line_number":245,"context_line":"        :param cloneName: replica name"},{"line_number":246,"context_line":"        :param sourceName: source volume name"},{"line_number":247,"context_line":"        :param sourceInstance: source volume instance"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_63708240","line":244,"updated":"2015-02-05 23:45:34.000000000","message":"The rest of the comment looks wrong.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        :param conn: the connection to the ecom server"},{"line_number":242,"context_line":"        :param repServiceInstanceName: instance name of the replication service"},{"line_number":243,"context_line":"        :param syncInstanceName: instance name of the"},{"line_number":244,"context_line":"                                 SE_StorageSynchronized_SV_SV object"},{"line_number":245,"context_line":"        :param cloneName: replica name"},{"line_number":246,"context_line":"        :param sourceName: source volume name"},{"line_number":247,"context_line":"        :param sourceInstance: source volume instance"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_eb1fa959","line":244,"in_reply_to":"da86d52c_63708240","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        :param srp: the SRP (String)"},{"line_number":266,"context_line":"        :param slo: the SLO (String)"},{"line_number":267,"context_line":"        :param workload: the workload (String)"},{"line_number":268,"context_line":"        :returns: volumeDict - the volume dict"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        \"\"\""},{"line_number":271,"context_line":"        startTime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_a3e35ad7","line":268,"updated":"2015-02-05 23:45:34.000000000","message":"This doesn\u0027t look right.  Should be storageGroupInstanceName","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        :param srp: the SRP (String)"},{"line_number":266,"context_line":"        :param slo: the SLO (String)"},{"line_number":267,"context_line":"        :param workload: the workload (String)"},{"line_number":268,"context_line":"        :returns: volumeDict - the volume dict"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        \"\"\""},{"line_number":271,"context_line":"        startTime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_0b25ddaa","line":268,"in_reply_to":"da86d52c_a3e35ad7","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        foundStorageGroupInstanceName \u003d self._find_new_storage_group("},{"line_number":300,"context_line":"            conn, job, groupName)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        return foundStorageGroupInstanceName"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _get_storage_pool_capability(self, conn, poolInstanceName):"},{"line_number":305,"context_line":"        \"\"\"Get the pool capability."}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_a30a7a87","line":302,"updated":"2015-02-05 23:45:34.000000000","message":"This could be None.  What happens then?","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        foundStorageGroupInstanceName \u003d self._find_new_storage_group("},{"line_number":300,"context_line":"            conn, job, groupName)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        return foundStorageGroupInstanceName"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _get_storage_pool_capability(self, conn, poolInstanceName):"},{"line_number":305,"context_line":"        \"\"\"Get the pool capability."}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_2b954188","line":302,"in_reply_to":"da86d52c_a30a7a87","updated":"2015-02-09 03:08:52.000000000","message":"The caller of this function checks if this is None. It returns failure if it is None.\n\nSee line 686 in _create_storage_group() in emc_vmax_masking.py.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        :param conn: the connection information to the ecom server"},{"line_number":308,"context_line":"        :param poolInstanceName: the pool instance"},{"line_number":309,"context_line":"        :returns: storagePoolCapability - the storage pool capability instance"},{"line_number":310,"context_line":"        \"\"\""},{"line_number":311,"context_line":"        storagePoolCapability \u003d None"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_43da9e17","line":309,"updated":"2015-02-05 23:45:34.000000000","message":"or None","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        :param conn: the connection information to the ecom server"},{"line_number":308,"context_line":"        :param poolInstanceName: the pool instance"},{"line_number":309,"context_line":"        :returns: storagePoolCapability - the storage pool capability instance"},{"line_number":310,"context_line":"        \"\"\""},{"line_number":311,"context_line":"        storagePoolCapability \u003d None"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_8b8c6d81","line":309,"in_reply_to":"da86d52c_43da9e17","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            srpPoolInstanceName, storagePoolSettingInstanceName):"},{"line_number":349,"context_line":"        \"\"\"Gets available performance capacity per SLO."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        :param conn: the connection information to the ecom server"},{"line_number":352,"context_line":"        :param srpPoolInstanceName: the SRP storage pool instance"},{"line_number":353,"context_line":"        :param storagePoolSettingInstanceName: the SLO type"},{"line_number":354,"context_line":"                                e.g Bronze"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_e30e328b","line":351,"updated":"2015-02-05 23:45:34.000000000","message":"Missing storageConfigService","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            srpPoolInstanceName, storagePoolSettingInstanceName):"},{"line_number":349,"context_line":"        \"\"\"Gets available performance capacity per SLO."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        :param conn: the connection information to the ecom server"},{"line_number":352,"context_line":"        :param srpPoolInstanceName: the SRP storage pool instance"},{"line_number":353,"context_line":"        :param storagePoolSettingInstanceName: the SLO type"},{"line_number":354,"context_line":"                                e.g Bronze"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_2bdc6174","line":351,"in_reply_to":"da86d52c_e30e328b","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        :param srpPoolInstanceName: the SRP storage pool instance"},{"line_number":353,"context_line":"        :param storagePoolSettingInstanceName: the SLO type"},{"line_number":354,"context_line":"                                e.g Bronze"},{"line_number":355,"context_line":"        :returns: volumeDict - the volume dict"},{"line_number":356,"context_line":"        \"\"\""},{"line_number":357,"context_line":"        startTime \u003d time.time()"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_c3820ec7","line":355,"updated":"2015-02-05 23:45:34.000000000","message":"This doesn\u0027t look right.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        :param srpPoolInstanceName: the SRP storage pool instance"},{"line_number":353,"context_line":"        :param storagePoolSettingInstanceName: the SLO type"},{"line_number":354,"context_line":"                                e.g Bronze"},{"line_number":355,"context_line":"        :returns: volumeDict - the volume dict"},{"line_number":356,"context_line":"        \"\"\""},{"line_number":357,"context_line":"        startTime \u003d time.time()"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_4bd99582","line":355,"in_reply_to":"da86d52c_c3820ec7","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        :param conn: the connection information to the ecom server"},{"line_number":391,"context_line":"        :param storageConfigService: the storage config service"},{"line_number":392,"context_line":"        :param poolInstanceName: the pool instance"},{"line_number":393,"context_line":"        :param volumeSize: volume size (bits)"},{"line_number":394,"context_line":"        :param slo: slo string e.g Bronze"},{"line_number":395,"context_line":"        :param workload: workload string e.g DSS"},{"line_number":396,"context_line":"        :returns: storagePoolCapability - the storage pool capability instance"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_43761e07","line":393,"updated":"2015-02-05 23:45:34.000000000","message":"This isn\u0027t in the params.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        :param conn: the connection information to the ecom server"},{"line_number":391,"context_line":"        :param storageConfigService: the storage config service"},{"line_number":392,"context_line":"        :param poolInstanceName: the pool instance"},{"line_number":393,"context_line":"        :param volumeSize: volume size (bits)"},{"line_number":394,"context_line":"        :param slo: slo string e.g Bronze"},{"line_number":395,"context_line":"        :param workload: workload string e.g DSS"},{"line_number":396,"context_line":"        :returns: storagePoolCapability - the storage pool capability instance"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_6be65946","line":393,"in_reply_to":"da86d52c_43761e07","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        :param volumeSize: volume size (bits)"},{"line_number":394,"context_line":"        :param slo: slo string e.g Bronze"},{"line_number":395,"context_line":"        :param workload: workload string e.g DSS"},{"line_number":396,"context_line":"        :returns: storagePoolCapability - the storage pool capability instance"},{"line_number":397,"context_line":"        \"\"\""},{"line_number":398,"context_line":"        maximumVolumeSize \u003d None"},{"line_number":399,"context_line":"        minimumVolumeSize \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_e35c727f","line":396,"updated":"2015-02-05 23:45:34.000000000","message":"This doesn\u0027t look right.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        :param volumeSize: volume size (bits)"},{"line_number":394,"context_line":"        :param slo: slo string e.g Bronze"},{"line_number":395,"context_line":"        :param workload: workload string e.g DSS"},{"line_number":396,"context_line":"        :returns: storagePoolCapability - the storage pool capability instance"},{"line_number":397,"context_line":"        \"\"\""},{"line_number":398,"context_line":"        maximumVolumeSize \u003d None"},{"line_number":399,"context_line":"        minimumVolumeSize \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_8be38d32","line":396,"in_reply_to":"da86d52c_e35c727f","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            operation, force\u003dFalse):"},{"line_number":459,"context_line":"        \"\"\"Modify the relationship between the clone/snap and source volume."},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        Helper function that akes an SMI-S call to break clone relationship"},{"line_number":462,"context_line":"        between the clone volume and the source."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param conn: the connection to the ecom server"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_c39e8e06","line":461,"updated":"2015-02-05 23:45:34.000000000","message":"akes -\u003e makes","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            operation, force\u003dFalse):"},{"line_number":459,"context_line":"        \"\"\"Modify the relationship between the clone/snap and source volume."},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        Helper function that akes an SMI-S call to break clone relationship"},{"line_number":462,"context_line":"        between the clone volume and the source."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param conn: the connection to the ecom server"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_ebc969ad","line":461,"in_reply_to":"da86d52c_c39e8e06","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        :param syncInstanceName: instance name of the"},{"line_number":467,"context_line":"                                 SE_StorageSynchronized_SV_SV object"},{"line_number":468,"context_line":"        :param cloneName: replica name"},{"line_number":469,"context_line":"        :param sourceName: source volume name"},{"line_number":470,"context_line":"        :param sourceInstance: source volume instance"},{"line_number":471,"context_line":"        :returns: rc - return code"},{"line_number":472,"context_line":"        :returns: job - job object of the replica creation operation"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_43929ef6","line":469,"updated":"2015-02-05 23:45:34.000000000","message":"Wrong param","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        :param syncInstanceName: instance name of the"},{"line_number":467,"context_line":"                                 SE_StorageSynchronized_SV_SV object"},{"line_number":468,"context_line":"        :param cloneName: replica name"},{"line_number":469,"context_line":"        :param sourceName: source volume name"},{"line_number":470,"context_line":"        :param sourceInstance: source volume instance"},{"line_number":471,"context_line":"        :returns: rc - return code"},{"line_number":472,"context_line":"        :returns: job - job object of the replica creation operation"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_0bcf9db1","line":469,"in_reply_to":"da86d52c_43929ef6","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                                 SE_StorageSynchronized_SV_SV object"},{"line_number":468,"context_line":"        :param cloneName: replica name"},{"line_number":469,"context_line":"        :param sourceName: source volume name"},{"line_number":470,"context_line":"        :param sourceInstance: source volume instance"},{"line_number":471,"context_line":"        :returns: rc - return code"},{"line_number":472,"context_line":"        :returns: job - job object of the replica creation operation"},{"line_number":473,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_83bf3660","line":470,"updated":"2015-02-05 23:45:34.000000000","message":"wrong param","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                                 SE_StorageSynchronized_SV_SV object"},{"line_number":468,"context_line":"        :param cloneName: replica name"},{"line_number":469,"context_line":"        :param sourceName: source volume name"},{"line_number":470,"context_line":"        :param sourceInstance: source volume instance"},{"line_number":471,"context_line":"        :returns: rc - return code"},{"line_number":472,"context_line":"        :returns: job - job object of the replica creation operation"},{"line_number":473,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_2bc3818b","line":470,"in_reply_to":"da86d52c_83bf3660","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            srcGroupInstanceName, tgtGroupInstanceName, relationName):"},{"line_number":509,"context_line":"        \"\"\"Make SMI-S call to create replica for source group."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        :param conn - the connection to the ecom server"},{"line_number":512,"context_line":"        :param repServiceInstanceName - replication service"},{"line_number":513,"context_line":"        :param srcGroupInstanceName - source group instance name"},{"line_number":514,"context_line":"        :param tgtGroupInstanceName - target group instance name"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_4380de8a","line":511,"updated":"2015-02-05 23:45:34.000000000","message":"missing replicationService param.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            srcGroupInstanceName, tgtGroupInstanceName, relationName):"},{"line_number":509,"context_line":"        \"\"\"Make SMI-S call to create replica for source group."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        :param conn - the connection to the ecom server"},{"line_number":512,"context_line":"        :param repServiceInstanceName - replication service"},{"line_number":513,"context_line":"        :param srcGroupInstanceName - source group instance name"},{"line_number":514,"context_line":"        :param tgtGroupInstanceName - target group instance name"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_8bed4df2","line":511,"in_reply_to":"da86d52c_4380de8a","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        :param repServiceInstanceName - replication service"},{"line_number":513,"context_line":"        :param srcGroupInstanceName - source group instance name"},{"line_number":514,"context_line":"        :param tgtGroupInstanceName - target group instance name"},{"line_number":515,"context_line":"        :param cgName - target group name"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        :returns: rc - return code"},{"line_number":518,"context_line":"        :returns: job - job object of the replica creation operation"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_2375aaca","line":515,"updated":"2015-02-05 23:45:34.000000000","message":"wrong param.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        :param repServiceInstanceName - replication service"},{"line_number":513,"context_line":"        :param srcGroupInstanceName - source group instance name"},{"line_number":514,"context_line":"        :param tgtGroupInstanceName - target group instance name"},{"line_number":515,"context_line":"        :param cgName - target group name"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        :returns: rc - return code"},{"line_number":518,"context_line":"        :returns: job - job object of the replica creation operation"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_abb931ee","line":515,"in_reply_to":"da86d52c_2375aaca","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"}],"cinder/volume/drivers/emc/emc_vmax_utils.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                          {\u0027selectedPortGroupName\u0027: selectedPortGroupName})"},{"line_number":664,"context_line":"                return selectedPortGroupName"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        exception_message \u003d (_(\"No Port Group elements found in config file.\"))"},{"line_number":667,"context_line":"        LOG.error(exception_message)"},{"line_number":668,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":669,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_c6a4dc09","line":666,"updated":"2015-02-05 23:45:34.000000000","message":"Did you mean to remove the \u0027else\u0027 here?\n\nMaybe this works but it looks odd.  Did you do this on purpose so that if it falls through the if statement instead of returning it would end up here?    If so, maybe a comment here would help explaining that.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                          {\u0027selectedPortGroupName\u0027: selectedPortGroupName})"},{"line_number":664,"context_line":"                return selectedPortGroupName"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        exception_message \u003d (_(\"No Port Group elements found in config file.\"))"},{"line_number":667,"context_line":"        LOG.error(exception_message)"},{"line_number":668,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":669,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_0bb07df3","line":666,"in_reply_to":"da86d52c_c6a4dc09","updated":"2015-02-09 03:08:52.000000000","message":"Does look odd. Added comments.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":685,"context_line":"            strXml \u003d tag[0].toxml()"},{"line_number":686,"context_line":"            strXml \u003d strXml.replace(\u0027\u003c%s\u003e\u0027 % stringToParse, \u0027\u0027)"},{"line_number":687,"context_line":"            strXml \u003d strXml.replace(\u0027\\n\u0027, \u0027\u0027)"},{"line_number":688,"context_line":"            strXml \u003d strXml.replace(\u0027\\r\u0027, \u0027\u0027)"},{"line_number":689,"context_line":"            strXml \u003d strXml.replace(\u0027\\t\u0027, \u0027\u0027)"},{"line_number":690,"context_line":"            retString \u003d strXml.replace(\u0027\u003c/%s\u003e\u0027 % stringToParse, \u0027\u0027)"},{"line_number":691,"context_line":"            retString \u003d retString.strip()"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_26adb8e9","line":688,"updated":"2015-02-05 23:45:34.000000000","message":"Why did you remove \\r here but you have it replaced above?","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":685,"context_line":"            strXml \u003d tag[0].toxml()"},{"line_number":686,"context_line":"            strXml \u003d strXml.replace(\u0027\u003c%s\u003e\u0027 % stringToParse, \u0027\u0027)"},{"line_number":687,"context_line":"            strXml \u003d strXml.replace(\u0027\\n\u0027, \u0027\u0027)"},{"line_number":688,"context_line":"            strXml \u003d strXml.replace(\u0027\\r\u0027, \u0027\u0027)"},{"line_number":689,"context_line":"            strXml \u003d strXml.replace(\u0027\\t\u0027, \u0027\u0027)"},{"line_number":690,"context_line":"            retString \u003d strXml.replace(\u0027\u003c/%s\u003e\u0027 % stringToParse, \u0027\u0027)"},{"line_number":691,"context_line":"            retString \u003d retString.strip()"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_4bf43587","line":688,"in_reply_to":"da86d52c_26adb8e9","updated":"2015-02-09 03:08:52.000000000","message":"It tries to remove carriage return from the XML file in case someone left it there while editing the file on Windows.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":744,"context_line":"    def parse_slo_from_file(self, fileName):"},{"line_number":745,"context_line":"        \"\"\"Parse the slo from config file."},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"        Please note that the string \u0027NONE\u0027 is returned if it not found."},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"        :param fileName: the path and name of the file"},{"line_number":750,"context_line":"        :returns: slo - the slo or \u0027NONE\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_8685845b","line":747,"updated":"2015-02-05 23:45:34.000000000","message":"suggest \u0027if it is not found\u0027","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":744,"context_line":"    def parse_slo_from_file(self, fileName):"},{"line_number":745,"context_line":"        \"\"\"Parse the slo from config file."},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"        Please note that the string \u0027NONE\u0027 is returned if it not found."},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"        :param fileName: the path and name of the file"},{"line_number":750,"context_line":"        :returns: slo - the slo or \u0027NONE\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_0b887de6","line":747,"in_reply_to":"da86d52c_8685845b","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":760,"context_line":"    def parse_workload_from_file(self, fileName):"},{"line_number":761,"context_line":"        \"\"\"Parse the workload from config file."},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        Please note that the string \u0027NONE\u0027 is returned if it not found."},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        :param fileName: the path and name of the file"},{"line_number":766,"context_line":"        :returns: workload - the workload or \u0027NONE\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_2694d889","line":763,"updated":"2015-02-05 23:45:34.000000000","message":"if it is not found","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":760,"context_line":"    def parse_workload_from_file(self, fileName):"},{"line_number":761,"context_line":"        \"\"\"Parse the workload from config file."},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        Please note that the string \u0027NONE\u0027 is returned if it not found."},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        :param fileName: the path and name of the file"},{"line_number":766,"context_line":"        :returns: workload - the workload or \u0027NONE\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_2b6c6136","line":763,"in_reply_to":"da86d52c_2694d889","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        \"\"\"Extract the array from the host capabilites."},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"        :param host: the host object"},{"line_number":1271,"context_line":"        :param maxNum: the maximum number of characters"},{"line_number":1272,"context_line":"        :returns: truncated string or original string"},{"line_number":1273,"context_line":"        \"\"\""},{"line_number":1274,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_46bd4c01","line":1271,"updated":"2015-02-05 23:45:34.000000000","message":"Maxnum isn\u0027t a param.","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        \"\"\"Extract the array from the host capabilites."},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"        :param host: the host object"},{"line_number":1271,"context_line":"        :param maxNum: the maximum number of characters"},{"line_number":1272,"context_line":"        :returns: truncated string or original string"},{"line_number":1273,"context_line":"        \"\"\""},{"line_number":1274,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_6b765908","line":1271,"in_reply_to":"da86d52c_46bd4c01","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"        :param conn: connection to the ecom server"},{"line_number":1299,"context_line":"        :param storageSystem: the storage system name"},{"line_number":1300,"context_line":"        :param target: target volume object"},{"line_number":1301,"context_line":"        :returns: foundSyncName (String)"},{"line_number":1302,"context_line":"        \"\"\""},{"line_number":1303,"context_line":"        foundSyncInstanceName \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_064ef43a","line":1300,"updated":"2015-02-05 23:45:34.000000000","message":"Missing waitforsync","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"        :param conn: connection to the ecom server"},{"line_number":1299,"context_line":"        :param storageSystem: the storage system name"},{"line_number":1300,"context_line":"        :param target: target volume object"},{"line_number":1301,"context_line":"        :returns: foundSyncName (String)"},{"line_number":1302,"context_line":"        \"\"\""},{"line_number":1303,"context_line":"        foundSyncInstanceName \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_eb59698f","line":1300,"in_reply_to":"da86d52c_064ef43a","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"                break"},{"line_number":1321,"context_line":""},{"line_number":1322,"context_line":"        if foundSyncInstanceName is None:"},{"line_number":1323,"context_line":"            LOG.info(_LI("},{"line_number":1324,"context_line":"                \"Storage sync name not found for target %(target)s \""},{"line_number":1325,"context_line":"                \"on %(storageSystem)s.\"),"},{"line_number":1326,"context_line":"                {\u0027target\u0027: target[\u0027DeviceID\u0027], \u0027storageSystem\u0027: storageSystem})"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_c6577cc8","line":1323,"updated":"2015-02-05 23:45:34.000000000","message":"Should this be a warning?","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"                break"},{"line_number":1321,"context_line":""},{"line_number":1322,"context_line":"        if foundSyncInstanceName is None:"},{"line_number":1323,"context_line":"            LOG.info(_LI("},{"line_number":1324,"context_line":"                \"Storage sync name not found for target %(target)s \""},{"line_number":1325,"context_line":"                \"on %(storageSystem)s.\"),"},{"line_number":1326,"context_line":"                {\u0027target\u0027: target[\u0027DeviceID\u0027], \u0027storageSystem\u0027: storageSystem})"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_8b4aadaa","line":1323,"in_reply_to":"da86d52c_c6577cc8","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6123e1ff1728f2f1cf736ac93423aa666035f1e0","unresolved":false,"context_lines":[{"line_number":1359,"context_line":"                break"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        if foundSyncInstanceName is None:"},{"line_number":1362,"context_line":"            LOG.info(_LI("},{"line_number":1363,"context_line":"                \"Group sync name not found for target group %(target)s \""},{"line_number":1364,"context_line":"                \"on %(storageSystem)s.\"),"},{"line_number":1365,"context_line":"                {\u0027target\u0027: targetRgInstanceName[\u0027InstanceID\u0027],"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_862f443e","line":1362,"updated":"2015-02-05 23:45:34.000000000","message":"Should this be a warning?","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4b9f95ee02ddceb08b4ceb422a8f3b197d2e8eb5","unresolved":false,"context_lines":[{"line_number":1359,"context_line":"                break"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        if foundSyncInstanceName is None:"},{"line_number":1362,"context_line":"            LOG.info(_LI("},{"line_number":1363,"context_line":"                \"Group sync name not found for target group %(target)s \""},{"line_number":1364,"context_line":"                \"on %(storageSystem)s.\"),"},{"line_number":1365,"context_line":"                {\u0027target\u0027: targetRgInstanceName[\u0027InstanceID\u0027],"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_0bd6bdc5","line":1362,"in_reply_to":"da86d52c_862f443e","updated":"2015-02-09 03:08:52.000000000","message":"Done","commit_id":"f91626fb77be2f3cceafac31996bf5b14b47cffb"}]}
