)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"api-microversion support for python-cinderclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    WIP: Adding /v3 enpoint support"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Implements \u0027microversions\u0027 api type - Part 1"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"9aed3d3a_53f7c9f4","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":7},"updated":"2016-02-28 22:48:41.000000000","message":"Is this still WIP?","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"api-microversion support for python-cinderclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    WIP: Adding /v3 enpoint support"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Implements \u0027microversions\u0027 api type - Part 1"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7af24918_c2d95085","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":7},"in_reply_to":"9aed3d3a_53f7c9f4","updated":"2016-03-02 18:32:44.000000000","message":"Actually, the header is changing and not I need to fix that. I want to push this up so I don\u0027t have too many changes in one patch.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    Related to bp api-microversion-support"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ib135e3ec8b38e67ce3c0591160aab2f235cbdf75"},{"line_number":27,"context_line":"Implements: https://blueprints.launchpad.net/python-cinderclient/+spec/api-microversion-support-for-cinderclient"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"9aed3d3a_93d95186","line":27,"updated":"2016-02-28 22:48:41.000000000","message":"I don\u0027t think this will get linked correctly with this format. I believe it should be:\n\nImplements: blueprint api-microversion-support-for-cinderclient","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    Related to bp api-microversion-support"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ib135e3ec8b38e67ce3c0591160aab2f235cbdf75"},{"line_number":27,"context_line":"Implements: https://blueprints.launchpad.net/python-cinderclient/+spec/api-microversion-support-for-cinderclient"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7af24918_17bb7c28","line":27,"in_reply_to":"9aed3d3a_93d95186","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/api_versions.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4f70e28cfeebc6c479d1b52767cc9adb42952a32","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# key is a deprecated version and value is an alternative version."},{"line_number":33,"context_line":"DEPRECATED_VERSIONS \u003d {\"1.1\": \"2\"}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_SUBSTITUTIONS \u003d {}"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_c801f0b0","line":33,"updated":"2015-12-07 14:34:00.000000000","message":"Where do we have 1.1 version?","commit_id":"ebf29374242d307c8498750d648c1cb2bf52bf41"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"3317a9d8fb07301be20301256fbb5b0ee5367d3d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# key is a deprecated version and value is an alternative version."},{"line_number":33,"context_line":"DEPRECATED_VERSIONS \u003d {\"1.1\": \"2\"}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_SUBSTITUTIONS \u003d {}"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_6a3ae99a","line":33,"in_reply_to":"7a740942_c801f0b0","updated":"2015-12-08 16:21:36.000000000","message":"Yes, that should be \u00271\u0027, not 1.1  Thanks","commit_id":"ebf29374242d307c8498750d648c1cb2bf52bf41"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"c8ab2179037a2af18cb8f950c537759d07b05780","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return min_version \u003c\u003d self \u003c\u003d max_version"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def get_string(self):"},{"line_number":146,"context_line":"        \"\"\"Converts object to string representation which if used to create"},{"line_number":147,"context_line":"        an APIVersion object results in the same version."},{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        if self.is_null():"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_21dabfe8","line":146,"updated":"2015-12-08 19:09:23.000000000","message":"Technically there should be a comma (,) after which on this line, and object on the next line.","commit_id":"68d46781ed791b1770c97a52bc1fb7e8cab2c928"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinderclient import exceptions"},{"line_number":24,"context_line":"from cinderclient import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"logging.basicConfig()"},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"if not LOG.handlers:"},{"line_number":29,"context_line":"    LOG.addHandler(logging.StreamHandler())"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_33d16558","line":26,"updated":"2016-02-28 22:48:41.000000000","message":"Is this for testing?","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinderclient import exceptions"},{"line_number":24,"context_line":"from cinderclient import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"logging.basicConfig()"},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"if not LOG.handlers:"},{"line_number":29,"context_line":"    LOG.addHandler(logging.StreamHandler())"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_d7147445","line":26,"in_reply_to":"9aed3d3a_33d16558","updated":"2016-03-02 18:32:44.000000000","message":"I\u0027m not sure I understand. We log a warning on L#218, so I think we need this.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                else:"},{"line_number":61,"context_line":"                    self.ver_minor \u003d int(match.group(2))"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                msg \u003d (\"Invalid format of client version \u0027%s\u0027. \""},{"line_number":64,"context_line":"                       \"Expected format \u0027X.Y\u0027, where X is a major part and Y \""},{"line_number":65,"context_line":"                       \"is a minor part of version.\") % version_str"},{"line_number":66,"context_line":"                raise exceptions.UnsupportedVersion(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_d3bab909","line":63,"updated":"2016-02-28 22:48:41.000000000","message":"Needs _()","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                else:"},{"line_number":61,"context_line":"                    self.ver_minor \u003d int(match.group(2))"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                msg \u003d (\"Invalid format of client version \u0027%s\u0027. \""},{"line_number":64,"context_line":"                       \"Expected format \u0027X.Y\u0027, where X is a major part and Y \""},{"line_number":65,"context_line":"                       \"is a minor part of version.\") % version_str"},{"line_number":66,"context_line":"                raise exceptions.UnsupportedVersion(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_17e9bc14","line":63,"in_reply_to":"9aed3d3a_d3bab909","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        return self \u003e other or self \u003d\u003d other"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def matches(self, min_version, max_version):"},{"line_number":121,"context_line":"        \"\"\"Returns whether the version object represents a version"},{"line_number":122,"context_line":"        greater than or equal to the minimum version and less than"},{"line_number":123,"context_line":"        or equal to the maximum version."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_73592dfe","line":121,"updated":"2016-02-28 22:48:41.000000000","message":"Extremely trivial nit: These don\u0027t follow the commit message format guidelines:\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure\n\nAbsolutely not critical if it isn\u0027t addressed though.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        return self \u003e other or self \u003d\u003d other"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def matches(self, min_version, max_version):"},{"line_number":121,"context_line":"        \"\"\"Returns whether the version object represents a version"},{"line_number":122,"context_line":"        greater than or equal to the minimum version and less than"},{"line_number":123,"context_line":"        or equal to the maximum version."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_d7e8f4e4","line":121,"in_reply_to":"9aed3d3a_73592dfe","updated":"2016-03-02 18:32:44.000000000","message":"Did you mean for this comment to be in the commit message? Anyway, I cleaned the commit message up.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    \"\"\"Returns checked APIVersion object\"\"\""},{"line_number":216,"context_line":"    version_string \u003d str(version_string)"},{"line_number":217,"context_line":"    if version_string in DEPRECATED_VERSIONS:"},{"line_number":218,"context_line":"        LOG.warning(\"Version %(deprecated_version)s is deprecated, using \""},{"line_number":219,"context_line":"                    \"alternative version %(alternative)s instead.\" %"},{"line_number":220,"context_line":"                   {\"deprecated_version\": version_string,"},{"line_number":221,"context_line":"                    \"alternative\": DEPRECATED_VERSIONS[version_string]})"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_73100d02","line":218,"updated":"2016-02-28 22:48:41.000000000","message":"Needs _LW()","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7b239aa5f28f109e6bac7518d4b76210ceb656b1","unresolved":false,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def decor(func):"},{"line_number":342,"context_line":"        func.versioned \u003d True"},{"line_number":343,"context_line":"        name \u003d utils.get_function_name(func)"},{"line_number":344,"context_line":"        versioned_method \u003d VersionedMethod(name, start_version,"},{"line_number":345,"context_line":"                                           end_version, func)"},{"line_number":346,"context_line":"        add_substitution(versioned_method)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa0719c6_456f34c5","line":343,"range":{"start_line":343,"start_character":21,"end_line":343,"end_character":38},"updated":"2016-03-22 02:43:33.000000000","message":"Where is this defined?","commit_id":"cf81e541f92af4a4cee536eb8a5538d700358127"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"666e6a10574af0ea192aee54a449b504a6476630","unresolved":false,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def decor(func):"},{"line_number":342,"context_line":"        func.versioned \u003d True"},{"line_number":343,"context_line":"        name \u003d utils.get_function_name(func)"},{"line_number":344,"context_line":"        versioned_method \u003d VersionedMethod(name, start_version,"},{"line_number":345,"context_line":"                                           end_version, func)"},{"line_number":346,"context_line":"        add_substitution(versioned_method)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa0719c6_77cbf953","line":343,"range":{"start_line":343,"start_character":21,"end_line":343,"end_character":38},"in_reply_to":"fa0719c6_456f34c5","updated":"2016-03-22 13:26:18.000000000","message":"There are 2 ways to discover this:\n1) grep -R get_function_name |grep def\n2) look at the top of this file where utils is defined:\nL#24\nand look in that file.","commit_id":"cf81e541f92af4a4cee536eb8a5538d700358127"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7b239aa5f28f109e6bac7518d4b76210ceb656b1","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            methods \u003d get_substitutions(name, obj.api_version)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"            if not methods:"},{"line_number":353,"context_line":"                raise exceptions.VersionNotFoundForAPIMethod("},{"line_number":354,"context_line":"                    obj.api_version.get_string(), name)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"            method \u003d max(methods, key\u003dlambda f: f.start_version)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa0719c6_85c5cc8f","line":353,"range":{"start_line":353,"start_character":33,"end_line":353,"end_character":60},"updated":"2016-03-22 02:43:33.000000000","message":"Where is this defined?","commit_id":"cf81e541f92af4a4cee536eb8a5538d700358127"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"666e6a10574af0ea192aee54a449b504a6476630","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            methods \u003d get_substitutions(name, obj.api_version)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"            if not methods:"},{"line_number":353,"context_line":"                raise exceptions.VersionNotFoundForAPIMethod("},{"line_number":354,"context_line":"                    obj.api_version.get_string(), name)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"            method \u003d max(methods, key\u003dlambda f: f.start_version)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa0719c6_97c04d2c","line":353,"range":{"start_line":353,"start_character":33,"end_line":353,"end_character":60},"in_reply_to":"fa0719c6_85c5cc8f","updated":"2016-03-22 13:26:18.000000000","message":"Use the same process described above.","commit_id":"cf81e541f92af4a4cee536eb8a5538d700358127"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7c21ab04e296abda31075eb6fcb0695082a8a75a","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def decor(func):"},{"line_number":343,"context_line":"        func.versioned \u003d True"},{"line_number":344,"context_line":"        name \u003d utils.get_function_name(func)"},{"line_number":345,"context_line":"        versioned_method \u003d VersionedMethod(name, start_version,"},{"line_number":346,"context_line":"                                           end_version, func)"},{"line_number":347,"context_line":"        add_substitution(versioned_method)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_4c2c4602","line":344,"range":{"start_line":344,"start_character":21,"end_line":344,"end_character":38},"updated":"2016-03-23 01:35:03.000000000","message":"$ grep \"get_function_name\" * -r\ncinderclient/api_versions.py: name \u003d utils.get_function_name(func) \n\nThere is no such function in other file.\nSame as line 353.","commit_id":"1da204f076e91b7cf2dd0e611baa95d120a0886a"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7c21ab04e296abda31075eb6fcb0695082a8a75a","unresolved":false,"context_lines":[{"line_number":351,"context_line":"            methods \u003d get_substitutions(name, obj.api_version)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            if not methods:"},{"line_number":354,"context_line":"                raise exceptions.VersionNotFoundForAPIMethod("},{"line_number":355,"context_line":"                    obj.api_version.get_string(), name)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"            method \u003d max(methods, key\u003dlambda f: f.start_version)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_0c4b6eca","line":354,"range":{"start_line":354,"start_character":33,"end_line":354,"end_character":60},"updated":"2016-03-23 01:35:03.000000000","message":"$ grep \"VersionNotFoundForAPIMethod\" * -r \ncinderclient/api_versions.py: raise exceptions.VersionNotFoundForAPIMethod(","commit_id":"1da204f076e91b7cf2dd0e611baa95d120a0886a"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"fe86cb6add0b114433c76f10698c51a0b9dcf138","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def decor(func):"},{"line_number":343,"context_line":"        func.versioned \u003d True"},{"line_number":344,"context_line":"        name \u003d utils.get_function_name(func)"},{"line_number":345,"context_line":"        versioned_method \u003d VersionedMethod(name, start_version,"},{"line_number":346,"context_line":"                                           end_version, func)"},{"line_number":347,"context_line":"        add_substitution(versioned_method)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba0121b8_af026d09","line":344,"range":{"start_line":344,"start_character":21,"end_line":344,"end_character":38},"updated":"2016-03-29 18:37:54.000000000","message":"This function doesn\u0027t seem to exist","commit_id":"5d316aaea6d4b24abdb0fcba2ac76960382987e1"}],"cinderclient/client.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4f70e28cfeebc6c479d1b52767cc9adb42952a32","unresolved":false,"context_lines":[{"line_number":596,"context_line":"def Client(version, *args, **kwargs):"},{"line_number":597,"context_line":"    \"\"\"Initialize client object based on given version."},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    HOW-TO:"},{"line_number":600,"context_line":"    The simplest way to create a client instance is initialization with your"},{"line_number":601,"context_line":"    credentials::"},{"line_number":602,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_28caf44e","line":599,"updated":"2015-12-07 14:34:00.000000000","message":"Thanks for adding this!","commit_id":"ebf29374242d307c8498750d648c1cb2bf52bf41"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"3317a9d8fb07301be20301256fbb5b0ee5367d3d","unresolved":false,"context_lines":[{"line_number":596,"context_line":"def Client(version, *args, **kwargs):"},{"line_number":597,"context_line":"    \"\"\"Initialize client object based on given version."},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    HOW-TO:"},{"line_number":600,"context_line":"    The simplest way to create a client instance is initialization with your"},{"line_number":601,"context_line":"    credentials::"},{"line_number":602,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_6ad66929","line":599,"in_reply_to":"7a740942_28caf44e","updated":"2015-12-08 16:21:36.000000000","message":"I cannot take any credit. I just ported it from Nova!","commit_id":"ebf29374242d307c8498750d648c1cb2bf52bf41"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"5ae5d53966d4793574bec5e186dba60aee9379d4","unresolved":false,"context_lines":[{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    Here ``VERSION`` can be a string or"},{"line_number":667,"context_line":"    ``cinderclient.api_versions.APIVersion`` obj. If you prefer string value,"},{"line_number":668,"context_line":"    you can use ``1`` (deprecated now), ``2`` or ``2.X``"},{"line_number":669,"context_line":"    (where X is a microversion)."},{"line_number":670,"context_line":""},{"line_number":671,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5aef4532_bd3729af","line":668,"range":{"start_line":668,"start_character":53,"end_line":668,"end_character":54},"updated":"2016-03-08 16:03:22.000000000","message":"Should this 2.X not now be 3.X?","commit_id":"e1908f588562ae672baec9e892a22bb8251d9e74"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"0bedd7beac6ee957a17860c25555e9ed7aa93d1a","unresolved":false,"context_lines":[{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    Here ``VERSION`` can be a string or"},{"line_number":667,"context_line":"    ``cinderclient.api_versions.APIVersion`` obj. If you prefer string value,"},{"line_number":668,"context_line":"    you can use ``1`` (deprecated now), ``2`` or ``2.X``"},{"line_number":669,"context_line":"    (where X is a microversion)."},{"line_number":670,"context_line":""},{"line_number":671,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa0719c6_f673c44b","line":668,"range":{"start_line":668,"start_character":53,"end_line":668,"end_character":54},"in_reply_to":"5aef4532_bd3729af","updated":"2016-03-21 13:37:03.000000000","message":"Yes, I\u0027ll fix this.","commit_id":"e1908f588562ae672baec9e892a22bb8251d9e74"}],"cinderclient/tests/unit/test_api_versions.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4f70e28cfeebc6c479d1b52767cc9adb42952a32","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        v \u003d api_versions.APIVersion()"},{"line_number":39,"context_line":"        self.assertTrue(v.is_null())"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_invalid_version_strings(self):"},{"line_number":42,"context_line":"        self.assertRaises(exceptions.UnsupportedVersion,"},{"line_number":43,"context_line":"                          api_versions.APIVersion, \"2\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_c847b0ba","line":41,"updated":"2015-12-07 14:34:00.000000000","message":"ddt or fixtures should be used here to make code cleaner","commit_id":"ebf29374242d307c8498750d648c1cb2bf52bf41"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"3317a9d8fb07301be20301256fbb5b0ee5367d3d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        v \u003d api_versions.APIVersion()"},{"line_number":39,"context_line":"        self.assertTrue(v.is_null())"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_invalid_version_strings(self):"},{"line_number":42,"context_line":"        self.assertRaises(exceptions.UnsupportedVersion,"},{"line_number":43,"context_line":"                          api_versions.APIVersion, \"2\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_ca70bd42","line":41,"in_reply_to":"7a740942_c847b0ba","updated":"2015-12-08 16:21:36.000000000","message":"OK, sounds good.","commit_id":"ebf29374242d307c8498750d648c1cb2bf52bf41"}],"cinderclient/v2/availability_zones.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def __getattr__(self, attr):"},{"line_number":31,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"sys.modules[\"cinderclient.v2.availability_zones\"] \u003d \\"},{"line_number":34,"context_line":"    MovedModule(availability_zones)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_53b869e5","line":33,"updated":"2016-02-28 22:48:41.000000000","message":"Wrap in () to get rid of the \\ for line continuation.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def __getattr__(self, attr):"},{"line_number":31,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"sys.modules[\"cinderclient.v2.availability_zones\"] \u003d \\"},{"line_number":34,"context_line":"    MovedModule(availability_zones)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_57b7c4d7","line":33,"in_reply_to":"9aed3d3a_53b869e5","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v2/consistencygroups.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def __getattr__(self, attr):"},{"line_number":36,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"sys.modules[\"cinderclient.v2.consistencygroups\"] \u003d \\"},{"line_number":39,"context_line":"    MovedModule(consistencygroups)"},{"line_number":40,"context_line":"import six"},{"line_number":41,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_f3c9bd79","line":38,"updated":"2016-02-28 22:48:41.000000000","message":"() to get rid of \\","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def __getattr__(self, attr):"},{"line_number":36,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"sys.modules[\"cinderclient.v2.consistencygroups\"] \u003d \\"},{"line_number":39,"context_line":"    MovedModule(consistencygroups)"},{"line_number":40,"context_line":"import six"},{"line_number":41,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_975b0c87","line":38,"in_reply_to":"9aed3d3a_f3c9bd79","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v2/quota_classes.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __getattr__(self, attr):"},{"line_number":30,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"sys.modules[\"cinderclient.v2.quota_classes\"] \u003d \\"},{"line_number":33,"context_line":"    MovedModule(quota_classes)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_b396154a","line":32,"updated":"2016-02-28 22:48:41.000000000","message":"() instead of \\","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __getattr__(self, attr):"},{"line_number":30,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"sys.modules[\"cinderclient.v2.quota_classes\"] \u003d \\"},{"line_number":33,"context_line":"    MovedModule(quota_classes)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_77d5a0b7","line":32,"in_reply_to":"9aed3d3a_b396154a","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v2/volume_backups.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def __getattr__(self, attr):"},{"line_number":32,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"sys.modules[\"cinderclient.v2.volume_backups\"] \u003d \\"},{"line_number":35,"context_line":"    MovedModule(volume_backups)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_93915155","line":34,"updated":"2016-02-28 22:48:41.000000000","message":"() instead of \\","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def __getattr__(self, attr):"},{"line_number":32,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"sys.modules[\"cinderclient.v2.volume_backups\"] \u003d \\"},{"line_number":35,"context_line":"    MovedModule(volume_backups)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_5796a4f0","line":34,"in_reply_to":"9aed3d3a_93915155","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v2/volume_backups_restore.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __getattr__(self, attr):"},{"line_number":33,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sys.modules[\"cinderclient.v2.volume_backups_restore\"] \u003d \\"},{"line_number":36,"context_line":"    MovedModule(volume_backups_restore)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_d39bd970","line":35,"updated":"2016-02-28 22:48:41.000000000","message":"() instead of \\","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __getattr__(self, attr):"},{"line_number":33,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sys.modules[\"cinderclient.v2.volume_backups_restore\"] \u003d \\"},{"line_number":36,"context_line":"    MovedModule(volume_backups_restore)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_57bd0467","line":35,"in_reply_to":"9aed3d3a_d39bd970","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3dad2b1175bc7d1faa8c79a79f35cbf729b51ac8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinderclient.v3 import volume_backups_restore"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class MovedModule(object):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, new_module):"},{"line_number":30,"context_line":"        self.new_module \u003d new_module"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_a1588e33","line":27,"updated":"2016-03-22 22:12:00.000000000","message":"It\u0027s copy-pasted across several files","commit_id":"1da204f076e91b7cf2dd0e611baa95d120a0886a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3dad2b1175bc7d1faa8c79a79f35cbf729b51ac8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __getattr__(self, attr):"},{"line_number":33,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sys.modules[\"cinderclient.v2.volume_backups_restore\"] \u003d ("},{"line_number":36,"context_line":"    MovedModule(volume_backups_restore))"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_01317aec","line":35,"updated":"2016-03-22 22:12:00.000000000","message":"Why can\u0027t we just use something like:\nfrom cinderclient.v3.volume_backups_restore import *  # noqa\n?\n\nManipulations with sys.modules looks like a dirty hack. Do we really need it?\n\n\nThe same comment for the rest of such changes","commit_id":"1da204f076e91b7cf2dd0e611baa95d120a0886a"}],"cinderclient/v2/volume_encryption_types.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __getattr__(self, attr):"},{"line_number":33,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sys.modules[\"cinderclient.v2.volume_encryption_types\"] \u003d \\"},{"line_number":36,"context_line":"    MovedModule(volume_encryption_types)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_33896527","line":35,"updated":"2016-02-28 22:48:41.000000000","message":"() instead of \\","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __getattr__(self, attr):"},{"line_number":33,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sys.modules[\"cinderclient.v2.volume_encryption_types\"] \u003d \\"},{"line_number":36,"context_line":"    MovedModule(volume_encryption_types)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_d7b11491","line":35,"in_reply_to":"9aed3d3a_33896527","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v2/volume_snapshots.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __getattr__(self, attr):"},{"line_number":30,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"sys.modules[\"cinderclient.v2.volume_snapshots\"] \u003d \\"},{"line_number":33,"context_line":"    MovedModule(volume_snapshots)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_33904543","line":32,"updated":"2016-02-28 22:48:41.000000000","message":"yada yada yada","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __getattr__(self, attr):"},{"line_number":30,"context_line":"        return getattr(self.new_module, attr)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"sys.modules[\"cinderclient.v2.volume_snapshots\"] \u003d \\"},{"line_number":33,"context_line":"    MovedModule(volume_snapshots)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_f7a6d051","line":32,"in_reply_to":"9aed3d3a_33904543","updated":"2016-03-02 18:32:44.000000000","message":"Done","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v3/pools.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :rtype: list of :class:`Pool`"},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        if detailed is True:"},{"line_number":40,"context_line":"            pools \u003d self._list(\"/scheduler-stats/get_pools?detail\u003dTrue\","},{"line_number":41,"context_line":"                               \"pools\")"},{"line_number":42,"context_line":"            # Other than the name, all of the pool data is buried below in"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_33de8511","line":39,"updated":"2016-02-28 22:48:41.000000000","message":"A little redundant - could just be \"if detailed:\"","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"f64479cbc7fe1951844a861379cefa9d880ae8b9","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :rtype: list of :class:`Pool`"},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        if detailed is True:"},{"line_number":40,"context_line":"            pools \u003d self._list(\"/scheduler-stats/get_pools?detail\u003dTrue\","},{"line_number":41,"context_line":"                               \"pools\")"},{"line_number":42,"context_line":"            # Other than the name, all of the pool data is buried below in"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_820d8839","line":39,"in_reply_to":"9aed3d3a_33de8511","updated":"2016-03-02 18:32:44.000000000","message":"Yes. But it\u0027s just a cut-n-paste from v2.\nReviewers often point out that we should not be changing things unrelated to the patch. And it does make it a bit harder to review because of that.\nOK if I leave this change? I\u0027m happy to fix, if that\u0027s what you want.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v3/shell.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f0d28f473fc3b9d9173e2d53159c034d533d4cf","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        for field_title in args.fields.split(\u0027,\u0027):"},{"line_number":248,"context_line":"            field_titles.append(field_title)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    # --sort_key and --sort_dir deprecated in kilo and is not supported"},{"line_number":251,"context_line":"    # with --sort"},{"line_number":252,"context_line":"    if args.sort and (args.sort_key or args.sort_dir):"},{"line_number":253,"context_line":"        raise exceptions.CommandError("}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_73ff6d67","line":250,"updated":"2016-02-28 22:48:41.000000000","message":"Should exclude from v3.","commit_id":"777423e74b5028813c599b2d0b94749e4759bb80"}],"cinderclient/v3/volumes.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"8ff17bc00d7b6d59ffc6090b3d01460bbbce6aec","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        \"\"\"Unmanage a volume.\"\"\""},{"line_number":627,"context_line":"        return self._action(\u0027os-unmanage\u0027, volume, None)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def promote(self, volume):"},{"line_number":630,"context_line":"        \"\"\"Promote secondary to be primary in relationship.\"\"\""},{"line_number":631,"context_line":"        return self._action(\u0027os-promote-replica\u0027, volume, None)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def reenable(self, volume):"},{"line_number":634,"context_line":"        \"\"\"Sync the secondary volume with primary for a relationship.\"\"\""},{"line_number":635,"context_line":"        return self._action(\u0027os-reenable-replica\u0027, volume, None)"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def get_pools(self, detail):"},{"line_number":638,"context_line":"        \"\"\"Show pool information for backends.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_85191d8b","line":635,"range":{"start_line":629,"start_character":0,"end_line":635,"end_character":64},"updated":"2016-03-17 03:12:46.000000000","message":"I don\u0027t known whether this should be supported in V3 api.\nhttps://review.openstack.org/#/c/275797/35/cinder/volume/api.py\n\nBut it should be supported in V2 api.\nhttps://review.openstack.org/#/c/293658/","commit_id":"e1908f588562ae672baec9e892a22bb8251d9e74"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"0bedd7beac6ee957a17860c25555e9ed7aa93d1a","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        \"\"\"Unmanage a volume.\"\"\""},{"line_number":627,"context_line":"        return self._action(\u0027os-unmanage\u0027, volume, None)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def promote(self, volume):"},{"line_number":630,"context_line":"        \"\"\"Promote secondary to be primary in relationship.\"\"\""},{"line_number":631,"context_line":"        return self._action(\u0027os-promote-replica\u0027, volume, None)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def reenable(self, volume):"},{"line_number":634,"context_line":"        \"\"\"Sync the secondary volume with primary for a relationship.\"\"\""},{"line_number":635,"context_line":"        return self._action(\u0027os-reenable-replica\u0027, volume, None)"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def get_pools(self, detail):"},{"line_number":638,"context_line":"        \"\"\"Show pool information for backends.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa0719c6_36a6dcc1","line":635,"range":{"start_line":629,"start_character":0,"end_line":635,"end_character":64},"in_reply_to":"1af94dfe_85191d8b","updated":"2016-03-21 13:37:03.000000000","message":"This patch is to enable the cinderclient to access the new cinder-api server /v3 endpoint, and to enable microversions. The cinder-api server /v3 endpoint is identical to /v2 in every way, and will only change as a new microversion is added.\nSo, the client /v3 endpoint support must be the same as the client /v2 endpoint support.","commit_id":"e1908f588562ae672baec9e892a22bb8251d9e74"}]}
