)]}'
{"novaclient/client.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ce1e6ec22f45699864c1b58abbfe388dc142e7b1","unresolved":false,"context_lines":[{"line_number":769,"context_line":"        for name, module_name in contrib.V2_0_EXTENSIONS.items():"},{"line_number":770,"context_line":"            module_loader \u003d pkgutil.get_loader(module_name)"},{"line_number":771,"context_line":"            module \u003d module_loader.load_module(module_name)"},{"line_number":772,"context_line":"            yield name, module"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"def _discover_via_entry_points():"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_ab1d7468","line":772,"updated":"2016-04-15 14:17:12.000000000","message":"I think this function should have a test in test_discover.py","commit_id":"5d7d08cf08aa1e8e1e9779473d1d21617c6ffe0f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6b3f9cbd4709fa070a25e92b34485fa9b16f4c59","unresolved":false,"context_lines":[{"line_number":774,"context_line":""},{"line_number":775,"context_line":"        modules \u003d contrib.V2_0_EXTENSIONS"},{"line_number":776,"context_line":"        modules[\"baremetal\"] \u003d \"novaclient.v2.contrib.baremetal\""},{"line_number":777,"context_line":"        modules[\"tenant_networks\"] \u003d \"novaclient.v2.contrib.tenant_networks\""},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        for name, module_name in modules.items():"},{"line_number":780,"context_line":"            module_loader \u003d pkgutil.get_loader(module_name)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_d8fc3175","line":777,"updated":"2016-11-29 16:24:14.000000000","message":"What\u0027s special about these two modules?  Is it just that they aren\u0027t listed in V2_0_EXTENSIONS?  Should they be?\n\n(It should probably also be noted that this code, as written, effectively *does* add these modules to V2_0_EXTENSIONS because \"modules\" is a reference to the same underlying dictionary.)","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0518ae3a6924050d565da06aa9a7eb82d63bc520","unresolved":false,"context_lines":[{"line_number":774,"context_line":""},{"line_number":775,"context_line":"        modules \u003d contrib.V2_0_EXTENSIONS"},{"line_number":776,"context_line":"        modules[\"baremetal\"] \u003d \"novaclient.v2.contrib.baremetal\""},{"line_number":777,"context_line":"        modules[\"tenant_networks\"] \u003d \"novaclient.v2.contrib.tenant_networks\""},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        for name, module_name in modules.items():"},{"line_number":780,"context_line":"            module_loader \u003d pkgutil.get_loader(module_name)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_c9bd41d9","line":777,"in_reply_to":"5a74a57a_d8fc3175","updated":"2016-11-29 16:59:13.000000000","message":"\u003e What\u0027s special about these two modules? Is it just that they aren\u0027t listed in V2_0_EXTENSIONS? Should they be?\n\nI added a note about it to novaclient.v2.conrib. Here is a quote:\n\n    # NOTE(andreykurilin): \"baremetal\" and \"tenant_networks\" extensions are missed\n    #   here deliberately. They were deprecated separately from deprecation \n    #   extension mechanism and I prefer to not auto-load them by default \n#   (V2_0_EXTENSIONS is designed for such behaviour). \n\n\u003e(It should probably also be noted that this code, as written, effectively *does* add these modules to V2_0_EXTENSIONS because \"modules\" is a reference to the same underlying dictionary.)\n\noh..good catch","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"be55adb768a3fc9af2f106b9696a58c6524125a7","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        from novaclient.v2.contrib import baremetal"},{"line_number":787,"context_line":"        yield \"baremetal\", baremetal"},{"line_number":788,"context_line":"        from novaclient.v2.contrib import tenant_networks"},{"line_number":789,"context_line":"        yield \"tenant_networks\", tenant_networks"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"def _discover_via_entry_points():"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_3e25080a","line":789,"updated":"2016-11-29 18:20:19.000000000","message":"Looks good, but I\u0027ll make a suggestion:\n\n    modules \u003d {}\n    if version \u003d\u003d api_versions.APIVersion(\"2.0\"):\n        from novaclient.v2 import contrib\n\n        modules \u003d {…}\n        modules.update(…)\n    elif version \u003e\u003d api_versions.APIVersion(\"2.1\"):\n        modules \u003d {…}\n\n    for name, module_name in modules.items():\n        …\n        yield name, module\n\nJust a suggestion.","commit_id":"8d324b004a5837ece17bed4bec598bf69bfbe61e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6d8243a8e3c3159903b351087b5c975e8502912e","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        from novaclient.v2.contrib import baremetal"},{"line_number":787,"context_line":"        yield \"baremetal\", baremetal"},{"line_number":788,"context_line":"        from novaclient.v2.contrib import tenant_networks"},{"line_number":789,"context_line":"        yield \"tenant_networks\", tenant_networks"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"def _discover_via_entry_points():"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_ca9ee506","line":789,"in_reply_to":"5a74a57a_3e25080a","updated":"2016-11-30 13:27:22.000000000","message":"this code is completely changed now after John\u0027s comment, so I can\u0027t implement your suggestion now.","commit_id":"8d324b004a5837ece17bed4bec598bf69bfbe61e"}],"novaclient/v2/client.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"95b2e4aac1a5c52770d0d2d755785f2b09bd2b27","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self.server_groups \u003d server_groups.ServerGroupsManager(self)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # NOTE(andreykurilin): v2.1 include all extensions from contrib dir"},{"line_number":172,"context_line":"        if not extensions and self.api_version.ver_minor !\u003d 0:"},{"line_number":173,"context_line":"            extensions \u003d client.discover_extensions(self.api_version)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Add in any extensions..."}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_515ce5ec","line":172,"range":{"start_line":172,"start_character":30,"end_line":172,"end_character":61},"updated":"2016-02-17 01:03:46.000000000","message":"Shouldn\u0027t this be something like \"if api_version \u003e\u003d \u00272.1\u0027\" instead of doing \"minor version !\u003d 0\"? I\u0027m wary of assuming we\u0027ll never have api version 3.0 someday and don\u0027t see what is gained by making the assumption","commit_id":"004c4bca8d5892414cfdc166b0eeacfd60dc4628"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d67f62ffd8f7a8123f2d3a58348cfdfa16878c6e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self.server_groups \u003d server_groups.ServerGroupsManager(self)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # NOTE(andreykurilin): v2.1 include all extensions from contrib dir"},{"line_number":172,"context_line":"        if not extensions and self.api_version.ver_minor !\u003d 0:"},{"line_number":173,"context_line":"            extensions \u003d client.discover_extensions(self.api_version)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Add in any extensions..."}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_316040a5","line":172,"range":{"start_line":172,"start_character":30,"end_line":172,"end_character":61},"in_reply_to":"dae33548_515ce5ec","updated":"2016-02-17 01:42:45.000000000","message":"In future, if we will assume that v2 and v3 code base can be the same, we will be able to change all checks, but now we can skip checks for major version.","commit_id":"004c4bca8d5892414cfdc166b0eeacfd60dc4628"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5b21bcd7e796a89700c40066a787b92a1dfd992b","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # NOTE(andreykurilin): v2.1 include all extensions from contrib dir"},{"line_number":172,"context_line":"        if not extensions and self.api_version.ver_minor !\u003d 0:"},{"line_number":173,"context_line":"            extensions \u003d client.discover_extensions(self.api_version)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Add in any extensions..."},{"line_number":176,"context_line":"        if extensions:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_7747794b","line":173,"range":{"start_line":173,"start_character":52,"end_line":173,"end_character":68},"updated":"2016-02-27 00:28:40.000000000","message":"I think you want only_contrib\u003dTrue here, right? Otherwise every creation of a Client will search python path and entry points.","commit_id":"c1ce015df38c4303cb41e620e4b70c5bd8a3a140"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8da1cf4f87f8a04fb65d8351b6ad65bb0fc1ba05","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # NOTE(andreykurilin): v2.1 include all extensions from contrib dir"},{"line_number":172,"context_line":"        if not extensions and self.api_version.ver_minor !\u003d 0:"},{"line_number":173,"context_line":"            extensions \u003d client.discover_extensions(self.api_version)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Add in any extensions..."},{"line_number":176,"context_line":"        if extensions:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_fc036440","line":173,"range":{"start_line":173,"start_character":52,"end_line":173,"end_character":68},"in_reply_to":"9aed3d3a_7747794b","updated":"2016-02-27 09:50:26.000000000","message":"yeah...thanks","commit_id":"c1ce015df38c4303cb41e620e4b70c5bd8a3a140"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2fe8208d535dfd566355ceb2e8f8fe86063cb824","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            server_migrations.ServerMigrationsManager(self)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # TODO(andreykurilin): remove this check when support of 2.0 will be"},{"line_number":184,"context_line":"        #   removed."},{"line_number":185,"context_line":"        if api_version \u003e\u003d api_versions.APIVersion(\"2.1\"):"},{"line_number":186,"context_line":"            self.assisted_volume_snapshots \u003d \\"},{"line_number":187,"context_line":"                assisted_volume_snapshots.AssistedSnapshotManager(self)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_0c039e10","line":184,"updated":"2016-11-30 12:37:55.000000000","message":"Why would we ever remove 2.0 support? I am confused.","commit_id":"8d324b004a5837ece17bed4bec598bf69bfbe61e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"24097e601a5b3a68d149ee2fd2cf51e5665001de","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            server_migrations.ServerMigrationsManager(self)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # TODO(andreykurilin): remove this check when support of 2.0 will be"},{"line_number":184,"context_line":"        #   removed."},{"line_number":185,"context_line":"        if api_version \u003e\u003d api_versions.APIVersion(\"2.1\"):"},{"line_number":186,"context_line":"            self.assisted_volume_snapshots \u003d \\"},{"line_number":187,"context_line":"                assisted_volume_snapshots.AssistedSnapshotManager(self)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_478c9135","line":184,"in_reply_to":"5a74a57a_0c039e10","updated":"2016-11-30 12:46:01.000000000","message":"Currently, we have 2.0 and 2.1, which are almost equal. Imho, 2.1 is more complete and clear version, so I hope we will switch to it some day and abandon raw 2.0 :)\n\nPS: Btw, what about turning on all extensions by default starting from 2.0 ?","commit_id":"8d324b004a5837ece17bed4bec598bf69bfbe61e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"acdc2ae950bdf7b4658604cf2d5afee43342896d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            server_migrations.ServerMigrationsManager(self)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # TODO(andreykurilin): remove this check when support of 2.0 will be"},{"line_number":184,"context_line":"        #   removed."},{"line_number":185,"context_line":"        if api_version \u003e\u003d api_versions.APIVersion(\"2.1\"):"},{"line_number":186,"context_line":"            self.assisted_volume_snapshots \u003d \\"},{"line_number":187,"context_line":"                assisted_volume_snapshots.AssistedSnapshotManager(self)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_a77d64e9","line":184,"in_reply_to":"5a74a57a_478c9135","updated":"2016-11-30 13:08:24.000000000","message":"We can\u0027t ever drop 2.0, because of its existing users. Its all provided by the 2.1 code now anyways.\n\nYeah, I am leaning towards just turning on all extensions for both 2.1 and 2.0.","commit_id":"8d324b004a5837ece17bed4bec598bf69bfbe61e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6d8243a8e3c3159903b351087b5c975e8502912e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            server_migrations.ServerMigrationsManager(self)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # TODO(andreykurilin): remove this check when support of 2.0 will be"},{"line_number":184,"context_line":"        #   removed."},{"line_number":185,"context_line":"        if api_version \u003e\u003d api_versions.APIVersion(\"2.1\"):"},{"line_number":186,"context_line":"            self.assisted_volume_snapshots \u003d \\"},{"line_number":187,"context_line":"                assisted_volume_snapshots.AssistedSnapshotManager(self)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_2aad9931","line":184,"in_reply_to":"5a74a57a_a77d64e9","updated":"2016-11-30 13:27:22.000000000","message":"done","commit_id":"8d324b004a5837ece17bed4bec598bf69bfbe61e"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"50aa083540323bffbe41f30964a14f933f2ab004","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            server_migrations.ServerMigrationsManager(self)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # V2.0 extensions:"},{"line_number":183,"context_line":"        # NOTE(andreykurilin): baremetal and tenant_networks extensiont are"},{"line_number":184,"context_line":"        #   deprecated now that is why they are not initialized by default."},{"line_number":185,"context_line":"        self.assisted_volume_snapshots \u003d \\"},{"line_number":186,"context_line":"            assisted_volume_snapshots.AssistedSnapshotManager(self)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a74a57a_a49e3505","line":183,"range":{"start_line":183,"start_character":61,"end_line":183,"end_character":71},"updated":"2016-11-30 16:15:06.000000000","message":"attonit: s/extensiont/extensions/","commit_id":"3fceb8f86c4fc27de38cfade839564324d27d62b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ca8c3083e48baf9c23fe72b7605184b1343bdc3f","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            server_migrations.ServerMigrationsManager(self)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # V2.0 extensions:"},{"line_number":183,"context_line":"        # NOTE(andreykurilin): baremetal and tenant_networks extensiont are"},{"line_number":184,"context_line":"        #   deprecated now that is why they are not initialized by default."},{"line_number":185,"context_line":"        self.assisted_volume_snapshots \u003d \\"},{"line_number":186,"context_line":"            assisted_volume_snapshots.AssistedSnapshotManager(self)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a74a57a_0692884b","line":183,"range":{"start_line":183,"start_character":61,"end_line":183,"end_character":71},"in_reply_to":"5a74a57a_a49e3505","updated":"2016-11-30 18:00:43.000000000","message":"Done","commit_id":"3fceb8f86c4fc27de38cfade839564324d27d62b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"50aa083540323bffbe41f30964a14f933f2ab004","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # V2.0 extensions:"},{"line_number":183,"context_line":"        # NOTE(andreykurilin): baremetal and tenant_networks extensiont are"},{"line_number":184,"context_line":"        #   deprecated now that is why they are not initialized by default."},{"line_number":185,"context_line":"        self.assisted_volume_snapshots \u003d \\"},{"line_number":186,"context_line":"            assisted_volume_snapshots.AssistedSnapshotManager(self)"},{"line_number":187,"context_line":"        self.cells \u003d cells.CellsManager(self)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a74a57a_a46c7509","line":184,"range":{"start_line":184,"start_character":23,"end_line":184,"end_character":31},"updated":"2016-11-30 16:15:06.000000000","message":"attonit: s/now that/now, which/","commit_id":"3fceb8f86c4fc27de38cfade839564324d27d62b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ca8c3083e48baf9c23fe72b7605184b1343bdc3f","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # V2.0 extensions:"},{"line_number":183,"context_line":"        # NOTE(andreykurilin): baremetal and tenant_networks extensiont are"},{"line_number":184,"context_line":"        #   deprecated now that is why they are not initialized by default."},{"line_number":185,"context_line":"        self.assisted_volume_snapshots \u003d \\"},{"line_number":186,"context_line":"            assisted_volume_snapshots.AssistedSnapshotManager(self)"},{"line_number":187,"context_line":"        self.cells \u003d cells.CellsManager(self)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a74a57a_2699446f","line":184,"range":{"start_line":184,"start_character":23,"end_line":184,"end_character":31},"in_reply_to":"5a74a57a_a46c7509","updated":"2016-11-30 18:00:43.000000000","message":"Done","commit_id":"3fceb8f86c4fc27de38cfade839564324d27d62b"}],"novaclient/v2/contrib/__init__.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9b6f22b6941aad485feabe4b3a7375a34646d183","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013, Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_e874409d","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-04-13 13:15:29.000000000","message":"nit, 2016","commit_id":"d60ef8f3c98021160eaaae300c1e88e3f17d37c3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b89d05680535027ada37432d9d73869bf4660d8a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013, Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_3d0bea8f","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"5a18252c_e874409d","updated":"2016-04-14 09:00:58.000000000","message":"lol, I just copy-pasted header without taking care about the text. Will remove it.","commit_id":"d60ef8f3c98021160eaaae300c1e88e3f17d37c3"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ce1e6ec22f45699864c1b58abbfe388dc142e7b1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            msg +\u003d _LW(\" in favor of `%s`.\") % new_module_name"},{"line_number":44,"context_line":"        warnings.warn(msg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"warn()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_eb62cc15","line":46,"updated":"2016-04-15 14:17:12.000000000","message":"I think we should test that the warning is emitted when contrib is used via the python api","commit_id":"5d7d08cf08aa1e8e1e9779473d1d21617c6ffe0f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7810892c33a4d11b8daa846ddaac1a23095cfa5b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    frm \u003d inspect.stack()[1]"},{"line_number":33,"context_line":"    module_name \u003d inspect.getmodule(frm[0]).__name__"},{"line_number":34,"context_line":"    if module_name.startswith(\"novaclient.v2.contrib.\"):"},{"line_number":35,"context_line":"        msg \u003d (_LW(\"Module `%s` is deprecated since novaclient 4.0.0\") %"},{"line_number":36,"context_line":"               module_name)"},{"line_number":37,"context_line":"        if not alternative:"},{"line_number":38,"context_line":"            msg +\u003d _LW(\". All shell commands were moved to \""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a122d0e_013e72d9","line":35,"range":{"start_line":35,"start_character":63,"end_line":35,"end_character":68},"updated":"2016-04-20 01:28:33.000000000","message":"python-novaclient 4.0.0 was released today, so I think we need to change this now :(","commit_id":"8c7ad9f9d420adc9d969bd5c8265f79974c90403"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"4647353eb741a2895807220ca12c80c680524681","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    frm \u003d inspect.stack()[1]"},{"line_number":33,"context_line":"    module_name \u003d inspect.getmodule(frm[0]).__name__"},{"line_number":34,"context_line":"    if module_name.startswith(\"novaclient.v2.contrib.\"):"},{"line_number":35,"context_line":"        msg \u003d (_LW(\"Module `%s` is deprecated after novaclient 4.0.0\") %"},{"line_number":36,"context_line":"               module_name)"},{"line_number":37,"context_line":"        if not alternative:"},{"line_number":38,"context_line":"            msg +\u003d _LW(\". All shell commands were moved to \""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_44003866","line":35,"updated":"2016-04-21 00:10:23.000000000","message":"Sorry to bring this up again and not asking to change it right away, but isn\u0027t the deprecation message supposed to call out when the removal will happen? Or is that not on the horizon yet and we will update this when we know when we\u0027ll remove the contrib dir?","commit_id":"0a12f4b9918c817f8ab0c767e66ef27a56fe5ce8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f48d4352256841c1fcab26ca4bcaace66cd88a58","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    frm \u003d inspect.stack()[1]"},{"line_number":33,"context_line":"    module_name \u003d inspect.getmodule(frm[0]).__name__"},{"line_number":34,"context_line":"    if module_name.startswith(\"novaclient.v2.contrib.\"):"},{"line_number":35,"context_line":"        msg \u003d (_LW(\"Module `%s` is deprecated after novaclient 4.0.0\") %"},{"line_number":36,"context_line":"               module_name)"},{"line_number":37,"context_line":"        if not alternative:"},{"line_number":38,"context_line":"            msg +\u003d _LW(\". All shell commands were moved to \""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a74a57a_48d2b401","line":35,"in_reply_to":"1a122d0e_44003866","updated":"2016-11-24 17:55:38.000000000","message":"Done","commit_id":"0a12f4b9918c817f8ab0c767e66ef27a56fe5ce8"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6b3f9cbd4709fa070a25e92b34485fa9b16f4c59","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027instance_action\u0027: \u0027novaclient.v2.instance_action\u0027,"},{"line_number":24,"context_line":"    \u0027list_extensions\u0027: \u0027novaclient.v2.list_extensions\u0027,"},{"line_number":25,"context_line":"    \u0027migrations\u0027: \u0027novaclient.v2.migrations\u0027,"},{"line_number":26,"context_line":"    \u0027server_external_events\u0027: \u0027novaclient.v2.server_external_events\u0027}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def warn(alternative\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_180b092d","line":26,"updated":"2016-11-29 16:24:14.000000000","message":"attonit: In dict literals like this, I like to use the style of ending the last item with a comma, to make adding additional items easier.  I also like to put the closing brace on a line by itself, for the same reason.  (Diff will show only a line addition in my style, whereas for this, it will show a modified line plus an added line.)","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0518ae3a6924050d565da06aa9a7eb82d63bc520","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027instance_action\u0027: \u0027novaclient.v2.instance_action\u0027,"},{"line_number":24,"context_line":"    \u0027list_extensions\u0027: \u0027novaclient.v2.list_extensions\u0027,"},{"line_number":25,"context_line":"    \u0027migrations\u0027: \u0027novaclient.v2.migrations\u0027,"},{"line_number":26,"context_line":"    \u0027server_external_events\u0027: \u0027novaclient.v2.server_external_events\u0027}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def warn(alternative\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_1ef851c4","line":26,"in_reply_to":"5a74a57a_180b092d","updated":"2016-11-29 16:59:13.000000000","message":"I think we are not planning to add v2.0 extensions any more. But it is ok to me to make this code nicer for you:)","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"06dc4c245704d60068da045508da118b21c27055","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    frm \u003d inspect.stack()[1]"},{"line_number":32,"context_line":"    module_name \u003d inspect.getmodule(frm[0]).__name__"},{"line_number":33,"context_line":"    if module_name.startswith(\"novaclient.v2.contrib.\"):"},{"line_number":34,"context_line":"        msg \u003d (_LW(\"Module `%s` is deprecated since OpenStack Ocata\") %"},{"line_number":35,"context_line":"               module_name)"},{"line_number":36,"context_line":"        if alternative:"},{"line_number":37,"context_line":"            new_module_name \u003d module_name.replace(\"contrib.\", \"\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_75c4085f","line":34,"range":{"start_line":34,"start_character":46,"end_line":34,"end_character":51},"updated":"2016-11-29 16:05:06.000000000","message":"s/since/as of","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7f3a19d188b4cc5a6b1201a5eddbe6539acf3a02","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    frm \u003d inspect.stack()[1]"},{"line_number":32,"context_line":"    module_name \u003d inspect.getmodule(frm[0]).__name__"},{"line_number":33,"context_line":"    if module_name.startswith(\"novaclient.v2.contrib.\"):"},{"line_number":34,"context_line":"        msg \u003d (_LW(\"Module `%s` is deprecated since OpenStack Ocata\") %"},{"line_number":35,"context_line":"               module_name)"},{"line_number":36,"context_line":"        if alternative:"},{"line_number":37,"context_line":"            new_module_name \u003d module_name.replace(\"contrib.\", \"\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_75e1689a","line":34,"range":{"start_line":34,"start_character":46,"end_line":34,"end_character":51},"in_reply_to":"5a74a57a_75c4085f","updated":"2016-11-29 16:16:40.000000000","message":"Done","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"06dc4c245704d60068da045508da118b21c27055","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if not alternative:"},{"line_number":43,"context_line":"            msg +\u003d _LW(\" All shell commands were moved to \""},{"line_number":44,"context_line":"                       \"`novaclient.v2.shell` and must be automatically \""},{"line_number":45,"context_line":"                       \"loaded.\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        warnings.warn(msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_f5ae5897","line":44,"range":{"start_line":44,"start_character":50,"end_line":44,"end_character":54},"updated":"2016-11-29 16:05:06.000000000","message":"will*","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7f3a19d188b4cc5a6b1201a5eddbe6539acf3a02","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if not alternative:"},{"line_number":43,"context_line":"            msg +\u003d _LW(\" All shell commands were moved to \""},{"line_number":44,"context_line":"                       \"`novaclient.v2.shell` and must be automatically \""},{"line_number":45,"context_line":"                       \"loaded.\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        warnings.warn(msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_d5e6bcaf","line":44,"range":{"start_line":44,"start_character":50,"end_line":44,"end_character":54},"in_reply_to":"5a74a57a_f5ae5897","updated":"2016-11-29 16:16:40.000000000","message":"Done","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"50aa083540323bffbe41f30964a14f933f2ab004","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from novaclient.i18n import _LW"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# NOTE(andreykurilin): \"baremetal\" and \"tenant_networks\" extensions are missed"},{"line_number":19,"context_line":"#   here deliberately. They were deprecated separately from deprecation"},{"line_number":20,"context_line":"#   extension mechanism and I prefer to not auto-load them by default"},{"line_number":21,"context_line":"#   (V2_0_EXTENSIONS is designed for such behaviour)."}],"source_content_type":"text/x-python","patch_set":19,"id":"5a74a57a_6417bd54","line":18,"range":{"start_line":18,"start_character":72,"end_line":18,"end_character":78},"updated":"2016-11-30 16:15:06.000000000","message":"attonit: s/missed here/excluded/","commit_id":"3fceb8f86c4fc27de38cfade839564324d27d62b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ca8c3083e48baf9c23fe72b7605184b1343bdc3f","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from novaclient.i18n import _LW"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# NOTE(andreykurilin): \"baremetal\" and \"tenant_networks\" extensions are missed"},{"line_number":19,"context_line":"#   here deliberately. They were deprecated separately from deprecation"},{"line_number":20,"context_line":"#   extension mechanism and I prefer to not auto-load them by default"},{"line_number":21,"context_line":"#   (V2_0_EXTENSIONS is designed for such behaviour)."}],"source_content_type":"text/x-python","patch_set":19,"id":"5a74a57a_469c805d","line":18,"range":{"start_line":18,"start_character":72,"end_line":18,"end_character":78},"in_reply_to":"5a74a57a_6417bd54","updated":"2016-11-30 18:00:43.000000000","message":"Done","commit_id":"3fceb8f86c4fc27de38cfade839564324d27d62b"}],"novaclient/v2/contrib/host_evacuate.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"06dc4c245704d60068da045508da118b21c27055","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from novaclient import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class EvacuateHostResponse(base.Resource):"},{"line_number":23,"context_line":"    pass"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_55f0ecc9","side":"PARENT","line":22,"range":{"start_line":22,"start_character":6,"end_line":22,"end_character":26},"updated":"2016-11-29 16:05:06.000000000","message":"looks like you need a reference to the new version","commit_id":"83106a4442c2cb2f2617576e2e5539b409130ed3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7f3a19d188b4cc5a6b1201a5eddbe6539acf3a02","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from novaclient import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class EvacuateHostResponse(base.Resource):"},{"line_number":23,"context_line":"    pass"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_3521b0b5","side":"PARENT","line":22,"range":{"start_line":22,"start_character":6,"end_line":22,"end_character":26},"in_reply_to":"5a74a57a_55f0ecc9","updated":"2016-11-29 16:16:40.000000000","message":"Done","commit_id":"83106a4442c2cb2f2617576e2e5539b409130ed3"}],"novaclient/v2/contrib/host_servers_migrate.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"06dc4c245704d60068da045508da118b21c27055","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from novaclient import utils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class HostServersMigrateResponse(base.Resource):"},{"line_number":22,"context_line":"    pass"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_b5d6a025","side":"PARENT","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":32},"updated":"2016-11-29 16:05:06.000000000","message":"looks like you need a reference to this in the new version?","commit_id":"83106a4442c2cb2f2617576e2e5539b409130ed3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"62c752813620565a3733d82d2eb40e1fba0e2b46","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from novaclient import utils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class HostServersMigrateResponse(base.Resource):"},{"line_number":22,"context_line":"    pass"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_982f19a7","side":"PARENT","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":32},"in_reply_to":"5a74a57a_18714978","updated":"2016-11-29 16:21:02.000000000","message":"ah, okay. thanks","commit_id":"83106a4442c2cb2f2617576e2e5539b409130ed3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7f3a19d188b4cc5a6b1201a5eddbe6539acf3a02","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from novaclient import utils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class HostServersMigrateResponse(base.Resource):"},{"line_number":22,"context_line":"    pass"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5a74a57a_18714978","side":"PARENT","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":32},"in_reply_to":"5a74a57a_b5d6a025","updated":"2016-11-29 16:16:40.000000000","message":"Actually, this class is used only by private method and cli, so it should not be used outside novaclient, but lets support 100% compatibility. Done","commit_id":"83106a4442c2cb2f2617576e2e5539b409130ed3"}],"novaclient/v2/server_external_events.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9b6f22b6941aad485feabe4b3a7375a34646d183","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                            return_raw\u003dTrue)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"manager_class \u003d ServerExternalEventManager"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_a3aeeb82","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":42},"updated":"2016-04-13 13:15:29.000000000","message":"originally it\u0027s \n\n 42 manager_class \u003d ServerExternalEventManager\n 43 name \u003d \u0027server_external_events\u0027\n\ndo we need to remove them both?","commit_id":"d60ef8f3c98021160eaaae300c1e88e3f17d37c3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7ad8b50f8ed8154c77807701d88b692541ad1281","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                            return_raw\u003dTrue)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"manager_class \u003d ServerExternalEventManager"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_bd3eda25","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":42},"in_reply_to":"5a18252c_a3aeeb82","updated":"2016-04-14 09:02:31.000000000","message":"yeah, let\u0027s remove it:)","commit_id":"d60ef8f3c98021160eaaae300c1e88e3f17d37c3"}],"releasenotes/notes/deprecate_contrib_extensions-0ec70c070b09eedb.yaml":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"06dc4c245704d60068da045508da118b21c27055","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    All extensions of API V2.0  were merged to 2.1, but NovaClient continued"},{"line_number":4,"context_line":"    to store them as a separate entities."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - All managers and resources from novaclient.v2.contrib submodules are moved"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5a74a57a_35cd305e","line":3,"range":{"start_line":3,"start_character":30,"end_line":3,"end_character":32},"updated":"2016-11-29 16:05:06.000000000","message":"super nit: 2 spaces","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7f3a19d188b4cc5a6b1201a5eddbe6539acf3a02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    All extensions of API V2.0  were merged to 2.1, but NovaClient continued"},{"line_number":4,"context_line":"    to store them as a separate entities."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - All managers and resources from novaclient.v2.contrib submodules are moved"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5a74a57a_58dae118","line":3,"range":{"start_line":3,"start_character":30,"end_line":3,"end_character":32},"in_reply_to":"5a74a57a_35cd305e","updated":"2016-11-29 16:16:40.000000000","message":"I know a guy(unfortunately, he is not in OpenStack community now) who can put -1 for such nit:)\nDone.","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"62c752813620565a3733d82d2eb40e1fba0e2b46","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    All extensions of API V2.0  were merged to 2.1, but NovaClient continued"},{"line_number":4,"context_line":"    to store them as a separate entities."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - All managers and resources from novaclient.v2.contrib submodules are moved"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5a74a57a_18af892c","line":3,"range":{"start_line":3,"start_character":30,"end_line":3,"end_character":32},"in_reply_to":"5a74a57a_58dae118","updated":"2016-11-29 16:21:02.000000000","message":":)","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"06dc4c245704d60068da045508da118b21c27055","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    contained only shell commands and shell module auto loads them (there is"},{"line_number":19,"context_line":"    no ability to not do it)."},{"line_number":20,"context_line":"deprecations:"},{"line_number":21,"context_line":"  - All modules of novaclient.v2.contrib are deprecated now"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5a74a57a_55f1cc94","line":21,"updated":"2016-11-29 16:05:06.000000000","message":"add a period at the end","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7f3a19d188b4cc5a6b1201a5eddbe6539acf3a02","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    contained only shell commands and shell module auto loads them (there is"},{"line_number":19,"context_line":"    no ability to not do it)."},{"line_number":20,"context_line":"deprecations:"},{"line_number":21,"context_line":"  - All modules of novaclient.v2.contrib are deprecated now"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5a74a57a_1894e942","line":21,"in_reply_to":"5a74a57a_55f1cc94","updated":"2016-11-29 16:16:40.000000000","message":"Done","commit_id":"b748c5fef8eefec20ebd9e54ccb90de6a2dcb76b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"241fc3609ee76d6cca54df7cd9243ac98d588839","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    no ability to not do it)."},{"line_number":20,"context_line":"deprecations:"},{"line_number":21,"context_line":"  - All modules of novaclient.v2.contrib are deprecated now and will be"},{"line_number":22,"context_line":"    removed after OpenStack Pike"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"5a74a57a_3bf51fcb","line":22,"updated":"2016-11-29 16:26:41.000000000","message":"Except you never added Steve\u0027s period ;)","commit_id":"a3102f1dba84752552a3f386b1aca23249d13ef3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"753e65d9ab09551a5639d8c24b9e7791c7ba5990","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    no ability to not do it)."},{"line_number":20,"context_line":"deprecations:"},{"line_number":21,"context_line":"  - All modules of novaclient.v2.contrib are deprecated now and will be"},{"line_number":22,"context_line":"    removed after OpenStack Pike"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"5a74a57a_65727baf","line":22,"in_reply_to":"5a74a57a_1e1f710a","updated":"2016-11-30 04:10:03.000000000","message":"Ha, I did in fact mean a single period \".\"","commit_id":"a3102f1dba84752552a3f386b1aca23249d13ef3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6d31d8421b96276d379b8cc96d94954bce62eb7f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    no ability to not do it)."},{"line_number":20,"context_line":"deprecations:"},{"line_number":21,"context_line":"  - All modules of novaclient.v2.contrib are deprecated now and will be"},{"line_number":22,"context_line":"    removed after OpenStack Pike"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"5a74a57a_7e47854b","line":22,"in_reply_to":"5a74a57a_3bf51fcb","updated":"2016-11-29 16:37:34.000000000","message":"lol. I misunderstood his comment. I thought he asked for \"period of deprecation and when it will be ended/when modules will be removed)\" :))))))))","commit_id":"a3102f1dba84752552a3f386b1aca23249d13ef3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b2b76cb5c056cf287d6a2a866386ebc52ba9e3e8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    no ability to not do it)."},{"line_number":20,"context_line":"deprecations:"},{"line_number":21,"context_line":"  - All modules of novaclient.v2.contrib are deprecated now and will be"},{"line_number":22,"context_line":"    removed after OpenStack Pike"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"5a74a57a_1e1f710a","line":22,"in_reply_to":"5a74a57a_7e47854b","updated":"2016-11-29 16:41:32.000000000","message":"Haha :)  Maybe that *is* what he meant; I tend to be a literalist, so I thought \u0027.\u0027 :)  (Nevertheless, *I\u0027d* like to see a \u0027.\u0027 ;)","commit_id":"a3102f1dba84752552a3f386b1aca23249d13ef3"}]}
