)]}'
{"novaclient/tests/functional/base.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"65849b5ed63ae760a3d38cd0b6c5ae84dda1aea3","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        # pick some reasonable flavor / image combo"},{"line_number":212,"context_line":"        self.flavor \u003d pick_flavor(self.client.flavors.list())"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        # TODO(mriedem): Get images from glance directly."},{"line_number":215,"context_line":"        tested_api_version \u003d self.client.api_version"},{"line_number":216,"context_line":"        proxy_api_version \u003d novaclient.api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":217,"context_line":"        if tested_api_version \u003e proxy_api_version:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_e4708ba6","line":214,"updated":"2016-08-17 16:10:18.000000000","message":"We could rebase on this if we care:\n\nhttps://review.openstack.org/#/c/356575/","commit_id":"ad32e2c3ad38f2a3163c508a454ca8cb118bed53"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5c6b7cb55c324dd5b737cf42816cb8615ec11031","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        tested_api_version \u003d self.client.api_version"},{"line_number":219,"context_line":"        proxy_api_version \u003d novaclient.api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":220,"context_line":"        if tested_api_version \u003e proxy_api_version:"},{"line_number":221,"context_line":"            self.client.client.api_version \u003d proxy_api_version"},{"line_number":222,"context_line":"        try:"},{"line_number":223,"context_line":"            # TODO(mriedem): Get the networks from neutron if using neutron."},{"line_number":224,"context_line":"            self.network \u003d pick_network(self.client.networks.list())"}],"source_content_type":"text/x-python","patch_set":12,"id":"3ac371cc_7c8d08d2","line":221,"range":{"start_line":221,"start_character":12,"end_line":221,"end_character":62},"updated":"2016-08-18 15:38:57.000000000","message":"https://review.openstack.org/#/c/357311/ :)","commit_id":"47eb0fcc42d75239d191beae663f5d819af7d5cb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15dff0cca8188b0a50cb71a3f28e3557f65df08f","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        tested_api_version \u003d self.client.api_version"},{"line_number":219,"context_line":"        proxy_api_version \u003d novaclient.api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":220,"context_line":"        if tested_api_version \u003e proxy_api_version:"},{"line_number":221,"context_line":"            self.client.client.api_version \u003d proxy_api_version"},{"line_number":222,"context_line":"        try:"},{"line_number":223,"context_line":"            # TODO(mriedem): Get the networks from neutron if using neutron."},{"line_number":224,"context_line":"            self.network \u003d pick_network(self.client.networks.list())"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_345d47ea","line":221,"updated":"2016-08-19 15:59:58.000000000","message":"So I thought we didn\u0027t need this anymore because of Andrey\u0027s change?","commit_id":"fd30f9e047666a3c8b4cc4f0d9223241d04f5623"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7887d6448296763295630c9add5004110828fc26","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            self.client.api_version \u003d proxy_api_version"},{"line_number":222,"context_line":"        try:"},{"line_number":223,"context_line":"            # TODO(mriedem): Get the networks from neutron if using neutron."},{"line_number":224,"context_line":"            self.network \u003d pick_network(self.client.networks.list())"},{"line_number":225,"context_line":"        finally:"},{"line_number":226,"context_line":"            self.client.api_version \u003d tested_api_version"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_232b4b32","line":224,"updated":"2016-08-19 17:51:12.000000000","message":"nit: it\u0027s a bit odd that we make an extra network call on every test when only 2 need it, when we redo that, we should probably  do a more on demand fetch of these.","commit_id":"578c39865d41158de185b90ca4cecc7fbb8f59ae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ebe3bfe29b84305c4200b5696a353458804ed85","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            self.client.api_version \u003d proxy_api_version"},{"line_number":222,"context_line":"        try:"},{"line_number":223,"context_line":"            # TODO(mriedem): Get the networks from neutron if using neutron."},{"line_number":224,"context_line":"            self.network \u003d pick_network(self.client.networks.list())"},{"line_number":225,"context_line":"        finally:"},{"line_number":226,"context_line":"            self.client.api_version \u003d tested_api_version"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_43b487f1","line":224,"in_reply_to":"1ac06dbe_232b4b32","updated":"2016-08-19 17:52:53.000000000","message":"Agreed.","commit_id":"578c39865d41158de185b90ca4cecc7fbb8f59ae"}],"novaclient/tests/functional/v2/test_networks.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e68808f4570ca3ecd77e09baa86a41ddd24d438","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class TestNetworkCommandsNovaClient(base.ClientTestBase):"},{"line_number":18,"context_line":"    \"\"\"Deprecated network command functional tests.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMPUTE_API_VERSION \u003d \"2.1\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_commands(self):"},{"line_number":23,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_4b0d873d","line":20,"updated":"2016-07-28 20:17:36.000000000","message":"Shouldn\u0027t this be 2.36?","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"414ae5e84175701b2c45dbeef1795888bcdc6591","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class TestNetworkCommandsNovaClient(base.ClientTestBase):"},{"line_number":18,"context_line":"    \"\"\"Deprecated network command functional tests.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMPUTE_API_VERSION \u003d \"2.1\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_commands(self):"},{"line_number":23,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_f6837eca","line":20,"in_reply_to":"bacf61ea_4b0d873d","updated":"2016-07-28 20:26:41.000000000","message":"Well, or 2.latest.\n\nTrying this out manually, I guess it just means, the command is deprecated regardless of version, but if requesting something too high it\u0027s going to fallback to what it can use, which right now is 2.32:\n\nWARNING: Command network-list is deprecated and will be removed after Nova 15.0.0 is released. Use python-neutronclient or openstackclient instead.\nDEBUG (session:329) REQ: curl -g -i -X GET http://9.5.124.59:8774/v2.1/os-networks -H \"OpenStack-API-Version: compute 2.32\" -H \"User-Agent: python-novaclient\" -H \"Accept: application/json\" -H \"X-OpenStack-Nova-API-Version: 2.32\" -H \"X-Auth-Token: {SHA1}660750704b82c9f5b4b8f137ba48e59c28842bdf\"\n\nBecause of https://github.com/openstack/python-novaclient/blob/master/novaclient/__init__.py#L28 - and the 2.35 cap is in the code once novaclient supports \u003e\u003d2.35.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fff557e8e511b38a1a6180bd5264b040892fab23","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class TestNetworkCommandsNovaClient(base.ClientTestBase):"},{"line_number":18,"context_line":"    \"\"\"Deprecated network command functional tests.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMPUTE_API_VERSION \u003d \"2.1\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_commands(self):"},{"line_number":23,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_9166134f","line":20,"in_reply_to":"bacf61ea_5c542b20","updated":"2016-08-01 15:10:14.000000000","message":"Right, but this test isn\u0027t looking for any behavioral change other than the warning. Since it does fail_ok\u003dTrue, it isn\u0027t even looking to see if the network-list worked. That\u0027s kinda from when I was expecting to have to test all the commands though. So I guess I could set the microversion and make sure that we still pass, but it would be kinda bogus because if we\u0027re running against an older devstack we\u0027d pass anyway, right?","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fcb79ef701cdeaa13fda7bcefe8afbe0e7fab09d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class TestNetworkCommandsNovaClient(base.ClientTestBase):"},{"line_number":18,"context_line":"    \"\"\"Deprecated network command functional tests.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMPUTE_API_VERSION \u003d \"2.1\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_commands(self):"},{"line_number":23,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_acd66025","line":20,"in_reply_to":"bacf61ea_9166134f","updated":"2016-08-01 15:16:08.000000000","message":"I think this test should be requesting 2.latest, which will make it drop back to 2.35 because of your decorator, but because novaclient doesn\u0027t yet support 2.35, it should actually use 2.32. You\u0027ll still get the deprecation warning either way, which is good, I just think the functional test should be closer to what we\u0027d actually do in the CLI, which is by default request the latest we have available and make sure it doesn\u0027t blow up.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6687c215ffae00a62133ff925a067a4ec511063c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class TestNetworkCommandsNovaClient(base.ClientTestBase):"},{"line_number":18,"context_line":"    \"\"\"Deprecated network command functional tests.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMPUTE_API_VERSION \u003d \"2.1\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_commands(self):"},{"line_number":23,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_860bad8d","line":20,"in_reply_to":"bacf61ea_acd66025","updated":"2016-08-10 17:42:18.000000000","message":"I think we also have to bump the version here:\n\nhttps://github.com/openstack/python-novaclient/blob/master/novaclient/__init__.py#L28","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9d8da0faae4829e3a29d25e89df6857474eefaa8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class TestNetworkCommandsNovaClient(base.ClientTestBase):"},{"line_number":18,"context_line":"    \"\"\"Deprecated network command functional tests.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    COMPUTE_API_VERSION \u003d \"2.1\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_commands(self):"},{"line_number":23,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_5c542b20","line":20,"in_reply_to":"bacf61ea_f6837eca","updated":"2016-07-28 21:10:52.000000000","message":"I need to restack and test this out with a devstack that has the 2.36 microversion to make sure we properly fallback to 2.35 because this test is actually specifically requesting 2.1, it should probably actually be requesting 2.latest to mimic the default CLI behavior.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"257a0250db9e54d5e7db59c4bebb204ca2b090fe","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    COMPUTE_API_VERSION \u003d \"2.36\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_command_deprecation(self):"},{"line_number":25,"context_line":"        output \u003d self.nova(\u0027network-list\u0027, fail_ok\u003dTrue, merge_stderr\u003dTrue)"},{"line_number":26,"context_line":"        self.assertIn("},{"line_number":27,"context_line":"            \u0027is deprecated\u0027, output,"},{"line_number":28,"context_line":"            \u0027network-list command did not print deprecation warning\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_a2497462","line":25,"range":{"start_line":25,"start_character":43,"end_line":25,"end_character":50},"updated":"2016-08-10 21:10:37.000000000","message":"I\u0027m not sure we want this as it could mask the 404 we get back if we actually specify 2.35, like what I\u0027m getting locally:\n\nhttp://paste.openstack.org/show/553672/","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ebd94625908230640d7b7529f9696c3451c4e1f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertRaises(ValueError, self._get_value_from_the_table,"},{"line_number":49,"context_line":"                          output, \u0027security_groups\u0027)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_boot_net_name_translation(self):"},{"line_number":52,"context_line":"        # Booting a server with a network name should translate the network"},{"line_number":53,"context_line":"        # name to the network ID for the boot. For neutron this should just"},{"line_number":54,"context_line":"        # use the neutron API, but for nova-network and 2.36 it should drop"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ac371cc_d11ee5b9","line":51,"updated":"2016-08-17 18:55:53.000000000","message":"This is duplicated with:\n\nhttps://github.com/openstack/python-novaclient/blob/master/novaclient/tests/functional/v2/legacy/test_servers.py#L58\n\nWhich is tested with 2.latest here:\n\nhttps://github.com/openstack/python-novaclient/blob/master/novaclient/tests/functional/v2/test_servers.py#L21","commit_id":"9c8d32332e79c5f4d7192a8f38a9a7d1bd9eaa40"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d1a77e294941bff4c425c14ad2602c051b522875","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            \u0027is deprecated\u0027, output,"},{"line_number":30,"context_line":"            \u0027network-list command did not print deprecation warning\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @decorators.skip_because(bug\u003d\"1614133\")"},{"line_number":33,"context_line":"    def test_limits(self):"},{"line_number":34,"context_line":"        \"\"\"Tests that 2.36 won\u0027t return network-related resource limits and"},{"line_number":35,"context_line":"        the CLI output won\u0027t show them."}],"source_content_type":"text/x-python","patch_set":12,"id":"1ac06dbe_d42033fa","line":32,"updated":"2016-08-19 16:04:54.000000000","message":"This is fixed now so we should remove this.","commit_id":"47eb0fcc42d75239d191beae663f5d819af7d5cb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bb4abf7319a2fb191df0c6a29a7b31cd83bc38f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            \u0027is deprecated\u0027, output,"},{"line_number":30,"context_line":"            \u0027network-list command did not print deprecation warning\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @decorators.skip_because(bug\u003d\"1614133\")"},{"line_number":33,"context_line":"    def test_limits(self):"},{"line_number":34,"context_line":"        \"\"\"Tests that 2.36 won\u0027t return network-related resource limits and"},{"line_number":35,"context_line":"        the CLI output won\u0027t show them."}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_5483a3cc","line":32,"updated":"2016-08-19 16:05:17.000000000","message":"This is fixed now so we should remove this.","commit_id":"fd30f9e047666a3c8b4cc4f0d9223241d04f5623"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7887d6448296763295630c9add5004110828fc26","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        output \u003d self.nova(\u0027limits\u0027)"},{"line_number":35,"context_line":"        # assert that SecurityGroups isn\u0027t in the table output"},{"line_number":36,"context_line":"        self.assertRaises(ValueError, self._get_value_from_the_table,"},{"line_number":37,"context_line":"                          output, \u0027SecurityGroups\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_quota_show(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_e30933df","line":36,"updated":"2016-08-19 17:51:12.000000000","message":"nit: \n\nassertNotIn(\u0027SecurityGroups\u0027, output) would have probably been my preference.","commit_id":"578c39865d41158de185b90ca4cecc7fbb8f59ae"}],"novaclient/v2/contrib/tenant_networks.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"@utils.arg(\u0027network_id\u0027, metavar\u003d\u0027\u003cnetwork_id\u003e\u0027, help\u003d\u0027ID of network\u0027)"},{"line_number":56,"context_line":"def do_net(cs, args):"},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":"    DEPRECATED, use tenant-network-show instead."},{"line_number":59,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_1673b2e8","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":10},"updated":"2016-07-28 20:47:28.000000000","message":"This is deprecated but will fail because we don\u0027t fallback to 2.35, although the client doesn\u0027t support 2.36 yet anyway.\n\nDepending on when this was deprecated we could just remove it.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fff557e8e511b38a1a6180bd5264b040892fab23","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"@utils.arg(\u0027network_id\u0027, metavar\u003d\u0027\u003cnetwork_id\u003e\u0027, help\u003d\u0027ID of network\u0027)"},{"line_number":56,"context_line":"def do_net(cs, args):"},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":"    DEPRECATED, use tenant-network-show instead."},{"line_number":59,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_d146cb79","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":10},"in_reply_to":"bacf61ea_1673b2e8","updated":"2016-08-01 15:10:14.000000000","message":"Why would it fail? It just calls do_tenant_network_show() which has the deprecation logic applied. If I wrap this too, then you\u0027ll get two identical warnings.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fcb79ef701cdeaa13fda7bcefe8afbe0e7fab09d","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"@utils.arg(\u0027network_id\u0027, metavar\u003d\u0027\u003cnetwork_id\u003e\u0027, help\u003d\u0027ID of network\u0027)"},{"line_number":56,"context_line":"def do_net(cs, args):"},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":"    DEPRECATED, use tenant-network-show instead."},{"line_number":59,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_cca75409","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":10},"in_reply_to":"bacf61ea_d146cb79","updated":"2016-08-01 15:16:08.000000000","message":"Good point, should probably be fine.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    utils.print_dict(network._info)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def do_net_list(cs, args):"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    DEPRECATED, use tenant-network-list instead."},{"line_number":76,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_76078e1c","line":73,"range":{"start_line":73,"start_character":4,"end_line":73,"end_character":15},"updated":"2016-07-28 20:47:28.000000000","message":"ditto","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \u0027cidr\u0027,"},{"line_number":95,"context_line":"    metavar\u003d\u0027\u003ccidr\u003e\u0027,"},{"line_number":96,"context_line":"    help\u003d_(\u0027IP block to allocate from (ex. 172.16.0.0/24 or 2001:DB8::/64)\u0027))"},{"line_number":97,"context_line":"def do_net_create(cs, args):"},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    DEPRECATED, use tenant-network-create instead."},{"line_number":100,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_91020c08","line":97,"range":{"start_line":97,"start_character":4,"end_line":97,"end_character":17},"updated":"2016-07-28 20:47:28.000000000","message":"ditto","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"@utils.arg(\u0027network_id\u0027, metavar\u003d\u0027\u003cnetwork_id\u003e\u0027, help\u003d\u0027ID of network\u0027)"},{"line_number":122,"context_line":"def do_net_delete(cs, args):"},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":"    DEPRECATED, use tenant-network-delete instead."},{"line_number":125,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_d10c843d","line":122,"range":{"start_line":122,"start_character":4,"end_line":122,"end_character":17},"updated":"2016-07-28 20:47:28.000000000","message":"and here","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"}],"novaclient/v2/shell.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"794230ac1ae871b537f0d1bfb33b979655727504","unresolved":false,"context_lines":[{"line_number":76,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def cap_at_version(command_name, cs, version):"},{"line_number":80,"context_line":"    print(\u0027WARNING: Command %s is deprecated and will be removed after Nova \u0027"},{"line_number":81,"context_line":"          \u002715.0.0 is released. Use python-neutronclient or openstackclient \u0027"},{"line_number":82,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_038e782d","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":18},"updated":"2016-07-26 18:45:10.000000000","message":"nit: I\u0027d try to fit \u0027network\u0027 into the method name since it\u0027s specifically for network stuff given the warning message.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6baecc9c6c8667cad7c0cd9aeac3ebcb6043a8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def cap_at_version(command_name, cs, version):"},{"line_number":80,"context_line":"    print(\u0027WARNING: Command %s is deprecated and will be removed after Nova \u0027"},{"line_number":81,"context_line":"          \u002715.0.0 is released. Use python-neutronclient or openstackclient \u0027"},{"line_number":82,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_493d2fdc","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":18},"in_reply_to":"dada55a8_038e782d","updated":"2016-07-26 19:39:56.000000000","message":"This seems to be a prime opportunity for a decorator, actually; have you considered doing that?","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a080299943bc7d11ba2a1614ce9dbb873484d99c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"          \u002715.0.0 is released. Use python-neutronclient or openstackclient \u0027"},{"line_number":82,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":83,"context_line":"    want_version \u003d api_versions.APIVersion(version)"},{"line_number":84,"context_line":"    if cs.api_version \u003e want_version or True:"},{"line_number":85,"context_line":"        cs.api_version \u003d want_version"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_235f3ce6","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":44},"updated":"2016-07-26 18:44:44.000000000","message":"I\u0027m not sure I get the or True here.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"794230ac1ae871b537f0d1bfb33b979655727504","unresolved":false,"context_lines":[{"line_number":81,"context_line":"          \u002715.0.0 is released. Use python-neutronclient or openstackclient \u0027"},{"line_number":82,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":83,"context_line":"    want_version \u003d api_versions.APIVersion(version)"},{"line_number":84,"context_line":"    if cs.api_version \u003e want_version or True:"},{"line_number":85,"context_line":"        cs.api_version \u003d want_version"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_a3fa0cbb","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":44},"updated":"2016-07-26 18:45:10.000000000","message":"huh?","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"72a2d297b4a76c73c21aa2612880af459b79d298","unresolved":false,"context_lines":[{"line_number":81,"context_line":"          \u002715.0.0 is released. Use python-neutronclient or openstackclient \u0027"},{"line_number":82,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":83,"context_line":"    want_version \u003d api_versions.APIVersion(version)"},{"line_number":84,"context_line":"    if cs.api_version \u003e want_version or True:"},{"line_number":85,"context_line":"        cs.api_version \u003d want_version"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_8fe8c2e3","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":44},"in_reply_to":"dada55a8_a3fa0cbb","updated":"2016-07-26 22:28:45.000000000","message":"LOL, this was a forced test to make sure I ran this code since I was hitting an old cloud. I should have removed it.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a080299943bc7d11ba2a1614ce9dbb873484d99c","unresolved":false,"context_lines":[{"line_number":978,"context_line":"        exclude_fields\u003d(c.lower() for c in columns))[0]"},{"line_number":979,"context_line":"    # NOTE(danms): Cap at 2.35 to make sure that we continue to"},{"line_number":980,"context_line":"    # enable the network commands as long as n-net is supported."},{"line_number":981,"context_line":"    cap_at_version(\u0027network-list\u0027, cs, \u00272.35\u0027)"},{"line_number":982,"context_line":"    utils.print_list(network_list, columns)"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_a3e84ce3","line":981,"updated":"2016-07-26 18:44:44.000000000","message":"you actually need to do this at L973, the call was already made by this point.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce6baecc9c6c8667cad7c0cd9aeac3ebcb6043a8","unresolved":false,"context_lines":[{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"    # NOTE(danms): Cap at 2.35 to make sure that we continue to"},{"line_number":1217,"context_line":"    # enable the network commands as long as n-net is supported."},{"line_number":1218,"context_line":"    cap_at_version(\u0027network-create\u0027, cs, \u00272.35\u0027)"},{"line_number":1219,"context_line":"    cs.networks.create(**kwargs)"},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_6938f3ee","line":1218,"updated":"2016-07-26 19:39:56.000000000","message":"I\u0027d almost suggest putting this right at the beginning of the function, for consistency\u0027s sake.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"794230ac1ae871b537f0d1bfb33b979655727504","unresolved":false,"context_lines":[{"line_number":2648,"context_line":"    help\u003d_(\u0027Name of Floating IP Pool. (Optional)\u0027),"},{"line_number":2649,"context_line":"    nargs\u003d\u0027?\u0027,"},{"line_number":2650,"context_line":"    default\u003dNone)"},{"line_number":2651,"context_line":"def do_floating_ip_create(cs, args):"},{"line_number":2652,"context_line":"    \"\"\"Allocate a floating IP for the current tenant.\"\"\""},{"line_number":2653,"context_line":"    _print_floating_ip_list([cs.floating_ips.create(pool\u003dargs.pool)])"},{"line_number":2654,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_83cc288a","line":2651,"updated":"2016-07-26 18:45:10.000000000","message":"All of the floating IP CLIs/APIs have to be deprecated too.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"794230ac1ae871b537f0d1bfb33b979655727504","unresolved":false,"context_lines":[{"line_number":2860,"context_line":"    metavar\u003d\u0027\u003cto-port\u003e\u0027,"},{"line_number":2861,"context_line":"    help\u003d_(\u0027Port at end of range.\u0027))"},{"line_number":2862,"context_line":"@utils.arg(\u0027cidr\u0027, metavar\u003d\u0027\u003ccidr\u003e\u0027, help\u003d_(\u0027CIDR for address range.\u0027))"},{"line_number":2863,"context_line":"def do_secgroup_add_rule(cs, args):"},{"line_number":2864,"context_line":"    \"\"\"Add a rule to a security group.\"\"\""},{"line_number":2865,"context_line":"    secgroup \u003d _get_secgroup(cs, args.secgroup)"},{"line_number":2866,"context_line":"    rule \u003d cs.security_group_rules.create(secgroup.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_63a8148d","line":2863,"updated":"2016-07-26 18:45:10.000000000","message":"All security group/rule CLI/API has to be deprecated also.","commit_id":"d6c6978e38b438fd87ecf105a1e62ea3eea294cc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"49c49dec215447dec525e9f05d9f0131cf153eb9","unresolved":false,"context_lines":[{"line_number":77,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def deprecated_at_version(version):"},{"line_number":81,"context_line":"    def wrap(fn):"},{"line_number":82,"context_line":"        @functools.wraps(fn)"},{"line_number":83,"context_line":"        def wrapped(cs, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_e4f50651","line":80,"updated":"2016-07-27 13:11:16.000000000","message":"Nit: we may as well make this specific to the network deprecations, given the print thats inside here, i.e. just hard code (or just default to) 2.35 in here?","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"becfd58d61703b740d150fcab74221a844bbf176","unresolved":false,"context_lines":[{"line_number":77,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def deprecated_at_version(version):"},{"line_number":81,"context_line":"    def wrap(fn):"},{"line_number":82,"context_line":"        @functools.wraps(fn)"},{"line_number":83,"context_line":"        def wrapped(cs, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_d70483c1","line":80,"in_reply_to":"bacf61ea_044eee6e","updated":"2016-07-28 16:18:45.000000000","message":"Bah, I hate you both.","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8afaf2765e3fe0894e976d7f01d268777e27b4c4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def deprecated_at_version(version):"},{"line_number":81,"context_line":"    def wrap(fn):"},{"line_number":82,"context_line":"        @functools.wraps(fn)"},{"line_number":83,"context_line":"        def wrapped(cs, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_044eee6e","line":80,"in_reply_to":"dada55a8_5bbf90cf","updated":"2016-07-28 15:19:39.000000000","message":"For one thing, it\u0027s network specific in the warning message since it says to use python-neutronclient.","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e679dffc213e207911d182a56e5cdfabaf08b55f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"          \u0027instead.\u0027 % command_name, file\u003dsys.stderr)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def deprecated_at_version(version):"},{"line_number":81,"context_line":"    def wrap(fn):"},{"line_number":82,"context_line":"        @functools.wraps(fn)"},{"line_number":83,"context_line":"        def wrapped(cs, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_5bbf90cf","line":80,"in_reply_to":"dada55a8_e4f50651","updated":"2016-07-27 13:39:04.000000000","message":"I guess we could, but why make it specific instead of generic? If we do something like this again for another deprecation, this is easily re-usable.","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e01784df508f9b21029cbe2bc00c9ecd38383406","unresolved":false,"context_lines":[{"line_number":2739,"context_line":"@utils.arg(\u0027domain\u0027, metavar\u003d\u0027\u003cdomain\u003e\u0027, help\u003d_(\u0027DNS domain.\u0027))"},{"line_number":2740,"context_line":"@utils.arg(\u0027--ip\u0027, metavar\u003d\u0027\u003cip\u003e\u0027, help\u003d_(\u0027IP address.\u0027), default\u003dNone)"},{"line_number":2741,"context_line":"@utils.arg(\u0027--name\u0027, metavar\u003d\u0027\u003cname\u003e\u0027, help\u003d_(\u0027DNS name.\u0027), default\u003dNone)"},{"line_number":2742,"context_line":"def do_dns_list(cs, args):"},{"line_number":2743,"context_line":"    \"\"\"List current DNS entries for domain and IP or domain and name.\"\"\""},{"line_number":2744,"context_line":"    if not (args.ip or args.name):"},{"line_number":2745,"context_line":"        raise exceptions.CommandError("}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_641c0a14","line":2742,"range":{"start_line":2742,"start_character":4,"end_line":2742,"end_character":15},"updated":"2016-07-28 15:24:06.000000000","message":"All of the DNS commands need to be deprecated.","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e01784df508f9b21029cbe2bc00c9ecd38383406","unresolved":false,"context_lines":[{"line_number":2875,"context_line":"    metavar\u003d\u0027\u003cto-port\u003e\u0027,"},{"line_number":2876,"context_line":"    help\u003d_(\u0027Port at end of range.\u0027))"},{"line_number":2877,"context_line":"@utils.arg(\u0027cidr\u0027, metavar\u003d\u0027\u003ccidr\u003e\u0027, help\u003d_(\u0027CIDR for address range.\u0027))"},{"line_number":2878,"context_line":"def do_secgroup_add_rule(cs, args):"},{"line_number":2879,"context_line":"    \"\"\"Add a rule to a security group.\"\"\""},{"line_number":2880,"context_line":"    secgroup \u003d _get_secgroup(cs, args.secgroup)"},{"line_number":2881,"context_line":"    rule \u003d cs.security_group_rules.create(secgroup.id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_c4f216d2","line":2878,"range":{"start_line":2878,"start_character":4,"end_line":2878,"end_character":24},"updated":"2016-07-28 15:24:06.000000000","message":"Any security group rule commands have to be deprecated.","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e01784df508f9b21029cbe2bc00c9ecd38383406","unresolved":false,"context_lines":[{"line_number":2922,"context_line":"@utils.arg("},{"line_number":2923,"context_line":"    \u0027description\u0027, metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":2924,"context_line":"    help\u003d_(\u0027Description of security group.\u0027))"},{"line_number":2925,"context_line":"def do_secgroup_create(cs, args):"},{"line_number":2926,"context_line":"    \"\"\"Create a security group.\"\"\""},{"line_number":2927,"context_line":"    secgroup \u003d cs.security_groups.create(args.name, args.description)"},{"line_number":2928,"context_line":"    _print_secgroups([secgroup])"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_4410e601","line":2925,"range":{"start_line":2925,"start_character":4,"end_line":2925,"end_character":22},"updated":"2016-07-28 15:24:06.000000000","message":"missed this one","commit_id":"c7b4bab5131bf5c78346c1a5b01deb26d92a5f38"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0f6eb8ee30264fbe7e7c28fce6eadf057517531e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              \u0027after Nova 15.0.0 is released. Use python-neutronclient \u0027"},{"line_number":86,"context_line":"              \u0027or openstackclient instead.\u0027 % command_name,"},{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_b69586e5","line":88,"updated":"2016-07-28 20:28:19.000000000","message":"Could probably do with a comment here to explain why we cap at 2.35 (because network commands will fail with a 404 after 2.35).","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0ad97cbf7e1d9b781a09ae7b5ef6f7d2d822fa68","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              \u0027after Nova 15.0.0 is released. Use python-neutronclient \u0027"},{"line_number":86,"context_line":"              \u0027or openstackclient instead.\u0027 % command_name,"},{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_e0b1c348","line":88,"in_reply_to":"9ad45d7e_4bbbb927","updated":"2016-08-10 12:02:00.000000000","message":"ah, got it, I missed that.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"75d625cd5b1bde0ca9a641cd3d5d8b15dba53f62","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              \u0027after Nova 15.0.0 is released. Use python-neutronclient \u0027"},{"line_number":86,"context_line":"              \u0027or openstackclient instead.\u0027 % command_name,"},{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_572e7da5","line":88,"in_reply_to":"9ad45d7e_e0b1c348","updated":"2016-08-10 19:06:30.000000000","message":"I do wonder if this is happening before or after we\u0027ve already negotiated the version to send to the server, because if we\u0027re falling back to 2.35 but we\u0027re talking to say a mitaka cloud where 2.35 isn\u0027t available, we\u0027ll fail.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"525a8c66def357c7d0bdd451b39d8b5f1d898055","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              \u0027after Nova 15.0.0 is released. Use python-neutronclient \u0027"},{"line_number":86,"context_line":"              \u0027or openstackclient instead.\u0027 % command_name,"},{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_4bbbb927","line":88,"in_reply_to":"bacf61ea_483ffbb3","updated":"2016-08-09 18:36:01.000000000","message":"baremetal and image CLI/APIs are already deprecated outside of this. fping is really only for nova-network and was deprecated in 2.36.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c3fde68e614fd1c2b61573b90389addee0d0e276","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              \u0027after Nova 15.0.0 is released. Use python-neutronclient \u0027"},{"line_number":86,"context_line":"              \u0027or openstackclient instead.\u0027 % command_name,"},{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_483ffbb3","line":88,"in_reply_to":"bacf61ea_b69586e5","updated":"2016-08-05 03:14:02.000000000","message":"Do we have same plan for image API, baremetal and fping? if we have plan, sounds like we shouldn\u0027t call it as network specific.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c3fde68e614fd1c2b61573b90389addee0d0e276","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":94,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_88b3b34c","line":91,"updated":"2016-08-05 03:14:02.000000000","message":"Maybe we should have warning about, we change the version to 2.35","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"75d625cd5b1bde0ca9a641cd3d5d8b15dba53f62","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":94,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_772d8194","line":91,"in_reply_to":"9ad45d7e_40540ffe","updated":"2016-08-10 19:06:30.000000000","message":"\u003e Of course this concern is based on the API user may use CLI to test/learn the API.\n\nThat could happen yeah, but they really should be using the api-ref docs if they are writing applications against the compute API rather than discovering how the API works via the CLI.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0ad97cbf7e1d9b781a09ae7b5ef6f7d2d822fa68","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":94,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_40540ffe","line":91,"in_reply_to":"9ad45d7e_6bd4bd46","updated":"2016-08-10 12:02:00.000000000","message":"I\u0027m just afraid this leads to user thinking about the network API is still existed in the specific version after 2.35. Another way is we say the API already removed after 2.35 in the warning log at line 84, then we needn\u0027t another log. Of course this concern is based on the API user may use CLI to test/learn the API.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c784167badd02d3e66075b7e190b26bef93b1e2e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":94,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_ad179443","line":91,"in_reply_to":"bacf61ea_88b3b34c","updated":"2016-08-05 11:28:42.000000000","message":"+1","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"525a8c66def357c7d0bdd451b39d8b5f1d898055","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":89,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":90,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":91,"context_line":"            cs.api_version \u003d want_version"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":94,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_6bd4bd46","line":91,"in_reply_to":"bacf61ea_ad179443","updated":"2016-08-09 18:36:01.000000000","message":"Does a CLI user care which microversion is proposed? If I\u0027m using the CLI and not specifying a microversion explicitly then I\u0027m implicitly OK with what I get as the default (latest available supported). If I\u0027m requesting a specific version then maybe I care if I get 2.35, but I\u0027m not sure why it would matter. And you already get a warning above...so I don\u0027t think we need to be overly verbose about this.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":3274,"context_line":"        \u0027maxTotalRAMSize\u0027: {\u0027name\u0027: \u0027RAM\u0027, \u0027type\u0027: \u0027max\u0027},"},{"line_number":3275,"context_line":"        \u0027totalInstancesUsed\u0027: {\u0027name\u0027: \u0027Instances\u0027, \u0027type\u0027: \u0027used\u0027},"},{"line_number":3276,"context_line":"        \u0027maxTotalInstances\u0027: {\u0027name\u0027: \u0027Instances\u0027, \u0027type\u0027: \u0027max\u0027},"},{"line_number":3277,"context_line":"        \u0027totalFloatingIpsUsed\u0027: {\u0027name\u0027: \u0027FloatingIps\u0027, \u0027type\u0027: \u0027used\u0027},"},{"line_number":3278,"context_line":"        \u0027maxTotalFloatingIps\u0027: {\u0027name\u0027: \u0027FloatingIps\u0027, \u0027type\u0027: \u0027max\u0027},"},{"line_number":3279,"context_line":"        \u0027totalSecurityGroupsUsed\u0027: {\u0027name\u0027: \u0027SecurityGroups\u0027, \u0027type\u0027: \u0027used\u0027},"},{"line_number":3280,"context_line":"        \u0027maxSecurityGroups\u0027: {\u0027name\u0027: \u0027SecurityGroups\u0027, \u0027type\u0027: \u0027max\u0027},"},{"line_number":3281,"context_line":"        \u0027maxSecurityGroupRules\u0027: {\u0027name\u0027: \u0027SecurityGroupRules\u0027, \u0027type\u0027: \u0027max\u0027},"},{"line_number":3282,"context_line":"        \u0027maxServerGroups\u0027: {\u0027name\u0027: \u0027ServerGroups\u0027, \u0027type\u0027: \u0027max\u0027},"},{"line_number":3283,"context_line":"        \u0027totalServerGroupsUsed\u0027: {\u0027name\u0027: \u0027ServerGroups\u0027, \u0027type\u0027: \u0027used\u0027},"},{"line_number":3284,"context_line":"        \u0027maxServerGroupMembers\u0027: {\u0027name\u0027: \u0027ServerGroupMembers\u0027, \u0027type\u0027: \u0027max\u0027},"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_b18f5022","line":3281,"range":{"start_line":3277,"start_character":8,"end_line":3281,"end_character":79},"updated":"2016-07-28 20:47:28.000000000","message":"So \u003e2.35 these won\u0027t be in the response, but this CLI isn\u0027t deprecated or using the decorator to call back to 2.35. So I\u0027m pretty sure we\u0027d get an AttributeError or KeyError using this.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"75d625cd5b1bde0ca9a641cd3d5d8b15dba53f62","unresolved":false,"context_lines":[{"line_number":3289,"context_line":"    other \u003d {}"},{"line_number":3290,"context_line":"    limit_names \u003d []"},{"line_number":3291,"context_line":"    columns \u003d [\u0027Name\u0027, \u0027Used\u0027, \u0027Max\u0027]"},{"line_number":3292,"context_line":"    for l in limits:"},{"line_number":3293,"context_line":"        map \u003d limit_map.get(l.name, {\u0027name\u0027: l.name, \u0027type\u0027: \u0027other\u0027})"},{"line_number":3294,"context_line":"        name \u003d map[\u0027name\u0027]"},{"line_number":3295,"context_line":"        if map[\u0027type\u0027] \u003d\u003d \u0027max\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_174ec53a","line":3292,"range":{"start_line":3292,"start_character":4,"end_line":3292,"end_character":19},"updated":"2016-08-10 19:06:30.000000000","message":"We might actually be OK because I think with 2.36 it just won\u0027t return those network resource limits so they wouldn\u0027t be in this loop and we won\u0027t try to get them out of the map above.\n\nA functional test for this would be good to verify though.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":4309,"context_line":""},{"line_number":4310,"context_line":""},{"line_number":4311,"context_line":"_quota_resources \u003d [\u0027instances\u0027, \u0027cores\u0027, \u0027ram\u0027,"},{"line_number":4312,"context_line":"                    \u0027floating_ips\u0027, \u0027fixed_ips\u0027, \u0027metadata_items\u0027,"},{"line_number":4313,"context_line":"                    \u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":4314,"context_line":"                    \u0027injected_file_path_bytes\u0027, \u0027key_pairs\u0027,"},{"line_number":4315,"context_line":"                    \u0027security_groups\u0027, \u0027security_group_rules\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_d101246c","line":4312,"range":{"start_line":4312,"start_character":20,"end_line":4312,"end_character":47},"updated":"2016-07-28 20:47:28.000000000","message":"These are going to be a problem for \u003e2.35.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":4312,"context_line":"                    \u0027floating_ips\u0027, \u0027fixed_ips\u0027, \u0027metadata_items\u0027,"},{"line_number":4313,"context_line":"                    \u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":4314,"context_line":"                    \u0027injected_file_path_bytes\u0027, \u0027key_pairs\u0027,"},{"line_number":4315,"context_line":"                    \u0027security_groups\u0027, \u0027security_group_rules\u0027,"},{"line_number":4316,"context_line":"                    \u0027server_groups\u0027, \u0027server_group_members\u0027]"},{"line_number":4317,"context_line":""},{"line_number":4318,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_11f45c85","line":4315,"range":{"start_line":4315,"start_character":20,"end_line":4315,"end_character":62},"updated":"2016-07-28 20:47:28.000000000","message":"same here","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"75d625cd5b1bde0ca9a641cd3d5d8b15dba53f62","unresolved":false,"context_lines":[{"line_number":4327,"context_line":"        try:"},{"line_number":4328,"context_line":"            quota \u003d FormattedQuota(resource, getattr(quotas, resource))"},{"line_number":4329,"context_line":"            quota_list.append(quota)"},{"line_number":4330,"context_line":"        except AttributeError:"},{"line_number":4331,"context_line":"            pass"},{"line_number":4332,"context_line":"    columns \u003d [\u0027Quota\u0027, \u0027Limit\u0027]"},{"line_number":4333,"context_line":"    utils.print_list(quota_list, columns)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_17d405ea","line":4330,"updated":"2016-08-10 19:06:30.000000000","message":"Looking at this we should be OK with missing quota from the _quota_resources table above.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":4425,"context_line":"    metavar\u003d\u0027\u003cram\u003e\u0027,"},{"line_number":4426,"context_line":"    type\u003dint, default\u003dNone,"},{"line_number":4427,"context_line":"    help\u003d_(\u0027New value for the \"ram\" quota.\u0027))"},{"line_number":4428,"context_line":"@utils.arg("},{"line_number":4429,"context_line":"    \u0027--floating-ips\u0027,"},{"line_number":4430,"context_line":"    metavar\u003d\u0027\u003cfloating-ips\u003e\u0027,"},{"line_number":4431,"context_line":"    type\u003dint,"},{"line_number":4432,"context_line":"    default\u003dNone,"},{"line_number":4433,"context_line":"    help\u003d_(\u0027New value for the \"floating-ips\" quota.\u0027))"},{"line_number":4434,"context_line":"@utils.arg("},{"line_number":4435,"context_line":"    \u0027--fixed-ips\u0027,"},{"line_number":4436,"context_line":"    metavar\u003d\u0027\u003cfixed-ips\u003e\u0027,"},{"line_number":4437,"context_line":"    type\u003dint,"},{"line_number":4438,"context_line":"    default\u003dNone,"},{"line_number":4439,"context_line":"    help\u003d_(\u0027New value for the \"fixed-ips\" quota.\u0027))"},{"line_number":4440,"context_line":"@utils.arg("},{"line_number":4441,"context_line":"    \u0027--metadata-items\u0027,"},{"line_number":4442,"context_line":"    metavar\u003d\u0027\u003cmetadata-items\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_113bbc39","line":4439,"range":{"start_line":4428,"start_character":0,"end_line":4439,"end_character":51},"updated":"2016-07-28 20:47:28.000000000","message":"I imagine we\u0027ll have issues with this \u003e2.35.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":4550,"context_line":"    metavar\u003d\u0027\u003cram\u003e\u0027,"},{"line_number":4551,"context_line":"    type\u003dint, default\u003dNone,"},{"line_number":4552,"context_line":"    help\u003d_(\u0027New value for the \"ram\" quota.\u0027))"},{"line_number":4553,"context_line":"@utils.arg("},{"line_number":4554,"context_line":"    \u0027--floating-ips\u0027,"},{"line_number":4555,"context_line":"    metavar\u003d\u0027\u003cfloating-ips\u003e\u0027,"},{"line_number":4556,"context_line":"    type\u003dint,"},{"line_number":4557,"context_line":"    default\u003dNone,"},{"line_number":4558,"context_line":"    help\u003d_(\u0027New value for the \"floating-ips\" quota.\u0027))"},{"line_number":4559,"context_line":"@utils.arg("},{"line_number":4560,"context_line":"    \u0027--fixed-ips\u0027,"},{"line_number":4561,"context_line":"    metavar\u003d\u0027\u003cfixed-ips\u003e\u0027,"},{"line_number":4562,"context_line":"    type\u003dint,"},{"line_number":4563,"context_line":"    default\u003dNone,"},{"line_number":4564,"context_line":"    help\u003d_(\u0027New value for the \"fixed-ips\" quota.\u0027))"},{"line_number":4565,"context_line":"@utils.arg("},{"line_number":4566,"context_line":"    \u0027--metadata-items\u0027,"},{"line_number":4567,"context_line":"    metavar\u003d\u0027\u003cmetadata-items\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_3127e013","line":4564,"range":{"start_line":4553,"start_character":0,"end_line":4564,"end_character":51},"updated":"2016-07-28 20:47:28.000000000","message":"ditto","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":4681,"context_line":""},{"line_number":4682,"context_line":""},{"line_number":4683,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":4684,"context_line":"def do_interface_list(cs, args):"},{"line_number":4685,"context_line":"    \"\"\"List interfaces attached to a server.\"\"\""},{"line_number":4686,"context_line":"    server \u003d _find_server(cs, args.server)"},{"line_number":4687,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_712158fb","line":4684,"range":{"start_line":4684,"start_character":4,"end_line":4684,"end_character":21},"updated":"2016-07-28 20:47:28.000000000","message":"This should be deprecated. We missed it in the network API deprecation though...\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/virtual_interfaces.py\n\nThe shitty thing is we still need to be able to attach/detach VIFs, but we don\u0027t implement interface-list for neutron as a proxy....you can list ports filtered by device_id\u003dserver.uuid in the CLI, but that kind of sucks.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e554848f8b079f0b4d8574530ff107a2f212bf3d","unresolved":false,"context_lines":[{"line_number":4681,"context_line":""},{"line_number":4682,"context_line":""},{"line_number":4683,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":4684,"context_line":"def do_interface_list(cs, args):"},{"line_number":4685,"context_line":"    \"\"\"List interfaces attached to a server.\"\"\""},{"line_number":4686,"context_line":"    server \u003d _find_server(cs, args.server)"},{"line_number":4687,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_869c4d10","line":4684,"range":{"start_line":4684,"start_character":4,"end_line":4684,"end_character":21},"in_reply_to":"bacf61ea_712158fb","updated":"2016-08-10 17:48:15.000000000","message":"Ignore this for now, we\u0027ve deferred dealing with this API to Ocata.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7e97500db94ff86eca200a923c37dcd7a4c3150","unresolved":false,"context_lines":[{"line_number":4978,"context_line":""},{"line_number":4979,"context_line":""},{"line_number":4980,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027ID of server.\u0027))"},{"line_number":4981,"context_line":"def do_virtual_interface_list(cs, args):"},{"line_number":4982,"context_line":"    \"\"\"Show virtual interface info about the given server.\"\"\""},{"line_number":4983,"context_line":"    server \u003d _find_server(cs, args.server)"},{"line_number":4984,"context_line":"    interface_list \u003d cs.virtual_interfaces.list(base.getid(server))"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_f16d4805","line":4981,"range":{"start_line":4981,"start_character":4,"end_line":4981,"end_character":29},"updated":"2016-07-28 20:47:28.000000000","message":"seems this should be deprecated? wtf, is this duplicated with interface-list?","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e554848f8b079f0b4d8574530ff107a2f212bf3d","unresolved":false,"context_lines":[{"line_number":4978,"context_line":""},{"line_number":4979,"context_line":""},{"line_number":4980,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027ID of server.\u0027))"},{"line_number":4981,"context_line":"def do_virtual_interface_list(cs, args):"},{"line_number":4982,"context_line":"    \"\"\"Show virtual interface info about the given server.\"\"\""},{"line_number":4983,"context_line":"    server \u003d _find_server(cs, args.server)"},{"line_number":4984,"context_line":"    interface_list \u003d cs.virtual_interfaces.list(base.getid(server))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_6692f9f7","line":4981,"range":{"start_line":4981,"start_character":4,"end_line":4981,"end_character":29},"in_reply_to":"bacf61ea_f16d4805","updated":"2016-08-10 17:48:15.000000000","message":"Ignore this for now, same as os-interface, we\u0027re deferring that deprecation until Ocata.","commit_id":"355862c8f5255f162fbe8c35ed679236165f18e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"257a0250db9e54d5e7db59c4bebb204ca2b090fe","unresolved":false,"context_lines":[{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        # The network proxy API methods were deprecated in 2.36 and will return"},{"line_number":89,"context_line":"        # a 404 so we fallback to 2.35 to maintain a transition for CLI users."},{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_e24ecc6d","line":90,"updated":"2016-08-10 21:10:37.000000000","message":"This doesn\u0027t look to be dropping back for me:\n\nhttp://paste.openstack.org/show/553672/","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b1d1c3eb6bc7ccbd839e0537fa623d2a89103ea1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        # The network proxy API methods were deprecated in 2.36 and will return"},{"line_number":89,"context_line":"        # a 404 so we fallback to 2.35 to maintain a transition for CLI users."},{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_fc6b0cb7","line":90,"in_reply_to":"9ad45d7e_e24ecc6d","updated":"2016-08-10 22:27:11.000000000","message":"It fails as expected(I realized it 20 minutes ago) :) see my comment at L93","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"68fd786e7d416b8b4c49b0f00ccc21c8fcb2c2b5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"              file\u003dsys.stderr)"},{"line_number":88,"context_line":"        # The network proxy API methods were deprecated in 2.36 and will return"},{"line_number":89,"context_line":"        # a 404 so we fallback to 2.35 to maintain a transition for CLI users."},{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_2da9f590","line":90,"in_reply_to":"9ad45d7e_e24ecc6d","updated":"2016-08-10 21:42:56.000000000","message":"The full debug:\n\nhttp://paste.openstack.org/show/553675/","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b1d1c3eb6bc7ccbd839e0537fa623d2a89103ea1","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            cs.api_version \u003d want_version"},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":96,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_9c0bf0d5","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":41},"updated":"2016-08-10 22:27:11.000000000","message":"It doesn\u0027t do anything. Current implementation of novaclient saves api_version object in several places(it sucks and we should fix it):\n- https://github.com/openstack/python-novaclient/blob/35057e1a7379bd495f97013978ae9334143f77bd/novaclient/v2/client.py#L137 \u003c- this property of Client doesn\u0027t affect anything related to connection with API. \n- https://github.com/openstack/python-novaclient/blob/35057e1a7379bd495f97013978ae9334143f77bd/novaclient/client.py#L93-L94 / https://github.com/openstack/python-novaclient/blob/35057e1a7379bd495f97013978ae9334143f77bd/novaclient/client.py#L169\n\nSo in you case Session/HTTPClient had reference to old APIVersion object.\n\nImo, we should modify novaclient.v2.client.Client to do not store api_version object directly and add some reference to Session/HTTPClient like:\n\n    @property\n    def api_version(self):\n        return self.client.api_version\n\n    @api_version.setter\n    def api_version(self, value):\n        self.client.api_version \u003d value","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44ec92b4e104211496aaffa2602220fc18eb142a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            cs.api_version \u003d want_version"},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":96,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_f257b557","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":41},"in_reply_to":"9ad45d7e_9c0bf0d5","updated":"2016-08-10 23:34:41.000000000","message":"Awesome, thanks for pointing this out. I\u0027ll make this change.","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"761d9e5aae3d81c3d6af4baab0126d81c8d9dc7d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            cs.api_version \u003d want_version"},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            return fn(cs, *args, **kwargs)"},{"line_number":96,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_f0b84d77","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":41},"in_reply_to":"9ad45d7e_f257b557","updated":"2016-08-11 00:45:10.000000000","message":"I tried this but now I\u0027m hitting some odd failures in the unit tests, so I might hack around this for now by setting cs.client.api_version directly with a TODO to clean it up later when I can sort out the test failures by doing it the cleaner way. The FakeClient stuff in the tests is messing it up it looks like.","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb47a34571a40602b782faab1645b2cfb4de801a","unresolved":false,"context_lines":[{"line_number":962,"context_line":"@utils.arg("},{"line_number":963,"context_line":"    \u0027project_id\u0027, metavar\u003d\u0027\u003cproject_id\u003e\u0027,"},{"line_number":964,"context_line":"    help\u003d_(\u0027The ID of the project.\u0027))"},{"line_number":965,"context_line":"def do_scrub(cs, args):"},{"line_number":966,"context_line":"    \"\"\"Delete networks and security groups associated with a project.\"\"\""},{"line_number":967,"context_line":"    networks_list \u003d cs.networks.list()"},{"line_number":968,"context_line":"    networks_list \u003d [network for network in networks_list"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_ed323d0f","line":965,"updated":"2016-08-10 21:53:23.000000000","message":"We have to deprecate this also since it does a network list.","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cec1bfe5082513074941d2ed64164dd163c239b7","unresolved":false,"context_lines":[{"line_number":2303,"context_line":"    \u0027network_id\u0027,"},{"line_number":2304,"context_line":"    metavar\u003d\u0027\u003cnetwork-id\u003e\u0027,"},{"line_number":2305,"context_line":"    help\u003d_(\u0027Network ID.\u0027))"},{"line_number":2306,"context_line":"@deprecated_network"},{"line_number":2307,"context_line":"def do_add_fixed_ip(cs, args):"},{"line_number":2308,"context_line":"    \"\"\"Add new IP address on a network to server.\"\"\""},{"line_number":2309,"context_line":"    server \u003d _find_server(cs, args.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_95e3c3d8","line":2306,"updated":"2016-08-11 00:04:34.000000000","message":"This is probably wrong, this is a server action, so not a proxy.","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cec1bfe5082513074941d2ed64164dd163c239b7","unresolved":false,"context_lines":[{"line_number":2312,"context_line":""},{"line_number":2313,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":2314,"context_line":"@utils.arg(\u0027address\u0027, metavar\u003d\u0027\u003caddress\u003e\u0027, help\u003d_(\u0027IP Address.\u0027))"},{"line_number":2315,"context_line":"@deprecated_network"},{"line_number":2316,"context_line":"def do_remove_fixed_ip(cs, args):"},{"line_number":2317,"context_line":"    \"\"\"Remove an IP address from a server.\"\"\""},{"line_number":2318,"context_line":"    server \u003d _find_server(cs, args.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_d5e9bbb8","line":2315,"updated":"2016-08-11 00:04:34.000000000","message":"ditto","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8f73f9d3d6eb35de84c89078cdb2909ce40d970","unresolved":false,"context_lines":[{"line_number":2573,"context_line":"    metavar\u003d\u0027\u003cfixed_address\u003e\u0027,"},{"line_number":2574,"context_line":"    default\u003dNone,"},{"line_number":2575,"context_line":"    help\u003d_(\u0027Fixed IP Address to associate with.\u0027))"},{"line_number":2576,"context_line":"@deprecated_network"},{"line_number":2577,"context_line":"def do_add_floating_ip(cs, args):"},{"line_number":2578,"context_line":"    \"\"\"DEPRECATED, use floating-ip-associate instead.\"\"\""},{"line_number":2579,"context_line":"    _associate_floating_ip(cs, args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_156cf333","line":2576,"updated":"2016-08-11 00:06:50.000000000","message":"this is wrong, it\u0027s a server action","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8f73f9d3d6eb35de84c89078cdb2909ce40d970","unresolved":false,"context_lines":[{"line_number":2586,"context_line":"    metavar\u003d\u0027\u003cfixed_address\u003e\u0027,"},{"line_number":2587,"context_line":"    default\u003dNone,"},{"line_number":2588,"context_line":"    help\u003d_(\u0027Fixed IP Address to associate with.\u0027))"},{"line_number":2589,"context_line":"@deprecated_network"},{"line_number":2590,"context_line":"def do_floating_ip_associate(cs, args):"},{"line_number":2591,"context_line":"    \"\"\"Associate a floating IP address to a server.\"\"\""},{"line_number":2592,"context_line":"    _associate_floating_ip(cs, args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_b561a73b","line":2589,"updated":"2016-08-11 00:06:50.000000000","message":"ditto","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8f73f9d3d6eb35de84c89078cdb2909ce40d970","unresolved":false,"context_lines":[{"line_number":2599,"context_line":""},{"line_number":2600,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":2601,"context_line":"@utils.arg(\u0027address\u0027, metavar\u003d\u0027\u003caddress\u003e\u0027, help\u003d_(\u0027IP Address.\u0027))"},{"line_number":2602,"context_line":"@deprecated_network"},{"line_number":2603,"context_line":"def do_remove_floating_ip(cs, args):"},{"line_number":2604,"context_line":"    \"\"\"DEPRECATED, use floating-ip-disassociate instead.\"\"\""},{"line_number":2605,"context_line":"    _disassociate_floating_ip(cs, args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_d55c1b7f","line":2602,"updated":"2016-08-11 00:06:50.000000000","message":"ditto","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8f73f9d3d6eb35de84c89078cdb2909ce40d970","unresolved":false,"context_lines":[{"line_number":2607,"context_line":""},{"line_number":2608,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":2609,"context_line":"@utils.arg(\u0027address\u0027, metavar\u003d\u0027\u003caddress\u003e\u0027, help\u003d_(\u0027IP Address.\u0027))"},{"line_number":2610,"context_line":"@deprecated_network"},{"line_number":2611,"context_line":"def do_floating_ip_disassociate(cs, args):"},{"line_number":2612,"context_line":"    \"\"\"Disassociate a floating IP address from a server.\"\"\""},{"line_number":2613,"context_line":"    _disassociate_floating_ip(cs, args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_3556575c","line":2610,"updated":"2016-08-11 00:06:50.000000000","message":"ditto","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9791482f5e1481aaf6fa113dbb0276ea4360139a","unresolved":false,"context_lines":[{"line_number":2623,"context_line":"    \u0027secgroup\u0027,"},{"line_number":2624,"context_line":"    metavar\u003d\u0027\u003csecgroup\u003e\u0027,"},{"line_number":2625,"context_line":"    help\u003d_(\u0027Name or ID of Security Group.\u0027))"},{"line_number":2626,"context_line":"@deprecated_network"},{"line_number":2627,"context_line":"def do_add_secgroup(cs, args):"},{"line_number":2628,"context_line":"    \"\"\"Add a Security Group to a server.\"\"\""},{"line_number":2629,"context_line":"    server \u003d _find_server(cs, args.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_55f78b58","line":2626,"updated":"2016-08-11 00:09:45.000000000","message":"this is a server action","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9791482f5e1481aaf6fa113dbb0276ea4360139a","unresolved":false,"context_lines":[{"line_number":2635,"context_line":"    \u0027secgroup\u0027,"},{"line_number":2636,"context_line":"    metavar\u003d\u0027\u003csecgroup\u003e\u0027,"},{"line_number":2637,"context_line":"    help\u003d_(\u0027Name of Security Group.\u0027))"},{"line_number":2638,"context_line":"@deprecated_network"},{"line_number":2639,"context_line":"def do_remove_secgroup(cs, args):"},{"line_number":2640,"context_line":"    \"\"\"Remove a Security Group from a server.\"\"\""},{"line_number":2641,"context_line":"    server \u003d _find_server(cs, args.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_b596c7ed","line":2638,"updated":"2016-08-11 00:09:45.000000000","message":"ditto","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9791482f5e1481aaf6fa113dbb0276ea4360139a","unresolved":false,"context_lines":[{"line_number":2643,"context_line":""},{"line_number":2644,"context_line":""},{"line_number":2645,"context_line":"@utils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":2646,"context_line":"@deprecated_network"},{"line_number":2647,"context_line":"def do_list_secgroup(cs, args):"},{"line_number":2648,"context_line":"    \"\"\"List Security Group(s) of a server.\"\"\""},{"line_number":2649,"context_line":"    server \u003d _find_server(cs, args.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_358bf7c4","line":2646,"updated":"2016-08-11 00:09:45.000000000","message":"This isn\u0027t deprecated in the REST API.","commit_id":"b193592469c4250fd5f8345827b17cc7dcffa16b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e34d4084161d927bc46c528426e063f239507f0","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"    if cs.has_neutron():"},{"line_number":2326,"context_line":"        return _find_network_id_neutron(cs, net_name)"},{"line_number":2327,"context_line":"    else:"},{"line_number":2328,"context_line":"        # The network proxy API methods were deprecated in 2.36 and will return"},{"line_number":2329,"context_line":"        # a 404 so we fallback to 2.35 to maintain a transition for CLI users."},{"line_number":2330,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":2331,"context_line":"        cur_version \u003d cs.api_version"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_24958386","line":2328,"updated":"2016-08-17 16:11:47.000000000","message":"Yes this is duplicated from the deprecate_network decorator. We can leave this until we drop the network CLIs at which point deprecate_network goes away, or we can pull this common part out into it\u0027s own decorator and then wrap that in deprecate_network also.","commit_id":"ad32e2c3ad38f2a3163c508a454ca8cb118bed53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15dff0cca8188b0a50cb71a3f28e3557f65df08f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":91,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":92,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":93,"context_line":"            # FIXME(mriedem): Setting cs.client.api_version directly is kind of"},{"line_number":94,"context_line":"            # a hack, it would be better to access cs.client.api_version via"},{"line_number":95,"context_line":"            # a property on cs, but it requires some changes in how we test."},{"line_number":96,"context_line":"            cs.client.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_b469378e","line":93,"updated":"2016-08-19 15:59:58.000000000","message":"I think this is fixed now and we can just set:\n\ncs.api_version \u003d want_version","commit_id":"fd30f9e047666a3c8b4cc4f0d9223241d04f5623"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15dff0cca8188b0a50cb71a3f28e3557f65df08f","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":2331,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":2332,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":2333,"context_line":"            # FIXME(mriedem): Setting cs.client.api_version directly is kind of"},{"line_number":2334,"context_line":"            # a hack, it would be better to access cs.client.api_version via"},{"line_number":2335,"context_line":"            # a property on cs, but it requires some changes in how we test."},{"line_number":2336,"context_line":"            cs.client.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_142c8b49","line":2333,"updated":"2016-08-19 15:59:58.000000000","message":"ditto","commit_id":"fd30f9e047666a3c8b4cc4f0d9223241d04f5623"}],"releasenotes/notes/deprecate-network-cli-f0a539528be594d3.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21f7000e2ec0d5dcdd58b996a849379d23477dc2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``nova quota-update`` and ``nova quota-class-update`` commands now"},{"line_number":5,"context_line":"    deprecate updating the following network-related resources:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * Fixed IPs"},{"line_number":8,"context_line":"    * Floating IPs"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9ad45d7e_4641a3a8","line":5,"range":{"start_line":4,"start_character":4,"end_line":5,"end_character":62},"updated":"2016-08-11 01:47:24.000000000","message":"Maybe reword as:\n\nThe ability to update the following network-related resources via the ``nova quota-update`` and ``nova quota-class-update`` commands is now deprecated:","commit_id":"265aa711b80d1a312aafab562021f9d1f83a2296"}]}
