)]}'
{"novaclient/tests/unit/v2/fakes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6e67e520e883758bcb7210c4725d18183d26a7d","unresolved":false,"context_lines":[{"line_number":1914,"context_line":"        return (200, {}, {\u0027networks\u0027: [{\"label\": \"1\", \"cidr\": \"10.0.0.0/24\","},{"line_number":1915,"context_line":"                                        \u0027project_id\u0027:"},{"line_number":1916,"context_line":"                                            \u00274ffc664c198e435e9853f2538fbcd7a7\u0027,"},{"line_number":1917,"context_line":"                                        \u0027id\u0027: \u00271\u0027, \u0027vlan\u0027: \u00271234\u0027}]})"},{"line_number":1918,"context_line":""},{"line_number":1919,"context_line":"    def get_os_networks(self, **kw):"},{"line_number":1920,"context_line":"        return (200, {}, {\u0027networks\u0027: [{\"label\": \"1\", \"cidr\": \"10.0.0.0/24\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_81ddbf16","line":1917,"range":{"start_line":1917,"start_character":47,"end_line":1917,"end_character":48},"updated":"2016-08-15 18:57:33.000000000","message":"nit: this would technically be a uuid","commit_id":"04e4bb2b190aa7a5025f8d5dcfb3e5d4604ef244"}],"novaclient/v2/client.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"54f72e8c41ab8c30eff2290a7f823bd6648b6df8","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def reset_timings(self):"},{"line_number":237,"context_line":"        self.client.reset_timings()"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def has_neutron(self):"},{"line_number":240,"context_line":"        \"\"\"Check the service catalog to figure out if we have neutron."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        This is an intermediary solution for the window of time where"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_775cd625","line":239,"updated":"2016-08-15 13:41:14.000000000","message":"Should we maybe just do this once and set an attribute in the client for the lookup?","commit_id":"cbef3db003deb2bafb0cd3beaa993950a7185d3e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20049c6e0aa2d9fbe2860e4bc8fd4ab964a34842","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def reset_timings(self):"},{"line_number":237,"context_line":"        self.client.reset_timings()"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def has_neutron(self):"},{"line_number":240,"context_line":"        \"\"\"Check the service catalog to figure out if we have neutron."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        This is an intermediary solution for the window of time where"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_17f2c2d2","line":239,"in_reply_to":"3ac371cc_775cd625","updated":"2016-08-15 13:44:07.000000000","message":"Nevermind, caching this won\u0027t buy us much because we recreate the client on each CLI call anyway.","commit_id":"cbef3db003deb2bafb0cd3beaa993950a7185d3e"}],"novaclient/v2/networks.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3db3543e5785dec29643a6d599d1110b22a986fb","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class NeutronManager(base.Manager):"},{"line_number":45,"context_line":"    \"\"\"A manager for name -\u003e id lookups for neutron networks.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    resource_class \u003d Network"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_2cdcd617","line":45,"updated":"2016-08-12 19:38:08.000000000","message":"You might want to put the same \u0027don\u0027t use this, you\u0027ve been warned\u0027 thing as the GlanceManager.","commit_id":"4c721d5f9a9f2c7c4ea587e90e98d5289f7dc33a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3db3543e5785dec29643a6d599d1110b22a986fb","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        with self.alternate_service_type("},{"line_number":52,"context_line":"                \u0027network\u0027, allowed_types\u003d(\u0027network\u0027,)):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"            matches \u003d self._list(\u0027/v2.0/networks?name\u003d%s\u0027 % name, \u0027networks\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"            num_matches \u003d len(matches)"},{"line_number":57,"context_line":"            if num_matches \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_0c08f290","line":54,"updated":"2016-08-12 19:38:08.000000000","message":"I guess we go straight to search because neutron will take name or id? I thought monty said we could just pass name in like /v2.0/networks/$name and the neutron API will resolve it for us?","commit_id":"4c721d5f9a9f2c7c4ea587e90e98d5289f7dc33a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3db3543e5785dec29643a6d599d1110b22a986fb","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    self.resource_class.__name__, name)"},{"line_number":60,"context_line":"                raise exceptions.NotFound(404, msg)"},{"line_number":61,"context_line":"            elif num_matches \u003e 1:"},{"line_number":62,"context_line":"                raise exceptions.NoUniqueMatch"},{"line_number":63,"context_line":"            else:"},{"line_number":64,"context_line":"                return matches[0]"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_2c2a16e8","line":62,"updated":"2016-08-12 19:38:08.000000000","message":"We should add a message in here like in the GlanceManager, probably need the shell to handle this as a CommandError too.","commit_id":"4c721d5f9a9f2c7c4ea587e90e98d5289f7dc33a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3db3543e5785dec29643a6d599d1110b22a986fb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            elif num_matches \u003e 1:"},{"line_number":62,"context_line":"                raise exceptions.NoUniqueMatch"},{"line_number":63,"context_line":"            else:"},{"line_number":64,"context_line":"                return matches[0]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class NetworkManager(base.ManagerWithFind):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_6c340e4a","line":64,"updated":"2016-08-12 19:38:08.000000000","message":"We don\u0027t have to throw the request id in this?","commit_id":"4c721d5f9a9f2c7c4ea587e90e98d5289f7dc33a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a0750ba1e8362fd0106b82f5260908be234cb6e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        with self.alternate_service_type("},{"line_number":52,"context_line":"                \u0027network\u0027, allowed_types\u003d(\u0027network\u0027,)):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"            matches \u003d self._list(\u0027/v2.0/networks?name\u003d%s\u0027 % name, \u0027networks\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"            num_matches \u003d len(matches)"},{"line_number":57,"context_line":"            if num_matches \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_a240cf36","line":54,"range":{"start_line":54,"start_character":60,"end_line":54,"end_character":64},"updated":"2016-08-12 20:07:22.000000000","message":"hmm, does this need to be encoded? Maybe _list does that.","commit_id":"2c600814d5739cf0f24d94c826ca1bb598e20f43"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b981b9efbf0d6dd86d8e270eb869f3a5ab11cc66","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                        \u0027name\u0027: name})"},{"line_number":71,"context_line":"                raise exceptions.NoUniqueMatch(msg)"},{"line_number":72,"context_line":"            else:"},{"line_number":73,"context_line":"                matches[0].append_request_ids(matches.request_ids)"},{"line_number":74,"context_line":"                return matches[0]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac969e8_32d8c5ef","line":73,"updated":"2016-08-13 10:51:26.000000000","message":"so, we can do this, but the results of this command are to take the answer and immediately throw everything away except .id. So it seemed pointless to add request id here. As it\u0027s litterally deleted as the *next* action in the *next* stack frame.","commit_id":"ae3c9a1c6b0ecbe687c6f6781368ea9d8a75f1af"}],"novaclient/v2/shell.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3db3543e5785dec29643a6d599d1110b22a986fb","unresolved":false,"context_lines":[{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"def _find_network_id_neutron(cs, net_name):"},{"line_number":2274,"context_line":"    \"\"\"Get unique network ID from network name from neutron\"\"\""},{"line_number":2275,"context_line":"    network \u003d cs.neutron.find_id(net_name)"},{"line_number":2276,"context_line":"    return network.id"},{"line_number":2277,"context_line":""},{"line_number":2278,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_6c824eca","line":2275,"updated":"2016-08-12 19:38:08.000000000","message":"Should handle NoUniqueMatch and raise that as a CommandError probably (maybe the same for NotFound).","commit_id":"4c721d5f9a9f2c7c4ea587e90e98d5289f7dc33a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5c59105cab802aeb8e6b6e4976d81100587bca14","unresolved":false,"context_lines":[{"line_number":2285,"context_line":"    lookup bit through our own API, but after this point the proxy"},{"line_number":2286,"context_line":"    APIs return 404. So instead always go directly to neutron instead."},{"line_number":2287,"context_line":"    \"\"\""},{"line_number":2288,"context_line":"    if cs.api_version \u003e\u003d api_versions.APIVersion(\"2.36\"):"},{"line_number":2289,"context_line":"        return _find_network_id_neutron(cs, net_name)"},{"line_number":2290,"context_line":"    else:"},{"line_number":2291,"context_line":"        return _find_network_id_novanet(cs, net_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ac665da_e5c956ae","line":2288,"updated":"2016-08-13 16:08:43.000000000","message":"I thought about this today, but I\u0027m not sure we want to do this, at least in this change. I think we should basically merge this into Dan\u0027s change for deprecating the network CLIs:\n\nhttps://review.openstack.org/#/c/347514/\n\nBecause in that patch, if \u003e\u003d2.36 is requested on a network CLI we drop back to requesting 2.35, but we still go through the nova proxy API.\n\nMy thinking is, it would be weird to fallback to 2.35 and proxy for the other network CLIs, but not for the convenience lookup when doing nova boot --nic net-name. If you\u0027re using nova-network that will fail with this, but then if in Dan\u0027s change you do \u0027nova network-list\u0027 it will fallback to 2.35 and proxy and list the network that you just passed as net-name and failed because it\u0027s not in neutron.","commit_id":"ae3c9a1c6b0ecbe687c6f6781368ea9d8a75f1af"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6e67e520e883758bcb7210c4725d18183d26a7d","unresolved":false,"context_lines":[{"line_number":2289,"context_line":"    the has_neutron function."},{"line_number":2290,"context_line":"    \"\"\""},{"line_number":2291,"context_line":"    if cs.has_neutron():"},{"line_number":2292,"context_line":"        return _find_network_id_neutron(cs, net_name)"},{"line_number":2293,"context_line":"    else:"},{"line_number":2294,"context_line":"        return _find_network_id_novanet(cs, net_name)"},{"line_number":2295,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_01dc2fe3","line":2292,"updated":"2016-08-15 18:57:33.000000000","message":"Do we have something testing the case where has_neutron is True?","commit_id":"04e4bb2b190aa7a5025f8d5dcfb3e5d4604ef244"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8a7b0875064a5c5c7a862c54ae524574b5cb6376","unresolved":false,"context_lines":[{"line_number":2289,"context_line":"    the has_neutron function."},{"line_number":2290,"context_line":"    \"\"\""},{"line_number":2291,"context_line":"    if cs.has_neutron():"},{"line_number":2292,"context_line":"        return _find_network_id_neutron(cs, net_name)"},{"line_number":2293,"context_line":"    else:"},{"line_number":2294,"context_line":"        return _find_network_id_novanet(cs, net_name)"},{"line_number":2295,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_24efb9e9","line":2292,"in_reply_to":"3ac371cc_01dc2fe3","updated":"2016-08-15 19:14:27.000000000","message":"We aren\u0027t testing this, I added an exception here and the tests passed.","commit_id":"04e4bb2b190aa7a5025f8d5dcfb3e5d4604ef244"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c70f8a974f6b2c04acbbdded22e04978f61babec","unresolved":false,"context_lines":[{"line_number":2289,"context_line":"    the has_neutron function."},{"line_number":2290,"context_line":"    \"\"\""},{"line_number":2291,"context_line":"    if cs.has_neutron():"},{"line_number":2292,"context_line":"        return _find_network_id_neutron(cs, net_name)"},{"line_number":2293,"context_line":"    else:"},{"line_number":2294,"context_line":"        return _find_network_id_novanet(cs, net_name)"},{"line_number":2295,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_24f05990","line":2292,"in_reply_to":"3ac371cc_24efb9e9","updated":"2016-08-15 19:19:15.000000000","message":"This is what I did:\n\nuser@xubuntu:~/git/python-novaclient$ git diff\ndiff --git a/novaclient/v2/networks.py b/novaclient/v2/networks.py\nindex 4f54540..74fbfec 100644\n--- a/novaclient/v2/networks.py\n+++ b/novaclient/v2/networks.py\n@@ -52,7 +52,7 @@ class NeutronManager(base.Manager):\n \n     def find_network(self, name):\n         \"\"\"Find a network by name (user provided input).\"\"\"\n-\n+        raise Exception(name)\n         with self.alternate_service_type(\n                 \u0027network\u0027, allowed_types\u003d(\u0027network\u0027,)):\n \ndiff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py\nindex 971e987..7edad1a 100644\n--- a/novaclient/v2/shell.py\n+++ b/novaclient/v2/shell.py\n@@ -2289,6 +2289,7 @@ def _find_network_id(cs, net_name):\n     the has_neutron function.\n     \"\"\"\n     if cs.has_neutron():\n+        raise Exception(\u0027test\u0027)\n         return _find_network_id_neutron(cs, net_name)\n     else:\n         return _find_network_id_novanet(cs, net_name)\nuser@xubuntu:~/git/python-novaclient$","commit_id":"04e4bb2b190aa7a5025f8d5dcfb3e5d4604ef244"}],"releasenotes/notes/no-neutron-proxy-18fd54febe939a6b.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"54f72e8c41ab8c30eff2290a7f823bd6648b6df8","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 2.36 microversion deprecated the network proxy APIs in Nova. Because of"},{"line_number":5,"context_line":"    this, for requests with microversion\u003c2.36, the network proxy APIs in Nova"},{"line_number":6,"context_line":"    are used to lookup a network resource. For requests with"},{"line_number":7,"context_line":"    microversion\u003e\u003d2.36, the Neutron API is called directly. To do this the"},{"line_number":8,"context_line":"    following is assumed:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    #. There is a **network** entry in the service catalog."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3ac371cc_f78d667c","line":7,"range":{"start_line":4,"start_character":69,"end_line":7,"end_character":59},"updated":"2016-08-15 13:41:14.000000000","message":"This would need to change.","commit_id":"cbef3db003deb2bafb0cd3beaa993950a7185d3e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6e67e520e883758bcb7210c4725d18183d26a7d","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 2.36 microversion deprecated the network proxy APIs in Nova. Because of"},{"line_number":5,"context_line":"    this, for requests with microversion\u003c2.36, the network proxy APIs in Nova"},{"line_number":6,"context_line":"    are used to lookup a network resource. For requests with"},{"line_number":7,"context_line":"    microversion\u003e\u003d2.36, the Neutron API is called directly. To do this the"},{"line_number":8,"context_line":"    following is assumed:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    #. There is a **network** entry in the service catalog."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3ac371cc_e16ab319","line":7,"range":{"start_line":4,"start_character":69,"end_line":7,"end_character":59},"updated":"2016-08-15 18:57:33.000000000","message":"This needs updating, basically, if not using neutron we\u0027ll continue to use the nova API for getting a network by name, else we\u0027ll use neutron directly.","commit_id":"04e4bb2b190aa7a5025f8d5dcfb3e5d4604ef244"}]}
